Media File Renamer - Version 5.2.9

Version Description

(2021/09/23) = * Add: Manual Sanitize Option. If the option is checked, the rename feature uses the new_filename function. If not, use the filename user input as it is.

Download this release

Release Info

Developer TigrouMeow
Plugin Icon 128x128 Media File Renamer
Version 5.2.9
Comparing to
See all releases

Code changes from version 5.2.8 to 5.2.9

app/index.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e){function t(t){for(var r,c,l=t[0],i=t[1],u=t[2],m=0,d=[];m<l.length;m++)c=l[m],Object.prototype.hasOwnProperty.call(a,c)&&a[c]&&d.push(a[c][0]),a[c]=0;for(r in i)Object.prototype.hasOwnProperty.call(i,r)&&(e[r]=i[r]);for(s&&s(t);d.length;)d.shift()();return o.push.apply(o,u||[]),n()}function n(){for(var e,t=0;t<o.length;t++){for(var n=o[t],r=!0,l=1;l<n.length;l++){var i=n[l];0!==a[i]&&(r=!1)}r&&(o.splice(t--,1),e=c(c.s=n[0]))}return e}var r={},a={0:0},o=[];function c(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,c),n.l=!0,n.exports}c.m=e,c.c=r,c.d=function(e,t,n){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(c.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)c.d(n,r,function(t){return e[t]}.bind(null,r));return n},c.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="";var l=window.wpJsonMfrh=window.wpJsonMfrh||[],i=l.push.bind(l);l.push=t,l=l.slice();for(var u=0;u<l.length;u++)t(l[u]);var s=i;o.push([129,1]),n()}({0:function(e,t){e.exports=React},1:function(e,t,n){"use strict";var r=n(14);n.d(t,"b",(function(){return r.a}));var a=n(11);n.d(t,"c",(function(){return a.a}));n(37);var o=n(49);n.d(t,"q",(function(){return o.a}));var c=n(50);n.d(t,"a",(function(){return c.a}));var l=n(51);n.d(t,"g",(function(){return l.a}));var i=n(52);n.d(t,"v",(function(){return i.a}));n(53);var u=n(38);n.d(t,"C",(function(){return u.b})),n.d(t,"f",(function(){return u.a}));var s=n(54);n.d(t,"d",(function(){return s.a}));var m=n(55);n.d(t,"e",(function(){return m.a}));var d=n(21);n.d(t,"k",(function(){return d.a}));n(56);var f=n(39);n.d(t,"u",(function(){return f.b})),n.d(t,"p",(function(){return f.a}));n(57),n(58),n(8),n(40),n(22);var p=n(59);n.d(t,"s",(function(){return p.a}));var h=n(60);n.d(t,"i",(function(){return h.a}));var y=n(23);n.d(t,"r",(function(){return y.a}));var g=n(10);n.d(t,"j",(function(){return g.a}));var v=n(16);n.d(t,"B",(function(){return v.a}));var b=n(41);n.d(t,"t",(function(){return b.b})),n.d(t,"l",(function(){return b.a}));var E=n(61);n.d(t,"h",(function(){return E.a}));var R=n(42);n.d(t,"m",(function(){return R.a})),n.d(t,"n",(function(){return R.b}));n(62),n(63),n(19);var w=n(24);n.d(t,"o",(function(){return w.a}));n(68);var _=n(69);n.d(t,"x",(function(){return _.a}));var k=n(44);n.d(t,"y",(function(){return k.b})),n.d(t,"w",(function(){return k.a}));n(45);var O=n(70);n.d(t,"A",(function(){return O.a}));var x=n(3);n.d(t,"z",(function(){return x.a}));var P=n(7);n.d(t,"J",(function(){return P.d})),n.d(t,"H",(function(){return P.b})),n.d(t,"I",(function(){return P.c}));var T=n(15);n.d(t,"G",(function(){return T.d})),n.d(t,"F",(function(){return T.c})),n.d(t,"E",(function(){return T.b})),n.d(t,"D",(function(){return T.a}));n(20)},120:function(e,t){e.exports=ReactDOM},129:function(e,t,n){"use strict";n.r(t);var r=n(12),a=n(1),o=wp.i18n.__,c={};c.RENAME=o("Rename","media-file-renamer"),c.MOVE=o("Move","media-file-renamer"),c.DASHBOARD=o("Dashboard","media-file-renamer"),c.PENDING=o("Pending","media-file-renamer"),c.RENAMED=o("Renamed","media-file-renamer"),c.ALL=o("All","media-file-renamer"),c.THUMB=o("Thumb","media-file-renamer"),c.TITLE=o("Title","media-file-renamer"),c.ATTACHED_TO=o("Attached To","media-file-renamer"),c.FILENAME=o("Filename","media-file-renamer");var l=c,i=mfrh_media_file_renamer.prefix,u=mfrh_media_file_renamer.domain,s=mfrh_media_file_renamer.rest_url.replace(/\/+$/,""),m=mfrh_media_file_renamer.api_url.replace(/\/+$/,""),d=mfrh_media_file_renamer.plugin_url.replace(/\/+$/,""),f="1"===mfrh_media_file_renamer.is_pro,p=f&&"1"===mfrh_media_file_renamer.is_registered,h=mfrh_media_file_renamer.rest_nonce,y="1"===mfrh_media_file_renamer.mfrh_undo,g="1"===mfrh_media_file_renamer.mfrh_move,v="1"===mfrh_media_file_renamer.mfrh_manual_rename;function b(e,t,n,r,a,o,c){try{var l=e[o](c),i=l.value}catch(e){return void n(e)}l.done?t(i):Promise.resolve(i).then(r,a)}function E(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function c(e){b(o,r,a,c,l,"next",e)}function l(e){b(o,r,a,c,l,"throw",e)}c(void 0)}))}}function R(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],c=!0,l=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return w(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return w(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var _,k,O,x,P,T=wp.element,S=T.useState,A=T.useEffect,j=function(e){var t=e.mutate,n=R(S(e.entry),2),r=n[0],o=n[1],c=R(S(!1),2),i=c[0],u=c[1],s=R(S(""),2),d=s[0],f=s[1],p=R(S(null),2),b=p[0],w=p[1],_=e.natural,k=void 0!==_&&_,O=Object(a.I)({concurrency:2}).runTask;A((function(){f(""),e.entry?o(e.entry):e.mediaId&&x(e.mediaId)}),[e.entry]);var x=function(){var e=E(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u((function(e){return e+1})),e.next=3,O(E(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Object(a.G)("".concat(m,"/analyze"),{nonce:h,json:{mediaId:t}}));case 1:case"end":return e.stop()}}),e)}))));case 3:n=e.sent,o(n.data),u((function(e){return e-1}));case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),P=function(){var e=E(regeneratorRuntime.mark((function e(t){var n,r,a,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(t.length<=220)){e.next=3;break}return f(t),e.abrupt("return");case 3:n=t.lastIndexOf("."),r=-1===n?"":".".concat(t.slice(n+1)),a=r.length>0?r.length:0,o="".concat(t.slice(0,220-a)).concat(r),f(o);case 8:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),T=function(){var e=E(regeneratorRuntime.mark((function e(n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:o(n),t&&t();case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),j=function(){var e=E(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u((function(e){return e+1})),e.next=3,Object(a.G)("".concat(m,"/rename"),{nonce:h,json:{mediaId:r.ID}});case 3:t=e.sent,T(t.data),w(null),u((function(e){return e-1}));case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),I=function(){var e=E(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u((function(e){return e+1})),e.next=3,Object(a.G)("".concat(m,"/rename"),{nonce:h,json:{mediaId:r.ID,filename:d}});case 3:t=e.sent,T(t.data),w(null),f(""),u((function(e){return e-1}));case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),C=function(){var e=E(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u((function(e){return e+1})),e.next=3,Object(a.G)("".concat(m,"/undo"),{nonce:h,json:{mediaId:r.ID}});case 3:t=e.sent,T(t.data,r.current_filename),u((function(e){return e-1}));case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),D=function(){var e=E(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u((function(e){return e+1})),e.next=3,Object(a.G)("".concat(m,"/set_lock"),{nonce:h,json:{mediaId:r.ID,lock:!r.locked}});case 3:t=e.sent,T(t.data),u((function(e){return e-1}));case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),M=function(){var e=E(regeneratorRuntime.mark((function e(){var t,n,o,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(console.log({entry:r}),t=r.metadata.file||"",n="/"+t.substring(0,t.lastIndexOf("/")),!(o=(o=(o=prompt("Where would you like to move this file (in the /uploads directory)?",n)).replace(/\/+$/,""))||"/")){e.next=13;break}return u((function(e){return e+1})),e.next=10,Object(a.G)("".concat(m,"/move"),{nonce:h,json:{mediaId:r.ID,newPath:o}});case 10:c=e.sent,T(c.data),u((function(e){return e-1}));case 13:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),U=!!d,B=U?d:b||(null==r?void 0:r.current_filename);return React.createElement(a.b,{busy:i},React.createElement("div",{style:{display:"flex",alignItems:"center"}},React.createElement(a.k,{natural:k,readOnly:!v||i,value:B,onChange:P,onEnter:I,maxLength:220,style:{marginRight:0,flex:"auto"}}),!U&&React.createElement(a.j,{icon:null!=r&&r.locked?"lock":"lock-open",width:24,title:null!=r&&r.locked?"Unlock, to allow future actions":"Lock, to avoid future actions",style:{position:"relative",left:-26,marginRight:-22},color:null!=r&&r.locked?a.z.blue:"#5a5a5a82",onClick:D}),U&&React.createElement(a.j,{icon:"close",width:24,style:{position:"relative",left:-26,marginRight:-22},color:null!=r&&r.locked?a.z.blue:"#5a5a5a82",onClick:function(){f("")}}),(null==r?void 0:r.proposed_filename_exists)&&React.createElement(a.j,{icon:"alert",color:"orange",tooltip:{text:"The ideal filename (".concat(r.proposed_filename,") already exists."),position:"left"}}),y&&!U&&(null==r?void 0:r.original_filename)&&React.createElement(a.j,{icon:"file-undo",title:"Rollback to original",color:a.z.red,onClick:C,onMouseEnter:function(){return w(null==r?void 0:r.original_filename)},onMouseLeave:function(){return w(null)}}),!U&&(null==r?void 0:r.proposed_filename)&&!(null!=r&&r.proposed_filename_exists)&&React.createElement(a.c,{style:{marginLeft:5},title:"Rename automatically",onMouseEnter:function(){return w(null==r?void 0:r.proposed_filename)},onMouseLeave:function(){return w(null)},onClick:j},"Auto Rename"),v&&U&&React.createElement(a.c,{style:{marginLeft:5},title:"Rename manually",onClick:I},l.RENAME),g&&React.createElement(a.c,{style:{marginLeft:5},title:"Move",onClick:M},l.MOVE)))},I=n(4);function C(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var D=I.a.div(_||(_=C(["\n color: white;\n padding: 15px;\n margin-bottom: -15px;\n\n a {\n color: #7dedff;\n text-decoration: none;\n }\n\n p {\n font-size: 15px;\n }\n"]))),M=Object(I.a)(a.a)(k||(k=C(["\n\n .nui-block-title {\n display: none;\n }\n\n .nui-block-content {\n display: flex;\n padding: 10px;\n\n h2 {\n color: #055082;\n font-size: 16px;\n margin: 5px 0 5px 0;\n\n a {\n text-decoration: none;\n }\n }\n\n p {\n margin: 0px;\n line-height: 18px;\n }\n }\n"]))),U=I.a.img(O||(O=C(["\n width: 85px;\n height: 85px;\n padding-right: 10px;\n"]))),B=I.a.div(x||(x=C(["\n\n margin: 15px;\n\n .center {\n background: white;\n border-radius: 10px;\n padding: 10px;\n font-family: Lato;\n max-width: 100%\n overflow: none;\n\n h2 {\n font-size: 26px;\n }\n\n table {\n width: 100%;\n\n tr td:first-child {\n width: 220px;\n font-weight: bold;\n color: #1e7cba;\n }\n\n * {\n overflow-wrap: anywhere;\n }\n }\n }\n\n hr {\n border-color: #1e7cba;\n }\n"]))),N=I.a.ul(P||(P=C(["\n margin-top: 10px;\n background: rgb(0, 72, 88);\n padding: 10px;\n color: rgb(58, 212, 58);\n max-height: 600px;\n min-height: 200px;\n display: block;\n font-family: monospace;\n font-size: 12px;\n white-space: pre;\n overflow-x: auto;\n width: calc(100vw - 276px);\n\n .log-date {\n color: white;\n margin-left: 8px;\n }\n\n .log-type {\n background: #0000004d;\n padding: 2px 5px;\n border-radius: 8px;\n text-transform: uppercase;\n }\n\n .log-content {\n display: block;\n }\n\n .log-warning .log-type {\n background: #ccb028;\n color: white;\n }\n\n .log-fatal .log-type {\n background: #cc2828;\n color: white;\n }\n"])));function L(e){return function(e){if(Array.isArray(e))return H(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||z(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function F(e,t,n,r,a,o,c){try{var l=e[o](c),i=l.value}catch(e){return void n(e)}l.done?t(i):Promise.resolve(i).then(r,a)}function G(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function c(e){F(o,r,a,c,l,"next",e)}function l(e){F(o,r,a,c,l,"throw",e)}c(void 0)}))}}function q(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],c=!0,l=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||z(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function z(e,t){if(e){if("string"==typeof e)return H(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?H(e,t):void 0}}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Y=wp.element,W=Y.useState,V=Y.useEffect,$="".concat(s,"/meow-common/v1"),J=function(e){var t=e.request,n=e.title,r=e.max,o=q(W(!1),2),c=o[0],l=o[1],i=q(W([]),2),u=i[0],s=i[1],m=u.length>0?u.reduce((function(e,t){return e+t})):0,d=u.length>0?Math.ceil(m/u.length):0,f=!u.length&&c;V((function(){c&&setTimeout(G(regeneratorRuntime.mark((function e(){var n,r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=(new Date).getTime(),e.next=3,Object(a.G)("".concat($,"/").concat(t),{nonce:h});case 3:r=(new Date).getTime(),o=r-n,s((function(e){return[].concat(L(e),[o])}));case 6:case"end":return e.stop()}}),e)}))),1e3)}),[u]);return React.createElement(D,{style:{width:200,textAlign:"center"}},React.createElement(a.B,{h2:!0,style:{color:"white"}},n),React.createElement(a.h,{size:200,value:f?r:d,max:r},React.createElement("span",{style:{fontSize:20}},f?"START":d+" ms"),React.createElement("span",{style:{fontSize:12}},f?"YOUR ENGINE":u.length+" requests")),React.createElement(a.c,{style:{width:"100%",marginTop:10},color:c?"#cc3627":"#ccb027",onClick:function(){c||s([]),l(!c)}},c?"Stop":"Start"))};function X(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Q(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?X(Object(n),!0).forEach((function(t){K(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):X(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function K(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Z(e,t,n,r,a,o,c){try{var l=e[o](c),i=l.value}catch(e){return void n(e)}l.done?t(i):Promise.resolve(i).then(r,a)}function ee(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function c(e){Z(o,r,a,c,l,"next",e)}function l(e){Z(o,r,a,c,l,"throw",e)}c(void 0)}))}}function te(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],c=!0,l=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return ne(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ne(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var re=wp.element,ae=re.useState,oe=re.useEffect;m&&s&&d||console.error("[@common/dashboard] apiUrl, restUrl and pluginUrl are mandatory.");var ce="".concat(s,"/meow-common/v1"),le=React.createElement(D,null,React.createElement(a.B,{p:!0},"Meow Apps is run by Jordy Meow, a photographer and software developer living in Japan (and taking ",React.createElement("a",{target:"_blank",href:"https://offbeatjapan.org"},"a lot of photos"),"). Meow Apps proposes a suite of plugins focusing on photography, imaging, optimization and SEO. The ultimate goal is to make your website better, faster, while making it easy. Meow Apps also teams up with the best players in the community. For more information, please check ",React.createElement("a",{href:"http://meowapps.com",target:"_blank"},"Meow Apps"),".")),ie=React.createElement(D,null,React.createElement(a.B,{p:!0},"The ",React.createElement("b",null,"Empty Request Time")," helps you analyzing the raw performance of your install by giving you the average time it takes to run an empty request to your server. You can try to disable some plugins (or change their options) then Start this again to see how it influences the results. An excellent install would have an Empty Request Time of less than 500 ms. Keep it absolutely under 2,000 ms! For more information, ",React.createElement("a",{href:"https://meowapps.com/clean-optimize-wordpress/#Optimize_your_Empty_Request_Time",target:"_blank"},"click here"),"."),React.createElement(a.B,{p:!0},React.createElement("b",null,"File Operation Time")," creates a temporary size of 10MB every time. ",React.createElement("b",null,"SQL Request Time")," counts the number of posts. Those two should be very fast, and almost the same as the ",React.createElement("b",null,"Empty Request Time"),".")),ue=React.createElement(D,null,React.createElement(a.B,{p:!0},"Too many WordPress installs are blown-up with useless and/or heavy plugins, and not aware of best practices. That's not the fault of the users; WordPress pretends to be simple but it is in fact very complex, and the immensity and diversity of the community around it makes it a real jungle where everything is possible."),React.createElement(a.B,{p:!0},"A rule of thumb is to keep your WordPress install as simple as possible, with the least number of plugins installed (run away from the heavy ones) and an excellent hosting service. Avoid VPS or self-hosted solutions; you must be a professional to actually set them up so that they are actually performant."),React.createElement(a.B,{p:!0},"On the Meow Apps website, you will find articles which are always updated with the latest recommendations.",React.createElement("ul",null,React.createElement("li",null,"☘️  ",React.createElement("a",{href:"https://meowapps.com/how-to-debug-wordpress-errors/",target:"_blank"},"How To Debug WordPress")),React.createElement("li",null,"☘️  ",React.createElement("a",{href:"https://meowapps.com/tutorial-improve-seo-wordpress/",target:"_blank"},"SEO Checklist & Optimization")),React.createElement("li",null,"☘️  ",React.createElement("a",{href:"https://meowapps.com/tutorial-faster-wordpress-optimize/",target:"_blank"},"Optimize your WordPress Speed")),React.createElement("li",null,"☘️  ",React.createElement("a",{href:"https://meowapps.com/tutorial-optimize-images-wordpress/",target:"_blank"},"Optimize Images (CDN, and so on)")),React.createElement("li",null,"☘️  ",React.createElement("a",{href:"https://meowapps.com/tutorial-hosting-service-wordpress/",target:"_blank"},"Best Hosting Services for WordPress"))))),se=["".concat(ce,"/all_settings/"),{headers:{"X-WP-Nonce":h}}],me=function(){var e=te(ae(!1),2),t=e[0],n=e[1],o=Object(r.b)(se,a.F),c=o.data,l=o.mutate,i=o.error,u=null==c?void 0:c.data,s=null==u?void 0:u.meowapps_hide_meowapps,m=null==u?void 0:u.force_sslverify,f=te(ae(!1),2),p=f[0],y=f[1],g=te(ae([]),2),v=g[0],b=g[1],E=te(ae(""),2),R=E[0],w=E[1];oe((function(){i&&!t&&(n(!0),console.error("Error from UseSWR",i.message))}),[i]),oe((function(){var e=document.getElementById("meow-common-phpinfo");w(e.innerHTML)}),[]);var _=function(){var e=ee(regeneratorRuntime.mark((function e(t,n){var r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(r=Q({},c.data))[n]=t,l(Q(Q({},c),{},{data:r}),!1),y(!0),e.next=6,Object(a.G)("".concat(ce,"/update_option"),{json:{name:n,value:t},nonce:h});case 6:o=e.sent,y(!1),o.success||alert(o.message),l();case 10:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),k=function(){var e=ee(regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return y(!0),e.next=3,Object(a.G)("".concat(ce,"/error_logs"),{nonce:h});case 3:t=e.sent,n=t&&t.data?t.data:[],b(n.reverse()),y(!1);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),O=React.createElement(a.v,{title:"Main Menu"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"meowapps_hide_meowapps",label:"Hide (Not Recommended)",description:React.createElement(a.B,{p:!0},"This will hide the Meow Apps Menu (on the left side) and everything it contains. You can re-enable it through though an option that will be added in Settings → General."),value:"1",disabled:p,checked:s,onChange:_}))),x=React.createElement(a.v,{title:"SSL Verify"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"force_sslverify",label:"Force (Not Recommended)",description:React.createElement(a.B,{p:!0},"This will enforce the usage of SSL when checking the license or updating the plugin."),value:"1",disabled:p,checked:m,onChange:_})));return React.createElement(a.q,{showRestError:t},React.createElement(a.i,{title:"The Dashboard"}),React.createElement(a.C,null,React.createElement(a.f,{full:!0},React.createElement(a.y,null,React.createElement(a.w,{title:"Meow Apps"},le,React.createElement(a.C,null,React.createElement(a.f,{minimal:!0},React.createElement(M,{title:"Media Cleaner",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/media-cleaner.jpg")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/media-cleaner/"},"Media Cleaner")),React.createElement("p",null,"The Cleaner analyzes your WordPress entirely to find out which files are not used. You can trash them, before deleting them permanently. Your WordPress will breath again :)"))),React.createElement(M,{title:"Media File Renamer",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/media-file-renamer.jpg")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/media-file-renamer/"},"Media File Renamer")),React.createElement("p",null,"The Renamer will help you in getting nicer filenames for an improved SEO and a tidier filesystem. It's mostly automatic and very fun to use."))),React.createElement(M,{title:"Contact Form Block",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/contact-form-block.png")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/contact-form-block/"},"Contact Form Block")),React.createElement("p",null,"A simple, pretty and superlight contact form. If you simply want your visitors to get in touch with you, this contact form will be perfect for you and your WordPress."))),React.createElement(M,{title:"Meow Analytics",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/meow-analytics.png")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/meow-analytics/"},"Meow Analytics")),React.createElement("p",null,"Are you tired of those heavy plugins, accessing your Google Analytics deliberately? Switch to Meow Analytics!")))),React.createElement(a.f,{minimal:!0},React.createElement(M,{title:"Meow Gallery",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/meow-gallery.jpg")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/meow-gallery/"},"Meow Gallery")),React.createElement("p",null,"This is the fastest gallery system... and it is pretty as well! It is 100% compatible with the native WordPress galleries and therefore, works right away."))),React.createElement(M,{title:"Meow Lightbox",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/meow-lightbox.jpg")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/meow-lightbox/"},"Meow Lightbox")),React.createElement("p",null,"A very sleek and performant Lightbox which will also display your EXIF data (camera, lens, aperture...). Photographers love it."))),React.createElement(M,{title:"Photo Engine",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/wplr-sync.jpg")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/wplr-sync/"},"Photo Engine")),React.createElement("p",null,"Are you using Lightroom? So you know Photo Engine already. Wait, you don't? You must try it! This plugin will be your favorite very soon."))),React.createElement(M,{title:"Perfect Images + Retina",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/wp-retina-2x.jpg")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/wp-retina-2x/"},"Perfect Images + Retina")),React.createElement("p",null,"It handles Retina, help you managing the Image Sizes registered in your WP, and much more.")))))),React.createElement(a.w,{title:"Performance"},ie,React.createElement("div",{style:{display:"flex",justifyContent:"space-around",marginBottom:25}},React.createElement(J,{title:"Empty Request Time",request:"empty_request",max:2500}),React.createElement(J,{title:"File Operation Time",request:"file_operation",max:2600}),React.createElement(J,{title:"SQL Request Time",request:"sql_request",max:2800}))),React.createElement(a.w,{title:"Recommendations"},ue),React.createElement(a.w,{title:"PHP Info"},React.createElement(B,{dangerouslySetInnerHTML:{__html:R}})),React.createElement(a.w,{title:"PHP Error Logs"},React.createElement(D,null,React.createElement(a.c,{style:{marginBottom:10},color:"#ccb027",onClick:k},"Load PHP Error Logs"),React.createElement(N,null,v.map((function(e){return React.createElement("li",{class:"log-".concat(e.type)},React.createElement("span",{class:"log-type"},e.type),React.createElement("span",{class:"log-date"},e.date),React.createElement("span",{class:"log-content"},e.content))}))))),React.createElement(a.w,{title:"Settings"},React.createElement(a.a,{title:"Settings",className:"primary"},O,x))))))};function de(e,t,n,r,a,o,c){try{var l=e[o](c),i=l.value}catch(e){return void n(e)}l.done?t(i):Promise.resolve(i).then(r,a)}function fe(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function c(e){de(o,r,a,c,l,"next",e)}function l(e){de(o,r,a,c,l,"throw",e)}c(void 0)}))}}function pe(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],c=!0,l=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return he(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return he(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function he(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var ye=wp.element,ge=ye.useState,ve=ye.useEffect,be="".concat(s,"/meow-licenser/").concat(i,"/v1"),Ee=function(){var e=pe(ge(!1),2),t=e[0],n=e[1],r=pe(ge(null),2),o=r[0],c=r[1],l=pe(ge(null),2),i=l[0],u=l[1],s=pe(ge(""),2),m=s[0],d=s[1],y=p&&(!i||"valid"!==i.license),g=function(){var e=fe(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(f){e.next=2;break}return e.abrupt("return");case 2:return n(!0),e.next=5,Object(a.G)("".concat(be,"/get_license"),{nonce:h});case 5:t=e.sent,u(t.data),t.data.key&&d(t.data.key),n(!1);case 9:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),v=function(){var e=fe(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n(!0),e.next=3,Object(a.G)("".concat(be,"/set_license"),{nonce:h,json:{serialKey:null}});case 3:e.sent.success&&(d(""),u(null),c("licenseRemoved")),n(!1);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),b=function(){var e=fe(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n(!0),e.next=3,Object(a.G)("".concat(be,"/set_license"),{nonce:h,json:{serialKey:m}});case 3:(t=e.sent).success&&(u(t.data),t.data&&!t.data.issue&&c("licenseAdded")),n(!1);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();ve((function(){g()}),[]);var E=y?"Forced License":p?"Enabled":"Disabled",R=i&&"valid"===i.license,w="Your license is active. Thanks a lot for your support :)";R||(i?"no_activations_left"===i.issue?w=React.createElement("span",null,"There are no activations left for this license. You can visit your account at the ",React.createElement("a",{target:"_blank",rel:"noreferrer",href:"https://store.meowapps.com"},"Meow Apps Store"),", unregister a site, and click on ",React.createElement("i",null,"Retry to validate"),"."):"expired"===i.issue?w=React.createElement("span",null,"Your license has expired. You can get another license or renew the current one by visiting your account at the ",React.createElement("a",{target:"_blank",rel:"noreferrer",href:"https://store.meowapps.com"},"Meow Apps Store"),"."):"missing"===i.issue?w="This license does not exist.":"disabled"===i.issue?w="This license has been disabled.":"item_name_mismatch"===i.issue?w="This license seems to be for a different plugin... isn't it? :)":(w=React.createElement("span",null,"There is an unknown error related to the system or this serial key. Really sorry about this! Make sure your security plugins and systems are off temporarily. If you are still experiencing an issue, please ",React.createElement("a",{target:"_blank",rel:"noreferrer",href:"https://meowapps.com/contact/"},"contact us"),"."),console.error({license:i})):w="Unknown error :(");var _=React.createElement(a.a,{title:"Pro Version (Not Installed)",className:"primary"},"You will find more information about the Pro Version ",React.createElement("a",{target:"_blank",rel:"noreferrer",href:"https://store.meowapps.com"},"here"),". If you actually bought the Pro Version already, please remove the current plugin and download the Pro Version from your account at the ",React.createElement("a",{target:"_blank",rel:"noreferrer",href:"https://store.meowapps.com/"},"Meow Apps Store"),"."),k=React.createElement(a.a,{title:"Pro Version (".concat(E,")"),busy:t,className:"primary"},React.createElement(a.v,{title:"Serial Key",style:{fontWeight:"bold"}},React.createElement(a.k,{id:"mfrh_pro_serial",name:"mfrh_pro_serial",disabled:t,value:m,onChange:function(e){return d(e)},placeholder:""})),i&&!R&&React.createElement(a.m,null,w),i&&R&&React.createElement(a.n,null,w),!i&&React.createElement(a.B,{p:!0},"Insert your serial key above. If you don't have one yet, you can get one ",React.createElement("a",{href:"https://store.meowapps.com"},"here"),". If there was an error during the validation, try the ",React.createElement("i",null,"Retry")," to ",React.createElement("i",null,"validate")," button."),React.createElement(a.v,{contentAlign:"right"},i&&!R&&React.createElement(a.c,{className:"secondary",disabled:t||!m,onClick:b},"Retry to validate"),i&&i.key===m&&React.createElement(a.c,{className:"secondary",disabled:t||!m,onClick:v},"Remove License"),React.createElement(a.c,{disabled:t||!m||i&&i.key===m,onClick:b},"Validate License")),React.createElement(a.o,{isOpen:"licenseAdded"===o,title:"Thank you :)",content:"The Pro features have been enabled. This page should be now reloaded.",ok:"Reload",onOkClick:function(){return location.reload()}}),React.createElement(a.o,{isOpen:"licenseRemoved"===o,title:"Goodbye :(",content:"The Pro features have been disabled. This page should be now reloaded.",ok:"Reload",onOkClick:function(){return location.reload()}}));return f?k:_},Re=wp.element.render;function we(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _e(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?we(Object(n),!0).forEach((function(t){ke(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):we(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ke(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Oe(e,t,n,r,a,o,c){try{var l=e[o](c),i=l.value}catch(e){return void n(e)}l.done?t(i):Promise.resolve(i).then(r,a)}function xe(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function c(e){Oe(o,r,a,c,l,"next",e)}function l(e){Oe(o,r,a,c,l,"throw",e)}c(void 0)}))}}function Pe(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],c=!0,l=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Te(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Te(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Te(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}document.meowDashboardLoaded||(document.meowDashboardLoaded=!0,document.addEventListener("DOMContentLoaded",(function(e){var t=document.getElementById("meow-common-dashboard");t&&Re(React.createElement(me,null),t)})));var Se=wp.element,Ae=Se.useState,je=Se.useMemo,Ie={marginTop:10,background:"rgb(0, 72, 88)",padding:10,color:"rgb(58, 212, 58)",maxHeight:600,minHeight:200,display:"block",fontFamily:"monospace",fontSize:12,whiteSpace:"pre",overflowX:"auto",width:"calc(100vw - 276px)"},Ce=function(){var e,t,n=je((function(){return["".concat(m,"/all_settings/"),{headers:{"X-WP-Nonce":h}}]}),[m,h]),o=Object(r.b)(n,a.F),c=o.data,l=o.mutate,s=Object(a.H)(c,{},!0),d=s.busy,y=s.data,g=s.error,v=Pe(Ae(""),2),b=v[0],E=v[1],R=Pe(Ae(!1),2),w=R[0],_=R[1],k=d||w,O=null==y?void 0:y.mfrh_auto_rename,x=null==y?void 0:y.mfrh_on_upload,P=null==y?void 0:y.mfrh_rename_slug,T=null==y?void 0:y.mfrh_convert_to_ascii,S=null==y?void 0:y.mfrh_update_posts,A=null==y?void 0:y.mfrh_update_postmeta,j=null==y?void 0:y.mfrh_undo,I=null==y?void 0:y.mfrh_move,C=null==y?void 0:y.mfrh_manual_rename,D=null==y?void 0:y.mfrh_numbered_files,M=null==y?void 0:y.mfrh_sync_alt,U=null==y?void 0:y.mfrh_sync_media_title,B=null==y?void 0:y.mfrh_force_rename,N=null==y?void 0:y.mfrh_log,L=null==y?void 0:y.mfrh_logsql,F=null==y?void 0:y.mfrh_rename_guid,G=null==y?void 0:y.mfrh_case_insensitive_check,q=null==y?void 0:y.mfrh_rename_on_save,z=null!==(e=null==y?void 0:y.mfrh_acf_field_name)&&void 0!==e?e:null,H=null!==(t=null==y?void 0:y.mfrh_images_only)&&void 0!==t&&t,Y=null==y?void 0:y.mfrh_clean_uninstall,W=[{id:"media_title",value:"media_title",label:React.createElement("span",null,"Based on Media Title"),requirePro:!1},{id:"post_acf_field",value:"post_acf_field",label:React.createElement("span",null,"Based on Attached Post (ACF Field)"),requirePro:!1},{id:"post_title",value:"post_title",label:React.createElement("span",null,"Based on Attached Post Title"),requirePro:!p},{id:"alt_text",value:"alt_text",label:React.createElement("span",null,"Based on Alternative Text"),requirePro:!p},{id:"anonymize_md5",value:"anonymize_md5",label:React.createElement("span",null,"Anonymize with MD5"),requirePro:!p},{id:"none",value:"none",label:React.createElement("span",null,"Disable Automatic Rename"),requirePro:!1}],V=function(){var e=xe(regeneratorRuntime.mark((function e(t,n){var r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(r=_e({},c.data))[n]=t,l(_e(_e({},c),{},{data:r}),!1),_(!0),e.prev=4,e.next=7,Object(a.G)("".concat(m,"/update_option"),{nonce:h,json:{name:n,value:t}});case 7:e.next=12;break;case 9:e.prev=9,e.t0=e.catch(4),alert(e.t0.message);case 12:return e.prev=12,_(!1),l(),e.finish(12);case 16:case"end":return e.stop()}}),e,null,[[4,9,12,16]])})));return function(t,n){return e.apply(this,arguments)}}(),$=function(){var e=xe(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return _(!0),e.next=3,Object(a.G)("".concat(m,"/refresh_logs"),{nonce:h});case 3:(t=e.sent).success&&E(t.data),_(!1);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),J=function(){var e=xe(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return _(!0),e.next=3,Object(a.G)("".concat(m,"/clear_logs"),{nonce:h});case 3:(t=e.sent).success&&E(t.data),_(!1);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),X=React.createElement(a.a,{busy:k,title:"Side Updates",className:"primary"},React.createElement(a.B,{p:!0,style:{marginTop:0}},"When the files are renamed, many links to them on your WordPress might be broken. Those options are updating the references to those files. ",React.createElement("strong",null,"Give it a try, every install is different and it might not work for certain kind of references.")),React.createElement(a.v,{title:"Posts"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_update_posts",disabled:k,label:"Enable",description:React.createElement(a.B,{p:!0},"Update the references to the renamed files in the ",React.createElement("strong",null,"content")," content and ",React.createElement("strong",null,"excerpt")," of the posts (pages and custom types included)."),value:"1",checked:S,onChange:V}))),React.createElement(a.v,{title:"Post Meta"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_update_postmeta",disabled:k,label:"Enable",description:React.createElement(a.B,{p:!0},"Update the references in the ",React.createElement("strong",null,"custom fields")," of the posts (including pages and custom types metadata)."),value:"1",checked:A,onChange:V})))),Q=React.createElement(a.v,{title:"Method"},React.createElement(a.u,{id:"mfrh_auto_rename",disabled:k,value:O,scrolldown:!0,name:"mfrh_auto_rename",description:"Attached Post includes all kinds of Post Types: Posts, Pages, Products, etc.",onChange:V},W.map((function(e){return React.createElement(a.p,{key:e.id,id:e.id,value:e.value,label:e.label,requirePro:e.requirePro})})))),K=je((function(){return"post_acf_field"!==O?null:React.createElement(a.v,{title:"ACF Field Name"},React.createElement(a.k,{id:"mfrh_acf_field_name",name:"mfrh_acf_field_name",value:z,onBlur:V}))}),[O]),Z=React.createElement(a.v,{title:"Images Only"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_images_only",label:"Enable",description:"Restricts the renaming to images (JPG and PNG). Nothing else will be renamed.",value:"1",checked:H,onChange:V}))),ee=React.createElement(a.v,{title:"On Upload"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_on_upload",disabled:k,label:"Enable",description:React.createElement(React.Fragment,null,React.createElement("span",null,"If your image has an EXIF title, it will be used to decide the filename. "),"post_title"===O&&React.createElement("span",null,"Note: The Attached Post Title ",React.createElement("u",null,"will not be used")," at the time of the upload due to WordPress API constraints.")),value:"1",checked:x,onChange:V}))),te=React.createElement(a.v,{title:"Slug/Permalink"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_rename_slug",disabled:k,label:"Sync with filename",description:"Better to keep this un-checked as the link might have been referenced somewhere else.",value:"1",checked:P,onChange:V}))),ne=React.createElement(a.v,{title:"Transliteration"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_convert_to_ascii",disabled:k,label:"Enable (Recommended)",description:React.createElement(a.B,{p:!0},"Replace accents, emoticons, diacritics, umlauts, cyrillic and any kind of tricky characters by their ASCII equivalent.",React.createElement("br",null)," ",React.createElement("i",null,"Examples: tête → tete, schön → schon, Добро → dobro, etc.")),value:"1",requirePro:!p,checked:T,onChange:V}))),re=React.createElement(a.v,{title:"Undo"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_undo",disabled:k,label:"Enable",description:"An undo icon will be added to the UI. This allows to rollback to the original filename.",value:"1",checked:j,onChange:V}))),ae=React.createElement(a.v,{title:"Move"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_move",disabled:k,label:"Enable",description:"A move button will be added, and will allow you to move a file to another directory.",value:"1",checked:I,onChange:V,requirePro:!p}))),oe=React.createElement(a.v,{title:"Rename Field"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_manual_rename",disabled:k,label:"Enable",description:"An editable field will be added everywhere your files appear in the UI.",value:"1",checked:C,onChange:V}))),ce=React.createElement(a.v,{title:"Force Rename"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_force_rename",disabled:k,label:"Enable",description:"Update the references to the file even if the file renaming itself was not successful. You might want to use that option if your install is broken and you are trying to link your Media to files for which the filenames has been altered (after a migration for exemple)",value:"1",requirePro:!p,checked:B,onChange:V}))),le=React.createElement(a.v,{title:"Numbered Files"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_numbered_files",disabled:k,label:"Enable Numbering",description:"Identical filenames will be allowed by the plugin and a number will be appended automatically (myfile.jpg, myfile-2.jpg, myfile-3.jpg, etc).",requirePro:!p,value:"1",checked:D,onChange:V}))),ie=React.createElement(a.v,{title:"ALT Text"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_sync_alt",disabled:k||"alt_text"==O,label:React.createElement(a.B,null,"Synchronize"),description:"The ALT Text will be synchronized with the same source used for the filename.",requirePro:!p,value:"1",checked:M,onChange:V}))),ue=React.createElement(a.v,{title:"Media Title"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_sync_media_title",disabled:k||"media_title"===O,label:React.createElement(a.B,null,"Synchronize"),description:"The Media Title will be synchronized with the same source used for the filename.",requirePro:!p,value:"1",checked:U,onChange:V}))),se=React.createElement(a.v,{title:"Logs"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_log",label:"Enable",description:React.createElement(a.B,{p:!0},"Simple logging that explains which actions has been run."),value:"1",checked:N,onChange:V}),React.createElement("div",{style:{marginTop:20}},React.createElement(a.c,{onClick:$},"Refresh Logs"),React.createElement(a.c,{className:"danger",onClick:J},"Clear Logs")))),me=React.createElement(a.v,{title:"SQL Logs"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_logsql",disabled:k,label:"Enable",description:React.createElement(a.B,{p:!0},"The files mfrh_sql.log and mfrh_sql_revert.log will be created in the /logs directory and will include the raw SQL queries which were run by the plugin. If there is an issue, the revert SQL file can help you."),requirePro:!p,value:"1",checked:L,onChange:V}))),de=React.createElement(a.v,{title:"GUID"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_rename_guid",disabled:k,label:"Sync with filename",description:"The GUID will be renamed like the new filename. Better to keep this un-checked.",value:"1",checked:F,onChange:V}))),fe=React.createElement(a.v,{title:"Case Insensitive"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_case_insensitive_check",label:"Enable",value:"1",checked:G,onChange:V,description:React.createElement(React.Fragment,null,'This will consider the file such as "abc.jpg" and "ABC.JPG" as the same file. More information ',React.createElement("a",{target:"_blank",href:"https://meowapps.com/media-file-renamer-faq-issues/"},"here"),". You should check this if you are on a Windows-based server.")}))),pe=React.createElement(a.v,{title:"Rename on Post Save"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_rename_on_save",disabled:k,label:"Enable (Unsafe)",description:"You can modify the titles of your media while editing a post but, of course, the plugin can't update the HTML at this stage. With this option, the plugin will update the filenames and HTML after that you saved the post.",value:"1",checked:q,onChange:V}))),he=React.createElement(a.v,{title:"Plugin Data"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_clean_uninstall",label:"Delete all",description:"The database and all the options of the plugin will be removed on uninstall. This also includes the information about the plugin's trash.",value:"1",checked:Y,onChange:V})));return React.createElement(a.q,{nekoErrors:[g]},React.createElement(a.i,{title:"Media File Renamer | Settings",subtitle:"By Jordy Meow"},React.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},React.createElement(a.c,{className:"header",onClick:function(){return window.open("https://meowapps.com/media-file-renamer-tutorial/","_blank")}},"Tutorial"),React.createElement(a.c,{className:"header",icon:"dashboard",onClick:function(){return location.href="upload.php?page=mfrh_dashboard"}},"Dashboard"))),React.createElement(a.C,null,React.createElement(a.f,{full:!0},React.createElement(a.g,null,React.createElement(a.B,{p:!0},"It works out of the box, the default settings are good for most installs. However, you should really have a look at the ",React.createElement("a",{href:"https://meowapps.com/plugin/media-file-renamer/"},"tutorial"),". If you are a SEO guru or someone who loves having a perfectly neat filesystem, it is recommended to use automatic renaming first, then to tweak specific files with manual renaming. The ",React.createElement("a",{href:"/wp-admin/upload.php?page=mfrh_dashboard"},"Renamer Dashboard")," makes it very easy.")),React.createElement(a.y,null,React.createElement(a.w,{title:"Basic"},React.createElement(a.C,null,React.createElement(a.f,{minimal:!0},React.createElement(a.a,{busy:k,title:"Settings",className:"primary"},React.createElement(a.B,{h2:!0},"Automatic"),React.createElement(a.B,{p:!0},"This plugin's main goal is to make the process of optimizing your filenames entirely automatic. By default, your files will be named after the title of your media entry."),Q,K,React.createElement(a.B,{h2:!0},"Manual"),oe,React.createElement(a.B,{h2:!0},"Extra Options"),ee,Z)),React.createElement(a.f,{minimal:!0},X,React.createElement(a.a,{busy:k,title:"UI (Extra Features)",className:"primary"},re,ae)))),React.createElement(a.w,{title:"Advanced"},React.createElement(a.C,null,React.createElement(a.f,{minimal:!0},React.createElement(a.a,{busy:k,title:"Advanced Settings",className:"primary"},ne,le),React.createElement(a.a,{busy:k,title:"Fields Syncing",className:"primary"},te,de,ie,ue,React.createElement(a.B,{p:!0},"The fields in the database will be synchronized, but the data already written in your HTML will not be overwritten.")),React.createElement(a.a,{busy:k,title:"On Uninstall",className:"primary"},he)),React.createElement(a.f,{minimal:!0},React.createElement(a.a,{busy:k,title:"Developer Settings",className:"primary"},fe,ce,me,pe)))),React.createElement(a.w,{title:"License (Pro)"},React.createElement(Ee,{domain:u,prefix:i,isPro:f,isRegistered:p})),React.createElement(a.w,{title:"Logs & Debug"},React.createElement(a.a,{busy:k,className:"primary"},se),React.createElement("div",{style:Ie},b))))))},De=n(0);function Me(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],c=!0,l=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Ue(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ue(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ue(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Be(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ne(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Be(Object(n),!0).forEach((function(t){Le(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Be(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Le(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Fe(e,t,n,r,a,o,c){try{var l=e[o](c),i=l.value}catch(e){return void n(e)}l.done?t(i):Promise.resolve(i).then(r,a)}function Ge(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function c(e){Fe(o,r,a,c,l,"next",e)}function l(e){Fe(o,r,a,c,l,"throw",e)}c(void 0)}))}}var qe,ze,He,Ye={pending:"-",renamed:"-",locked:"-",all:"-"},We={accessor:"id",by:"asc"},Ve=0,$e={filterBy:"pending",sort:We,page:1,limit:10,search:"",busy:!1,stats:Ye,apiErrors:null,status:"",entries:[],selectedItems:[],total:0,autoRename:!1,onUpload:!1,renameSlug:!1,convertToAscii:!1,updatePosts:!0,updatePostmeta:!0,undo:!1,move:!1,manualRename:!1,numberedFiles:!1,syncAlt:!1,syncMedia_title:!1,forceRename:!1,log:!1,logsql:!1,renameGuid:!1,caseInsensitiveCheck:!1,renameOnSave:!1,acfFieldName:null,imagesOnly:!1,modals:{renameAll:!1,undoAll:!1,editTitle:!1,autoAttach:!1},mutateEntries:(He=Ge(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)}))),function(){return He.apply(this,arguments)}),mutateStats:(ze=Ge(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)}))),function(){return ze.apply(this,arguments)}),mutateSettings:(qe=Ge(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)}))),function(){return qe.apply(this,arguments)})},Je=function(e,t){switch(t.type){case"ENTRIES_UPDATED":var n=t.entries;return Ne(Ne({},e),{},{entries:n});case"STATS_UPDATED":var r=t.stats;return Ne(Ne({},e),{},{stats:r});case"ERROR_UPDATED":var a=t.apiErrors;return Ne(Ne({},e),{},{apiErrors:a});case"PAGE_UPDATED":var o=t.page;return Ne(Ne({},e),{},{page:o});case"SET_ENTRIES_MUTATE":var c=t.mutateEntries;return Ne(Ne({},e),{},{mutateEntries:c});case"SET_STATS_MUTATE":var l=t.mutateStats;return Ne(Ne({},e),{},{mutateStats:l});case"SET_SETTINGS_MUTATE":var i=t.mutateSettings;return Ne(Ne({},e),{},{mutateSettings:i});case"LIMIT_UPDATED":var u=t.limit;return Ne(Ne({},e),{},{limit:u});case"FILTER_UPDATED":var s=t.filter;return Ne(Ne({},e),{},{filterBy:s});case"SORT_UPDATED":var m=t.sort,d=void 0===m?We:m;return Ne(Ne({},e),{},{sort:d});case"SEARCH_UPDATED":var f=t.search;return Ne(Ne({},e),{},{search:f});case"TOTAL_UPDATED":var p=t.total;return Ne(Ne({},e),{},{total:p});case"TOGGLE_MODAL":var h=t.modal,y=t.enable;if(void 0===e.modals[h])return alert("The modal ".concat(h," doesn't exist.")),console.error("The modal ".concat(h," doesn't exist.")),e;void 0===y&&(y=!e.modals[h]);var g=Ne({},e);return g.modals=Ne({},g.modals),g.modals[h]=y,g;case"PUSH_BUSY":var v=t.status,b=void 0===v?"":v;return Ne(Ne({},e),{},{busy:++Ve>0,status:b});case"POP_BUSY":var E=t.status,R=void 0===E?"":E;return Ne(Ne({},e),{},{busy:--Ve>0,status:R});case"STATUS_UPDATED":var w=t.status,_=void 0===w?"":w;return Ne(Ne({},e),{},{status:_});case"SETTINGS_UPDATED":var k,O,x,P,T,S,A,j,I,C,D,M,U,B,N,L,F,G,q,z=t.settings,H=null!==(k=z.mfrh_auto_rename)&&void 0!==k&&k,Y=null!==(O=z.mfrh_on_upload)&&void 0!==O&&O,W=null!==(x=z.mfrh_rename_slug)&&void 0!==x&&x,V=null!==(P=z.mfrh_convert_to_ascii)&&void 0!==P&&P,$=null===(T=z.mfrh_update_posts)||void 0===T||T,J=null===(S=z.mfrh_update_postmeta)||void 0===S||S,X=null!==(A=z.mfrh_undo)&&void 0!==A&&A,Q=null!==(j=z.mfrh_move)&&void 0!==j&&j,K=null!==(I=z.mfrh_manual_rename)&&void 0!==I&&I,Z=null!==(C=z.mfrh_numbered_files)&&void 0!==C&&C,ee=null!==(D=z.mfrh_sync_alt)&&void 0!==D&&D,te=null!==(M=z.mfrh_sync_media_title)&&void 0!==M&&M,ne=null!==(U=z.mfrh_force_rename)&&void 0!==U&&U,re=null!==(B=z.mfrh_log)&&void 0!==B&&B,ae=null!==(N=z.mfrh_logsql)&&void 0!==N&&N,oe=null!==(L=z.mfrh_rename_guid)&&void 0!==L&&L,ce=null!==(F=z.mfrh_case_insensitive_check)&&void 0!==F&&F,le=null!==(G=z.mfrh_rename_on_save)&&void 0!==G&&G,ie=z.mfrh_acf_field_name,ue=null!==(q=z.mfrh_images_only)&&void 0!==q&&q,se=z.mfrh_posts_per_page?parseInt(z.mfrh_posts_per_page):10;return Ne(Ne({},e),{},{autoRename:H,onUpload:Y,renameSlug:W,convertToAscii:V,updatePosts:$,updatePostmeta:J,undo:X,move:Q,manualRename:K,numberedFiles:Z,syncAlt:ee,syncMedia_title:te,forceRename:ne,log:re,logsql:ae,renameGuid:oe,caseInsensitiveCheck:ce,renameOnSave:le,acfFieldName:ie,imagesOnly:ue,limit:se});case"ITEMS_SELECTED":var me=t.selectedItems;return Ne(Ne({},e),{},{selectedItems:me});default:return e}},Xe=Object(De.createContext)(),Qe=function(e){var t=e.children,n=Me(Object(De.useReducer)(Je,$e),2),o=n[0],c=n[1],l=o.filterBy,i=o.sort,u=o.search,s=o.page,d=o.limit,f=Object(De.useMemo)((function(){return[Object(a.D)("".concat(m,"/media"),{limit:d,skip:(s-1)*d,filterBy:l,orderBy:i.accessor,order:i.by,search:u}),{headers:{"X-WP-Nonce":h}}]}),[d,s,l,i,u]),p=Object(De.useMemo)((function(){return[Object(a.D)("".concat(m,"/stats"),{search:u}),{headers:{"X-WP-Nonce":h}}]}),[u]),y=Object(De.useMemo)((function(){return["".concat(m,"/all_settings/"),{headers:{"X-WP-Nonce":h}}]}),[]),g=Object(r.b)(f,a.F),v=g.data,b=g.mutate;Object(De.useEffect)((function(){c({type:"SET_ENTRIES_MUTATE",mutateEntries:b})}),[b]),Object(De.useEffect)((function(){c({type:"SET_STATS_MUTATE",mutateStats:P})}),[P]),Object(De.useEffect)((function(){c({type:"SET_SETTINGS_MUTATE",mutateSettings:D})}),[D]);var E=Object(a.H)(v,[],!0),R=E.busy,w=E.data,_=E.total,k=E.error;Object(De.useEffect)((function(){c({type:R?"PUSH_BUSY":"POP_BUSY"})}),[R]),Object(De.useEffect)((function(){c({type:"ENTRIES_UPDATED",entries:w})}),[w]),Object(De.useEffect)((function(){c({type:"TOTAL_UPDATED",total:_})}),[_]),Object(De.useEffect)((function(){c({type:"ERROR_UPDATED",apiError:k})}),[k]);var O=Object(r.b)(p,a.F),x=O.data,P=O.mutate,T=Object(a.H)(x,Ye,!0),S=T.busy,A=T.data,j=T.error;Object(De.useEffect)((function(){c({type:S?"PUSH_BUSY":"POP_BUSY"})}),[S]),Object(De.useEffect)((function(){c({type:"STATS_UPDATED",stats:A})}),[A]),Object(De.useEffect)((function(){c({type:"ERROR_UPDATED",apiError:j})}),[j]);var I=Object(r.b)(y,a.F),C=I.data,D=I.mutate,M=Object(a.H)(C,{},!0),U=M.busy,B=M.data,N=M.error;return Object(De.useEffect)((function(){c({type:U?"PUSH_BUSY":"POP_BUSY"})}),[U]),Object(De.useEffect)((function(){c({type:"SETTINGS_UPDATED",settings:B})}),[B]),Object(De.useEffect)((function(){c({type:"ERROR_UPDATED",apiError:N})}),[N]),React.createElement(Xe.Provider,{value:[o,c]},t)},Ke=function(){var e={},t=Me(Object(De.useContext)(Xe),2),n=t[0],r=t[1];return e.setSelectedItems=function(e){r({type:"ITEMS_SELECTED",selectedItems:e})},e.setStatus=function(e){r({type:"STATUS_UPDATED",status:e})},e.updateOption=function(){var e=Ge(regeneratorRuntime.mark((function e(t,o){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r({type:"PUSH_BUSY"}),e.prev=1,e.next=4,Object(a.G)("".concat(m,"/update_option"),{nonce:h,json:{name:o,value:t}});case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(1),alert(e.t0);case 9:r({type:"POP_BUSY"}),n.mutateSettings();case 11:case"end":return e.stop()}}),e,null,[[1,6]])})));return function(t,n){return e.apply(this,arguments)}}(),e.updateEntry=function(){var e=Ge(regeneratorRuntime.mark((function e(t,o){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r({type:"STATUS_UPDATED",status:"Updating..."}),r({type:"PUSH_BUSY"}),e.prev=2,e.next=5,Object(a.G)("".concat(m,"/update_media"),{nonce:h,json:Ne({id:o},t)});case 5:if(e.sent.success){e.next=8;break}throw new Error("Failed to move the folder/gallery.");case 8:n.mutateEntries(),e.next=14;break;case 11:e.prev=11,e.t0=e.catch(2),alert(e.t0.message);case 14:return e.prev=14,r({type:"POP_BUSY"}),e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[2,11,14,17]])})));return function(t,n){return e.apply(this,arguments)}}(),e.setPage=function(e){r({type:"PAGE_UPDATED",page:e})},e.setLimit=function(e){r({type:"LIMIT_UPDATED",limit:e})},e.setFilter=function(e){r({type:"FILTER_UPDATED",filter:e})},e.setSort=function(e){r({type:"SORT_UPDATED",sort:e})},e.setSearch=function(e){r({type:"SEARCH_UPDATED",search:e})},e.toggleModal=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;r({type:"TOGGLE_MODAL",modal:e,enable:t})},e.pushBusy=function(){r({type:"PUSH_BUSY"})},e.popBusy=function(){r({type:"POP_BUSY"})},Ne(Ne({},n),e)};function Ze(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function et(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ze(Object(n),!0).forEach((function(t){tt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ze(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function tt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function nt(e){return function(e){if(Array.isArray(e))return lt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ct(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function rt(e,t,n,r,a,o,c){try{var l=e[o](c),i=l.value}catch(e){return void n(e)}l.done?t(i):Promise.resolve(i).then(r,a)}function at(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function c(e){rt(o,r,a,c,l,"next",e)}function l(e){rt(o,r,a,c,l,"throw",e)}c(void 0)}))}}function ot(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],c=!0,l=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||ct(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ct(e,t){if(e){if("string"==typeof e)return lt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?lt(e,t):void 0}}function lt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var it=wp.element,ut=it.useState,st=it.useEffect,mt=it.useMemo,dt={width:40,height:40,objectFit:"cover"},ft=[{accessor:"thumbnail_url",title:l.THUMB,style:{width:16}},{accessor:"post_title",title:l.TITLE,sortable:!0,style:{width:"25%"}},{accessor:"post_parent",title:l.ATTACHED_TO,sortable:!0,style:{width:"25%"}},{accessor:"current_filename",title:l.FILENAME,sortable:!0}],pt=function(){var e=Ke(),t=e.apiErrors,n=e.busy,r=e.selectedItems,o=e.entries,c=e.stats,i=e.total,u=e.filterBy,s=e.search,d=e.status,f=e.sort,g=e.page,v=e.limit,b=e.modals,E=Ke(),R=E.setSelectedItems,w=E.setSearch,_=E.setStatus,k=E.setSort,O=E.setPage,x=E.setLimit,P=E.setFilter,T=E.mutateEntries,S=E.mutateStats,A=E.toggleModal,I=E.updateOption,C=E.updateEntry,D=ot(ut(!1),2),M=D[0],U=D[1],B=ot(ut(""),2),N=B[0],L=B[1],F=ot(ut(),2),G=F[0],q=F[1],z=Object(a.J)(),H=mt((function(){return o.map((function(e){return{id:e.ID,thumbnail_url:React.createElement("img",{src:e.thumbnail_url,style:dt}),post_title:React.createElement("div",{style:{display:"flex",alignItems:"center"}},React.createElement("a",{href:"post.php?post=".concat(e.ID,"&action=edit")},e.post_title),React.createElement(a.j,{icon:"pencil",width:"20",height:"20",color:a.z.blue,style:{marginLeft:"2px",cursor:"pointer"},onClick:function(){q(e),A("editTitle")}})),post_parent:React.createElement("div",{style:{maxHeight:35,overflow:"hidden"}},e.post_parent_title?e.post_parent_title:React.createElement("i",{style:{color:"#c1c1c1"}},"None")),current_filename:React.createElement(j,{entry:e,mutate:function(){T(),S()}})}}))}),[o]);st((function(){R([]),k(),O(1)}),[u,s]),st((function(){if(null!==z.busy&&(U(z.busy),!z.busy)){var e=z.getErrorCount();e>0&&L("The process has finished, but ".concat(e," error(s) occurred (check your console).")),z.reset(),R([]),T(),S()}}),[z.busy]);var Y=function(){var e=at(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(a.G)("".concat(m,"/get_all_ids"),{nonce:h,json:{unlockedOnly:t}});case 2:if((n=e.sent).success){e.next=6;break}return alert(n.message),e.abrupt("return",[]);case 6:return e.abrupt("return",n.data);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),W=function(){var e=at(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(a.G)("".concat(m,"/get_all_post_ids"),{nonce:h});case 2:if((t=e.sent).success){e.next=6;break}return alert(t.message),e.abrupt("return",[]);case 6:return e.abrupt("return",t.data);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),V=function(){var e=at(regeneratorRuntime.mark((function e(){var t,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return _("Preparing..."),U(!0),e.next=4,W();case 4:if(!(t=e.sent)){e.next=11;break}return _("Auto attaching..."),n=Object(a.E)(t,20),r=n.map((function(e){return function(){var t=at(regeneratorRuntime.mark((function t(n){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Object(a.G)("".concat(m,"/auto_attach"),{nonce:h,json:{postIds:e},signal:n});case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()})),z.start(r),e.abrupt("return");case 11:U(!1);case 12:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),$=function(){var e=at(regeneratorRuntime.mark((function e(){var t,n,r,o=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=o.length>0&&void 0!==o[0]?o[0]:null,_("Preparing..."),U(!0),!t){e.next=7;break}e.t0=t,e.next=10;break;case 7:return e.next=9,Y(!0);case 9:e.t0=e.sent;case 10:if(!(n=e.t0)){e.next=16;break}return _("Undoing..."),r=n.map((function(e){return function(){var t=at(regeneratorRuntime.mark((function t(n){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return _("Undo Media ".concat(e)),t.next=3,Object(a.G)("".concat(m,"/undo"),{nonce:h,json:{mediaId:e},signal:n});case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()})),z.start(r),e.abrupt("return");case 16:U(!1);case 17:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),J=function(){var e=at(regeneratorRuntime.mark((function e(){var t,n,r,o,c=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=c.length>0&&void 0!==c[0]?c[0]:null,_("Preparing..."),U(!0),!t){e.next=7;break}e.t0=t,e.next=10;break;case 7:return e.next=9,Y(!0);case 9:e.t0=e.sent;case 10:if(!(n=e.t0)){e.next=17;break}return _("Analyzing..."),r=Object(a.E)(n,20),o=r.map((function(e){return function(){var t=at(regeneratorRuntime.mark((function t(n){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Object(a.G)("".concat(m,"/analyze"),{nonce:h,json:{mediaIds:e},signal:n});case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()})),z.start(o),e.abrupt("return");case 17:U(!1);case 18:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),X=function(){var e=at(regeneratorRuntime.mark((function e(){var t,n,r,o,c,l=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=!(l.length>0&&void 0!==l[0])||l[0],n=l.length>1&&void 0!==l[1]?l[1]:null,_("Preparing..."),U(!0),!n){e.next=8;break}e.t0=n,e.next=11;break;case 8:return e.next=10,Y(t);case 10:e.t0=e.sent;case 11:if(!(r=e.t0)){e.next=18;break}return _("".concat(t?"Locking..":"Unlocking...")),o=Object(a.E)(r,50),c=o.map((function(e){return function(){var e=at(regeneratorRuntime.mark((function e(n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(a.G)("".concat(m,"/set_lock"),{nonce:h,json:{mediaIds:r,lock:t},signal:n});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()})),z.start(c),e.abrupt("return");case 18:U(!1);case 19:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Q=function(){var e=at(regeneratorRuntime.mark((function e(){var t,n,r,o=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=o.length>0&&void 0!==o[0]?o[0]:null,_("Preparing..."),U(!0),!t){e.next=7;break}e.t0=t,e.next=10;break;case 7:return e.next=9,Y(!0);case 9:e.t0=e.sent;case 10:if(!(n=e.t0)){e.next=15;break}return r=n.map((function(e){return function(){var t=at(regeneratorRuntime.mark((function t(n){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return _("Renaming #".concat(e)),t.next=3,Object(a.G)("".concat(m,"/rename"),{nonce:h,json:{mediaId:e},signal:n});case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()})),z.start(r),e.abrupt("return");case 15:U(!1);case 16:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),K=function(){var e=at(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:C({post_title:t.post_title},t.ID);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Z=function(){var e=at(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:I(t,"mfrh_posts_per_page");case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),ee=React.createElement(React.Fragment,null,React.createElement("div",null,"All your posts, pages, products (and other post types) will be scanned, and if images are used in them, they will be attached. Currently, Featured Images and Product Galleries are supported. Should we start?"),!p&&React.createElement("div",{style:{marginTop:20}},React.createElement("b",null,"This feature is only available in the Pro version."))),te=React.createElement(React.Fragment,null,React.createElement(a.c,{className:"secondary",onClick:function(){return window.open("https://meowapps.com/plugin/media-file-renamer/","_blank")}},"Get the Pro Version"),React.createElement(a.c,{className:"primary",onClick:function(){return window.open("https://meowapps.com/media-file-renamer-tutorial/","_blank")}},"Read the tutorial"));return React.createElement(a.q,{nekoErrors:[t]},React.createElement(a.i,{title:"Media File Renamer | Dashboard",subtitle:"By Jordy Meow"},React.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},React.createElement(a.c,{className:"header",onClick:function(){return window.open("https://meowapps.com/media-file-renamer-tutorial/","_blank")}},"Tutorial"),React.createElement(a.c,{icon:"cog",className:"header",onClick:function(){return location.href="admin.php?page=mfrh_settings"}},"Settings"))),React.createElement(a.C,null,React.createElement(a.f,{full:!0},!p&&React.createElement(a.g,{footer:te},React.createElement(a.B,{p:!0},"You must ",React.createElement("b",null,"backup the uploads folder and DB")," before using the Renamer. If you don't know how, give a try to ",React.createElement("a",{target:"_blank",href:"https://meow.click/blogvault"},"BlogVault"),". It is also highly recommanded to read the tutorial. Last but not least, check the ",React.createElement("b",null,"Pro Version"),", as it adds many features and also supports the development. This message is only displayed in the free version. Thank you!")),React.createElement(a.A,null,React.createElement(a.c,{onClick:function(){return J()}},"Analyze Library"),React.createElement(a.c,{onClick:function(){return A("autoAttach")}},"Auto Attach"),"pending"===u&&r.length>0&&React.createElement(React.Fragment,null,React.createElement(a.c,{className:"secondary",onClick:function(){return Q(r)}},"Rename ",React.createElement("strong",null,r.length)," entries"),React.createElement(a.c,{className:"secondary",onClick:function(){return X(!0,r)}},"Lock ",React.createElement("strong",null,r.length)," entries")),y&&"renamed"===u&&r.length>0&&React.createElement(React.Fragment,null,React.createElement(a.c,{className:"secondary",onClick:function(){return $(r)}},"Undo ",React.createElement("strong",null,r.length)," entries")),React.createElement("div",{style:{flex:1}},M&&React.createElement(a.s,{status:function(e){return"".concat(d," (").concat(e,"%)")},busy:M,value:z.value,max:z.max,onStopClick:z.stop})),!(n||M)&&React.createElement(React.Fragment,null,React.createElement(a.k,{onBlur:function(e){w(e)},value:s,onEnter:function(e){w(e)}}),!s&&React.createElement(a.j,{icon:"search",width:24,style:{position:"relative",left:-34,marginRight:-22},color:"#5a5a5a82"}),s&&React.createElement(a.j,{icon:"close",width:24,style:{position:"relative",left:-34,marginRight:-22},color:a.z.blue,onClick:function(){w("")}})),"all"===u&&React.createElement(React.Fragment,null,React.createElement(a.c,{className:"secondary",onClick:function(){return X(!0)}},"Lock ",React.createElement("strong",null,"All")),React.createElement(a.c,{className:"secondary",onClick:function(){return X(!1)}},"Unlock ",React.createElement("strong",null,"All"))),("all"===u||"pending"===u)&&React.createElement(React.Fragment,null,React.createElement(a.c,{className:"primary",onClick:function(){return A("renameAll")}},"Rename ",React.createElement("strong",null,"All"))),y&&("all"===u||"renamed"===u)&&React.createElement(React.Fragment,null,React.createElement(a.c,{className:"danger",onClick:function(){return A("undoAll")}},"Undo ",React.createElement("strong",null,"All")))),React.createElement("div",{style:{display:"flex",justifyContent:"space-between",marginTop:10,marginBottom:10}},React.createElement(a.t,{value:u,busy:n||M,onChange:function(e){P(e),O(1)}},React.createElement(a.l,{title:l.PENDING,value:"pending",count:c.pending}),React.createElement(a.l,{title:"Renamed",value:"renamed",count:c.renamed}),React.createElement(a.l,{title:"Locked",value:"locked",count:c.locked}),React.createElement(a.l,{title:"All",value:"all",count:c.all})),React.createElement(a.r,{currentPage:g,limit:v,total:i,onClick:function(e){return O(e)}})),React.createElement(a.x,{busy:n||M,data:H,columns:ft,sort:f,onSortChange:function(e,t){k({accessor:e,by:t})},onSelect:function(e){R([].concat(nt(r),nt(e)))},onUnselect:function(e){R(nt(r.filter((function(t){return!e.includes(t)}))))},selectedItems:r}),React.createElement("div",{style:{display:"flex",justifyContent:"space-between",marginTop:10}},React.createElement(a.u,{scrolldown:!0,value:v,onChange:function(e){x(e),O(1),Z(e)}},React.createElement(a.p,{value:5,label:"5 items per page"}),React.createElement(a.p,{value:10,label:"10 items per page"}),React.createElement(a.p,{value:25,label:"25 items per page"}),React.createElement(a.p,{value:50,label:"50 items per page"}),React.createElement(a.p,{value:100,label:"100 items per page"}),React.createElement(a.p,{value:200,label:"200 items per page"})),React.createElement(a.r,{currentPage:g,limit:v,total:i,onClick:function(e){return O(e)}}))),React.createElement(a.o,{isOpen:b.autoAttach,onRequestClose:function(){return A("autoAttach",!1)},title:"Automatically attach your images to your posts",content:ee,ok:p?"Run":"I need the Pro Version",onOkClick:function(){A("autoAttach",!1),p&&V()},onCancelClick:function(){A("autoAttach",!1)}}),React.createElement(a.o,{isOpen:b.renameAll,onRequestClose:function(){return A("renameAll",!1)},title:"You are about to rename all your (unlocked) files",content:"Renaming files is a dangerous operation. Please make sure you made a backup or your entire WordPress install. Should we start?",onOkClick:function(){A("renameAll",!1),Q()},onCancelClick:function(){A("renameAll",!1)}}),React.createElement(a.o,{isOpen:b.undoAll,onRequestClose:function(){return A("undoAll",!1)},title:"You are about to undo the renaming for all your files",content:"Are you sure you would like to proceed?",onOkClick:function(){A("undoAll",!1),$()},onCancelClick:function(){A("undoAll",!1)}}),React.createElement(a.o,{isOpen:N,title:"Success",ok:"Close",content:N,onOkClick:function(){L(""),z.reset()}}),React.createElement(a.o,{isOpen:b.editTitle,onRequestClose:function(){return A("editTitle",!1)},title:"Edit the title",okOnEnter:!0,content:React.createElement(a.k,{autoFocus:!0,id:"mfrh_edit_title",name:"mfrh_edit_title",placeholder:"title...",value:null==G?void 0:G.post_title,onBlur:function(e){return q(et(et({},G),{},{post_title:e}))}}),onOkClick:function(){A("editTitle",!1),K(G)},onCancelClick:function(){A("editTitle",!1)}})))},ht=wp.element.render,yt={fetcher:a.F,revalidateOnFocus:!1};function gt(){Array.from(document.getElementsByClassName("mfrh-renamer-field")).forEach((function(e){var t=e.getAttribute("data-id");ht(React.createElement(j,{natural:!0,mediaId:t}),e)}))}document.addEventListener("DOMContentLoaded",(function(e){var t,n;new MutationObserver((function(){gt()})).observe(document.documentElement,{childList:!0,subtree:!0}),(t=document.getElementById("mfrh-admin-settings"))&&ht(React.createElement(r.a,{value:yt},React.createElement(Ce,null)),t),(n=document.getElementById("mfrh-media-rename"))&&ht(React.createElement(r.a,{value:yt},React.createElement(Qe,null,React.createElement(pt,null))),n),gt()}))}});
2
  //# sourceMappingURL=index.js.map
1
+ !function(e){function t(t){for(var r,c,l=t[0],i=t[1],u=t[2],m=0,d=[];m<l.length;m++)c=l[m],Object.prototype.hasOwnProperty.call(a,c)&&a[c]&&d.push(a[c][0]),a[c]=0;for(r in i)Object.prototype.hasOwnProperty.call(i,r)&&(e[r]=i[r]);for(s&&s(t);d.length;)d.shift()();return o.push.apply(o,u||[]),n()}function n(){for(var e,t=0;t<o.length;t++){for(var n=o[t],r=!0,l=1;l<n.length;l++){var i=n[l];0!==a[i]&&(r=!1)}r&&(o.splice(t--,1),e=c(c.s=n[0]))}return e}var r={},a={0:0},o=[];function c(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,c),n.l=!0,n.exports}c.m=e,c.c=r,c.d=function(e,t,n){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(c.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)c.d(n,r,function(t){return e[t]}.bind(null,r));return n},c.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="";var l=window.wpJsonMfrh=window.wpJsonMfrh||[],i=l.push.bind(l);l.push=t,l=l.slice();for(var u=0;u<l.length;u++)t(l[u]);var s=i;o.push([129,1]),n()}({0:function(e,t){e.exports=React},1:function(e,t,n){"use strict";var r=n(14);n.d(t,"b",(function(){return r.a}));var a=n(11);n.d(t,"c",(function(){return a.a}));n(37);var o=n(49);n.d(t,"q",(function(){return o.a}));var c=n(50);n.d(t,"a",(function(){return c.a}));var l=n(51);n.d(t,"g",(function(){return l.a}));var i=n(52);n.d(t,"v",(function(){return i.a}));n(53);var u=n(38);n.d(t,"C",(function(){return u.b})),n.d(t,"f",(function(){return u.a}));var s=n(54);n.d(t,"d",(function(){return s.a}));var m=n(55);n.d(t,"e",(function(){return m.a}));var d=n(21);n.d(t,"k",(function(){return d.a}));n(56);var f=n(39);n.d(t,"u",(function(){return f.b})),n.d(t,"p",(function(){return f.a}));n(57),n(58),n(8),n(40),n(22);var p=n(59);n.d(t,"s",(function(){return p.a}));var h=n(60);n.d(t,"i",(function(){return h.a}));var y=n(23);n.d(t,"r",(function(){return y.a}));var g=n(10);n.d(t,"j",(function(){return g.a}));var v=n(16);n.d(t,"B",(function(){return v.a}));var b=n(41);n.d(t,"t",(function(){return b.b})),n.d(t,"l",(function(){return b.a}));var E=n(61);n.d(t,"h",(function(){return E.a}));var R=n(42);n.d(t,"m",(function(){return R.a})),n.d(t,"n",(function(){return R.b}));n(62),n(63),n(19);var w=n(24);n.d(t,"o",(function(){return w.a}));n(68);var _=n(69);n.d(t,"x",(function(){return _.a}));var k=n(44);n.d(t,"y",(function(){return k.b})),n.d(t,"w",(function(){return k.a}));n(45);var x=n(70);n.d(t,"A",(function(){return x.a}));var O=n(3);n.d(t,"z",(function(){return O.a}));var T=n(7);n.d(t,"J",(function(){return T.d})),n.d(t,"H",(function(){return T.b})),n.d(t,"I",(function(){return T.c}));var P=n(15);n.d(t,"G",(function(){return P.d})),n.d(t,"F",(function(){return P.c})),n.d(t,"E",(function(){return P.b})),n.d(t,"D",(function(){return P.a}));n(20)},120:function(e,t){e.exports=ReactDOM},129:function(e,t,n){"use strict";n.r(t);var r=n(12),a=n(1),o=wp.i18n.__,c={};c.RENAME=o("Rename","media-file-renamer"),c.MOVE=o("Move","media-file-renamer"),c.DASHBOARD=o("Dashboard","media-file-renamer"),c.PENDING=o("Pending","media-file-renamer"),c.RENAMED=o("Renamed","media-file-renamer"),c.ALL=o("All","media-file-renamer"),c.THUMB=o("Thumb","media-file-renamer"),c.TITLE=o("Title","media-file-renamer"),c.ATTACHED_TO=o("Attached To","media-file-renamer"),c.FILENAME=o("Filename","media-file-renamer");var l=c,i=mfrh_media_file_renamer.prefix,u=mfrh_media_file_renamer.domain,s=mfrh_media_file_renamer.rest_url.replace(/\/+$/,""),m=mfrh_media_file_renamer.api_url.replace(/\/+$/,""),d=mfrh_media_file_renamer.plugin_url.replace(/\/+$/,""),f="1"===mfrh_media_file_renamer.is_pro,p=f&&"1"===mfrh_media_file_renamer.is_registered,h=mfrh_media_file_renamer.rest_nonce,y="1"===mfrh_media_file_renamer.mfrh_undo,g="1"===mfrh_media_file_renamer.mfrh_move,v="1"===mfrh_media_file_renamer.mfrh_manual_rename;function b(e,t,n,r,a,o,c){try{var l=e[o](c),i=l.value}catch(e){return void n(e)}l.done?t(i):Promise.resolve(i).then(r,a)}function E(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function c(e){b(o,r,a,c,l,"next",e)}function l(e){b(o,r,a,c,l,"throw",e)}c(void 0)}))}}function R(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],c=!0,l=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return w(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return w(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var _,k,x,O,T,P=wp.element,S=P.useState,A=P.useEffect,j=function(e){var t=e.mutate,n=R(S(e.entry),2),r=n[0],o=n[1],c=R(S(!1),2),i=c[0],u=c[1],s=R(S(""),2),d=s[0],f=s[1],p=R(S(null),2),b=p[0],w=p[1],_=e.natural,k=void 0!==_&&_,x=Object(a.I)({concurrency:2}).runTask;A((function(){f(""),e.entry?o(e.entry):e.mediaId&&O(e.mediaId)}),[e.entry]);var O=function(){var e=E(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u((function(e){return e+1})),e.next=3,x(E(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Object(a.G)("".concat(m,"/analyze"),{nonce:h,json:{mediaId:t}}));case 1:case"end":return e.stop()}}),e)}))));case 3:n=e.sent,o(n.data),u((function(e){return e-1}));case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),T=function(){var e=E(regeneratorRuntime.mark((function e(t){var n,r,a,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(t.length<=220)){e.next=3;break}return f(t),e.abrupt("return");case 3:n=t.lastIndexOf("."),r=-1===n?"":".".concat(t.slice(n+1)),a=r.length>0?r.length:0,o="".concat(t.slice(0,220-a)).concat(r),f(o);case 8:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),P=function(){var e=E(regeneratorRuntime.mark((function e(n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:o(n),t&&t();case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),j=function(){var e=E(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u((function(e){return e+1})),e.next=3,Object(a.G)("".concat(m,"/rename"),{nonce:h,json:{mediaId:r.ID}});case 3:t=e.sent,P(t.data),w(null),u((function(e){return e-1}));case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),C=function(){var e=E(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u((function(e){return e+1})),e.next=3,Object(a.G)("".concat(m,"/rename"),{nonce:h,json:{mediaId:r.ID,filename:d}});case 3:t=e.sent,P(t.data),w(null),f(""),u((function(e){return e-1}));case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),I=function(){var e=E(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u((function(e){return e+1})),e.next=3,Object(a.G)("".concat(m,"/undo"),{nonce:h,json:{mediaId:r.ID}});case 3:t=e.sent,P(t.data,r.current_filename),u((function(e){return e-1}));case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),D=function(){var e=E(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u((function(e){return e+1})),e.next=3,Object(a.G)("".concat(m,"/set_lock"),{nonce:h,json:{mediaId:r.ID,lock:!r.locked}});case 3:t=e.sent,P(t.data),u((function(e){return e-1}));case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),M=function(){var e=E(regeneratorRuntime.mark((function e(){var t,n,o,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(console.log({entry:r}),t=r.metadata.file||"",n="/"+t.substring(0,t.lastIndexOf("/")),!(o=(o=(o=prompt("Where would you like to move this file (in the /uploads directory)?",n)).replace(/\/+$/,""))||"/")){e.next=13;break}return u((function(e){return e+1})),e.next=10,Object(a.G)("".concat(m,"/move"),{nonce:h,json:{mediaId:r.ID,newPath:o}});case 10:c=e.sent,P(c.data),u((function(e){return e-1}));case 13:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),U=!!d,B=U?d:b||(null==r?void 0:r.current_filename);return React.createElement(a.b,{busy:i},React.createElement("div",{style:{display:"flex",alignItems:"center"}},React.createElement(a.k,{natural:k,readOnly:!v||i,value:B,onChange:T,onEnter:C,maxLength:220,style:{marginRight:0,flex:"auto"}}),!U&&React.createElement(a.j,{icon:null!=r&&r.locked?"lock":"lock-open",width:24,title:null!=r&&r.locked?"Unlock, to allow future actions":"Lock, to avoid future actions",style:{position:"relative",left:-26,marginRight:-22},color:null!=r&&r.locked?a.z.blue:"#5a5a5a82",onClick:D}),U&&React.createElement(a.j,{icon:"close",width:24,style:{position:"relative",left:-26,marginRight:-22},color:null!=r&&r.locked?a.z.blue:"#5a5a5a82",onClick:function(){f("")}}),(null==r?void 0:r.proposed_filename_exists)&&React.createElement(a.j,{icon:"alert",color:"orange",tooltip:{text:"The ideal filename (".concat(r.proposed_filename,") already exists."),position:"left"}}),y&&!U&&(null==r?void 0:r.original_filename)&&React.createElement(a.j,{icon:"file-undo",title:"Rollback to original",color:a.z.red,onClick:I,onMouseEnter:function(){return w(null==r?void 0:r.original_filename)},onMouseLeave:function(){return w(null)}}),!U&&(null==r?void 0:r.proposed_filename)&&!(null!=r&&r.proposed_filename_exists)&&React.createElement(a.c,{style:{marginLeft:5},title:"Rename automatically",onMouseEnter:function(){return w(null==r?void 0:r.proposed_filename)},onMouseLeave:function(){return w(null)},onClick:j},"Auto Rename"),v&&U&&React.createElement(a.c,{style:{marginLeft:5},title:"Rename manually",onClick:C},l.RENAME),g&&React.createElement(a.c,{style:{marginLeft:5},title:"Move",onClick:M},l.MOVE)))},C=n(4);function I(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var D=C.a.div(_||(_=I(["\n color: white;\n padding: 15px;\n margin-bottom: -15px;\n\n a {\n color: #7dedff;\n text-decoration: none;\n }\n\n p {\n font-size: 15px;\n }\n"]))),M=Object(C.a)(a.a)(k||(k=I(["\n\n .nui-block-title {\n display: none;\n }\n\n .nui-block-content {\n display: flex;\n padding: 10px;\n\n h2 {\n color: #055082;\n font-size: 16px;\n margin: 5px 0 5px 0;\n\n a {\n text-decoration: none;\n }\n }\n\n p {\n margin: 0px;\n line-height: 18px;\n }\n }\n"]))),U=C.a.img(x||(x=I(["\n width: 85px;\n height: 85px;\n padding-right: 10px;\n"]))),B=C.a.div(O||(O=I(["\n\n margin: 15px;\n\n .center {\n background: white;\n border-radius: 10px;\n padding: 10px;\n font-family: Lato;\n max-width: 100%\n overflow: none;\n\n h2 {\n font-size: 26px;\n }\n\n table {\n width: 100%;\n\n tr td:first-child {\n width: 220px;\n font-weight: bold;\n color: #1e7cba;\n }\n\n * {\n overflow-wrap: anywhere;\n }\n }\n }\n\n hr {\n border-color: #1e7cba;\n }\n"]))),N=C.a.ul(T||(T=I(["\n margin-top: 10px;\n background: rgb(0, 72, 88);\n padding: 10px;\n color: rgb(58, 212, 58);\n max-height: 600px;\n min-height: 200px;\n display: block;\n font-family: monospace;\n font-size: 12px;\n white-space: pre;\n overflow-x: auto;\n width: calc(100vw - 276px);\n\n .log-date {\n color: white;\n margin-left: 8px;\n }\n\n .log-type {\n background: #0000004d;\n padding: 2px 5px;\n border-radius: 8px;\n text-transform: uppercase;\n }\n\n .log-content {\n display: block;\n }\n\n .log-warning .log-type {\n background: #ccb028;\n color: white;\n }\n\n .log-fatal .log-type {\n background: #cc2828;\n color: white;\n }\n"])));function L(e){return function(e){if(Array.isArray(e))return H(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||z(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function F(e,t,n,r,a,o,c){try{var l=e[o](c),i=l.value}catch(e){return void n(e)}l.done?t(i):Promise.resolve(i).then(r,a)}function G(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function c(e){F(o,r,a,c,l,"next",e)}function l(e){F(o,r,a,c,l,"throw",e)}c(void 0)}))}}function q(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],c=!0,l=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||z(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function z(e,t){if(e){if("string"==typeof e)return H(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?H(e,t):void 0}}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Y=wp.element,W=Y.useState,V=Y.useEffect,$="".concat(s,"/meow-common/v1"),J=function(e){var t=e.request,n=e.title,r=e.max,o=q(W(!1),2),c=o[0],l=o[1],i=q(W([]),2),u=i[0],s=i[1],m=u.length>0?u.reduce((function(e,t){return e+t})):0,d=u.length>0?Math.ceil(m/u.length):0,f=!u.length&&c;V((function(){c&&setTimeout(G(regeneratorRuntime.mark((function e(){var n,r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=(new Date).getTime(),e.next=3,Object(a.G)("".concat($,"/").concat(t),{nonce:h});case 3:r=(new Date).getTime(),o=r-n,s((function(e){return[].concat(L(e),[o])}));case 6:case"end":return e.stop()}}),e)}))),1e3)}),[u]);return React.createElement(D,{style:{width:200,textAlign:"center"}},React.createElement(a.B,{h2:!0,style:{color:"white"}},n),React.createElement(a.h,{size:200,value:f?r:d,max:r},React.createElement("span",{style:{fontSize:20}},f?"START":d+" ms"),React.createElement("span",{style:{fontSize:12}},f?"YOUR ENGINE":u.length+" requests")),React.createElement(a.c,{style:{width:"100%",marginTop:10},color:c?"#cc3627":"#ccb027",onClick:function(){c||s([]),l(!c)}},c?"Stop":"Start"))};function X(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Q(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?X(Object(n),!0).forEach((function(t){K(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):X(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function K(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Z(e,t,n,r,a,o,c){try{var l=e[o](c),i=l.value}catch(e){return void n(e)}l.done?t(i):Promise.resolve(i).then(r,a)}function ee(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function c(e){Z(o,r,a,c,l,"next",e)}function l(e){Z(o,r,a,c,l,"throw",e)}c(void 0)}))}}function te(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],c=!0,l=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return ne(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ne(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var re=wp.element,ae=re.useState,oe=re.useEffect;m&&s&&d||console.error("[@common/dashboard] apiUrl, restUrl and pluginUrl are mandatory.");var ce="".concat(s,"/meow-common/v1"),le=React.createElement(D,null,React.createElement(a.B,{p:!0},"Meow Apps is run by Jordy Meow, a photographer and software developer living in Japan (and taking ",React.createElement("a",{target:"_blank",href:"https://offbeatjapan.org"},"a lot of photos"),"). Meow Apps proposes a suite of plugins focusing on photography, imaging, optimization and SEO. The ultimate goal is to make your website better, faster, while making it easy. Meow Apps also teams up with the best players in the community. For more information, please check ",React.createElement("a",{href:"http://meowapps.com",target:"_blank"},"Meow Apps"),".")),ie=React.createElement(D,null,React.createElement(a.B,{p:!0},"The ",React.createElement("b",null,"Empty Request Time")," helps you analyzing the raw performance of your install by giving you the average time it takes to run an empty request to your server. You can try to disable some plugins (or change their options) then Start this again to see how it influences the results. An excellent install would have an Empty Request Time of less than 500 ms. Keep it absolutely under 2,000 ms! For more information, ",React.createElement("a",{href:"https://meowapps.com/clean-optimize-wordpress/#Optimize_your_Empty_Request_Time",target:"_blank"},"click here"),"."),React.createElement(a.B,{p:!0},React.createElement("b",null,"File Operation Time")," creates a temporary size of 10MB every time. ",React.createElement("b",null,"SQL Request Time")," counts the number of posts. Those two should be very fast, and almost the same as the ",React.createElement("b",null,"Empty Request Time"),".")),ue=React.createElement(D,null,React.createElement(a.B,{p:!0},"Too many WordPress installs are blown-up with useless and/or heavy plugins, and not aware of best practices. That's not the fault of the users; WordPress pretends to be simple but it is in fact very complex, and the immensity and diversity of the community around it makes it a real jungle where everything is possible."),React.createElement(a.B,{p:!0},"A rule of thumb is to keep your WordPress install as simple as possible, with the least number of plugins installed (run away from the heavy ones) and an excellent hosting service. Avoid VPS or self-hosted solutions; you must be a professional to actually set them up so that they are actually performant."),React.createElement(a.B,{p:!0},"On the Meow Apps website, you will find articles which are always updated with the latest recommendations.",React.createElement("ul",null,React.createElement("li",null,"☘️  ",React.createElement("a",{href:"https://meowapps.com/how-to-debug-wordpress-errors/",target:"_blank"},"How To Debug WordPress")),React.createElement("li",null,"☘️  ",React.createElement("a",{href:"https://meowapps.com/tutorial-improve-seo-wordpress/",target:"_blank"},"SEO Checklist & Optimization")),React.createElement("li",null,"☘️  ",React.createElement("a",{href:"https://meowapps.com/tutorial-faster-wordpress-optimize/",target:"_blank"},"Optimize your WordPress Speed")),React.createElement("li",null,"☘️  ",React.createElement("a",{href:"https://meowapps.com/tutorial-optimize-images-wordpress/",target:"_blank"},"Optimize Images (CDN, and so on)")),React.createElement("li",null,"☘️  ",React.createElement("a",{href:"https://meowapps.com/tutorial-hosting-service-wordpress/",target:"_blank"},"Best Hosting Services for WordPress"))))),se=["".concat(ce,"/all_settings/"),{headers:{"X-WP-Nonce":h}}],me=function(){var e=te(ae(!1),2),t=e[0],n=e[1],o=Object(r.b)(se,a.F),c=o.data,l=o.mutate,i=o.error,u=null==c?void 0:c.data,s=null==u?void 0:u.meowapps_hide_meowapps,m=null==u?void 0:u.force_sslverify,f=te(ae(!1),2),p=f[0],y=f[1],g=te(ae([]),2),v=g[0],b=g[1],E=te(ae(""),2),R=E[0],w=E[1];oe((function(){i&&!t&&(n(!0),console.error("Error from UseSWR",i.message))}),[i]),oe((function(){var e=document.getElementById("meow-common-phpinfo");w(e.innerHTML)}),[]);var _=function(){var e=ee(regeneratorRuntime.mark((function e(t,n){var r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(r=Q({},c.data))[n]=t,l(Q(Q({},c),{},{data:r}),!1),y(!0),e.next=6,Object(a.G)("".concat(ce,"/update_option"),{json:{name:n,value:t},nonce:h});case 6:o=e.sent,y(!1),o.success||alert(o.message),l();case 10:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),k=function(){var e=ee(regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return y(!0),e.next=3,Object(a.G)("".concat(ce,"/error_logs"),{nonce:h});case 3:t=e.sent,n=t&&t.data?t.data:[],b(n.reverse()),y(!1);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),x=React.createElement(a.v,{title:"Main Menu"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"meowapps_hide_meowapps",label:"Hide (Not Recommended)",description:React.createElement(a.B,{p:!0},"This will hide the Meow Apps Menu (on the left side) and everything it contains. You can re-enable it through though an option that will be added in Settings → General."),value:"1",disabled:p,checked:s,onChange:_}))),O=React.createElement(a.v,{title:"SSL Verify"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"force_sslverify",label:"Force (Not Recommended)",description:React.createElement(a.B,{p:!0},"This will enforce the usage of SSL when checking the license or updating the plugin."),value:"1",disabled:p,checked:m,onChange:_})));return React.createElement(a.q,{showRestError:t},React.createElement(a.i,{title:"The Dashboard"}),React.createElement(a.C,null,React.createElement(a.f,{full:!0},React.createElement(a.y,null,React.createElement(a.w,{title:"Meow Apps"},le,React.createElement(a.C,null,React.createElement(a.f,{minimal:!0},React.createElement(M,{title:"Media Cleaner",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/media-cleaner.jpg")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/media-cleaner/"},"Media Cleaner")),React.createElement("p",null,"The Cleaner analyzes your WordPress entirely to find out which files are not used. You can trash them, before deleting them permanently. Your WordPress will breath again :)"))),React.createElement(M,{title:"Media File Renamer",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/media-file-renamer.jpg")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/media-file-renamer/"},"Media File Renamer")),React.createElement("p",null,"The Renamer will help you in getting nicer filenames for an improved SEO and a tidier filesystem. It's mostly automatic and very fun to use."))),React.createElement(M,{title:"Contact Form Block",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/contact-form-block.png")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/contact-form-block/"},"Contact Form Block")),React.createElement("p",null,"A simple, pretty and superlight contact form. If you simply want your visitors to get in touch with you, this contact form will be perfect for you and your WordPress."))),React.createElement(M,{title:"Meow Analytics",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/meow-analytics.png")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/meow-analytics/"},"Meow Analytics")),React.createElement("p",null,"Are you tired of those heavy plugins, accessing your Google Analytics deliberately? Switch to Meow Analytics!")))),React.createElement(a.f,{minimal:!0},React.createElement(M,{title:"Meow Gallery",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/meow-gallery.jpg")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/meow-gallery/"},"Meow Gallery")),React.createElement("p",null,"This is the fastest gallery system... and it is pretty as well! It is 100% compatible with the native WordPress galleries and therefore, works right away."))),React.createElement(M,{title:"Meow Lightbox",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/meow-lightbox.jpg")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/meow-lightbox/"},"Meow Lightbox")),React.createElement("p",null,"A very sleek and performant Lightbox which will also display your EXIF data (camera, lens, aperture...). Photographers love it."))),React.createElement(M,{title:"Photo Engine",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/wplr-sync.jpg")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/wplr-sync/"},"Photo Engine")),React.createElement("p",null,"Are you using Lightroom? So you know Photo Engine already. Wait, you don't? You must try it! This plugin will be your favorite very soon."))),React.createElement(M,{title:"Perfect Images + Retina",className:"primary"},React.createElement(U,{src:"".concat(d,"/common/img/wp-retina-2x.jpg")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/wp-retina-2x/"},"Perfect Images + Retina")),React.createElement("p",null,"It handles Retina, help you managing the Image Sizes registered in your WP, and much more.")))))),React.createElement(a.w,{title:"Performance"},ie,React.createElement("div",{style:{display:"flex",justifyContent:"space-around",marginBottom:25}},React.createElement(J,{title:"Empty Request Time",request:"empty_request",max:2500}),React.createElement(J,{title:"File Operation Time",request:"file_operation",max:2600}),React.createElement(J,{title:"SQL Request Time",request:"sql_request",max:2800}))),React.createElement(a.w,{title:"Recommendations"},ue),React.createElement(a.w,{title:"PHP Info"},React.createElement(B,{dangerouslySetInnerHTML:{__html:R}})),React.createElement(a.w,{title:"PHP Error Logs"},React.createElement(D,null,React.createElement(a.c,{style:{marginBottom:10},color:"#ccb027",onClick:k},"Load PHP Error Logs"),React.createElement(N,null,v.map((function(e){return React.createElement("li",{class:"log-".concat(e.type)},React.createElement("span",{class:"log-type"},e.type),React.createElement("span",{class:"log-date"},e.date),React.createElement("span",{class:"log-content"},e.content))}))))),React.createElement(a.w,{title:"Settings"},React.createElement(a.a,{title:"Settings",className:"primary"},x,O))))))};function de(e,t,n,r,a,o,c){try{var l=e[o](c),i=l.value}catch(e){return void n(e)}l.done?t(i):Promise.resolve(i).then(r,a)}function fe(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function c(e){de(o,r,a,c,l,"next",e)}function l(e){de(o,r,a,c,l,"throw",e)}c(void 0)}))}}function pe(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],c=!0,l=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return he(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return he(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function he(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var ye=wp.element,ge=ye.useState,ve=ye.useEffect,be="".concat(s,"/meow-licenser/").concat(i,"/v1"),Ee=function(){var e=pe(ge(!1),2),t=e[0],n=e[1],r=pe(ge(null),2),o=r[0],c=r[1],l=pe(ge(null),2),i=l[0],u=l[1],s=pe(ge(""),2),m=s[0],d=s[1],y=p&&(!i||"valid"!==i.license),g=function(){var e=fe(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(f){e.next=2;break}return e.abrupt("return");case 2:return n(!0),e.next=5,Object(a.G)("".concat(be,"/get_license"),{nonce:h});case 5:t=e.sent,u(t.data),t.data.key&&d(t.data.key),n(!1);case 9:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),v=function(){var e=fe(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n(!0),e.next=3,Object(a.G)("".concat(be,"/set_license"),{nonce:h,json:{serialKey:null}});case 3:e.sent.success&&(d(""),u(null),c("licenseRemoved")),n(!1);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),b=function(){var e=fe(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n(!0),e.next=3,Object(a.G)("".concat(be,"/set_license"),{nonce:h,json:{serialKey:m}});case 3:(t=e.sent).success&&(u(t.data),t.data&&!t.data.issue&&c("licenseAdded")),n(!1);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();ve((function(){g()}),[]);var E=y?"Forced License":p?"Enabled":"Disabled",R=i&&"valid"===i.license,w="Your license is active. Thanks a lot for your support :)";R||(i?"no_activations_left"===i.issue?w=React.createElement("span",null,"There are no activations left for this license. You can visit your account at the ",React.createElement("a",{target:"_blank",rel:"noreferrer",href:"https://store.meowapps.com"},"Meow Apps Store"),", unregister a site, and click on ",React.createElement("i",null,"Retry to validate"),"."):"expired"===i.issue?w=React.createElement("span",null,"Your license has expired. You can get another license or renew the current one by visiting your account at the ",React.createElement("a",{target:"_blank",rel:"noreferrer",href:"https://store.meowapps.com"},"Meow Apps Store"),"."):"missing"===i.issue?w="This license does not exist.":"disabled"===i.issue?w="This license has been disabled.":"item_name_mismatch"===i.issue?w="This license seems to be for a different plugin... isn't it? :)":(w=React.createElement("span",null,"There is an unknown error related to the system or this serial key. Really sorry about this! Make sure your security plugins and systems are off temporarily. If you are still experiencing an issue, please ",React.createElement("a",{target:"_blank",rel:"noreferrer",href:"https://meowapps.com/contact/"},"contact us"),"."),console.error({license:i})):w="Unknown error :(");var _=React.createElement(a.a,{title:"Pro Version (Not Installed)",className:"primary"},"You will find more information about the Pro Version ",React.createElement("a",{target:"_blank",rel:"noreferrer",href:"https://store.meowapps.com"},"here"),". If you actually bought the Pro Version already, please remove the current plugin and download the Pro Version from your account at the ",React.createElement("a",{target:"_blank",rel:"noreferrer",href:"https://store.meowapps.com/"},"Meow Apps Store"),"."),k=React.createElement(a.a,{title:"Pro Version (".concat(E,")"),busy:t,className:"primary"},React.createElement(a.v,{title:"Serial Key",style:{fontWeight:"bold"}},React.createElement(a.k,{id:"mfrh_pro_serial",name:"mfrh_pro_serial",disabled:t,value:m,onChange:function(e){return d(e)},placeholder:""})),i&&!R&&React.createElement(a.m,null,w),i&&R&&React.createElement(a.n,null,w),!i&&React.createElement(a.B,{p:!0},"Insert your serial key above. If you don't have one yet, you can get one ",React.createElement("a",{href:"https://store.meowapps.com"},"here"),". If there was an error during the validation, try the ",React.createElement("i",null,"Retry")," to ",React.createElement("i",null,"validate")," button."),React.createElement(a.v,{contentAlign:"right"},i&&!R&&React.createElement(a.c,{className:"secondary",disabled:t||!m,onClick:b},"Retry to validate"),i&&i.key===m&&React.createElement(a.c,{className:"secondary",disabled:t||!m,onClick:v},"Remove License"),React.createElement(a.c,{disabled:t||!m||i&&i.key===m,onClick:b},"Validate License")),React.createElement(a.o,{isOpen:"licenseAdded"===o,title:"Thank you :)",content:"The Pro features have been enabled. This page should be now reloaded.",ok:"Reload",onOkClick:function(){return location.reload()}}),React.createElement(a.o,{isOpen:"licenseRemoved"===o,title:"Goodbye :(",content:"The Pro features have been disabled. This page should be now reloaded.",ok:"Reload",onOkClick:function(){return location.reload()}}));return f?k:_},Re=wp.element.render;function we(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _e(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?we(Object(n),!0).forEach((function(t){ke(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):we(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ke(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function xe(e,t,n,r,a,o,c){try{var l=e[o](c),i=l.value}catch(e){return void n(e)}l.done?t(i):Promise.resolve(i).then(r,a)}function Oe(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function c(e){xe(o,r,a,c,l,"next",e)}function l(e){xe(o,r,a,c,l,"throw",e)}c(void 0)}))}}function Te(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],c=!0,l=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Pe(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Pe(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Pe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}document.meowDashboardLoaded||(document.meowDashboardLoaded=!0,document.addEventListener("DOMContentLoaded",(function(e){var t=document.getElementById("meow-common-dashboard");t&&Re(React.createElement(me,null),t)})));var Se=wp.element,Ae=Se.useState,je=Se.useMemo,Ce={marginTop:10,background:"rgb(0, 72, 88)",padding:10,color:"rgb(58, 212, 58)",maxHeight:600,minHeight:200,display:"block",fontFamily:"monospace",fontSize:12,whiteSpace:"pre",overflowX:"auto",width:"calc(100vw - 276px)"},Ie=function(){var e,t,n=je((function(){return["".concat(m,"/all_settings/"),{headers:{"X-WP-Nonce":h}}]}),[m,h]),o=Object(r.b)(n,a.F),c=o.data,l=o.mutate,s=Object(a.H)(c,{},!0),d=s.busy,y=s.data,g=s.error,v=Te(Ae(""),2),b=v[0],E=v[1],R=Te(Ae(!1),2),w=R[0],_=R[1],k=d||w,x=null==y?void 0:y.mfrh_auto_rename,O=null==y?void 0:y.mfrh_on_upload,T=null==y?void 0:y.mfrh_rename_slug,P=null==y?void 0:y.mfrh_convert_to_ascii,S=null==y?void 0:y.mfrh_update_posts,A=null==y?void 0:y.mfrh_update_postmeta,j=null==y?void 0:y.mfrh_undo,C=null==y?void 0:y.mfrh_move,I=null==y?void 0:y.mfrh_manual_rename,D=null==y?void 0:y.mfrh_manual_sanitize,M=null==y?void 0:y.mfrh_numbered_files,U=null==y?void 0:y.mfrh_sync_alt,B=null==y?void 0:y.mfrh_sync_media_title,N=null==y?void 0:y.mfrh_force_rename,L=null==y?void 0:y.mfrh_log,F=null==y?void 0:y.mfrh_logsql,G=null==y?void 0:y.mfrh_rename_guid,q=null==y?void 0:y.mfrh_case_insensitive_check,z=null==y?void 0:y.mfrh_rename_on_save,H=null!==(e=null==y?void 0:y.mfrh_acf_field_name)&&void 0!==e?e:null,Y=null!==(t=null==y?void 0:y.mfrh_images_only)&&void 0!==t&&t,W=null==y?void 0:y.mfrh_clean_uninstall,V=[{id:"media_title",value:"media_title",label:React.createElement("span",null,"Based on Media Title"),requirePro:!1},{id:"post_acf_field",value:"post_acf_field",label:React.createElement("span",null,"Based on Attached Post (ACF Field)"),requirePro:!1},{id:"post_title",value:"post_title",label:React.createElement("span",null,"Based on Attached Post Title"),requirePro:!p},{id:"alt_text",value:"alt_text",label:React.createElement("span",null,"Based on Alternative Text"),requirePro:!p},{id:"anonymize_md5",value:"anonymize_md5",label:React.createElement("span",null,"Anonymize with MD5"),requirePro:!p},{id:"none",value:"none",label:React.createElement("span",null,"Disable Automatic Rename"),requirePro:!1}],$=function(){var e=Oe(regeneratorRuntime.mark((function e(t,n){var r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(r=_e({},c.data))[n]=t,l(_e(_e({},c),{},{data:r}),!1),_(!0),e.prev=4,e.next=7,Object(a.G)("".concat(m,"/update_option"),{nonce:h,json:{name:n,value:t}});case 7:e.next=12;break;case 9:e.prev=9,e.t0=e.catch(4),alert(e.t0.message);case 12:return e.prev=12,_(!1),l(),e.finish(12);case 16:case"end":return e.stop()}}),e,null,[[4,9,12,16]])})));return function(t,n){return e.apply(this,arguments)}}(),J=function(){var e=Oe(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return _(!0),e.next=3,Object(a.G)("".concat(m,"/refresh_logs"),{nonce:h});case 3:(t=e.sent).success&&E(t.data),_(!1);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),X=function(){var e=Oe(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return _(!0),e.next=3,Object(a.G)("".concat(m,"/clear_logs"),{nonce:h});case 3:(t=e.sent).success&&E(t.data),_(!1);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Q=React.createElement(a.a,{busy:k,title:"Side Updates",className:"primary"},React.createElement(a.B,{p:!0,style:{marginTop:0}},"When the files are renamed, many links to them on your WordPress might be broken. Those options are updating the references to those files. ",React.createElement("strong",null,"Give it a try, every install is different and it might not work for certain kind of references.")),React.createElement(a.v,{title:"Posts"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_update_posts",disabled:k,label:"Enable",description:React.createElement(a.B,{p:!0},"Update the references to the renamed files in the ",React.createElement("strong",null,"content")," content and ",React.createElement("strong",null,"excerpt")," of the posts (pages and custom types included)."),value:"1",checked:S,onChange:$}))),React.createElement(a.v,{title:"Post Meta"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_update_postmeta",disabled:k,label:"Enable",description:React.createElement(a.B,{p:!0},"Update the references in the ",React.createElement("strong",null,"custom fields")," of the posts (including pages and custom types metadata)."),value:"1",checked:A,onChange:$})))),K=React.createElement(a.v,{title:"Method"},React.createElement(a.u,{id:"mfrh_auto_rename",disabled:k,value:x,scrolldown:!0,name:"mfrh_auto_rename",description:"Attached Post includes all kinds of Post Types: Posts, Pages, Products, etc.",onChange:$},V.map((function(e){return React.createElement(a.p,{key:e.id,id:e.id,value:e.value,label:e.label,requirePro:e.requirePro})})))),Z=je((function(){return"post_acf_field"!==x?null:React.createElement(a.v,{title:"ACF Field Name"},React.createElement(a.k,{id:"mfrh_acf_field_name",name:"mfrh_acf_field_name",value:H,onBlur:$}))}),[x]),ee=React.createElement(a.v,{title:"Images Only"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_images_only",label:"Enable",description:"Restricts the renaming to images (JPG and PNG). Nothing else will be renamed.",value:"1",checked:Y,onChange:$}))),te=React.createElement(a.v,{title:"On Upload"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_on_upload",disabled:k,label:"Enable",description:React.createElement(React.Fragment,null,React.createElement("span",null,"If your image has an EXIF title, it will be used to decide the filename. "),"post_title"===x&&React.createElement("span",null,"Note: The Attached Post Title ",React.createElement("u",null,"will not be used")," at the time of the upload due to WordPress API constraints.")),value:"1",checked:O,onChange:$}))),ne=React.createElement(a.v,{title:"Slug/Permalink"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_rename_slug",disabled:k,label:"Sync with filename",description:"Better to keep this un-checked as the link might have been referenced somewhere else.",value:"1",checked:T,onChange:$}))),re=React.createElement(a.v,{title:"Transliteration"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_convert_to_ascii",disabled:k,label:"Enable (Recommended)",description:React.createElement(a.B,{p:!0},"Replace accents, emoticons, diacritics, umlauts, cyrillic and any kind of tricky characters by their ASCII equivalent.",React.createElement("br",null)," ",React.createElement("i",null,"Examples: tête → tete, schön → schon, Добро → dobro, etc.")),value:"1",requirePro:!p,checked:P,onChange:$}))),ae=React.createElement(a.v,{title:"Undo"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_undo",disabled:k,label:"Enable",description:"An undo icon will be added to the UI. This allows to rollback to the original filename.",value:"1",checked:j,onChange:$}))),oe=React.createElement(a.v,{title:"Move"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_move",disabled:k,label:"Enable",description:"A move button will be added, and will allow you to move a file to another directory.",value:"1",checked:C,onChange:$,requirePro:!p}))),ce=React.createElement(a.v,{title:"Rename Field"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_manual_rename",disabled:k,label:"Enable",description:"An editable field will be added everywhere your files appear in the UI.",value:"1",checked:I,onChange:$}))),le=React.createElement(a.v,{title:"Sanitize"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_manual_sanitize",disabled:k,label:"Enable",description:"Even if it is manual, the plugin will sanitize the filename you type. That way, you are sure the final filename will be clean and safe to use.",value:"1",checked:D,onChange:$}))),ie=React.createElement(a.v,{title:"Force Rename"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_force_rename",disabled:k,label:"Enable",description:"Update the references to the file even if the file renaming itself was not successful. You might want to use that option if your install is broken and you are trying to link your Media to files for which the filenames has been altered (after a migration for exemple)",value:"1",requirePro:!p,checked:N,onChange:$}))),ue=React.createElement(a.v,{title:"Numbered Files"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_numbered_files",disabled:k,label:"Enable Numbering",description:"Identical filenames will be allowed by the plugin and a number will be appended automatically (myfile.jpg, myfile-2.jpg, myfile-3.jpg, etc).",requirePro:!p,value:"1",checked:M,onChange:$}))),se=React.createElement(a.v,{title:"ALT Text"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_sync_alt",disabled:k||"alt_text"==x,label:React.createElement(a.B,null,"Synchronize"),description:"The ALT Text will be synchronized with the same source used for the filename.",requirePro:!p,value:"1",checked:U,onChange:$}))),me=React.createElement(a.v,{title:"Media Title"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_sync_media_title",disabled:k||"media_title"===x,label:React.createElement(a.B,null,"Synchronize"),description:"The Media Title will be synchronized with the same source used for the filename.",requirePro:!p,value:"1",checked:B,onChange:$}))),de=React.createElement(a.v,{title:"Logs"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_log",label:"Enable",description:React.createElement(a.B,{p:!0},"Simple logging that explains which actions has been run."),value:"1",checked:L,onChange:$}),React.createElement("div",{style:{marginTop:20}},React.createElement(a.c,{onClick:J},"Refresh Logs"),React.createElement(a.c,{className:"danger",onClick:X},"Clear Logs")))),fe=React.createElement(a.v,{title:"SQL Logs"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_logsql",disabled:k,label:"Enable",description:React.createElement(a.B,{p:!0},"The files mfrh_sql.log and mfrh_sql_revert.log will be created in the /logs directory and will include the raw SQL queries which were run by the plugin. If there is an issue, the revert SQL file can help you."),requirePro:!p,value:"1",checked:F,onChange:$}))),pe=React.createElement(a.v,{title:"GUID"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_rename_guid",disabled:k,label:"Sync with filename",description:"The GUID will be renamed like the new filename. Better to keep this un-checked.",value:"1",checked:G,onChange:$}))),he=React.createElement(a.v,{title:"Case Insensitive"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_case_insensitive_check",label:"Enable",value:"1",checked:q,onChange:$,description:React.createElement(React.Fragment,null,'This will consider the file such as "abc.jpg" and "ABC.JPG" as the same file. More information ',React.createElement("a",{target:"_blank",href:"https://meowapps.com/media-file-renamer-faq-issues/"},"here"),". You should check this if you are on a Windows-based server.")}))),ye=React.createElement(a.v,{title:"Rename on Post Save"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_rename_on_save",disabled:k,label:"Enable (Unsafe)",description:"You can modify the titles of your media while editing a post but, of course, the plugin can't update the HTML at this stage. With this option, the plugin will update the filenames and HTML after that you saved the post.",value:"1",checked:z,onChange:$}))),ge=React.createElement(a.v,{title:"Plugin Data"},React.createElement(a.e,{max:"1"},React.createElement(a.d,{id:"mfrh_clean_uninstall",label:"Delete all",description:"The database and all the options of the plugin will be removed on uninstall. This also includes the information about the plugin's trash.",value:"1",checked:W,onChange:$})));return React.createElement(a.q,{nekoErrors:[g]},React.createElement(a.i,{title:"Media File Renamer | Settings",subtitle:"By Jordy Meow"},React.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},React.createElement(a.c,{className:"header",onClick:function(){return window.open("https://meowapps.com/media-file-renamer-tutorial/","_blank")}},"Tutorial"),React.createElement(a.c,{className:"header",icon:"dashboard",onClick:function(){return location.href="upload.php?page=mfrh_dashboard"}},"Dashboard"))),React.createElement(a.C,null,React.createElement(a.f,{full:!0},React.createElement(a.g,null,React.createElement(a.B,{p:!0},"It works out of the box, the default settings are good for most installs. However, you should really have a look at the ",React.createElement("a",{href:"https://meowapps.com/plugin/media-file-renamer/"},"tutorial"),". If you are a SEO guru or someone who loves having a perfectly neat filesystem, it is recommended to use automatic renaming first, then to tweak specific files with manual renaming. The ",React.createElement("a",{href:"/wp-admin/upload.php?page=mfrh_dashboard"},"Renamer Dashboard")," makes it very easy.")),React.createElement(a.y,null,React.createElement(a.w,{title:"Basic"},React.createElement(a.C,null,React.createElement(a.f,{minimal:!0},React.createElement(a.a,{busy:k,title:"Settings",className:"primary"},React.createElement(a.B,{h2:!0},"Automatic"),React.createElement(a.B,{p:!0},"This plugin's main goal is to make the process of optimizing your filenames entirely automatic. By default, your files will be named after the title of your media entry."),K,Z,React.createElement(a.B,{h2:!0},"Manual"),ce,le,React.createElement(a.B,{h2:!0},"Extra Options"),te,ee)),React.createElement(a.f,{minimal:!0},Q,React.createElement(a.a,{busy:k,title:"UI (Extra Features)",className:"primary"},ae,oe)))),React.createElement(a.w,{title:"Advanced"},React.createElement(a.C,null,React.createElement(a.f,{minimal:!0},React.createElement(a.a,{busy:k,title:"Advanced Settings",className:"primary"},re,ue),React.createElement(a.a,{busy:k,title:"Fields Syncing",className:"primary"},ne,pe,se,me,React.createElement(a.B,{p:!0},"The fields in the database will be synchronized, but the data already written in your HTML will not be overwritten.")),React.createElement(a.a,{busy:k,title:"On Uninstall",className:"primary"},ge)),React.createElement(a.f,{minimal:!0},React.createElement(a.a,{busy:k,title:"Developer Settings",className:"primary"},he,ie,fe,ye)))),React.createElement(a.w,{title:"License (Pro)"},React.createElement(Ee,{domain:u,prefix:i,isPro:f,isRegistered:p})),React.createElement(a.w,{title:"Logs & Debug"},React.createElement(a.a,{busy:k,className:"primary"},de),React.createElement("div",{style:Ce},b))))))},De=n(0);function Me(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],c=!0,l=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Ue(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ue(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ue(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Be(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ne(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Be(Object(n),!0).forEach((function(t){Le(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Be(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Le(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Fe(e,t,n,r,a,o,c){try{var l=e[o](c),i=l.value}catch(e){return void n(e)}l.done?t(i):Promise.resolve(i).then(r,a)}function Ge(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function c(e){Fe(o,r,a,c,l,"next",e)}function l(e){Fe(o,r,a,c,l,"throw",e)}c(void 0)}))}}var qe,ze,He,Ye={pending:"-",renamed:"-",locked:"-",all:"-"},We={accessor:"id",by:"asc"},Ve=0,$e={filterBy:"pending",sort:We,page:1,limit:10,search:"",busy:!1,stats:Ye,apiErrors:null,status:"",entries:[],selectedItems:[],total:0,autoRename:!1,onUpload:!1,renameSlug:!1,convertToAscii:!1,updatePosts:!0,updatePostmeta:!0,undo:!1,move:!1,manualRename:!1,numberedFiles:!1,syncAlt:!1,syncMedia_title:!1,forceRename:!1,log:!1,logsql:!1,renameGuid:!1,caseInsensitiveCheck:!1,renameOnSave:!1,acfFieldName:null,imagesOnly:!1,modals:{renameAll:!1,undoAll:!1,editTitle:!1,autoAttach:!1},mutateEntries:(He=Ge(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)}))),function(){return He.apply(this,arguments)}),mutateStats:(ze=Ge(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)}))),function(){return ze.apply(this,arguments)}),mutateSettings:(qe=Ge(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)}))),function(){return qe.apply(this,arguments)})},Je=function(e,t){switch(t.type){case"ENTRIES_UPDATED":var n=t.entries;return Ne(Ne({},e),{},{entries:n});case"STATS_UPDATED":var r=t.stats;return Ne(Ne({},e),{},{stats:r});case"ERROR_UPDATED":var a=t.apiErrors;return Ne(Ne({},e),{},{apiErrors:a});case"PAGE_UPDATED":var o=t.page;return Ne(Ne({},e),{},{page:o});case"SET_ENTRIES_MUTATE":var c=t.mutateEntries;return Ne(Ne({},e),{},{mutateEntries:c});case"SET_STATS_MUTATE":var l=t.mutateStats;return Ne(Ne({},e),{},{mutateStats:l});case"SET_SETTINGS_MUTATE":var i=t.mutateSettings;return Ne(Ne({},e),{},{mutateSettings:i});case"LIMIT_UPDATED":var u=t.limit;return Ne(Ne({},e),{},{limit:u});case"FILTER_UPDATED":var s=t.filter;return Ne(Ne({},e),{},{filterBy:s});case"SORT_UPDATED":var m=t.sort,d=void 0===m?We:m;return Ne(Ne({},e),{},{sort:d});case"SEARCH_UPDATED":var f=t.search;return Ne(Ne({},e),{},{search:f});case"TOTAL_UPDATED":var p=t.total;return Ne(Ne({},e),{},{total:p});case"TOGGLE_MODAL":var h=t.modal,y=t.enable;if(void 0===e.modals[h])return alert("The modal ".concat(h," doesn't exist.")),console.error("The modal ".concat(h," doesn't exist.")),e;void 0===y&&(y=!e.modals[h]);var g=Ne({},e);return g.modals=Ne({},g.modals),g.modals[h]=y,g;case"PUSH_BUSY":var v=t.status,b=void 0===v?"":v;return Ne(Ne({},e),{},{busy:++Ve>0,status:b});case"POP_BUSY":var E=t.status,R=void 0===E?"":E;return Ne(Ne({},e),{},{busy:--Ve>0,status:R});case"STATUS_UPDATED":var w=t.status,_=void 0===w?"":w;return Ne(Ne({},e),{},{status:_});case"SETTINGS_UPDATED":var k,x,O,T,P,S,A,j,C,I,D,M,U,B,N,L,F,G,q,z=t.settings,H=null!==(k=z.mfrh_auto_rename)&&void 0!==k&&k,Y=null!==(x=z.mfrh_on_upload)&&void 0!==x&&x,W=null!==(O=z.mfrh_rename_slug)&&void 0!==O&&O,V=null!==(T=z.mfrh_convert_to_ascii)&&void 0!==T&&T,$=null===(P=z.mfrh_update_posts)||void 0===P||P,J=null===(S=z.mfrh_update_postmeta)||void 0===S||S,X=null!==(A=z.mfrh_undo)&&void 0!==A&&A,Q=null!==(j=z.mfrh_move)&&void 0!==j&&j,K=null!==(C=z.mfrh_manual_rename)&&void 0!==C&&C,Z=null!==(I=z.mfrh_numbered_files)&&void 0!==I&&I,ee=null!==(D=z.mfrh_sync_alt)&&void 0!==D&&D,te=null!==(M=z.mfrh_sync_media_title)&&void 0!==M&&M,ne=null!==(U=z.mfrh_force_rename)&&void 0!==U&&U,re=null!==(B=z.mfrh_log)&&void 0!==B&&B,ae=null!==(N=z.mfrh_logsql)&&void 0!==N&&N,oe=null!==(L=z.mfrh_rename_guid)&&void 0!==L&&L,ce=null!==(F=z.mfrh_case_insensitive_check)&&void 0!==F&&F,le=null!==(G=z.mfrh_rename_on_save)&&void 0!==G&&G,ie=z.mfrh_acf_field_name,ue=null!==(q=z.mfrh_images_only)&&void 0!==q&&q,se=z.mfrh_posts_per_page?parseInt(z.mfrh_posts_per_page):10;return Ne(Ne({},e),{},{autoRename:H,onUpload:Y,renameSlug:W,convertToAscii:V,updatePosts:$,updatePostmeta:J,undo:X,move:Q,manualRename:K,numberedFiles:Z,syncAlt:ee,syncMedia_title:te,forceRename:ne,log:re,logsql:ae,renameGuid:oe,caseInsensitiveCheck:ce,renameOnSave:le,acfFieldName:ie,imagesOnly:ue,limit:se});case"ITEMS_SELECTED":var me=t.selectedItems;return Ne(Ne({},e),{},{selectedItems:me});default:return e}},Xe=Object(De.createContext)(),Qe=function(e){var t=e.children,n=Me(Object(De.useReducer)(Je,$e),2),o=n[0],c=n[1],l=o.filterBy,i=o.sort,u=o.search,s=o.page,d=o.limit,f=Object(De.useMemo)((function(){return[Object(a.D)("".concat(m,"/media"),{limit:d,skip:(s-1)*d,filterBy:l,orderBy:i.accessor,order:i.by,search:u}),{headers:{"X-WP-Nonce":h}}]}),[d,s,l,i,u]),p=Object(De.useMemo)((function(){return[Object(a.D)("".concat(m,"/stats"),{search:u}),{headers:{"X-WP-Nonce":h}}]}),[u]),y=Object(De.useMemo)((function(){return["".concat(m,"/all_settings/"),{headers:{"X-WP-Nonce":h}}]}),[]),g=Object(r.b)(f,a.F),v=g.data,b=g.mutate;Object(De.useEffect)((function(){c({type:"SET_ENTRIES_MUTATE",mutateEntries:b})}),[b]),Object(De.useEffect)((function(){c({type:"SET_STATS_MUTATE",mutateStats:T})}),[T]),Object(De.useEffect)((function(){c({type:"SET_SETTINGS_MUTATE",mutateSettings:D})}),[D]);var E=Object(a.H)(v,[],!0),R=E.busy,w=E.data,_=E.total,k=E.error;Object(De.useEffect)((function(){c({type:R?"PUSH_BUSY":"POP_BUSY"})}),[R]),Object(De.useEffect)((function(){c({type:"ENTRIES_UPDATED",entries:w})}),[w]),Object(De.useEffect)((function(){c({type:"TOTAL_UPDATED",total:_})}),[_]),Object(De.useEffect)((function(){c({type:"ERROR_UPDATED",apiError:k})}),[k]);var x=Object(r.b)(p,a.F),O=x.data,T=x.mutate,P=Object(a.H)(O,Ye,!0),S=P.busy,A=P.data,j=P.error;Object(De.useEffect)((function(){c({type:S?"PUSH_BUSY":"POP_BUSY"})}),[S]),Object(De.useEffect)((function(){c({type:"STATS_UPDATED",stats:A})}),[A]),Object(De.useEffect)((function(){c({type:"ERROR_UPDATED",apiError:j})}),[j]);var C=Object(r.b)(y,a.F),I=C.data,D=C.mutate,M=Object(a.H)(I,{},!0),U=M.busy,B=M.data,N=M.error;return Object(De.useEffect)((function(){c({type:U?"PUSH_BUSY":"POP_BUSY"})}),[U]),Object(De.useEffect)((function(){c({type:"SETTINGS_UPDATED",settings:B})}),[B]),Object(De.useEffect)((function(){c({type:"ERROR_UPDATED",apiError:N})}),[N]),React.createElement(Xe.Provider,{value:[o,c]},t)},Ke=function(){var e={},t=Me(Object(De.useContext)(Xe),2),n=t[0],r=t[1];return e.setSelectedItems=function(e){r({type:"ITEMS_SELECTED",selectedItems:e})},e.setStatus=function(e){r({type:"STATUS_UPDATED",status:e})},e.updateOption=function(){var e=Ge(regeneratorRuntime.mark((function e(t,o){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r({type:"PUSH_BUSY"}),e.prev=1,e.next=4,Object(a.G)("".concat(m,"/update_option"),{nonce:h,json:{name:o,value:t}});case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(1),alert(e.t0);case 9:r({type:"POP_BUSY"}),n.mutateSettings();case 11:case"end":return e.stop()}}),e,null,[[1,6]])})));return function(t,n){return e.apply(this,arguments)}}(),e.updateEntry=function(){var e=Ge(regeneratorRuntime.mark((function e(t,o){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r({type:"STATUS_UPDATED",status:"Updating..."}),r({type:"PUSH_BUSY"}),e.prev=2,e.next=5,Object(a.G)("".concat(m,"/update_media"),{nonce:h,json:Ne({id:o},t)});case 5:if(e.sent.success){e.next=8;break}throw new Error("Failed to move the folder/gallery.");case 8:n.mutateEntries(),e.next=14;break;case 11:e.prev=11,e.t0=e.catch(2),alert(e.t0.message);case 14:return e.prev=14,r({type:"POP_BUSY"}),e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[2,11,14,17]])})));return function(t,n){return e.apply(this,arguments)}}(),e.setPage=function(e){r({type:"PAGE_UPDATED",page:e})},e.setLimit=function(e){r({type:"LIMIT_UPDATED",limit:e})},e.setFilter=function(e){r({type:"FILTER_UPDATED",filter:e})},e.setSort=function(e){r({type:"SORT_UPDATED",sort:e})},e.setSearch=function(e){r({type:"SEARCH_UPDATED",search:e})},e.toggleModal=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;r({type:"TOGGLE_MODAL",modal:e,enable:t})},e.pushBusy=function(){r({type:"PUSH_BUSY"})},e.popBusy=function(){r({type:"POP_BUSY"})},Ne(Ne({},n),e)};function Ze(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function et(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ze(Object(n),!0).forEach((function(t){tt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ze(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function tt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function nt(e){return function(e){if(Array.isArray(e))return lt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ct(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function rt(e,t,n,r,a,o,c){try{var l=e[o](c),i=l.value}catch(e){return void n(e)}l.done?t(i):Promise.resolve(i).then(r,a)}function at(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function c(e){rt(o,r,a,c,l,"next",e)}function l(e){rt(o,r,a,c,l,"throw",e)}c(void 0)}))}}function ot(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],c=!0,l=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||ct(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ct(e,t){if(e){if("string"==typeof e)return lt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?lt(e,t):void 0}}function lt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var it=wp.element,ut=it.useState,st=it.useEffect,mt=it.useMemo,dt={width:40,height:40,objectFit:"cover"},ft=[{accessor:"thumbnail_url",title:l.THUMB,style:{width:16}},{accessor:"post_title",title:l.TITLE,sortable:!0,style:{width:"25%"}},{accessor:"post_parent",title:l.ATTACHED_TO,sortable:!0,style:{width:"25%"}},{accessor:"current_filename",title:l.FILENAME,sortable:!0}],pt=function(){var e=Ke(),t=e.apiErrors,n=e.busy,r=e.selectedItems,o=e.entries,c=e.stats,i=e.total,u=e.filterBy,s=e.search,d=e.status,f=e.sort,g=e.page,v=e.limit,b=e.modals,E=Ke(),R=E.setSelectedItems,w=E.setSearch,_=E.setStatus,k=E.setSort,x=E.setPage,O=E.setLimit,T=E.setFilter,P=E.mutateEntries,S=E.mutateStats,A=E.toggleModal,C=E.updateOption,I=E.updateEntry,D=ot(ut(!1),2),M=D[0],U=D[1],B=ot(ut(""),2),N=B[0],L=B[1],F=ot(ut(),2),G=F[0],q=F[1],z=Object(a.J)(),H=mt((function(){return o.map((function(e){return{id:e.ID,thumbnail_url:React.createElement("img",{src:e.thumbnail_url,style:dt}),post_title:React.createElement("div",{style:{display:"flex",alignItems:"center"}},React.createElement("a",{href:"post.php?post=".concat(e.ID,"&action=edit")},e.post_title),React.createElement(a.j,{icon:"pencil",width:"20",height:"20",color:a.z.blue,style:{marginLeft:"2px",cursor:"pointer"},onClick:function(){q(e),A("editTitle")}})),post_parent:React.createElement("div",{style:{maxHeight:35,overflow:"hidden"}},e.post_parent_title?e.post_parent_title:React.createElement("i",{style:{color:"#c1c1c1"}},"None")),current_filename:React.createElement(j,{entry:e,mutate:function(){P(),S()}})}}))}),[o]);st((function(){R([]),k(),x(1)}),[u,s]),st((function(){if(null!==z.busy&&(U(z.busy),!z.busy)){var e=z.getErrorCount();e>0&&L("The process has finished, but ".concat(e," error(s) occurred (check your console).")),z.reset(),R([]),P(),S()}}),[z.busy]);var Y=function(){var e=at(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(a.G)("".concat(m,"/get_all_ids"),{nonce:h,json:{unlockedOnly:t}});case 2:if((n=e.sent).success){e.next=6;break}return alert(n.message),e.abrupt("return",[]);case 6:return e.abrupt("return",n.data);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),W=function(){var e=at(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(a.G)("".concat(m,"/get_all_post_ids"),{nonce:h});case 2:if((t=e.sent).success){e.next=6;break}return alert(t.message),e.abrupt("return",[]);case 6:return e.abrupt("return",t.data);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),V=function(){var e=at(regeneratorRuntime.mark((function e(){var t,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return _("Preparing..."),U(!0),e.next=4,W();case 4:if(!(t=e.sent)){e.next=11;break}return _("Auto attaching..."),n=Object(a.E)(t,20),r=n.map((function(e){return function(){var t=at(regeneratorRuntime.mark((function t(n){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Object(a.G)("".concat(m,"/auto_attach"),{nonce:h,json:{postIds:e},signal:n});case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()})),z.start(r),e.abrupt("return");case 11:U(!1);case 12:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),$=function(){var e=at(regeneratorRuntime.mark((function e(){var t,n,r,o=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=o.length>0&&void 0!==o[0]?o[0]:null,_("Preparing..."),U(!0),!t){e.next=7;break}e.t0=t,e.next=10;break;case 7:return e.next=9,Y(!0);case 9:e.t0=e.sent;case 10:if(!(n=e.t0)){e.next=16;break}return _("Undoing..."),r=n.map((function(e){return function(){var t=at(regeneratorRuntime.mark((function t(n){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return _("Undo Media ".concat(e)),t.next=3,Object(a.G)("".concat(m,"/undo"),{nonce:h,json:{mediaId:e},signal:n});case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()})),z.start(r),e.abrupt("return");case 16:U(!1);case 17:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),J=function(){var e=at(regeneratorRuntime.mark((function e(){var t,n,r,o,c=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=c.length>0&&void 0!==c[0]?c[0]:null,_("Preparing..."),U(!0),!t){e.next=7;break}e.t0=t,e.next=10;break;case 7:return e.next=9,Y(!0);case 9:e.t0=e.sent;case 10:if(!(n=e.t0)){e.next=17;break}return _("Analyzing..."),r=Object(a.E)(n,20),o=r.map((function(e){return function(){var t=at(regeneratorRuntime.mark((function t(n){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Object(a.G)("".concat(m,"/analyze"),{nonce:h,json:{mediaIds:e},signal:n});case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()})),z.start(o),e.abrupt("return");case 17:U(!1);case 18:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),X=function(){var e=at(regeneratorRuntime.mark((function e(){var t,n,r,o,c,l=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=!(l.length>0&&void 0!==l[0])||l[0],n=l.length>1&&void 0!==l[1]?l[1]:null,_("Preparing..."),U(!0),!n){e.next=8;break}e.t0=n,e.next=11;break;case 8:return e.next=10,Y(t);case 10:e.t0=e.sent;case 11:if(!(r=e.t0)){e.next=18;break}return _("".concat(t?"Locking..":"Unlocking...")),o=Object(a.E)(r,50),c=o.map((function(e){return function(){var e=at(regeneratorRuntime.mark((function e(n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(a.G)("".concat(m,"/set_lock"),{nonce:h,json:{mediaIds:r,lock:t},signal:n});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()})),z.start(c),e.abrupt("return");case 18:U(!1);case 19:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Q=function(){var e=at(regeneratorRuntime.mark((function e(){var t,n,r,o=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=o.length>0&&void 0!==o[0]?o[0]:null,_("Preparing..."),U(!0),!t){e.next=7;break}e.t0=t,e.next=10;break;case 7:return e.next=9,Y(!0);case 9:e.t0=e.sent;case 10:if(!(n=e.t0)){e.next=15;break}return r=n.map((function(e){return function(){var t=at(regeneratorRuntime.mark((function t(n){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return _("Renaming #".concat(e)),t.next=3,Object(a.G)("".concat(m,"/rename"),{nonce:h,json:{mediaId:e},signal:n});case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()})),z.start(r),e.abrupt("return");case 15:U(!1);case 16:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),K=function(){var e=at(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:I({post_title:t.post_title},t.ID);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Z=function(){var e=at(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:C(t,"mfrh_posts_per_page");case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),ee=React.createElement(React.Fragment,null,React.createElement("div",null,"All your posts, pages, products (and other post types) will be scanned, and if images are used in them, they will be attached. Currently, Featured Images and Product Galleries are supported. Should we start?"),!p&&React.createElement("div",{style:{marginTop:20}},React.createElement("b",null,"This feature is only available in the Pro version."))),te=React.createElement(React.Fragment,null,React.createElement(a.c,{className:"secondary",onClick:function(){return window.open("https://meowapps.com/plugin/media-file-renamer/","_blank")}},"Get the Pro Version"),React.createElement(a.c,{className:"primary",onClick:function(){return window.open("https://meowapps.com/media-file-renamer-tutorial/","_blank")}},"Read the tutorial"));return React.createElement(a.q,{nekoErrors:[t]},React.createElement(a.i,{title:"Media File Renamer | Dashboard",subtitle:"By Jordy Meow"},React.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},React.createElement(a.c,{className:"header",onClick:function(){return window.open("https://meowapps.com/media-file-renamer-tutorial/","_blank")}},"Tutorial"),React.createElement(a.c,{icon:"cog",className:"header",onClick:function(){return location.href="admin.php?page=mfrh_settings"}},"Settings"))),React.createElement(a.C,null,React.createElement(a.f,{full:!0},!p&&React.createElement(a.g,{footer:te},React.createElement(a.B,{p:!0},"You must ",React.createElement("b",null,"backup the uploads folder and DB")," before using the Renamer. If you don't know how, give a try to ",React.createElement("a",{target:"_blank",href:"https://meow.click/blogvault"},"BlogVault"),". It is also highly recommanded to read the tutorial. Last but not least, check the ",React.createElement("b",null,"Pro Version"),", as it adds many features and also supports the development. This message is only displayed in the free version. Thank you!")),React.createElement(a.A,null,React.createElement(a.c,{onClick:function(){return J()}},"Analyze Library"),React.createElement(a.c,{onClick:function(){return A("autoAttach")}},"Auto Attach"),"pending"===u&&r.length>0&&React.createElement(React.Fragment,null,React.createElement(a.c,{className:"secondary",onClick:function(){return Q(r)}},"Rename ",React.createElement("strong",null,r.length)," entries"),React.createElement(a.c,{className:"secondary",onClick:function(){return X(!0,r)}},"Lock ",React.createElement("strong",null,r.length)," entries")),y&&"renamed"===u&&r.length>0&&React.createElement(React.Fragment,null,React.createElement(a.c,{className:"secondary",onClick:function(){return $(r)}},"Undo ",React.createElement("strong",null,r.length)," entries")),React.createElement("div",{style:{flex:1}},M&&React.createElement(a.s,{status:function(e){return"".concat(d," (").concat(e,"%)")},busy:M,value:z.value,max:z.max,onStopClick:z.stop})),!(n||M)&&React.createElement(React.Fragment,null,React.createElement(a.k,{onBlur:function(e){w(e)},value:s,onEnter:function(e){w(e)}}),!s&&React.createElement(a.j,{icon:"search",width:24,style:{position:"relative",left:-34,marginRight:-22},color:"#5a5a5a82"}),s&&React.createElement(a.j,{icon:"close",width:24,style:{position:"relative",left:-34,marginRight:-22},color:a.z.blue,onClick:function(){w("")}})),"all"===u&&React.createElement(React.Fragment,null,React.createElement(a.c,{className:"secondary",onClick:function(){return X(!0)}},"Lock ",React.createElement("strong",null,"All")),React.createElement(a.c,{className:"secondary",onClick:function(){return X(!1)}},"Unlock ",React.createElement("strong",null,"All"))),("all"===u||"pending"===u)&&React.createElement(React.Fragment,null,React.createElement(a.c,{className:"primary",onClick:function(){return A("renameAll")}},"Rename ",React.createElement("strong",null,"All"))),y&&("all"===u||"renamed"===u)&&React.createElement(React.Fragment,null,React.createElement(a.c,{className:"danger",onClick:function(){return A("undoAll")}},"Undo ",React.createElement("strong",null,"All")))),React.createElement("div",{style:{display:"flex",justifyContent:"space-between",marginTop:10,marginBottom:10}},React.createElement(a.t,{value:u,busy:n||M,onChange:function(e){T(e),x(1)}},React.createElement(a.l,{title:l.PENDING,value:"pending",count:c.pending}),React.createElement(a.l,{title:"Renamed",value:"renamed",count:c.renamed}),React.createElement(a.l,{title:"Locked",value:"locked",count:c.locked}),React.createElement(a.l,{title:"All",value:"all",count:c.all})),React.createElement(a.r,{currentPage:g,limit:v,total:i,onClick:function(e){return x(e)}})),React.createElement(a.x,{busy:n||M,data:H,columns:ft,sort:f,onSortChange:function(e,t){k({accessor:e,by:t})},onSelect:function(e){R([].concat(nt(r),nt(e)))},onUnselect:function(e){R(nt(r.filter((function(t){return!e.includes(t)}))))},selectedItems:r}),React.createElement("div",{style:{display:"flex",justifyContent:"space-between",marginTop:10}},React.createElement(a.u,{scrolldown:!0,value:v,onChange:function(e){O(e),x(1),Z(e)}},React.createElement(a.p,{value:5,label:"5 items per page"}),React.createElement(a.p,{value:10,label:"10 items per page"}),React.createElement(a.p,{value:25,label:"25 items per page"}),React.createElement(a.p,{value:50,label:"50 items per page"}),React.createElement(a.p,{value:100,label:"100 items per page"}),React.createElement(a.p,{value:200,label:"200 items per page"})),React.createElement(a.r,{currentPage:g,limit:v,total:i,onClick:function(e){return x(e)}}))),React.createElement(a.o,{isOpen:b.autoAttach,onRequestClose:function(){return A("autoAttach",!1)},title:"Automatically attach your images to your posts",content:ee,ok:p?"Run":"I need the Pro Version",onOkClick:function(){A("autoAttach",!1),p&&V()},onCancelClick:function(){A("autoAttach",!1)}}),React.createElement(a.o,{isOpen:b.renameAll,onRequestClose:function(){return A("renameAll",!1)},title:"You are about to rename all your (unlocked) files",content:"Renaming files is a dangerous operation. Please make sure you made a backup or your entire WordPress install. Should we start?",onOkClick:function(){A("renameAll",!1),Q()},onCancelClick:function(){A("renameAll",!1)}}),React.createElement(a.o,{isOpen:b.undoAll,onRequestClose:function(){return A("undoAll",!1)},title:"You are about to undo the renaming for all your files",content:"Are you sure you would like to proceed?",onOkClick:function(){A("undoAll",!1),$()},onCancelClick:function(){A("undoAll",!1)}}),React.createElement(a.o,{isOpen:N,title:"Success",ok:"Close",content:N,onOkClick:function(){L(""),z.reset()}}),React.createElement(a.o,{isOpen:b.editTitle,onRequestClose:function(){return A("editTitle",!1)},title:"Edit the title",okOnEnter:!0,content:React.createElement(a.k,{autoFocus:!0,id:"mfrh_edit_title",name:"mfrh_edit_title",placeholder:"title...",value:null==G?void 0:G.post_title,onBlur:function(e){return q(et(et({},G),{},{post_title:e}))}}),onOkClick:function(){A("editTitle",!1),K(G)},onCancelClick:function(){A("editTitle",!1)}})))},ht=wp.element.render,yt={fetcher:a.F,revalidateOnFocus:!1};function gt(){Array.from(document.getElementsByClassName("mfrh-renamer-field")).forEach((function(e){var t=e.getAttribute("data-id");ht(React.createElement(j,{natural:!0,mediaId:t}),e)}))}document.addEventListener("DOMContentLoaded",(function(e){var t,n;new MutationObserver((function(){gt()})).observe(document.documentElement,{childList:!0,subtree:!0}),(t=document.getElementById("mfrh-admin-settings"))&&ht(React.createElement(r.a,{value:yt},React.createElement(Ie,null)),t),(n=document.getElementById("mfrh-media-rename"))&&ht(React.createElement(r.a,{value:yt},React.createElement(Qe,null,React.createElement(pt,null))),n),gt()}))}});
2
  //# sourceMappingURL=index.js.map
classes/admin.php CHANGED
@@ -78,6 +78,7 @@ class Meow_MFRH_Admin extends MeowCommon_Admin {
78
  'mfrh_undo' => false,
79
  'mfrh_move' => false,
80
  'mfrh_manual_rename' => false,
 
81
  'mfrh_numbered_files' => false,
82
  'mfrh_sync_alt' => false,
83
  'mfrh_sync_media_title' => false,
78
  'mfrh_undo' => false,
79
  'mfrh_move' => false,
80
  'mfrh_manual_rename' => false,
81
+ 'mfrh_manual_sanitize' => false,
82
  'mfrh_numbered_files' => false,
83
  'mfrh_sync_alt' => false,
84
  'mfrh_sync_media_title' => false,
classes/core.php CHANGED
@@ -293,9 +293,11 @@ SQL;
293
  }
294
 
295
  if ( !empty( $manual_filename ) ) {
296
- // Through the new_filename to rename, even it is manual.
297
  // To validate the filename (i.g. space will be “-“), use the $manual_filename as the first argument $text.
298
- $new_filename = $this->new_filename($manual_filename, $old_filename, null, $post);
 
 
299
  $output['manual'] = true;
300
  }
301
  else {
@@ -543,6 +545,7 @@ SQL;
543
 
544
  // Those are basically errors, when titles are generated from filename
545
  $text = str_replace( ".jpg", "", $text );
 
546
  $text = str_replace( ".png", "", $text );
547
 
548
  // Related to English
293
  }
294
 
295
  if ( !empty( $manual_filename ) ) {
296
+ // Through the new_filename function to rename when the sanitize option is enabled.
297
  // To validate the filename (i.g. space will be “-“), use the $manual_filename as the first argument $text.
298
+ $new_filename = get_option( 'mfrh_manual_sanitize', false )
299
+ ? $this->new_filename( $manual_filename, $old_filename, null, $post )
300
+ : $manual_filename;
301
  $output['manual'] = true;
302
  }
303
  else {
545
 
546
  // Those are basically errors, when titles are generated from filename
547
  $text = str_replace( ".jpg", "", $text );
548
+ $text = str_replace( ".jpeg", "", $text );
549
  $text = str_replace( ".png", "", $text );
550
 
551
  // Related to English
classes/init.php CHANGED
@@ -14,12 +14,13 @@ spl_autoload_register(function ( $class ) {
14
  if ( strpos( $class, 'Meow_MFRH' ) !== false ) {
15
  $file = MFRH_PATH . '/classes/' . str_replace( 'meow_mfrh_', '', strtolower( $class ) ) . '.php';
16
  }
17
- else if ( strpos( $class, 'MeowCommon_Classes_' ) !== false ) {
18
- $file = MFRH_PATH . '/common/classes/' . str_replace( 'meowcommon_classes_', '', strtolower( $class ) ) . '.php';
19
- }
20
  else if ( strpos( $class, 'MeowCommon_' ) !== false ) {
21
  $file = MFRH_PATH . '/common/' . str_replace( 'meowcommon_', '', strtolower( $class ) ) . '.php';
22
  }
 
 
 
 
23
  else if ( strpos( $class, 'MeowPro_MFRH' ) !== false ) {
24
  $necessary = false;
25
  $file = MFRH_PATH . '/premium/' . str_replace( 'meowpro_mfrh_', '', strtolower( $class ) ) . '.php';
14
  if ( strpos( $class, 'Meow_MFRH' ) !== false ) {
15
  $file = MFRH_PATH . '/classes/' . str_replace( 'meow_mfrh_', '', strtolower( $class ) ) . '.php';
16
  }
 
 
 
17
  else if ( strpos( $class, 'MeowCommon_' ) !== false ) {
18
  $file = MFRH_PATH . '/common/' . str_replace( 'meowcommon_', '', strtolower( $class ) ) . '.php';
19
  }
20
+ else if ( strpos( $class, 'MeowCommonPro_' ) !== false ) {
21
+ $necessary = false;
22
+ $file = MFRH_PATH . '/common/premium/' . str_replace( 'meowcommonpro_', '', strtolower( $class ) ) . '.php';
23
+ }
24
  else if ( strpos( $class, 'MeowPro_MFRH' ) !== false ) {
25
  $necessary = false;
26
  $file = MFRH_PATH . '/premium/' . str_replace( 'meowpro_mfrh_', '', strtolower( $class ) ) . '.php';
common/admin.php CHANGED
@@ -5,8 +5,8 @@ if ( !class_exists( 'MeowCommon_Admin' ) ) {
5
  class MeowCommon_Admin {
6
 
7
  public static $loaded = false;
8
- public static $version = "3.5";
9
- public static $admin_version = "3.5";
10
 
11
  public $prefix; // prefix used for actions, filters (mfrh)
12
  public $mainfile; // plugin main file (media-file-renamer.php)
@@ -21,7 +21,7 @@ if ( !class_exists( 'MeowCommon_Admin' ) ) {
21
  if ( is_admin() ) {
22
 
23
  // Check potential issues with this WordPress install, other plugins, etc.
24
- new MeowCommon_Classes_Issues( $prefix, $mainfile, $domain );
25
 
26
  // Create the Meow Apps Menu
27
  add_action( 'admin_menu', array( $this, 'admin_menu_start' ) );
@@ -45,7 +45,7 @@ if ( !class_exists( 'MeowCommon_Admin' ) ) {
45
  add_action( 'admin_notices', array( $this, 'admin_notices_licensed_free' ) );
46
  }
47
  if ( !$disableReview ) {
48
- new MeowCommon_Classes_Ratings( $prefix, $mainfile, $domain );
49
  }
50
  }
51
  add_filter( 'plugin_row_meta', array( $this, 'custom_plugin_row_meta' ), 10, 2 );
@@ -98,19 +98,19 @@ if ( !class_exists( 'MeowCommon_Admin' ) ) {
98
  delete_option( $this->prefix . '_license' );
99
  return;
100
  }
101
- echo '<div class="notice notice-error">';
102
- printf(
103
  __( '<p>It looks like you are using the free version of the plugin (<b>%s</b>) but a license for the Pro version was also found. The Pro version might have been replaced by the Free version during an update (might be caused by a temporarily issue). If it is the case, <b>please download it again</b> from the <a target="_blank" href="https://store.meowapps.com">Meow Store</a>. If you wish to continue using the free version and clear this message, click on this button.', $this->domain ),
104
  $this->nice_name_from_file( $this->mainfile ) );
105
- echo '<p>
106
  <form method="post" action="">
107
  <input type="hidden" name="' . $this->prefix . '_reset_sub" value="true">
108
  <input type="submit" name="submit" id="submit" class="button" value="'
109
  . __( 'Remove the license', $this->domain ) . '">
110
  </form>
111
- </p>
112
- ';
113
- echo '</div>';
114
  }
115
 
116
  function admin_menu_start() {
@@ -144,19 +144,25 @@ if ( !class_exists( 'MeowCommon_Admin' ) ) {
144
  }
145
 
146
  function get_phpinfo() {
 
 
 
147
  ob_start();
 
148
  phpinfo( INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES );
 
149
  $html = ob_get_contents();
150
  ob_end_clean();
151
  $html = preg_replace( '%^.*<body>(.*)</body>.*$%ms','$1', $html );
152
- echo wp_kses_post( $html );
153
  }
154
-
155
  function admin_meow_apps() {
156
- echo "<div id='meow-common-dashboard'></div>";
157
- echo "<div style='display: none;' id='meow-common-phpinfo'>";
158
- echo wp_kses_post( $this->get_phpinfo() );
159
- echo "</div>";
 
160
  }
161
 
162
  function admin_footer_text( $current ) {
@@ -169,5 +175,3 @@ if ( !class_exists( 'MeowCommon_Admin' ) ) {
169
  }
170
  }
171
  }
172
-
173
- ?>
5
  class MeowCommon_Admin {
6
 
7
  public static $loaded = false;
8
+ public static $version = "3.6";
9
+ public static $admin_version = "3.6";
10
 
11
  public $prefix; // prefix used for actions, filters (mfrh)
12
  public $mainfile; // plugin main file (media-file-renamer.php)
21
  if ( is_admin() ) {
22
 
23
  // Check potential issues with this WordPress install, other plugins, etc.
24
+ new MeowCommon_Issues( $prefix, $mainfile, $domain );
25
 
26
  // Create the Meow Apps Menu
27
  add_action( 'admin_menu', array( $this, 'admin_menu_start' ) );
45
  add_action( 'admin_notices', array( $this, 'admin_notices_licensed_free' ) );
46
  }
47
  if ( !$disableReview ) {
48
+ new MeowCommon_Ratings( $prefix, $mainfile, $domain );
49
  }
50
  }
51
  add_filter( 'plugin_row_meta', array( $this, 'custom_plugin_row_meta' ), 10, 2 );
98
  delete_option( $this->prefix . '_license' );
99
  return;
100
  }
101
+ $html = '<div class="notice notice-error">';
102
+ $html .= sprintf(
103
  __( '<p>It looks like you are using the free version of the plugin (<b>%s</b>) but a license for the Pro version was also found. The Pro version might have been replaced by the Free version during an update (might be caused by a temporarily issue). If it is the case, <b>please download it again</b> from the <a target="_blank" href="https://store.meowapps.com">Meow Store</a>. If you wish to continue using the free version and clear this message, click on this button.', $this->domain ),
104
  $this->nice_name_from_file( $this->mainfile ) );
105
+ $html .= '<p>
106
  <form method="post" action="">
107
  <input type="hidden" name="' . $this->prefix . '_reset_sub" value="true">
108
  <input type="submit" name="submit" id="submit" class="button" value="'
109
  . __( 'Remove the license', $this->domain ) . '">
110
  </form>
111
+ </p>';
112
+ $html .= '</div>';
113
+ wp_kses_post( $html );
114
  }
115
 
116
  function admin_menu_start() {
144
  }
145
 
146
  function get_phpinfo() {
147
+ if ( !current_user_can( 'administrator' ) ) {
148
+ return;
149
+ }
150
  ob_start();
151
+ // phpcs:disable WordPress.PHP.DevelopmentFunctions
152
  phpinfo( INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES );
153
+ // phpcs:enable
154
  $html = ob_get_contents();
155
  ob_end_clean();
156
  $html = preg_replace( '%^.*<body>(.*)</body>.*$%ms','$1', $html );
157
+ return $html;
158
  }
159
+
160
  function admin_meow_apps() {
161
+ $html = "<div id='meow-common-dashboard'></div>";
162
+ $html .= "<div style='height: 0; width: 0; overflow: hidden;' id='meow-common-phpinfo'>";
163
+ $html .= $this->get_phpinfo();
164
+ $html .= "</div>";
165
+ echo wp_kses_post( $html );
166
  }
167
 
168
  function admin_footer_text( $current ) {
175
  }
176
  }
177
  }
 
 
common/classes/rest_license.php DELETED
@@ -1,43 +0,0 @@
1
- <?php
2
-
3
- class MeowCommon_Classes_Rest_License
4
- {
5
- private $licenser = null;
6
- private $namespace = null;
7
-
8
- public function __construct( &$licenser ) {
9
- $this->licenser = $licenser;
10
- $this->namespace = "meow-licenser/{$licenser->prefix}/v1";
11
- add_action( 'rest_api_init', array( $this, 'rest_api_init' ) );
12
- }
13
-
14
- function rest_api_init() {
15
- register_rest_route( $this->namespace, '/get_license/', [
16
- 'methods' => 'POST',
17
- 'permission_callback' => function () {
18
- return current_user_can( 'administrator' );
19
- },
20
- 'callback' => [ $this, 'get_license' ]
21
- ]);
22
- register_rest_route( $this->namespace, '/set_license/', [
23
- 'methods' => 'POST',
24
- 'permission_callback' => function () {
25
- return current_user_can( 'administrator' );
26
- },
27
- 'callback' => [ $this, 'set_license' ]
28
- ]);
29
- }
30
-
31
- function get_license() {
32
- return new WP_REST_Response( [ 'success' => true, 'data' => $this->licenser->license ], 200 );
33
- }
34
-
35
- function set_license( $request ) {
36
- $params = $request->get_json_params();
37
- $serialKey = $params['serialKey'];
38
- $this->licenser->validate_pro( $serialKey );
39
- return new WP_REST_Response( [ 'success' => true, 'data' => $this->licenser->license ], 200 );
40
- }
41
- }
42
-
43
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
common/classes/updater.php DELETED
@@ -1,593 +0,0 @@
1
- <?php
2
-
3
- // Exit if accessed directly
4
- if ( ! defined( 'ABSPATH' ) ) exit;
5
-
6
- /**
7
- * Allows plugins to use their own update API.
8
- *
9
- * @author Easy Digital Downloads
10
- * @version 1.6.18
11
- */
12
- class MeowCommon_Classes_Updater {
13
-
14
- private $api_url = '';
15
- private $api_data = array();
16
- private $name = '';
17
- private $slug = '';
18
- private $version = '';
19
- private $wp_override = false;
20
- private $cache_key = '';
21
-
22
- private $health_check_timeout = 5;
23
-
24
- /**
25
- * Class constructor.
26
- *
27
- * @uses plugin_basename()
28
- * @uses hook()
29
- *
30
- * @param string $_api_url The URL pointing to the custom API endpoint.
31
- * @param string $_plugin_file Path to the plugin file.
32
- * @param array $_api_data Optional data to send with API calls.
33
- */
34
- public function __construct( $_api_url, $_plugin_file, $_api_data = null ) {
35
-
36
- global $edd_plugin_data;
37
-
38
- $this->api_url = trailingslashit( $_api_url );
39
- $this->api_data = $_api_data;
40
- $this->name = plugin_basename( $_plugin_file );
41
- $this->slug = basename( $_plugin_file, '.php' );
42
- $this->version = $_api_data['version'];
43
- $this->wp_override = isset( $_api_data['wp_override'] ) ? (bool) $_api_data['wp_override'] : false;
44
- $this->beta = ! empty( $this->api_data['beta'] ) ? true : false;
45
- $this->cache_key = 'edd_sl_' . md5( serialize( $this->slug . $this->api_data['license'] . $this->beta ) );
46
-
47
- $edd_plugin_data[ $this->slug ] = $this->api_data;
48
-
49
- /**
50
- * Fires after the $edd_plugin_data is setup.
51
- *
52
- * @since x.x.x
53
- *
54
- * @param array $edd_plugin_data Array of EDD SL plugin data.
55
- */
56
- do_action( 'post_edd_sl_plugin_updater_setup', $edd_plugin_data );
57
-
58
- // Set up hooks.
59
- $this->init();
60
-
61
- }
62
-
63
- /**
64
- * Set up WordPress filters to hook into WP's update process.
65
- *
66
- * @uses add_filter()
67
- *
68
- * @return void
69
- */
70
- public function init() {
71
-
72
- add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) );
73
- add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3 );
74
- remove_action( 'after_plugin_row_' . $this->name, 'wp_plugin_update_row', 10 );
75
- add_action( 'after_plugin_row_' . $this->name, array( $this, 'show_update_notification' ), 10, 2 );
76
- add_action( 'admin_init', array( $this, 'show_changelog' ) );
77
-
78
- }
79
-
80
- /**
81
- * Check for Updates at the defined API endpoint and modify the update array.
82
- *
83
- * This function dives into the update API just when WordPress creates its update array,
84
- * then adds a custom API call and injects the custom plugin data retrieved from the API.
85
- * It is reassembled from parts of the native WordPress plugin update code.
86
- * See wp-includes/update.php line 121 for the original wp_update_plugins() function.
87
- *
88
- * @uses api_request()
89
- *
90
- * @param array $_transient_data Update array build by WordPress.
91
- * @return array Modified update array with custom plugin data.
92
- */
93
- public function check_update( $_transient_data ) {
94
-
95
- global $pagenow;
96
-
97
- if ( ! is_object( $_transient_data ) ) {
98
- $_transient_data = new stdClass;
99
- }
100
-
101
- if ( 'plugins.php' == $pagenow && is_multisite() ) {
102
- return $_transient_data;
103
- }
104
-
105
- if ( ! empty( $_transient_data->response ) && ! empty( $_transient_data->response[ $this->name ] ) && false === $this->wp_override ) {
106
- return $_transient_data;
107
- }
108
-
109
- $version_info = $this->get_cached_version_info();
110
-
111
- if ( false === $version_info ) {
112
- $version_info = $this->api_request( 'plugin_latest_version', array( 'slug' => $this->slug, 'beta' => $this->beta ) );
113
-
114
- $this->set_version_info_cache( $version_info );
115
-
116
- }
117
-
118
- if ( false !== $version_info && is_object( $version_info ) && isset( $version_info->new_version ) ) {
119
-
120
- if ( version_compare( $this->version, $version_info->new_version, '<' ) ) {
121
-
122
- $_transient_data->response[ $this->name ] = $version_info;
123
-
124
- // Make sure the plugin property is set to the plugin's name/location. See issue 1463 on Software Licensing's GitHub repo.
125
- $_transient_data->response[ $this->name ]->plugin = $this->name;
126
-
127
- }
128
-
129
- $_transient_data->last_checked = time();
130
- $_transient_data->checked[ $this->name ] = $this->version;
131
-
132
- }
133
-
134
- return $_transient_data;
135
- }
136
-
137
- /**
138
- * show update nofication row -- needed for multisite subsites, because WP won't tell you otherwise!
139
- *
140
- * @param string $file
141
- * @param array $plugin
142
- */
143
- public function show_update_notification( $file, $plugin ) {
144
-
145
- if ( is_network_admin() ) {
146
- return;
147
- }
148
-
149
- if( ! current_user_can( 'update_plugins' ) ) {
150
- return;
151
- }
152
-
153
- if( ! is_multisite() ) {
154
- return;
155
- }
156
-
157
- if ( $this->name != $file ) {
158
- return;
159
- }
160
-
161
- // Remove our filter on the site transient
162
- remove_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ), 10 );
163
-
164
- $update_cache = get_site_transient( 'update_plugins' );
165
-
166
- $update_cache = is_object( $update_cache ) ? $update_cache : new stdClass();
167
-
168
- if ( empty( $update_cache->response ) || empty( $update_cache->response[ $this->name ] ) ) {
169
-
170
- $version_info = $this->get_cached_version_info();
171
-
172
- if ( false === $version_info ) {
173
- $version_info = $this->api_request( 'plugin_latest_version', array( 'slug' => $this->slug, 'beta' => $this->beta ) );
174
-
175
- // Since we disabled our filter for the transient, we aren't running our object conversion on banners, sections, or icons. Do this now:
176
- if ( isset( $version_info->banners ) && ! is_array( $version_info->banners ) ) {
177
- $version_info->banners = $this->convert_object_to_array( $version_info->banners );
178
- }
179
-
180
- if ( isset( $version_info->sections ) && ! is_array( $version_info->sections ) ) {
181
- $version_info->sections = $this->convert_object_to_array( $version_info->sections );
182
- }
183
-
184
- if ( isset( $version_info->icons ) && ! is_array( $version_info->icons ) ) {
185
- $version_info->icons = $this->convert_object_to_array( $version_info->icons );
186
- }
187
-
188
- $this->set_version_info_cache( $version_info );
189
- }
190
-
191
- if ( ! is_object( $version_info ) ) {
192
- return;
193
- }
194
-
195
- if ( version_compare( $this->version, $version_info->new_version, '<' ) ) {
196
-
197
- $update_cache->response[ $this->name ] = $version_info;
198
-
199
- }
200
-
201
- $update_cache->last_checked = time();
202
- $update_cache->checked[ $this->name ] = $this->version;
203
-
204
- set_site_transient( 'update_plugins', $update_cache );
205
-
206
- } else {
207
-
208
- $version_info = $update_cache->response[ $this->name ];
209
-
210
- }
211
-
212
- // Restore our filter
213
- add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) );
214
-
215
- if ( ! empty( $update_cache->response[ $this->name ] ) && version_compare( $this->version, $version_info->new_version, '<' ) ) {
216
-
217
- // build a plugin list row, with update notification
218
- $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' );
219
- # <tr class="plugin-update-tr"><td colspan="' . $wp_list_table->get_column_count() . '" class="plugin-update colspanchange">
220
- echo '<tr class="plugin-update-tr" id="' . esc_html( $this->slug ) .
221
- '-update" data-slug="' . esc_attr( $this->slug ) . '" data-plugin="' .
222
- esc_html( $this->slug . '/' . $file ) . '">';
223
- echo '<td colspan="3" class="plugin-update colspanchange">';
224
- echo '<div class="update-message notice inline notice-warning notice-alt">';
225
-
226
- $changelog_link = self_admin_url( 'index.php?edd_sl_action=view_plugin_changelog&plugin=' . $this->name . '&slug=' . $this->slug . '&TB_iframe=true&width=772&height=911' );
227
-
228
- if ( empty( $version_info->download_link ) ) {
229
- printf(
230
- __( 'There is a new version of %1$s available. %2$sView version %3$s details%4$s.', 'easy-digital-downloads' ),
231
- esc_html( $version_info->name ),
232
- '<a target="_blank" class="thickbox" href="' . esc_url( $changelog_link ) . '">',
233
- esc_html( $version_info->new_version ),
234
- '</a>'
235
- );
236
- } else {
237
- printf(
238
- __( 'There is a new version of %1$s available. %2$sView version %3$s details%4$s or %5$supdate now%6$s.', 'easy-digital-downloads' ),
239
- esc_html( $version_info->name ),
240
- '<a target="_blank" class="thickbox" href="' . esc_url( $changelog_link ) . '">',
241
- esc_html( $version_info->new_version ),
242
- '</a>',
243
- '<a href="' . esc_url( wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $this->name, 'upgrade-plugin_' . $this->name ) ) .'">',
244
- '</a>'
245
- );
246
- }
247
-
248
- do_action( "in_plugin_update_message-{$file}", $plugin, $version_info );
249
-
250
- echo '</div></td></tr>';
251
- }
252
- }
253
-
254
- /**
255
- * Updates information on the "View version x.x details" page with custom data.
256
- *
257
- * @uses api_request()
258
- *
259
- * @param mixed $_data
260
- * @param string $_action
261
- * @param object $_args
262
- * @return object $_data
263
- */
264
- public function plugins_api_filter( $_data, $_action = '', $_args = null ) {
265
-
266
- if ( $_action != 'plugin_information' ) {
267
-
268
- return $_data;
269
-
270
- }
271
-
272
- if ( ! isset( $_args->slug ) || ( $_args->slug != $this->slug ) ) {
273
-
274
- return $_data;
275
-
276
- }
277
-
278
- $to_send = array(
279
- 'slug' => $this->slug,
280
- 'is_ssl' => is_ssl(),
281
- 'fields' => array(
282
- 'banners' => array(),
283
- 'reviews' => false,
284
- 'icons' => array(),
285
- )
286
- );
287
-
288
- $cache_key = 'edd_api_request_' . md5( serialize( $this->slug . $this->api_data['license'] . $this->beta ) );
289
-
290
- // Get the transient where we store the api request for this plugin for 24 hours
291
- $edd_api_request_transient = $this->get_cached_version_info( $cache_key );
292
-
293
- //If we have no transient-saved value, run the API, set a fresh transient with the API value, and return that value too right now.
294
- if ( empty( $edd_api_request_transient ) ) {
295
-
296
- $api_response = $this->api_request( 'plugin_information', $to_send );
297
-
298
- // Expires in 3 hours
299
- $this->set_version_info_cache( $api_response, $cache_key );
300
-
301
- if ( false !== $api_response ) {
302
- $_data = $api_response;
303
- }
304
-
305
- } else {
306
- $_data = $edd_api_request_transient;
307
- }
308
-
309
- // Convert sections into an associative array, since we're getting an object, but Core expects an array.
310
- if ( isset( $_data->sections ) && ! is_array( $_data->sections ) ) {
311
- $_data->sections = $this->convert_object_to_array( $_data->sections );
312
- }
313
-
314
- // Convert banners into an associative array, since we're getting an object, but Core expects an array.
315
- if ( isset( $_data->banners ) && ! is_array( $_data->banners ) ) {
316
- $_data->banners = $this->convert_object_to_array( $_data->banners );
317
- }
318
-
319
- // Convert icons into an associative array, since we're getting an object, but Core expects an array.
320
- if ( isset( $_data->icons ) && ! is_array( $_data->icons ) ) {
321
- $_data->icons = $this->convert_object_to_array( $_data->icons );
322
- }
323
-
324
- // Convert icons into an associative array, since we're getting an object, but Core expects an array.
325
- if ( isset( $_data->contributors ) && ! is_array( $_data->contributors ) ) {
326
- $_data->contributors = $this->convert_object_to_array( $_data->contributors );
327
- foreach ( $_data->contributors as $key => $value ) {
328
- $_data->contributors[$key] = $this->convert_object_to_array( $value );
329
- }
330
- }
331
-
332
- // FOR DEBUG
333
- // $fordebug = clone $_data;
334
- // foreach ( $fordebug->sections as $key => $value ) {
335
- // if ( strlen( $fordebug->sections[$key] ) > 200 )
336
- // $fordebug->sections[$key] = '...';
337
- // }
338
- // $fordebug->description = '...';
339
- // $fordebug->changelog = '...';
340
- // var_dump( $fordebug, 1 );
341
- // exit;
342
-
343
- if ( !empty( $_data ) && !isset( $_data->plugin ) ) {
344
- $_data->plugin = $this->name;
345
- }
346
-
347
- return $_data;
348
- }
349
-
350
- /**
351
- * Convert some objects to arrays when injecting data into the update API
352
- *
353
- * Some data like sections, banners, and icons are expected to be an associative array, however due to the JSON
354
- * decoding, they are objects. This method allows us to pass in the object and return an associative array.
355
- *
356
- * @since 3.6.5
357
- *
358
- * @param stdClass $data
359
- *
360
- * @return array
361
- */
362
- private function convert_object_to_array( $data ) {
363
- $new_data = array();
364
- foreach ( $data as $key => $value ) {
365
- $new_data[ $key ] = $value;
366
- }
367
-
368
- return $new_data;
369
- }
370
-
371
- /**
372
- * Disable SSL verification in order to prevent download update failures
373
- *
374
- * @param array $args
375
- * @param string $url
376
- * @return object $array
377
- */
378
- public function http_request_args( $args, $url ) {
379
-
380
- $verify_ssl = $this->verify_ssl();
381
- if ( strpos( $url, 'https://' ) !== false && strpos( $url, 'edd_action=package_download' ) ) {
382
- $args['sslverify'] = $verify_ssl;
383
- }
384
- return $args;
385
-
386
- }
387
-
388
- /**
389
- * Calls the API and, if successfull, returns the object delivered by the API.
390
- *
391
- * @uses get_bloginfo()
392
- * @uses wp_remote_post()
393
- * @uses is_wp_error()
394
- *
395
- * @param string $_action The requested action.
396
- * @param array $_data Parameters for the API action.
397
- * @return false|object
398
- */
399
- private function api_request( $_action, $_data ) {
400
-
401
- global $wp_version, $edd_plugin_url_available;
402
-
403
- $verify_ssl = $this->verify_ssl();
404
-
405
- // Do a quick status check on this domain if we haven't already checked it.
406
- $store_hash = md5( $this->api_url );
407
- if ( ! is_array( $edd_plugin_url_available ) || ! isset( $edd_plugin_url_available[ $store_hash ] ) ) {
408
- $test_url_parts = parse_url( $this->api_url );
409
-
410
- $scheme = ! empty( $test_url_parts['scheme'] ) ? $test_url_parts['scheme'] : 'http';
411
- $host = ! empty( $test_url_parts['host'] ) ? $test_url_parts['host'] : '';
412
- $port = ! empty( $test_url_parts['port'] ) ? ':' . $test_url_parts['port'] : '';
413
-
414
- if ( empty( $host ) ) {
415
- $edd_plugin_url_available[ $store_hash ] = false;
416
- } else {
417
- $test_url = $scheme . '://' . $host . $port;
418
- $response = wp_remote_get( $test_url, array( 'timeout' => $this->health_check_timeout, 'sslverify' => $verify_ssl ) );
419
- $edd_plugin_url_available[ $store_hash ] = is_wp_error( $response ) ? false : true;
420
- }
421
- }
422
-
423
- if ( false === $edd_plugin_url_available[ $store_hash ] ) {
424
- return;
425
- }
426
-
427
- $data = array_merge( $this->api_data, $_data );
428
-
429
- if ( $data['slug'] != $this->slug ) {
430
- return;
431
- }
432
-
433
- if( $this->api_url == trailingslashit ( home_url() ) ) {
434
- return false; // Don't allow a plugin to ping itself
435
- }
436
-
437
- $api_params = array(
438
- 'edd_action' => 'get_version',
439
- 'license' => ! empty( $data['license'] ) ? $data['license'] : '',
440
- 'item_name' => isset( $data['item_name'] ) ? $data['item_name'] : false,
441
- 'item_id' => isset( $data['item_id'] ) ? $data['item_id'] : false,
442
- 'version' => isset( $data['version'] ) ? $data['version'] : false,
443
- 'slug' => $data['slug'],
444
- 'author' => $data['author'],
445
- 'url' => home_url(),
446
- 'beta' => ! empty( $data['beta'] ),
447
- );
448
-
449
- $request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => $verify_ssl, 'body' => $api_params ) );
450
-
451
- if ( ! is_wp_error( $request ) ) {
452
- $request = json_decode( wp_remote_retrieve_body( $request ) );
453
- }
454
-
455
- if ( $request && isset( $request->sections ) ) {
456
- $request->sections = maybe_unserialize( $request->sections );
457
- } else {
458
- $request = false;
459
- }
460
-
461
- if ( $request && isset( $request->banners ) ) {
462
- $request->banners = maybe_unserialize( $request->banners );
463
- }
464
-
465
- if ( $request && isset( $request->icons ) ) {
466
- $request->icons = maybe_unserialize( $request->icons );
467
- }
468
-
469
- if( ! empty( $request->sections ) ) {
470
- foreach( $request->sections as $key => $section ) {
471
- $request->$key = (array) $section;
472
- }
473
- }
474
-
475
- return $request;
476
- }
477
-
478
- public function show_changelog() {
479
-
480
- global $edd_plugin_data;
481
-
482
- if( empty( $_REQUEST['edd_sl_action'] ) || 'view_plugin_changelog' != $_REQUEST['edd_sl_action'] ) {
483
- return;
484
- }
485
-
486
- if( empty( $_REQUEST['plugin'] ) ) {
487
- return;
488
- }
489
-
490
- if( empty( $_REQUEST['slug'] ) ) {
491
- return;
492
- }
493
-
494
- if( ! current_user_can( 'update_plugins' ) ) {
495
- wp_die( __( 'You do not have permission to install plugin updates', 'easy-digital-downloads' ), __( 'Error', 'easy-digital-downloads' ), array( 'response' => 403 ) );
496
- }
497
-
498
- $data = $edd_plugin_data[ $_REQUEST['slug'] ];
499
- $beta = ! empty( $data['beta'] ) ? true : false;
500
- $cache_key = md5( 'edd_plugin_' . sanitize_key( $_REQUEST['plugin'] ) . '_' . $beta . '_version_info' );
501
- $version_info = $this->get_cached_version_info( $cache_key );
502
-
503
- if( false === $version_info ) {
504
-
505
- $api_params = array(
506
- 'edd_action' => 'get_version',
507
- 'item_name' => isset( $data['item_name'] ) ? $data['item_name'] : false,
508
- 'item_id' => isset( $data['item_id'] ) ? $data['item_id'] : false,
509
- 'slug' => sanitize_text_field( $_REQUEST['slug'] ),
510
- 'author' => $data['author'],
511
- 'url' => home_url(),
512
- 'beta' => ! empty( $data['beta'] )
513
- );
514
-
515
- $verify_ssl = $this->verify_ssl();
516
- $request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => $verify_ssl, 'body' => $api_params ) );
517
-
518
- if ( ! is_wp_error( $request ) ) {
519
- $version_info = json_decode( wp_remote_retrieve_body( $request ) );
520
- }
521
-
522
-
523
- if ( ! empty( $version_info ) && isset( $version_info->sections ) ) {
524
- $version_info->sections = maybe_unserialize( $version_info->sections );
525
- } else {
526
- $version_info = false;
527
- }
528
-
529
- if( ! empty( $version_info ) ) {
530
- foreach( $version_info->sections as $key => $section ) {
531
- $version_info->$key = (array) $section;
532
- }
533
- }
534
-
535
- $this->set_version_info_cache( $version_info, $cache_key );
536
-
537
- }
538
-
539
- if( ! empty( $version_info ) && isset( $version_info->sections['changelog'] ) ) {
540
- echo '<div style="background:#fff;padding:10px;">' . $version_info->sections['changelog'] . '</div>';
541
- }
542
-
543
- exit;
544
- }
545
-
546
- public function get_cached_version_info( $cache_key = '' ) {
547
-
548
- if( empty( $cache_key ) ) {
549
- $cache_key = $this->cache_key;
550
- }
551
-
552
- $cache = get_option( $cache_key );
553
-
554
- if( empty( $cache['timeout'] ) || time() > $cache['timeout'] ) {
555
- return false; // Cache is expired
556
- }
557
-
558
- // We need to turn the icons into an array, thanks to WP Core forcing these into an object at some point.
559
- $cache['value'] = json_decode( $cache['value'] );
560
- if ( ! empty( $cache['value']->icons ) ) {
561
- $cache['value']->icons = (array) $cache['value']->icons;
562
- }
563
-
564
- return $cache['value'];
565
-
566
- }
567
-
568
- public function set_version_info_cache( $value = '', $cache_key = '' ) {
569
-
570
- if( empty( $cache_key ) ) {
571
- $cache_key = $this->cache_key;
572
- }
573
-
574
- $data = array(
575
- 'timeout' => strtotime( '+3 hours', time() ),
576
- 'value' => json_encode( $value )
577
- );
578
-
579
- update_option( $cache_key, $data, 'no' );
580
-
581
- }
582
-
583
- /**
584
- * Returns if the SSL of the store should be verified.
585
- *
586
- * @since 1.6.13
587
- * @return bool
588
- */
589
- private function verify_ssl() {
590
- return (bool) apply_filters( 'edd_sl_api_request_verify_ssl', true, $this );
591
- }
592
-
593
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
common/helpers.php CHANGED
@@ -36,7 +36,7 @@ if ( !class_exists( 'MeowCommon_Helpers' ) ) {
36
  // WP_REST_Request init.
37
  $is_rest_request = defined('REST_REQUEST') && REST_REQUEST;
38
  if ( $is_rest_request ) {
39
- MeowCommon_Classes_Rest::init_once();
40
  return true;
41
  }
42
 
@@ -44,7 +44,7 @@ if ( !class_exists( 'MeowCommon_Helpers' ) ) {
44
  $prefix = rest_get_url_prefix();
45
  $request_contains_rest = isset( $_GET['rest_route'] ) && strpos( trim( $_GET['rest_route'], '\\/' ), $prefix , 0 ) === 0;
46
  if ( $request_contains_rest) {
47
- MeowCommon_Classes_Rest::init_once();
48
  return true;
49
  }
50
 
@@ -62,7 +62,7 @@ if ( !class_exists( 'MeowCommon_Helpers' ) ) {
62
  if ( !empty( $current_url['path'] ) && !empty( $rest_url['path'] ) ) {
63
  $request_contains_rest = strpos( $current_url['path'], $rest_url['path'], 0 ) === 0;
64
  if ( $request_contains_rest) {
65
- MeowCommon_Classes_Rest::init_once();
66
  return true;
67
  }
68
  }
@@ -177,5 +177,3 @@ if ( !class_exists( 'MeowCommon_Helpers' ) ) {
177
  // ini_set( 'display_errors', 0 );
178
  // }
179
  }
180
-
181
- ?>
36
  // WP_REST_Request init.
37
  $is_rest_request = defined('REST_REQUEST') && REST_REQUEST;
38
  if ( $is_rest_request ) {
39
+ MeowCommon_Rest::init_once();
40
  return true;
41
  }
42
 
44
  $prefix = rest_get_url_prefix();
45
  $request_contains_rest = isset( $_GET['rest_route'] ) && strpos( trim( $_GET['rest_route'], '\\/' ), $prefix , 0 ) === 0;
46
  if ( $request_contains_rest) {
47
+ MeowCommon_Rest::init_once();
48
  return true;
49
  }
50
 
62
  if ( !empty( $current_url['path'] ) && !empty( $rest_url['path'] ) ) {
63
  $request_contains_rest = strpos( $current_url['path'], $rest_url['path'], 0 ) === 0;
64
  if ( $request_contains_rest) {
65
+ MeowCommon_Rest::init_once();
66
  return true;
67
  }
68
  }
177
  // ini_set( 'display_errors', 0 );
178
  // }
179
  }
 
 
common/{classes/issues.php → issues.php} RENAMED
@@ -1,8 +1,8 @@
1
  <?php
2
 
3
- if ( !class_exists( 'MeowCommon_Classes_Issues' ) ) {
4
 
5
- class MeowCommon_Classes_Issues {
6
 
7
  public function __construct( $prefix, $mainfile, $domain ) {
8
  $this->check_plugins();
1
  <?php
2
 
3
+ if ( !class_exists( 'MeowCommon_Issues' ) ) {
4
 
5
+ class MeowCommon_Issues {
6
 
7
  public function __construct( $prefix, $mainfile, $domain ) {
8
  $this->check_plugins();
common/licenser.php DELETED
@@ -1,126 +0,0 @@
1
- <?php
2
-
3
- if ( !class_exists( 'MeowCommon_Licenser' ) ) {
4
-
5
- class MeowCommon_Licenser {
6
- public $license = null;
7
- public $prefix; // prefix used for actions, filters (mfrh)
8
- public $mainfile; // plugin main file (media-file-renamer.php)
9
- public $domain; // domain used for translation (media-file-renamer)
10
- public $item; // name of the Pro plugin (Media File Renamer Pro)
11
- public $version; // version of the plugin (Media File Renamer Pro)
12
-
13
- public function __construct( $prefix, $mainfile, $domain, $item, $version ) {
14
- $this->prefix = $prefix;
15
- $this->mainfile = $mainfile;
16
- $this->domain = $domain;
17
- $this->item = $item;
18
- $this->version = $version;
19
-
20
- if ( $this->is_registered() ) {
21
- add_filter( $this->prefix . '_meowapps_is_registered', array( $this, 'is_registered' ), 10 );
22
- }
23
-
24
- if ( MeowCommon_Helpers::is_rest() ) {
25
- new MeowCommon_Classes_Rest_License( $this );
26
- }
27
- else if ( is_admin() ) {
28
- $license_key = $this->license && isset( $this->license['key'] ) ? $this->license['key'] : "";
29
- new MeowCommon_Classes_Updater(
30
- ( get_option( 'force_sslverify', false ) ? 'https' : 'http' ) . '://store.meowapps.com', $this->mainfile,
31
- array(
32
- 'version' => $this->version,
33
- 'license' => $license_key,
34
- 'item_name' => $this->item,
35
- 'wp_override' => true,
36
- 'author' => 'Jordy Meow',
37
- 'url' => strtolower( home_url() ),
38
- 'beta' => false
39
- )
40
- );
41
- }
42
- }
43
-
44
- function retry_validation() {
45
- if ( isset( $_POST[$this->prefix . '_pro_serial'] ) ) {
46
- $serial = sanitize_text_field( $_POST[$this->prefix . '_pro_serial'] );
47
- $this->validate_pro( $serial );
48
- }
49
- }
50
-
51
- function is_registered( $force = false ) {
52
- if ( !$force && !empty( $this->license ) )
53
- return empty( $this->license['issue'] );
54
- $this->license = get_option( $this->prefix . '_license', "" );
55
- if ( empty( $this->license ) || !empty( $this->license['issue'] ) )
56
- return false;
57
- if ( $this->license['expires'] == "lifetime" )
58
- return true;
59
- $datediff = strtotime( $this->license['expires'] ) - time();
60
- $days = floor( $datediff / ( 60 * 60 * 24 ) );
61
- if ( $days < 0 )
62
- $this->validate_pro( $this->license['key'] );
63
- return true;
64
- }
65
-
66
- function validate_pro( $subscr_id ) {
67
- $prefix = $this->prefix;
68
- delete_option( $prefix . '_license', "" );
69
- if ( empty( $subscr_id ) )
70
- return false;
71
- $url = ( get_option( 'force_sslverify', false ) ? 'https' : 'http' ) .
72
- '://store.meowapps.com/?edd_action=activate_license' .
73
- '&item_name=' . urlencode( $this->item ) .
74
- '&license=' . $subscr_id . '&url=' . strtolower( home_url() ) . '&cache=' . bin2hex( openssl_random_pseudo_bytes( 4 ) );
75
- $response = wp_remote_get( $url, array(
76
- 'user-agent' => "MeowApps",
77
- 'sslverify' => get_option( 'force_sslverify', false ),
78
- 'timeout' => 45,
79
- 'method' => 'GET'
80
- )
81
- );
82
- $body = is_array( $response ) ? $response['body'] : null;
83
- $post = @json_decode( $body );
84
- $status = null;
85
- $license = null;
86
- $expires = null;
87
- $logs = null;
88
- if ( !$post || ( property_exists( $post, 'code' ) ) ) {
89
- $status = 'error';
90
- // $status = __( "There was an error while validating the serial.<br />Please contact <a target='_blank' href='https://meowapps.com/contact/'>Meow Apps</a> and mention the following log: <br /><ul>", $this->domain );
91
- $logs = "<li>Server IP: <b>" . gethostbyname( $_SERVER['SERVER_NAME'] ) . "</b></li>";
92
- $logs .= "<li>Google GET: ";
93
- $r = wp_remote_get( 'http://google.com' );
94
- $logs .= is_wp_error( $r ) ? print_r( $r, true ) : 'OK';
95
- $logs .= "</li><li>MeowApps GET: ";
96
- $r = wp_remote_get( 'http://meowapps.com' );
97
- $logs .= is_wp_error( $r ) ? print_r( $r, true ) : 'OK';
98
- $logs .= "</li><li>MeowApps STORE:<br /><br />";
99
- $logs .= "REQUEST: $url<br /><br />";
100
- $logs .= "RESPONSE: ";
101
- $logs .= print_r( $response, true );
102
- $logs .= "</li></ul>";
103
- error_log( print_r( $response, true ) );
104
- }
105
- else if ( $post->license !== "valid" ) {
106
- $status = $post->error ;
107
- }
108
- else {
109
- $license = $post->license;
110
- $expires = $post->expires;
111
- delete_option( '_site_transient_update_plugins' );
112
- }
113
- update_option( $prefix . '_license', array(
114
- 'key' => $subscr_id,
115
- 'issue' => $status,
116
- 'logs' => $logs,
117
- 'expires' => $expires,
118
- 'license' => $license ) );
119
- return $this->is_registered( true );
120
- }
121
-
122
- }
123
-
124
- }
125
-
126
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
common/{classes/ratings.php → ratings.php} RENAMED
@@ -1,8 +1,8 @@
1
  <?php
2
 
3
- if ( !class_exists( 'MeowCommon_Classes_Ratings' ) ) {
4
 
5
- class MeowCommon_Classes_Ratings {
6
 
7
  public $mainfile; // plugin main file (media-file-renamer.php)
8
  public $domain; // domain used for translation (media-file-renamer)
@@ -58,15 +58,15 @@ if ( !class_exists( 'MeowCommon_Classes_Ratings' ) ) {
58
  return;
59
  }
60
  $rating_date = get_option( $this->prefix . '_rating_date' );
61
- echo '<div class="notice notice-success" data-rating-date="' . date( 'Y-m-d', $rating_date ) . '">';
62
- echo '<p style="font-size: 100%;">';
63
- printf(
64
- // translators: %1$s is a plugin nicename, %2$s is a short url (slug)
65
- __( 'You have been using <b>%1$s</b> for some time now. Thank you! Could you kindly share your opinion with me, along with, maybe, features you would like to see implemented? Then, please <a style="font-weight: bold; color: #b926ff;" target="_blank" href="https://wordpress.org/support/plugin/%2$s/reviews/?rate=5#new-post">write a little review</a>. That will also bring me joy and motivation! I will get back to you :)', $this->domain ),
66
- $this->nice_name_from_file( $this->mainfile ),
67
- $this->nice_short_url_from_file( $this->mainfile )
68
- );
69
- echo '<p>
70
  <form method="post" action="" style="float: right;">
71
  <input type="hidden" name="' . $this->prefix . '_never_remind_me" value="true">
72
  <input type="submit" name="submit" id="submit" class="button button-red" value="'
@@ -83,9 +83,9 @@ if ( !class_exists( 'MeowCommon_Classes_Ratings' ) ) {
83
  . __( 'Yes, I did it!', $this->domain ) . '">
84
  </form>
85
  <div style="clear: both;"></div>
86
- </p>
87
- ';
88
- echo '</div>';
89
  }
90
 
91
  function nice_short_url_from_file( $file ) {
1
  <?php
2
 
3
+ if ( !class_exists( 'MeowCommon_Ratings' ) ) {
4
 
5
+ class MeowCommon_Ratings {
6
 
7
  public $mainfile; // plugin main file (media-file-renamer.php)
8
  public $domain; // domain used for translation (media-file-renamer)
58
  return;
59
  }
60
  $rating_date = get_option( $this->prefix . '_rating_date' );
61
+ $html = '<div class="notice notice-success" data-rating-date="' . date( 'Y-m-d', $rating_date ) . '">';
62
+ $html .= '<p style="font-size: 100%;">';
63
+ $html .= sprintf(
64
+ // translators: %1$s is a plugin nicename, %2$s is a short url (slug)
65
+ __( 'You have been using <b>%1$s</b> for some time now. Thank you! Could you kindly share your opinion with me, along with, maybe, features you would like to see implemented? Then, please <a style="font-weight: bold; color: #b926ff;" target="_blank" href="https://wordpress.org/support/plugin/%2$s/reviews/?rate=5#new-post">write a little review</a>. That will also bring me joy and motivation! I will get back to you :)', $this->domain ),
66
+ $this->nice_name_from_file( $this->mainfile ),
67
+ $this->nice_short_url_from_file( $this->mainfile )
68
+ );
69
+ $html .= '<p>
70
  <form method="post" action="" style="float: right;">
71
  <input type="hidden" name="' . $this->prefix . '_never_remind_me" value="true">
72
  <input type="submit" name="submit" id="submit" class="button button-red" value="'
83
  . __( 'Yes, I did it!', $this->domain ) . '">
84
  </form>
85
  <div style="clear: both;"></div>
86
+ </p>';
87
+ $html .= '</div>';
88
+ wp_kses_post( $html );
89
  }
90
 
91
  function nice_short_url_from_file( $file ) {
common/releases.txt CHANGED
@@ -1,6 +1,9 @@
1
  Releases of the Meow Commmon has to be carefully made, and version_compare
2
  should be used when big changes are made.
3
 
 
 
 
4
  = 3.5 (2021/08/31) =
5
  * Better security.
6
  * New images.
1
  Releases of the Meow Commmon has to be carefully made, and version_compare
2
  should be used when big changes are made.
3
 
4
+ = 3.6 (2021/09/22) =
5
+ * Premium classes are now separated.
6
+
7
  = 3.5 (2021/08/31) =
8
  * Better security.
9
  * New images.
common/{classes/rest.php → rest.php} RENAMED
@@ -1,13 +1,13 @@
1
  <?php
2
 
3
- class MeowCommon_Classes_Rest
4
  {
5
  private $namespace = "meow-common/v1";
6
  static public $instance = null;
7
 
8
  static public function init_once() {
9
- if ( !MeowCommon_Classes_Rest::$instance ) {
10
- MeowCommon_Classes_Rest::$instance = new self();
11
  }
12
  }
13
 
@@ -131,5 +131,3 @@ class MeowCommon_Classes_Rest
131
  }
132
 
133
  }
134
-
135
- ?>
1
  <?php
2
 
3
+ class MeowCommon_Rest
4
  {
5
  private $namespace = "meow-common/v1";
6
  static public $instance = null;
7
 
8
  static public function init_once() {
9
+ if ( !MeowCommon_Rest::$instance ) {
10
+ MeowCommon_Rest::$instance = new self();
11
  }
12
  }
13
 
131
  }
132
 
133
  }
 
 
media-file-renamer.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Media File Renamer
4
  Plugin URI: https://meowapps.com
5
  Description: Renames your media files for better SEO and a nicer filesystem (automatically or manually).
6
- Version: 5.2.8
7
  Author: Jordy Meow
8
  Author URI: https://meowapps.com
9
  Text Domain: media-file-renamer
@@ -14,12 +14,14 @@ Originally developed for two of my websites:
14
  - Haikyo (https://haikyo.org)
15
  */
16
 
17
- define( 'MFRH_VERSION', '5.2.8' );
18
- define( 'MFRH_PREFIX', 'mfrh' );
19
- define( 'MFRH_DOMAIN', 'media-file-renamer' );
20
- define( 'MFRH_ENTRY', __FILE__ );
21
- define( 'MFRH_PATH', dirname( __FILE__ ) );
22
- define( 'MFRH_URL', plugin_dir_url( __FILE__ ) );
 
 
23
 
24
  require_once( 'classes/init.php');
25
 
3
  Plugin Name: Media File Renamer
4
  Plugin URI: https://meowapps.com
5
  Description: Renames your media files for better SEO and a nicer filesystem (automatically or manually).
6
+ Version: 5.2.9
7
  Author: Jordy Meow
8
  Author URI: https://meowapps.com
9
  Text Domain: media-file-renamer
14
  - Haikyo (https://haikyo.org)
15
  */
16
 
17
+ if ( !defined( 'MFRH_VERSION' ) ) {
18
+ define( 'MFRH_VERSION', '5.2.9' );
19
+ define( 'MFRH_PREFIX', 'mfrh' );
20
+ define( 'MFRH_DOMAIN', 'media-file-renamer' );
21
+ define( 'MFRH_ENTRY', __FILE__ );
22
+ define( 'MFRH_PATH', dirname( __FILE__ ) );
23
+ define( 'MFRH_URL', plugin_dir_url( __FILE__ ) );
24
+ }
25
 
26
  require_once( 'classes/init.php');
27
 
readme.txt CHANGED
@@ -1,11 +1,11 @@
1
  === Media File Renamer - Auto & Manual Rename ===
2
  Contributors: TigrouMeow
3
  Tags: rename, file, media, move, seo, files, renamer, optimize, library, slug, change, modify
4
- Donate link: https://commerce.coinbase.com/checkout/d047546a-77a8-41c8-9ea9-4a950f61832f
5
  Requires at least: 5.0
6
  Tested up to: 5.8
7
  Requires PHP: 7.0
8
- Stable tag: 5.2.8
9
 
10
  Renames your media files for better SEO and a nicer filesystem (automatically or manually).
11
 
@@ -67,6 +67,9 @@ The plugin can be tweaked in many ways, there are many actions and filters avail
67
 
68
  == Changelog ==
69
 
 
 
 
70
  = 5.2.8 (2021/09/07) =
71
  * Add: Option to clean the plugin data on uninstall.
72
  * Add: Manual Rename now goes through the cleaning flow to make sure everything is clean and nice.
1
  === Media File Renamer - Auto & Manual Rename ===
2
  Contributors: TigrouMeow
3
  Tags: rename, file, media, move, seo, files, renamer, optimize, library, slug, change, modify
4
+ Donate link: https://meowapps.com/donation/
5
  Requires at least: 5.0
6
  Tested up to: 5.8
7
  Requires PHP: 7.0
8
+ Stable tag: 5.2.9
9
 
10
  Renames your media files for better SEO and a nicer filesystem (automatically or manually).
11
 
67
 
68
  == Changelog ==
69
 
70
+ = 5.2.9 (2021/09/23) =
71
+ * Add: Manual Sanitize Option. If the option is checked, the rename feature uses the new_filename function. If not, use the filename user input as it is.
72
+
73
  = 5.2.8 (2021/09/07) =
74
  * Add: Option to clean the plugin data on uninstall.
75
  * Add: Manual Rename now goes through the cleaning flow to make sure everything is clean and nice.