Gallery Custom Links - Version 2.1.4

Version Description

(2022/10/05) = * Add: Some files were missing for the libraries autoload. * Info: If you like the plugin, your reviews are welcome here. Thank you :)

Download this release

Release Info

Developer TigrouMeow
Plugin Icon 128x128 Gallery Custom Links
Version 2.1.4
Comparing to
See all releases

Code changes from version 2.1.3 to 2.1.4

app/index.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e){function n(n){for(var r,i,l=n[0],c=n[1],u=n[2],d=0,f=[];d<l.length;d++)i=l[d],Object.prototype.hasOwnProperty.call(a,i)&&a[i]&&f.push(a[i][0]),a[i]=0;for(r in c)Object.prototype.hasOwnProperty.call(c,r)&&(e[r]=c[r]);for(s&&s(n);f.length;)f.shift()();return o.push.apply(o,u||[]),t()}function t(){for(var e,n=0;n<o.length;n++){for(var t=o[n],r=!0,l=1;l<t.length;l++){var c=t[l];0!==a[c]&&(r=!1)}r&&(o.splice(n--,1),e=i(i.s=t[0]))}return e}var r={},a={0:0},o=[];function i(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.m=e,i.c=r,i.d=function(e,n,t){i.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,n){if(1&n&&(e=i(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var r in e)i.d(t,r,function(n){return e[n]}.bind(null,r));return t},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.p="";var l=window.wpJsonMgcl=window.wpJsonMgcl||[],c=l.push.bind(l);l.push=n,l=l.slice();for(var u=0;u<l.length;u++)n(l[u]);var s=c;o.push([101,1]),t()}({0:function(e,n){e.exports=React},10:function(e,n){e.exports=ReactDOM},101:function(e,n,t){"use strict";t.r(n);var r=t(0),a=t.n(r),o=t(10),i=t.n(o),l=t(21),c=t(1),u=t.n(c);function s(){return(s=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function d(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function f(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?d(Object(t),!0).forEach((function(n){p(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):d(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function p(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function m(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return b(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return b(e,n)}(e,n)||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 b(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var h=function(e){var n=e.spinner,t=void 0===n||n,o=e.busy,i=void 0!==o&&o,l=e.overlayStyle,c=m(Object(r.useState)(!0),2),u=c[0],d=c[1];Object(r.useEffect)((function(){var e;return i?d(!0):e=setTimeout((function(){d(!1),e=null}),250),function(){e&&clearTimeout(e)}}),[i]);var p=u?a.a.createElement(a.a.Fragment,null,a.a.createElement("div",{className:"overlay "+(i?"":"overlayHidden"),style:l},Boolean(t)&&a.a.createElement("div",{className:"lds-ellipsis "+(i?"":"spinnerHidden")},a.a.createElement("div",null),a.a.createElement("div",null),a.a.createElement("div",null),a.a.createElement("div",null))),a.a.createElement("style",{jsx:!0},"\n .overlay {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n background: rgb(30 124 186 / 85%);\n transition: opacity 1s ease-out;\n z-index: 10;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n }\n\n .overlayHidden {\n opacity: 0;\n transition: opacity 0.25s ease-out;\n }\n .spinnerHidden {\n opacity: 0;\n transition: opacity 0.25s ease-out;\n }\n .lds-ellipsis {\n position: relative;\n width: 80px;\n height: 80px;\n display: flex;\n justify-items: center;\n align-items: center;\n }\n .lds-ellipsis div {\n position: absolute;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: white;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n }\n .lds-ellipsis div:nth-child(1) {\n left: 8px;\n animation: lds-ellipsis1 0.6s infinite;\n }\n .lds-ellipsis div:nth-child(2) {\n left: 8px;\n animation: lds-ellipsis2 0.6s infinite;\n }\n .lds-ellipsis div:nth-child(3) {\n left: 32px;\n animation: lds-ellipsis2 0.6s infinite;\n }\n .lds-ellipsis div:nth-child(4) {\n left: 56px;\n animation: lds-ellipsis3 0.6s infinite;\n }\n @keyframes lds-ellipsis1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n }\n @keyframes lds-ellipsis3 {\n 0% {\n transform: scale(1);\n }\n 100% {\n transform: scale(0);\n }\n }\n @keyframes lds-ellipsis2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n } \n ")):null,b=f(f({},e),{},{busy:void 0,spinner:void 0});return a.a.createElement("div",s({style:{position:"relative"}},b),p,e.children)};h.propTypes={busy:u.a.bool.isRequired,spinner:u.a.bool,children:u.a.oneOfType([u.a.arrayOf(u.a.node),u.a.node]).isRequired};var g=h,y=t(2),v=t(4);function w(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function E(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?w(Object(t),!0).forEach((function(n){k(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):w(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function k(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}var O,j={black:"#000000",blackRGB:"0, 0, 0",blue:"#007cba",blueRGB:"0, 124, 186",deepBlue:"#134575",finderBorder:"#DEDEDE",lightBlue:"#EBF3FF",lightGray:"#cacaca",lightGray2:"#F5F5F5",lightPurple:"#D8B1FF",gray:"#E8E8E8",green:"#0EA480",darkGray:"#A0A0A0",disabledForm:"#828282",orange:"#daa827",overlay:"rgba(16, 16, 16, 0.92)",red:"#ba4300",redHighlight:"#de5307",header:"#007cba",proGray:"#7F8EA0",progress:"#8414a8",purple:"#956DBE",tableGray:"#FAFAFA",yellow:"#e4b42b",yellowRGB:"224, 156, 54",white:"#ffffff",whiteRGB:"255, 255, 255"},S={danger:j.red,primary:j.blue,secondary:j.lightBlue,success:j.green},R=E(E(E({},j),S),{},{fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell,"Helvetica Neue", sans-serif',fontSizeH1:"24px",fontSizeH2:"18px",fontSizeText:"13px",fontSizeSmall:"12px",fontSizeSmallButton:"10px",lightShadow:"0px 0px 10px rgba(0,0,0,0.1)"}),P=t(3),C=["type"];function A(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var z,N,I=y.a.div(O||(z=["\n width: ",";\n padding-top: ",";\n position: relative;\n margin: 0 auto;\n\n .double-bounce1, .double-bounce2 {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: ",";\n opacity: 0.6;\n position: absolute;\n top: 0;\n left: 0;\n\n -webkit-animation: sk-bounce 2.0s infinite ease-in-out;\n animation: sk-bounce 2.0s infinite ease-in-out;\n }\n\n .double-bounce2 {\n -webkit-animation-delay: -1.0s;\n animation-delay: -1.0s;\n }\n\n @-webkit-keyframes sk-bounce {\n 0%, 100% { -webkit-transform: scale(0.0) }\n 50% { -webkit-transform: scale(1.0) }\n }\n\n @keyframes sk-bounce {\n 0%, 100% {\n transform: scale(0.0);\n -webkit-transform: scale(0.0);\n } 50% {\n transform: scale(1.0);\n -webkit-transform: scale(1.0);\n }\n }\n"],N||(N=z.slice(0)),O=Object.freeze(Object.defineProperties(z,{raw:{value:Object.freeze(N)}}))),(function(e){return e.size||"50%"}),(function(e){return e.size||"50%"}),(function(e){return e.color||"#333"})),T=function(e){return a.a.createElement(I,e,a.a.createElement("div",{className:"double-bounce1"}),a.a.createElement("div",{className:"double-bounce2"}))},_=function(e){var n=e.type,t=void 0===n?"circle":n,r=A(e,C);switch(t){case"circle":return a.a.createElement(T,r);default:return null}},D=function(e){return a.a.createElement(_,e)};D.propTypes={type:u.a.string},D.defaultProps={type:"circle"};var M=t(35),B=t.n(M),F=t(36),L=t.n(F),U=t(37),G=t.n(U),q=t(12),W=t.n(q),H=t(13),$=t.n(H),Y=t(14),K=t.n(Y),V=t(6),J=t.n(V),X=t(5),Z=t.n(X),Q=t(7),ee=t.n(Q),ne=t(15),te=t.n(ne),re=t(16),ae=t.n(re),oe=t(38),ie=t.n(oe),le=t(39),ce=t.n(le),ue=t(40),se=t.n(ue),de=t(17),fe=t.n(de),pe=t(41),me=t.n(pe),be=t(42),he=t.n(be),ge=t(43),ye=t.n(ge),ve=t(44),we=t.n(ve),xe=(t(86),t(45)),Ee=t.n(xe),ke=t(46),Oe=t.n(ke),je=t(47),Se=t.n(je),Re=t(48),Pe=t.n(Re),Ce=t(49),Ae=t.n(Ce),ze=t(50),Ne=t.n(ze),Ie=t(51),Te=t.n(Ie),_e=t(52),De=t.n(_e),Me=t(8),Be=t.n(Me),Fe=t(18),Le=t.n(Fe),Ue=t(19),Ge=t.n(Ue),qe=t(53),We=t.n(qe),He=t(54),$e=t.n(He),Ye=t(55),Ke=t.n(Ye),Ve=t(56),Je=t.n(Ve),Xe=t(57),Ze=t.n(Xe),Qe=t(58),en=t.n(Qe),nn=t(59),tn=t.n(nn),rn=t(60),an=t.n(rn),on=t(61),ln=t.n(on),cn=t(62),un=t.n(cn),sn=t(63),dn=t.n(sn),fn=t(64),pn=t.n(fn),mn=t(65),bn=t.n(mn),hn=t(66),gn=t.n(hn),yn=t(67),vn=t.n(yn),wn=t(68),xn=t.n(wn),En=t(69),kn=t.n(En),On=t(70),jn=t.n(On),Sn=t(71),Rn=t.n(Sn),Pn=t(72),Cn=t.n(Pn),An=t(73),zn=t.n(An),Nn=t(74),In=t.n(Nn),Tn={lock:B.a,"lock-open":L.a,"file-undo":G.a,"chevron-double-left":W.a,"chevron-double-right":$.a,"chevron-left":K.a,"chevron-right":J.a,"chevron-down":Z.a,"chevron-up":ee.a,pause:te.a,play:ae.a,replay:ie.a,check:ce.a,"check-circle":se.a,stop:fe.a,delete:me.a,undo:he.a,alert:ye.a,database:we.a,tools:Ee.a,cog:Oe.a,close:Se.a,cat:Pe.a,upload:dn.a,trash:Ae.a,pencil:Ne.a,dashboard:Te.a,search:De.a,folder:Be.a,"folder-open":Le.a,"image-multiple-outline":Ge.a,plus:We.a,"folder-plus":$e.a,"image-plus":Ke.a,"view-grid":Je.a,"format-list-bulleted":Ze.a,twitter:en.a,instagram:tn.a,facebook:an.a,star:ln.a,"timer-outline":un.a,link:pn.a,linkedin:bn.a,pinterest:gn.a,"zoom-in":vn.a,"info-outline":xn.a,"arrow-up":kn.a,"arrow-down":jn.a,sort:Rn.a,eye:Cn.a,"rocket-launch":zn.a,"calendar-month":In.a},_n=t(24),Dn=t.n(_n);t(25);function Mn(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}var Bn=function e(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};Mn(this,e),this.url=r,this.message=n,this.code=t,this.body=a,this.debug=o};function Fn(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||qn(e,n)||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 Ln(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function Un(e){return function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){Ln(o,r,a,i,l,"next",e)}function l(e){Ln(o,r,a,i,l,"throw",e)}i(void 0)}))}}function Gn(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=qn(e))||n&&e&&"number"==typeof e.length){t&&(e=t);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,l=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return i=e.done,e},e:function(e){l=!0,o=e},f:function(){try{i||null==t.return||t.return()}finally{if(l)throw o}}}}function qn(e,n){if(e){if("string"==typeof e)return Wn(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Wn(e,n):void 0}}function Wn(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var Hn=function(e){if(!e.data)return e;if(e.data.length>0&&e.data[0].meta){var n,t=Gn(e.data);try{for(t.s();!(n=t.n()).done;){var r=n.value;try{r.meta=JSON.parse(r.meta)}catch(e){console.error("[JsonFetcher]","Could not decode meta.",r.meta)}}}catch(e){t.e(e)}finally{t.f()}}else if(e.data.meta)try{e.data.meta=JSON.parse(e.data.meta)}catch(e){console.error("[JsonFetcher]","Could not decode meta.",x.meta)}return e},$n=function(){var e=Un(regeneratorRuntime.mark((function e(n){var t,r,a,o,i,l,c,u,s,d=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=d.length>1&&void 0!==d[1]?d[1]:{},r=null,a={},o=null,i=null,e.prev=5,(t=t||{}).headers=t.headers?t.headers:{},t.headers.Pragma="no-cache",t.headers["Cache-Control"]="no-cache",e.next=12,fetch("".concat(n),t);case 12:return i=e.sent,e.next=15,i.text();case 15:r=e.sent,(a=JSON.parse(r)).success||(l=!1===a.success?"NOT-SUCCESS":"N/A",c=a.message?a.message:"Unknown error. Check your Console Logs.","rest_no_route"===a.code?(c="The API can't be accessed. Is Rest API enabled?",l="NO-ROUTE"):"internal_server_error"===a.code&&(c="Server error. Please check your PHP Error Logs.",l="SERVER-ERROR"),o=new Bn(c,l,n,r||i)),e.next=26;break;case 20:e.prev=20,e.t0=e.catch(5),u="BROKEN-REPLY",s="The reply sent by the server is broken.",i&&i.status&&408===i.status&&(u="REQUEST-TIMEOUT",s="The request generated a timeout."),o=new Bn(s,u,n,r||i,e.t0);case 26:return o&&(console.error("[NekoError] JsonFetcher",o.url,{code:o.code,error:o.error,body:o.body}),a.success=!1,a.error=o),e.abrupt("return",Hn(a));case 28:case"end":return e.stop()}}),e,null,[[5,20]])})));return function(n){return e.apply(this,arguments)}}(),Yn=function(){var e=Un(regeneratorRuntime.mark((function e(n){var t,r,a,o,i,l,c,u,s,d,f,p,m,b=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=b.length>1&&void 0!==b[1]?b[1]:{},r=t.json,a=void 0===r?{}:r,o=t.signal,i=t.file,l=t.nonce,c=i?new FormData:null,i)for(c.append("file",i),u=0,s=Object.entries(a);u<s.length;u++)d=Fn(s[u],2),f=d[0],p=d[1],c.append(f,p);return m=l?{"X-WP-Nonce":l}:{},c||(m["Content-Type"]="application/json"),e.abrupt("return",$n(n,{method:"POST",headers:m,body:c||JSON.stringify(a),signal:o}));case 7:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}();function Kn(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||Vn(e,n)||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 Vn(e,n){if(e){if("string"==typeof e)return Jn(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Jn(e,n):void 0}}function Jn(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var Xn,Zn,Qn=function(){var e=Object(r.useRef)(),n=Kn(Object(r.useState)({}),2),t=n[0],a=n[1];return Object(r.useEffect)((function(){if(e&&e.current){var n=new ResizeObserver((function(e){var n=e[0];n.contentRect&&a({width:n.contentRect.left+n.contentRect.right,height:n.contentRect.top+n.contentRect.bottom})}));return n.observe(e.current),function(){n.unobserve(e.current)}}}),[]),{ref:e,width:t.width?t.width:0,height:t.height?t.height:0}},et=function(e){var n=Object(r.useRef)(),t=function(t){e&&!n.current.contains(t.target)&&e()};return Object(r.useEffect)((function(){return document.addEventListener("mousedown",t),function(){document.removeEventListener("mousedown",t)}})),n};new Dn.a({concurrency:1,autoStart:!1});function nt(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return tt(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return tt(e,n)}(e,n)||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 tt(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function rt(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var at=y.a.div(Xn||(Xn=rt(["\n\tdisplay: flex;\n"]))),ot=y.a.div(Zn||(Zn=rt(["\n\tbackground-color: rgba(",", 0.8);\n\tborder-radius: 4px;\n\tcolor: ",";\n\tfont-family: ",";\n\tfont-weight: normal;\n\tmin-width: 180px;\n\tmax-width: 280px;\n\tfont-size: ",";\n\tpadding: 8px 12px;\n\tposition: absolute;\n \tmax-width: 280px;\n\tword-break: break-word;\n\tdisplay: ",';\n\tz-index: 100;\n\n\t&:before {\n\t\tcontent: "";\n\t\tposition: absolute;\n\t\tborder: 4px solid transparent;\n\t}\n\n\t&.top {\n\t\t&:before {\n\t\t\tmargin-left: -4px;\n\t\t\ttop: 100%;\n\t\t\tleft: 50%;\n\t\t\tborder-top: 4px solid rgba(',", 0.8);\n\t\t}\n\t}\n\n\t&.left {\n\t\t&:before {\n\t\t\tmargin-top: -4px;\n\t\t\ttop: 50%;\n\t\t\tright: -8px;\n\t\t\tborder-left: 4px solid rgba(",", 0.8);\n\t\t}\n\t}\n\n\t&.right {\n\t\t&:before {\n\t\t\tmargin-top: -4px;\n\t\t\ttop: 50%;\n\t\t\tleft: -8px;\n\t\t\tborder-right: 4px solid rgba(",", 0.8);\n\t\t}\n\t}\n\n\t&.bottom {\n\t\t&:before {\n\t\t\tmargin-left: -4px;\n\t\t\ttop: -8px;\n\t\t\tleft: 50%;\n\t\t\tborder-bottom: 4px solid rgba(",", 0.8);\n\t\t}\n\t}\n\n\t","\n"])),R.blackRGB,R.white,R.fontFamily,R.fontSizeText,(function(e){return e.visible?"inline-block":"none"}),R.blackRGB,R.blackRGB,R.blackRGB,R.blackRGB,(function(e){return e.style})),it=function(e){var n=e.text,t=void 0===n?"Hello world!":n,o=e.position,i=void 0===o?"top":o,l=nt(Object(r.useState)(!1),2),c=l[0],u=l[1],s=Qn(),d=s.ref,f=s.width,p=s.height,m=Qn(),b=m.ref,h=m.width,g=m.height,y=Object(r.useMemo)((function(){var e=0,n=0;if("top"===i)e=-1*p-5,n=f/2*-1+h/2;else if("bottom"===i)e=g+5,n=f/2*-1+h/2;else if("left"===i){e=(p-g)/2*-1,n=-1*f-5}else if("right"===i){e=(p-g)/2*-1,n=h+5}return{transform:"translateX(".concat(n,"px) translateY(").concat(e,"px)")}}),[i,f,p,h,g]);return a.a.createElement(at,null,a.a.createElement(ot,{ref:d,visible:c,className:i,style:y},t),a.a.createElement("div",{ref:b,onMouseEnter:function(){return t&&u(!0)},onMouseLeave:function(){return u(!1)}},e.children))},lt=function(e){return a.a.createElement(it,e)};lt.propTypes={text:u.a.string,position:u.a.oneOf(["top","right","bottom","left"])},lt.defaultProps={text:"Hello world!",position:"top"};var ct,ut,st=["icon","spinning","className","title","tooltip","containerStyle","color","hoverColor","disabled","raw","isBusy"];function dt(){return(dt=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function ft(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function pt(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var mt=y.a.div(ct||(ct=pt(["\n display: flex;\n align-items: center;\n"]))),bt=Object(y.a)(P.Icon)(ut||(ut=pt(["\n\n path {\n fill: ",";\n }\n\n ","\n\n &.nui-clickable {\n cursor: pointer;\n }\n\n &.spin {\n animation-name: spin;\n animation-duration: 700ms;\n animation-iteration-count: infinite;\n animation-timing-function: linear;\n\n @keyframes spin {\n 0% {\n transform: rotate(360deg);\n }\n 100% {\n transform: rotate(0deg);\n }\n }\n }\n\n &.busy {\n animation: crescendo 0.4s alternate infinite;\n @keyframes crescendo {\n 0% {transform: scale(.65);}\n 100% {transform: scale(1);}\n }\n }\n\n &.disabled {\n pointer-events: none;\n opacity: 0.35;\n cursor: default;\n }\n"])),(function(e){return e.color}),(function(e){return n=e.color,(t=e.hoverColor)?"\n &:hover {\n path {\n fill: ".concat(t,";\n }\n }\n "):n?"\n &:hover {\n path {\n fill: ".concat(Object(v.a)(.1,n),";\n }\n }\n "):void 0;var n,t})),ht=function(e){var n=e.icon,t=e.spinning,r=void 0!==t&&t,o=e.className,i=void 0===o?"":o,l=e.title,c=e.tooltip,u=e.containerStyle,s=e.color,d=e.hoverColor,f=e.disabled,p=void 0!==f&&f,m=e.raw,b=e.isBusy,h=void 0!==b&&b,g=ft(e,st);g.width||g.height||(g.width=g.height=30);var y=function(){return"string"==typeof n?Tn[n]||null:n},v="nui-icon ".concat(i).concat(g.onClick?" nui-clickable":"").concat(r?" spin":"").concat(p?" disabled":"").concat(h?" busy":"");return c?a.a.createElement(lt,{text:c.text,position:c.position||"top"},a.a.createElement(mt,{style:u},a.a.createElement(bt,dt({icon:y(),className:v,color:s,hoverColor:d},g)))):m?a.a.createElement(bt,dt({icon:y(),className:v,color:s,hoverColor:d},g)):a.a.createElement(mt,{style:u,title:l},a.a.createElement(bt,dt({icon:y(),className:v,color:s,hoverColor:d},g)),c?a.a.createElement(lt,null,c):null)},gt=function(e){return a.a.createElement(ht,e)};gt.propTypes={icon:u.a.oneOfType([u.a.instanceOf(P.IconifyIcon),u.a.oneOf(["lock","lock-open","file-undo","chevron-double-left","chevron-double-right","chevron-left","chevron-right","chevron-down","chevron-up","pause","play","replay","check","stop","delete","undo","alert","database","pencil","tools","cog","close","cat","upload"])]),color:u.a.string,spinning:u.a.bool,className:u.a.string,tooltip:u.a.string,raw:u.a.bool,isBusy:u.a.bool},gt.defaultProps={icon:void 0,color:void 0,spinning:!1,className:"",tooltip:void 0,raw:void 0,isBusy:!1};var yt,vt=["className","icon","onClick","disabled","color","small","isBusy","width","height","children","rounded","busyText","spinning","hideBusyIcon","busyIconSize"];function wt(){return(wt=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function xt(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var Et=Object(y.a)((function(e){var n=e.className,t=e.icon,o=void 0===t?null:t,i=e.onClick,l=e.disabled,c=void 0!==l&&l,u=e.color,s=void 0===u?null:u,d=e.small,f=e.isBusy,p=void 0!==f&&f,m=e.width,b=(e.height,e.children),h=e.rounded,g=e.busyText,y=e.spinning,v=void 0!==y&&y,w=e.hideBusyIcon,x=void 0!==w&&w,E=e.busyIconSize,k=xt(e,vt),O=!!o,j=Object(r.useMemo)((function(){var e=null!=m?m:30;return h?e-10:e-6}),[m,h]),S=Object(r.useMemo)((function(){return E||(h?"82%":"35%")}),[h,E]),R="nui-button ".concat(n||"").concat(O?" has-icon":"").concat(s?" custom-color":"").concat(d?" small":"").concat(h?" rounded":"").concat(p?" busy":"");return a.a.createElement("button",wt({type:"button",className:R,onClick:i,disabled:c},k),p&&!x&&a.a.createElement(D,{type:"circle",color:"#fff",size:S}),p&&!!g&&a.a.createElement("span",{style:{marginLeft:x?0:"4px",marginRight:"2xp"}},g),O&&!p&&a.a.createElement(gt,{icon:o,width:j,height:j,spinning:v,raw:!0,style:h?{margin:"0 auto"}:{}}),!!b&&!p&&a.a.createElement("span",{style:{marginLeft:O?"4px":0,marginRight:O?"2xp":0}},b))}))(yt||(yt=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n display: inline-block;\n box-sizing: border-box;\n height: 30px;\n min-height: 30px;\n min-width: 6em;\n border: none;\n border-radius: 4px;\n text-align: center;\n font-family: ",";\n font-size: ",";\n padding: 0 15px;\n\n background-color: ",";\n color: white;\n transition: background-color .10s, opacity .25s;\n\n :not([disabled]):hover {\n cursor: pointer;\n background-color: ",";\n }\n\n :disabled {\n opacity: 0.35;\n }\n\n :focus {\n outline: none;\n }\n\n &.has-icon {\n align-items: center;\n display: inline-flex;\n padding: 2.5px 8px;\n }\n\n &.secondary {\n background-color: ",";\n border: 1px solid ",";\n color: ",";\n\n &:hover {\n background-color: ",";\n }\n }\n\n &.danger {\n background-color: ",";\n border-color: ",";\n\n\t &:hover {\n\t\t background-color: ",";\n\t }\n }\n\n &.success {\n background-color: ",";\n border-color: ",";\n\n\t &:hover {\n\t\t background-color: ",";\n\t }\n }\n\n & + button {\n margin-left: .25rem;\n }\n\n &.small {\n font-size: ",";\n height: 24px;\n }\n\n &.header {\n background-color: ",";\n border-color: ",";\n height: 40px;\n padding: 0 20px;\n\n\t &:hover {\n\t\t background-color: ",";\n\t }\n }\n\n &.rounded {\n border-radius: 100%;\n min-width: 30px;\n height: ","px;\n width: ","px;\n padding: 3px;\n }\n\n &.busy {\n pointer-events: none;\n }\n\n ","\n"])),R.fontFamily,R.fontSizeText,R.blue,Object(v.a)(.1,R.blue),R.lightBlue,R.blue,R.blue,Object(v.a)(.1,R.lightBlue),R.red,R.red,Object(v.a)(.1,R.red),R.green,R.green,Object(v.a)(.1,R.green),R.fontSizeSmallButton,R.deepBlue,R.deepBlue,Object(v.a)(.1,R.deepBlue),(function(e){var n,t;return null!==(n=e.height)&&void 0!==n?n:null!==(t=e.width)&&void 0!==t?t:30}),(function(e){var n;return null!==(n=e.width)&&void 0!==n?n:30}),(function(e){return kt(e.color)})),kt=function(e){if(e)return"\n &.custom-color {\n background-color: ".concat(e,";\n border: 1px solid ").concat(e,";\n\n &:hover {\n background-color: ").concat(Object(v.a)(.1,e),";\n }\n }\n ")},Ot=function(e){return a.a.createElement(Et,e)};Ot.propTypes={className:u.a.oneOf(["primary","secondary","danger","success","header"]),disabled:u.a.bool,icon:u.a.oneOfType([u.a.instanceOf(P.IconifyIcon),u.a.oneOf(["setting","edit","trash"])]),color:u.a.string,onClick:u.a.func.isRequired,rounded:u.a.bool,isBusy:u.a.bool,spinning:u.a.bool,busyText:u.a.string,hideBusyIcon:u.a.bool,busyIconSize:u.a.string},Ot.defaultProps={className:"primary",disabled:!1,icon:null,color:null,onClick:function(){},rounded:void 0,isBusy:!1,spinning:!1,busyText:void 0,hideBusyIcon:!1,busyIconSize:void 0};var jt,St=["show","className"];function Rt(){return(Rt=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function Pt(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var Ct,At,zt,Nt,It=y.a.a(jt||(jt=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n background-color: ",";\n position: relative;\n border-radius: 10px;\n color: ",";\n font-family: ",";\n font-size: 9px;\n line-height: 10px;\n padding: 5px 8px;\n text-transform: uppercase;\n text-decoration: none;\n\n &:hover {\n color: ",";\n background-color: #f78c1f;\n }\n\n &.inline {\n display: inline;\n margin-left: 5px;\n vertical-align: middle;\n }\n"])),R.yellow,R.white,R.fontFamily,R.white),Tt=function(e){var n=e.show,t=void 0===n||n,r=e.className,o=Pt(e,St);return t?a.a.createElement(It,Rt({href:"https://store.meowapps.com",target:"_blank",className:"".concat(r||"")},o),"Pro Only"):null},_t=function(e){return a.a.createElement(Tt,e)};function Dt(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return Mt(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Mt(e,n)}(e,n)||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 Mt(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function Bt(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}_t.propTypes={show:u.a.bool,className:u.a.string},_t.defaultProps={show:!0,className:void 0};var Ft,Lt=y.a.div(Ct||(Ct=Bt(["\n display: inline-block;\n"]))),Ut=y.a.button(At||(At=Bt(["\n align-items: center;\n background-color: ",";\n border: none;\n border-radius: 4px;\n box-sizing: border-box;\n color: white;\n display: inline-flex;\n justify-content: space-between;\n font-family: ",";\n font-size: ",";\n height: 30px;\n min-width: 6em;\n padding: 0px 10px;\n text-align: center;\n transition: background-color .10s, opacity .25s;\n\n :not([disabled]):hover {\n cursor: pointer;\n background-color: ",";\n }\n\n :disabled {\n opacity: 0.35;\n }\n\n :focus {\n outline: none;\n }\n\n & + button {\n margin-left: .25rem;\n }\n"])),R.blue,R.fontFamily,R.fontSizeText,Object(v.a)(.1,R.blue)),Gt=y.a.div(zt||(zt=Bt(["\n position: relative;\n display: block;\n margin-top: 18px;\n background-color: ",";\n position: absolute;\n z-index: 10;\n box-shadow: ",';\n\n &:before {\n content: "";\n position: absolute;\n top: -18px;\n left: 50%;\n margin-left: -8px;\n border: 8px solid transparent;\n border-bottom: 10px solid ',";\n }\n"])),R.blue,R.lightShadow,R.blue),qt=function(e){var n=e.title,t=e.disabled,r=void 0!==t&&t,o=e.isPro,i=void 0!==o&&o,l=e.style,c=void 0===l?{}:l,u=e.hideChevron,s=e.titleStyle,d=void 0===s?{}:s,f=Dt(a.a.useState(!1),2),p=f[0],m=f[1],b=et((function(){m(!1)})),h=Qn(),g=h.ref,y=h.width,v=function(){m(!p)},w=a.a.Children.map(e.children,(function(e){return a.a.cloneElement(e,{isPro:i,disabled:e.props.disabled||r,onClick:function(){e.props.onClick&&e.props.onClick(),v()}})}));return a.a.createElement(Lt,{ref:b},a.a.createElement(Ut,{ref:g,type:"button",disabled:r,onClick:v,style:c},a.a.createElement("span",{style:d},n),!u&&a.a.createElement(P.Icon,{icon:Z.a,width:"24",height:"24",style:{marginLeft:"4px"}})),p&&a.a.createElement(Gt,{style:{transform:"translateX(calc(-50% + ".concat(y/2,"px))")}},w))},Wt=y.a.button(Nt||(Nt=Bt(["\n align-items: center;\n background-color: ",";\n border: none;\n box-sizing: border-box;\n color: white;\n display: flex;\n font-family: ",";\n font-size: ",";\n width: 100%;\n padding: 8px 15px 8px 15px;\n text-align: center;\n transition: background-color .10s, opacity .25s;\n\n :not([disabled]):hover {\n cursor: pointer;\n background-color: ",";\n }\n\n :disabled:not(.is-pro) {\n opacity: 0.35;\n }\n\n :focus {\n outline: none;\n }\n\n &.is-pro {\n background-color: ",";\n justify-content: space-between;\n }\n\n &.separator {\n border-top: 1px solid ",";\n font-size: 10px;\n padding: 5px;\n }\n"])),R.blue,R.fontFamily,R.fontSizeText,Object(v.a)(.1,R.blue),R.proGray,R.white),Ht=function(e){var n=e.onClick,t=e.children,r=e.isPro,o=e.requirePro,i=void 0!==o&&o,l=e.disabled,c=e.separator,u=i&&!r;return a.a.createElement(Wt,{type:"button",className:"".concat(u?"is-pro":""," ").concat(c?"separator":""),onClick:n,disabled:l||u},a.a.createElement("span",null,t),u&&!r&&a.a.createElement(_t,null))},$t=function(e){return a.a.createElement(qt,e)},Yt=function(e){return a.a.createElement(Ht,e)};function Kt(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||Vt(e,n)||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 Vt(e,n){if(e){if("string"==typeof e)return Jt(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Jt(e,n):void 0}}function Jt(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}$t.propTypes={title:u.a.string,disabled:u.a.bool,isPro:u.a.bool,hideChevron:u.a.bool,style:u.a.object,titleStyle:u.a.object},$t.defaultProps={title:void 0,disabled:!1,isPro:!1,hideChevron:void 0,style:{},titleStyle:{}},Yt.propTypes={onClick:u.a.func.isRequired,requirePro:u.a.bool,separator:u.a.bool},Yt.defaultProps={onClick:function(){},requirePro:!1,separator:void 0};var Xt=y.a.div(Ft||(Ft=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n position: relative;\n background: #f1f1f1;\n margin-left: -20px;\n background-color: rgb(30 124 186 / 10%);\n padding-bottom: 50px;\n margin-bottom: -26px;\n\n .neko-rest-error {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: #1e232deb;\n z-index: 100;\n\n .container {\n color: white;\n padding: 5px 20px 15px 20px;\n min-width: 480px;\n max-width: 600px;\n border-radius: 20px;\n background: #883131;\n margin-left: 50%;\n transform: translateX(-50%);\n margin-top: 100px;\n\n h3 {\n color: white;\n }\n\n .neko-debug {\n padding: 5px 10px;\n background: #692426;\n border-radius: 10px;\n\n * {\n margin: 0px;\n padding: 0px;\n } \n }\n }\n }\n"]))),Zt=function(e){var n=e.className,t=e.children,o=e.nekoErrors,i=void 0===o?[]:o,l=e.style,c=void 0===l?{}:l,u=Kt(Object(r.useState)(!1),2),s=u[0],d=u[1],f=Kt(Object(r.useState)(!1),2),p=f[0],m=f[1];if(i&&!s){var b,h=function(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=Vt(e))||n&&e&&"number"==typeof e.length){t&&(e=t);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,l=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return i=e.done,e},e:function(e){l=!0,o=e},f:function(){try{i||null==t.return||t.return()}finally{if(l)throw o}}}}(i);try{for(h.s();!(b=h.n()).done;){var g=b.value;if(g){d(g);break}}}catch(e){h.e(e)}finally{h.f()}}return a.a.createElement(Xt,{className:n||"",style:c},s&&a.a.createElement("div",{className:"neko-rest-error"},a.a.createElement("div",{className:"container"},!p&&a.a.createElement(a.a.Fragment,null,a.a.createElement("h3",null,"The Rest API is disabled or broken 😢"),a.a.createElement("p",null,"The Rest API is required for this plugin to work. It is enabled in WordPress by default since December 2016 and used by the Gutenberg Editor since 2019. In short, it allows more robustness and a much cleaner infrastructure. Soon, Wordpress will entirely depends on it, so it is important to keep it enabled."),a.a.createElement("p",null,a.a.createElement("i",null,"Last but not least: check your PHP Error Logs and your Debugging Console.")),a.a.createElement("p",{className:"neko-debug"},a.a.createElement("small",null,"URL: ",s.url,a.a.createElement("br",null),"CODE: ",s.code,a.a.createElement("br",null),"MESSAGE: ",s.message,a.a.createElement("br",null)))),s.body&&p&&a.a.createElement("p",{className:"neko-debug"},a.a.createElement("div",{dangerouslySetInnerHTML:{__html:s.body}})),s.body&&a.a.createElement(Ot,{color:"#a94242",onClick:function(){return m(!p)}},p?"Hide":"Display"," response from server"),a.a.createElement(Ot,{color:"#a94242",onClick:function(){window.open("https://meowapps.com/fix-wordpress-rest-api/","_blank")}},"Learn about WordPress Debugging"))),t)},Qt=function(e){return a.a.createElement(Zt,e)};Qt.propTypes={className:u.a.string,style:u.a.object,nekoErrors:u.a.bool},Qt.defaultProps={className:void 0,style:{},nekoErrors:!1};var er,nr,tr,rr,ar,or=["children"];function ir(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function lr(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var cr,ur=y.a.h1(er||(er=lr(["\n font-family: ",";\n font-weight: normal;\n font-size: ",";\n line-height: normal;\n margin-top: 0;\n margin-bottom: 16px;\n padding: 0;\n"])),R.fontFamily,R.fontSizeH1),sr=y.a.h2(nr||(nr=lr(["\n font-family: ",";\n font-size: ",";\n font-weight: normal;\n line-height: normal;\n margin-top: 0;\n margin-bottom: 16px;\n padding: 0;\n"])),R.fontFamily,R.fontSizeH2),dr=y.a.p(tr||(tr=lr(["\n font-family: ",";\n font-size: ",";\n line-height: normal;\n margin: 16px 0 24px;\n padding: 0;\n"])),R.fontFamily,R.fontSizeText),fr=y.a.span(rr||(rr=lr(["\n font-family: ",";\n font-size: ",";\n line-height: normal;\n margin: 0;\n padding: 0;\n"])),R.fontFamily,R.fontSizeText),pr=y.a.label(ar||(ar=lr(["\n font-family: ",";\n font-size: ",";\n line-height: normal;\n margin: 0;\n padding: 0;\n"])),R.fontFamily,R.fontSizeText),mr=function(e){var n=e.children,t=ir(e,or);return e.h1?a.a.createElement(ur,t,n):e.h2?a.a.createElement(sr,t,n):e.p?a.a.createElement(dr,t,n):e.label?a.a.createElement(pr,t,n):a.a.createElement(fr,t,n)},br=function(e){return a.a.createElement(mr,e)};br.propTypes={h1:u.a.any,h2:u.a.any,p:u.a.any},br.defaultProps={h1:void 0,h2:void 0,p:void 0};var hr,gr,yr=y.a.div(cr||(cr=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n font-size: ",";\n margin-bottom: 15px;\n\n .nui-block-header {\n display: flex;\n justify-content: space-between;\n }\n\n .nui-block-title {\n color: ",";\n padding: 5px 10px;\n margin-bottom: 5px;\n }\n\n .nui-block-content {\n background-color: #f1f1f1;\n padding: 26px;\n box-shadow: 0px 2px 5px 0px #0000004a;\n border-radius: 10px;\n\n p:first-child {\n margin-top: 0;\n }\n\n p:last-child {\n margin-bottom: 0;\n }\n }\n\n &.primary {\n padding: 8px;\n background-color: ",";\n\n .nui-block-title {\n color: ",";\n }\n\n .nui-block-content {\n background-color: ",";\n }\n }\n"])),R.fontSizeText,R.blue,R.blue,R.white,R.white),vr=function(e){var n=e.title,t=e.children,r=e.className,o=e.busy,i=void 0!==o&&o,l=e.style,c=void 0===l?{}:l,u=e.contentStyle,s=void 0===u?{}:u,d=e.action;return a.a.createElement(yr,{className:"nui-block "+(r||""),style:c},a.a.createElement(g,{busy:i},a.a.createElement("div",{className:"nui-block-header"},a.a.createElement(br,{h2:!0,className:"nui-block-title"},n),!!d&&d),a.a.createElement("div",{className:"nui-block-content",style:s},t)))},wr=function(e){return a.a.createElement(vr,e)};function xr(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}wr.propTypes={title:u.a.string,className:u.a.oneOf(["","primary"]),style:u.a.object,action:u.a.element},wr.defaultProps={title:void 0,className:"",style:{},action:void 0};var Er,kr=y.a.div(hr||(hr=xr(["\n font-size: ",";\n font-family: ",";\n background-color: ",";\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n margin-bottom: 25px;\n\n &.primary {\n background-color: ",";\n }\n\n p:first-child {\n margin-top: 0px;\n }\n\n p:last-child {\n margin-bottom: 0px;\n }\n\n .content {\n padding: 20px 20px;\n }\n"])),R.fontSizeText,R.fontFamily,R.white,R.blue),Or=y.a.div(gr||(gr=xr(["\n justify-content: flex-start;\n background-color: ",";\n display: flex;\n align-items: center;\n padding: 8px 10px;\n\n &.align-right {\n justify-content: flex-end;\n }\n"])),R.lightGray2),jr=function(e){var n=e.children,t=e.header,r=e.headerAlign,o=void 0===r?"left":r,i=e.footer,l=e.footerAlign,c=void 0===l?"right":l,u=e.className,s=e.style,d=void 0===s?{}:s;return a.a.createElement(kr,{className:u||"",style:d},t&&a.a.createElement(Or,{className:"align-".concat(o)},t),a.a.createElement("div",{className:"content"},n),i&&a.a.createElement(Or,{className:"align-".concat(c)},i))},Sr=function(e){return a.a.createElement(jr,e)};Sr.propTypes={header:u.a.element,headerAlign:u.a.oneOf(["left","right"]),footer:u.a.element,footerAlign:u.a.oneOf(["left","right"]),className:u.a.string,style:u.a.object},Sr.defaultProps={header:void 0,headerAlign:"left",footer:void 0,footerAlign:"right",className:void 0,style:{}};var Rr,Pr,Cr=Object(y.a)((function(e){var n=e.title,t=void 0===n?"":n,r=e.contentAlign,o=void 0===r?"left":r;return a.a.createElement("div",{className:e.className||""},t?a.a.createElement("div",{className:"nui-settings-head"},t):null,a.a.createElement("div",{className:"nui-settings-content nui-settings-content-align-".concat(o)},e.children))}))(Er||(Er=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n display: flex;\n font-family: ",";\n\n > .nui-settings-head {\n font-family: ",";\n font-size: 14px;\n line-height: 17px;\n width: 120px;\n margin-right: 16px;\n }\n\n /* Select, Checkbox, Input need to be a bit higher to be in front of the settings title */\n\n .nui-settings-content > .nui-select:first-child {\n position: relative;\n margin-top: -5px;\n }\n \n .nui-settings-content > .nui-checkbox:first-child {\n position: relative;\n margin-top: -5px;\n }\n\n .nui-settings-content > .nui-checkbox:first-child {\n position: relative;\n margin-top: -5px;\n }\n\n .nui-settings-content > .nui-button:first-child {\n position: relative;\n margin-top: -5px;\n }\n\n .nui-settings-content > div:first-child > .neko-input {\n position: relative;\n margin-top: -5px;\n }\n\n > .nui-settings-content {\n flex: 1;\n\n &.nui-settings-content-align-right {\n flex: none;\n margin-left: auto;\n }\n\n input[type=text] {\n width: 100%;\n }\n\n\n }\n\n & + div {\n margin-top: 15px;\n }\n"])),R.fontFamily,R.fontFamily),Ar=function(e){return a.a.createElement(Cr,e)};function zr(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}Ar.propTypes={title:u.a.string,className:u.a.string,contentAlign:u.a.string},Ar.defaultProps={title:"",className:void 0,contentAlign:"left"};var Nr=y.a.div(Rr||(Rr=zr(["\n margin: 20px;\n padding: 14px;\n background-color: white;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n\n > * + * {\n /* Base margin between child elements */\n margin-top: 14px;\n }\n"]))),Ir=Object(y.a)((function(e){return e.children?a.a.createElement("div",{className:e.className},e.children):null}))(Pr||(Pr=zr(["\n background-color: ",";\n color: white;\n"])),R.blue),Tr=function(e){return a.a.createElement(Nr,{className:"window"},a.a.createElement(Ir,null,e.title),e.children)},_r=function(e){return a.a.createElement(Tr,e)};_r.propTypes={title:u.a.string},_r.defaultProps={title:void 0};var Dr,Mr,Br=["full","minimal"];function Fr(){return(Fr=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function Lr(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function Ur(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var Gr=y.a.div(Dr||(Dr=Ur(["\n display: flex;\n flex-wrap: wrap;\n"]))),qr=y.a.div(Mr||(Mr=Ur(["\n flex: 1;\n padding: 32px 30px;\n\n .nui-block:not(:first-child) {\n margin-top: -20px;\n }\n\n .nui-block:last-child {\n margin-bottom: 0px;\n }\n\n &.minimal {\n padding: 0;\n }\n\n &.full {\n flex-basis: 100%;\n padding-bottom: 0;\n }\n\n & + .full {\n padding-bottom: 32px;\n padding-top: 0;\n }\n\n &:not(.full) + div:not(.full) {\n padding-left: 0;\n }\n"]))),Wr=function(e){return a.a.createElement(Gr,null,e.children)},Hr=function(e){var n=e.full,t=e.minimal,r=Lr(e,Br),o=n?"full":"";return o+=t?" minimal":"",a.a.createElement(qr,Fr({className:o},r),e.children)},$r=function(e){return a.a.createElement(Wr,e)},Yr=function(e){return a.a.createElement(Hr,e)};$r.propTypes={},$r.defaultProps={},Yr.propTypes={full:u.a.any},Yr.defaultProps={full:void 0};var Kr,Vr=t(9),Jr=t.n(Vr),Xr=t(20),Zr=t.n(Xr);var Qr,ea=Object(y.a)((function(e){var n=e.id,t=e.name,r=e.checked,o=void 0!==r&&r,i=e.onChange,l=e.label,c=e.description,u=e.isPro,s=e.disabled,d=e.requirePro,f=void 0!==d&&d,p=e.isBusy,m=void 0!==p&&p,b=f&&!u,h=s||b,g=h?"disabled":"";return a.a.createElement("div",{className:["nui-checkbox",e.className,g].join(" "),onClick:function(e){return e.stopPropagation()}},a.a.createElement("input",{id:n,name:t,type:"checkbox",defaultChecked:!1,disabled:h||m}),a.a.createElement("label",{htmlFor:n,onClick:function(){h||(i?i(!o,n):console.log("The onChange handler it not set for the NekoCheckbox.",e))}},a.a.createElement("div",{className:"nui-checkbox-check-container"},m?a.a.createElement("div",{className:"nui-checkbox-busy-container"},a.a.createElement(P.Icon,{icon:Jr.a,width:"30px",height:"30px",color:R.blue}),a.a.createElement(D,{type:"circle",size:"16px",style:{position:"absolute",top:"7px",left:"7px"}})):a.a.createElement(P.Icon,{icon:o?Zr.a:Jr.a,width:"30px",height:"30px",color:h?R.disabledForm:R.blue})),a.a.createElement("div",{className:"nui-checkbox-inner-container"},a.a.createElement("span",{className:"label"},l,a.a.createElement(_t,{className:"inline",show:b})),c?a.a.createElement("small",{className:"description"},c):null)))}))(Kr||(Kr=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n font-family: ",";\n user-select: none;\n\n &.disabled {\n color: ",";\n\n label {\n cursor: default;\n }\n }\n\n input {\n display: none;\n }\n\n label {\n cursor: pointer;\n display: flex;\n }\n .nui-checkbox-check-container {\n display: flex;\n align-content: center;\n flex-basis: 30px;\n\n .nui-checkbox-busy-container {\n position: relative\n }\n }\n .nui-checkbox-inner-container {\n margin-left: 4px;\n\n .label {\n display: block;\n font-size: 14px;\n line-height: 28px;\n }\n \n .description {\n display: block;\n font-size: ",";\n line-height: 14px;\n color: ",";\n\n * {\n font-size: ",";\n line-height: inherit;\n margin: 0;\n }\n }\n }\n"])),R.fontFamily,R.disabledForm,R.fontSizeSmall,R.darkGray,R.fontSizeSmall),na=function(e){return a.a.createElement(ea,e)};na.propTypes={id:u.a.string,name:u.a.string,checked:u.a.bool,label:u.a.string,description:u.a.string,isPro:u.a.bool,requirePro:u.a.bool,isBusy:u.a.bool},na.defaultProps={id:void 0,name:void 0,checked:!1,label:void 0,description:void 0,isPro:!1,requirePro:!1,isBusy:!1};var ta=Object(y.a)((function(e){var n=e.name,t=(e.max,e.isPro),r=void 0!==t&&t;return a.a.Children.map(e.children,(function(e){return e.props.name?e:a.a.cloneElement(e,{name:n,isPro:r})}))}))(Qr||(Qr=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n"]))),ra=function(e){return a.a.createElement(ta,e)};ra.propTypes={name:u.a.string,mas:u.a.number,isPro:u.a.bool},ra.defaultProps={name:void 0,mas:-1,isPro:!1};var aa,oa=["id","name","value","description","placeholder","onEnter","readOnly","type","step","min","max","maxLength","className","style","natural","inputStyle","onChange","onBlur","onReset"];function ia(){return(ia=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function la(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return ca(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return ca(e,n)}(e,n)||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 ca(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function ua(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var sa=Object(y.a)((function(e){var n=e.id,t=e.name,o=e.value,i=void 0===o?"":o,l=e.description,c=e.placeholder,u=void 0===c?"":c,s=e.onEnter,d=void 0===s?null:s,f=e.readOnly,p=void 0!==f&&f,m=e.type,b=void 0===m?"text":m,h=e.step,g=void 0===h?1:h,y=e.min,v=void 0===y?1:y,w=e.max,x=void 0===w?999:w,E=e.maxLength,k=void 0===E?void 0:E,O=e.className,j=e.style,S=e.natural,P=void 0!==S&&S,C=e.inputStyle,A=e.onChange,z=e.onBlur,N=e.onReset,I=ua(e,oa),T=la(Object(r.useState)(i),2),_=T[0],D=T[1],M=!!A,B=k||("number"===b?3:void 0);Object(r.useEffect)((function(){M||D(i)}),[i]);var F=function(e){M?A(e.target.value,n):D(e.target.value)},L=function(e){d&&"Enter"===event.key&&(e.preventDefault(),d(e.target.value,n))},U=function(e){z&&i!==e.target.value&&z(e.target.value,n)},G="neko-input ".concat(P?" natural":"");return a.a.createElement("div",{className:[O].join(" "),style:j},a.a.createElement("div",{style:{position:"relative"}},"number"===b?a.a.createElement("input",ia({className:[G].join(" "),id:n,name:t,value:M?i:_,type:b,step:g,min:v,max:x,maxLength:B,autoComplete:"off",placeholder:u,style:C,onChange:F,onKeyPress:L,onBlur:U,readOnly:p},I)):a.a.createElement("input",ia({className:[G].join(" ")},I,{id:n,name:t,value:M?i:_,type:b,spellCheck:"false",autoComplete:"off",placeholder:u,style:C,maxLength:B,onChange:F,onKeyPress:L,onBlur:U,readOnly:p},I)),!!i&&!!N&&a.a.createElement(gt,{icon:"close",width:24,style:{position:"absolute",top:"3px",right:"3px"},color:R.blue,onClick:N})),l&&a.a.createElement("p",{className:"neko-input-description"},l))}))(aa||(aa=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n .neko-input {\n font-family: ",";\n font-size: ",";\n border: 2px solid ",";\n box-sizing: border-box;\n height: 30px;\n background: rgb(0 124 186 / 10%);\n padding: 0 10px;\n width: 100%;\n\n &.natural {\n border-color: gray;\n border-width: 1px;\n }\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.25);\n }\n\n :focus {\n background-color: white;\n }\n\n :read-only {\n background-color: ",";\n }\n }\n\n .neko-input-description {\n font-family: ",";\n font-size: ",";\n color: ",";\n line-height: 14px;\n margin-top: 8px;\n margin-bottom: 0;\n }\n"])),R.fontFamily,R.fontSizeText,R.blue,R.gray,R.fontFamily,R.fontSizeSmall,R.darkGray),da=function(e){return a.a.createElement(sa,e)};da.propTypes={id:u.a.string,type:u.a.oneOf(["number","text"]),name:u.a.string,value:u.a.string,description:u.a.string,placeholder:u.a.string,onChange:u.a.func,onEnter:u.a.func,onBlur:u.a.func,readOnly:u.a.bool,step:u.a.number,min:u.a.number,max:u.a.number,maxLength:u.a.number,natural:u.a.bool,onReset:u.a.func},da.defaultProps={id:void 0,type:"text",name:void 0,value:"",description:void 0,placeholder:"",onChange:void 0,onEnter:void 0,onBlur:void 0,readOnly:!1,step:1,min:1,max:999,maxLength:void 0,natural:!1,onReset:void 0};var fa,pa=["id","name","value","description","placeholder","avoidOnEnterWithShift","onEnter","readOnly","maxLength","className","style","textAreaStyle","countable"];function ma(){return(ma=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function ba(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return ha(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return ha(e,n)}(e,n)||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 ha(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function ga(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var ya=Object(y.a)((function(e){var n=e.id,t=e.name,o=e.value,i=void 0===o?"":o,l=e.description,c=e.placeholder,u=void 0===c?"":c,s=e.avoidOnEnterWithShift,d=void 0!==s&&s,f=e.onEnter,p=void 0===f?null:f,m=e.readOnly,b=void 0!==m&&m,h=e.maxLength,g=void 0===h?null:h,y=e.className,v=e.style,w=e.textAreaStyle,x=void 0===w?{}:w,E=e.countable,k=void 0!==E&&E,O=ga(e,pa),j=ba(Object(r.useState)(i),2),S=j[0],R=j[1],P=ba(Object(r.useState)(0),2),C=P[0],A=P[1],z=ba(Object(r.useState)(!1),2),N=z[0],I=z[1],T=!!e.onChange,_=Object(r.useCallback)((function(e){I(e.shiftKey)}),[]),D=Object(r.useCallback)((function(){I(!1)}),[]);Object(r.useEffect)((function(){return document.addEventListener("keydown",_,!1),document.addEventListener("keyup",D,!1),function(){document.removeEventListener("keydown",_,!1),document.removeEventListener("keyup",D,!1)}}),[]),Object(r.useEffect)((function(){T||R(i),k&&A(i.length)}),[i,k]);var M=Object(r.useCallback)((function(t){var r=g?t.target.value.substr(0,g):t.target.value;T?e.onChange(r,n):R(r,n)}),[g,e.onChange]);return a.a.createElement("div",{className:[y].join(" "),style:v},a.a.createElement("div",{className:"neko-textarea-container"},a.a.createElement("textarea",ma({className:"neko-textarea",rows:6},O,{id:n,name:t,spellCheck:"false",placeholder:u,onChange:M,onKeyPress:function(t){if(p&&!t.shiftKey&&"Enter"===t.key){if(d&&N)return;t.preventDefault(),e.onEnter(t.target.value,n)}},onBlur:function(t){e.onBlur&&i!==t.target.value&&e.onBlur(t.target.value,n)},readOnly:b,style:x,value:T?i:S})),k&&a.a.createElement("p",{className:"neko-textarea-count"},C," / ",g," characters")),l&&a.a.createElement("p",{className:"neko-input-description"},l))}))(fa||(fa=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n .neko-textarea-container {\n position: relative;\n }\n .neko-textarea {\n font-family: ",";\n font-size: ",";\n border: 2px solid ",";\n box-sizing: border-box;\n background: rgb(0 124 186 / 10%);\n padding: 5px 10px;\n width: 100%;\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.25);\n }\n\n :focus {\n background-color: white;\n }\n\n :read-only {\n background-color: ",";\n }\n }\n .neko-textarea-count {\n color: rgba(",", 0.4);\n font-size: 11px;\n margin: 0;\n position: absolute;\n right: 13px;\n bottom: 10px;\n }\n\n .neko-input-description {\n font-family: ",";\n font-size: ",";\n line-height: 14px;\n margin-top: 8px;\n margin-bottom: 0;\n }\n"])),R.fontFamily,R.fontSizeText,R.blue,R.gray,R.blackRGB,R.fontFamily,R.fontSizeSmall),va=function(e){return a.a.createElement(ya,e)};va.propTypes={id:u.a.string,name:u.a.string,value:u.a.string,description:u.a.string,placeholder:u.a.string,onChange:u.a.func,onEnter:u.a.func,onBlur:u.a.func,readOnly:u.a.bool,avoidOnEnterWithShift:u.a.bool},va.defaultProps={id:void 0,name:void 0,value:"",description:void 0,placeholder:"",onChange:void 0,onEnter:void 0,onBlur:void 0,readOnly:!1,avoidOnEnterWithShift:!1};var wa,xa,Ea,ka,Oa,ja,Sa,Ra=t(76),Pa=t.n(Ra),Ca=t(77),Aa=t.n(Ca),za=["id","name","value","scrolldown","isPro","onChange","className","disabled","isBusy","chevronIconSize","textFiltering"];function Na(){return(Na=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function Ia(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return Ta(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Ta(e,n)}(e,n)||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 Ta(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function _a(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function Da(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var Ma=y.a.div(wa||(wa=Da(["\n border-radius: 8px;\n position: relative;\n user-select: none;\n cursor: pointer;\n\n &.show-options {\n background-color: ",";\n border-radius: 8px 8px 0 0;\n }\n\n &[data-is-disabled=true] {\n cursor: none;\n pointer-events: none;\n\n .nui-select-option {\n pointer-events: none;\n background: ",";\n padding-right: 10px;\n }\n }\n"])),R.blue,R.gray),Ba=y.a.div(xa||(xa=Da(["\n align-items: center;\n background-color: ",";\n border: 2px solid ",";\n border-radius: 8px;\n display: flex;\n font-family: ",";\n font-size: 14px;\n padding: 0 5px 0 10px;\n box-sizing: border-box;\n height: 30px;\n\n &.isBusy {\n padding-left: 5px;\n }\n\n .rightContent {\n align-items: center;\n display: flex;\n margin-left: auto;\n }\n"])),R.white,R.blue,R.fontFamily),Fa=y.a.div(Ea||(Ea=Da(["\n display: block;\n margin-top: 5px;\n font-size: ",";\n line-height: 14px;\n color: ",";\n\n * {\n font-size: ",";\n line-height: inherit;\n margin: 0;\n }\n"])),R.fontSizeSmall,R.darkGray,R.fontSizeSmall),La=y.a.div(ka||(ka=Da(["\n border-radius: 8px;\n overflow: hidden;\n padding-top: 28px;\n position: absolute;\n top: 0;\n z-index: 10;\n width: 100%;\n transition: all 0.2s ease-in;\n\n &.hidden {\n opacity: 0;\n }\n"]))),Ua=y.a.div(Oa||(Oa=Da(["\n background-color: ",";\n overflow-y: auto;\n max-height: 300px;\n\n &.nui-select-filter-container {\n background-color: ",";\n background: rgb(38 155 214);\n padding: 6px;\n margin-top: 2px;\n overflow: hidden;\n\n div {\n overflow: hidden;\n }\n }\n"])),R.white,R.blue),Ga=function(e){var n,t=e.id,o=e.name,i=e.value,l=e.scrolldown,c=void 0!==l&&l,u=e.isPro,s=void 0!==u&&u,d=e.onChange,f=e.className,p=e.disabled,m=e.isBusy,b=void 0!==m&&m,h=e.chevronIconSize,g=void 0===h?24:h,y=e.textFiltering,v=_a(e,za),w=null===(n=a.a.Children.toArray(e.children).find((function(e){return e.props.value===i||e.props.checked})))||void 0===n?void 0:n.props,x=(null==w?void 0:w.label)||"Select",E=(null==w?void 0:w.description)||e.description,k=(null==w?void 0:w.requirePro)||!1,O=null==w?void 0:w.icon,j=null==w?void 0:w.iconSize,S=Ia(Object(r.useState)(!1),2),C=S[0],A=S[1],z=Ia(Object(r.useState)(""),2),N=z[0],I=z[1],T=c?et((function(){A(!1)})):null,_=k&&!s,M=function(n){if(n!==i){if(!d)return void console.log("The onChange handler it not set for this checkbox.",e);d(n,t)}c&&A(!1)},B=a.a.Children.map(e.children,(function(e){return a.a.cloneElement(e,{name:e.props.name||o,checked:e.props.value===i||e.props.checked,onClick:M,scrolldown:c,isPro:s,disabled:p})})),F=Object(r.useMemo)((function(){if(!N||!B.length)return B;var e=[];return a.a.Children.forEach(B,(function(n){(n.props.label.includes(N)||n.props.value.includes(N))&&e.push(n)})),e}),[B,N]);return c?a.a.createElement(Ma,Na({id:t,ref:T},v,{onClick:function(){return A(!C)},className:["nui-select",f,C?"show-options":""],childrenLength:B.length,"data-is-disabled":p||b}),a.a.createElement(Ba,{className:"nui-select-option ".concat(b?"isBusy":"")},b?a.a.createElement(a.a.Fragment,null,a.a.createElement(D,{type:"circle",size:"20px"})):a.a.createElement(a.a.Fragment,null,O&&a.a.createElement(gt,{icon:O,width:j,height:j,style:{marginRight:"".concat(Math.max(j-15,4),"px")}}),a.a.createElement("span",{className:"nui-select-option-label"},x),a.a.createElement("div",{className:"rightContent"},_&&a.a.createElement(_t,null),!p&&a.a.createElement(P.Icon,{icon:C?ee.a:Z.a,width:g})))),E&&a.a.createElement(Fa,null,E),C&&a.a.createElement(La,{className:"nui-option ".concat(C?"":"hidden")},y&&a.a.createElement(Ua,{className:"nui-select-filter-container"},a.a.createElement(da,{id:"nui-select-filter",value:N,placeholder:"Search...",onChange:function(e){return I(e)},onClick:function(e){return e.stopPropagation()},style:{background:R.white},inputStyle:{margin:0,borderRadius:0},autoFocus:!0})),a.a.createElement(Ua,null,[F]))):B},qa=y.a.div(ja||(ja=Da(["\n font-family: ",";\n margin-bottom: 6px;\n\n input {\n display: none;\n }\n\n label {\n cursor: pointer;\n display: flex;\n }\n\n .inner-container {\n margin-left: 4px;\n\n .label {\n display: block;\n font-size: 14px;\n line-height: 17px;\n padding-top: 4.5px;\n padding-bottom: 4px;\n }\n .description {\n display: block;\n font-size: ",";\n }\n }\n\n &.disabled {\n color: ",";\n\n label {\n cursor: default;\n }\n }\n"])),R.fontFamily,R.fontSizeSmall,R.disabledForm),Wa=y.a.div(Sa||(Sa=Da(["\n background-color: ",";\n cursor: pointer;\n font-family: ",";\n\n &:hover {\n filter: brightness(80%);\n }\n\n input {\n display: none;\n }\n\n .option {\n align-items: center;\n color: ",";\n display: flex;\n justify-content: space-between;\n font-family: ",";\n font-size: 14px;\n line-height: 17px;\n padding: 8px 12px;\n\n .option-group {\n align-items: center;\n display: flex;\n }\n }\n\n &.disabled {\n background-color: rgb(224 156 54);\n pointer-events: none;\n\n .option {\n color: rgb(255 255 255 / 35%);\n }\n }\n"])),R.blue,R.fontFamily,R.white,R.fontFamily),Ha=function(e){var n=e.id,t=e.name,r=e.value,o=e.checked,i=e.icon,l=e.label,c=e.description,u=e.onClick,s=e.scrolldown,d=e.isPro,f=void 0!==d&&d,p=e.requirePro,m=void 0!==p&&p,b=e.disabled,h=e.iconSize,g=void 0===h?20:h,y=m&&!f,v=y||b?"disabled":"",w=a.a.createElement(qa,{className:"nui-select ".concat(e.className||""," ").concat(v)},a.a.createElement("input",{id:n,name:t,type:"radio",value:r,defaultChecked:o,onClick:function(e){return u(e.target.value)},disabled:y||b}),a.a.createElement("label",{htmlFor:n},a.a.createElement(P.Icon,{icon:o?Aa.a:Pa.a,width:"24px",color:y?R.disabledForm:R.blue}),a.a.createElement("div",{className:"inner-container"},a.a.createElement("span",{className:"label"},l,a.a.createElement(_t,{className:"inline",style:{top:-1},show:y})),c?a.a.createElement("small",{className:"description"},c):null))),x=a.a.createElement(Wa,{className:"nui-select ".concat(e.className||""," ").concat(v)},a.a.createElement("input",{id:n,name:t,type:"radio",value:r,defaultChecked:o,disabled:y||b}),a.a.createElement("div",{className:"option",onClick:function(){return u(r)}},a.a.createElement("div",{className:"option-group"},i&&a.a.createElement(gt,{icon:i,width:g,height:g,style:{marginRight:"".concat(Math.max(g-11,4),"px")}}),l),a.a.createElement(_t,{show:y})));return s?x:w},$a=function(e){return a.a.createElement(Ga,e)};$a.propTypes={id:u.a.string,name:u.a.string,description:u.a.string,scrolldown:u.a.bool,isPro:u.a.bool,onChange:u.a.func,isBusy:u.a.bool,chevronIconSize:u.a.number,textFiltering:u.a.bool},$a.propTypes={id:void 0,name:void 0,description:void 0,scrolldown:!1,isPro:!1,onChange:void 0,isBusy:!1,chevronIconSize:24,textFiltering:void 0};var Ya,Ka=function(e){return a.a.createElement(Ha,e)};Ka.propTypes={id:u.a.string,name:u.a.string,value:u.a.string,checked:u.a.bool,label:u.a.string,description:u.a.string,onClick:u.a.func,scrolldown:u.a.bool,isPro:u.a.bool,requirePro:u.a.bool,icon:u.a.string,iconSize:u.a.number},Ka.defaultProps={id:void 0,name:void 0,value:void 0,checked:!1,label:void 0,description:void 0,onClick:void 0,scrolldown:!1,isPro:!1,requirePro:!1,icon:void 0,iconSize:20};var Va=y.a.div(Ya||(Ya=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n label {\n display: block;\n margin-bottom: 3px;\n }\n\n .neko-input, .neko-textarea {\n margin-bottom: 5px;\n }\n"]))),Ja=function(e){return a.a.createElement(Va,null,e.children||null)},Xa=function(e){return a.a.createElement(Ja,e)};Xa.propTypes={},Xa.defaultProps={};var Za,Qa=["width","height","fontSize","onValue","offValue","checked","onBackgroundColor","offBackgroundColor","onLabel","offLabel","onChange","disabled"];function eo(){return(eo=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function no(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var to=Object(y.a)((function(e){e.width,e.height;var n=e.fontSize,t=(void 0===n&&R.fontSizeSmall,e.onValue),o=e.offValue,i=e.checked,l=void 0!==i&&i,c=(e.onBackgroundColor,e.offBackgroundColor,e.onLabel,e.offLabel,e.onChange),u=e.disabled,s=no(e,Qa),d=Object(r.useCallback)((function(e){c(e.target.checked?t:o)}),[c,t,o]);return a.a.createElement("label",eo({},s,{"data-is-disabled":u?"disabled":""}),a.a.createElement("input",{type:"checkbox",onChange:d,checked:l,disabled:u}),a.a.createElement("span",{className:"nui-switch-slider"}))}))(Za||(Za=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n color: ",";\n font-family: ",";\n font-size: ",";\n position: relative;\n display: inline-block;\n width: ",";\n height: ",";\n\n &[data-is-disabled=disabled] {\n opacity: 0.4;\n\n .nui-switch-slider {\n cursor: auto;\n }\n }\n\n input {\n opacity: 0;\n width: 0;\n height: 0;\n border: 0;\n }\n\n .nui-switch-slider {\n background-color: ",";\n border-radius: ",';\n align-items: center;\n cursor: pointer;\n display: inline-flex;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n transition: .4s;\n }\n\n .nui-switch-slider:before {\n border-radius: 50%;\n position: absolute;\n content: "";\n height: ',";\n width: ",';\n left: 4px;\n bottom: 4px;\n background-color: white;\n transition: .3s;\n }\n\n .nui-switch-slider:after {\n content: "','";\n margin-left: auto;\n margin-right: ',";\n }\n\n input:checked + .nui-switch-slider {\n background-color: ",";\n }\n\n input:checked + .nui-switch-slider:before {\n transform: translateX(",');\n }\n\n input:checked + .nui-switch-slider:after {\n content: "','";\n margin-left: ',";\n margin-right: auto;\n }\n"])),R.white,R.fontFamily,(function(e){return e.fontSize}),(function(e){return e.width}),(function(e){return e.height}),(function(e){return e.offBackgroundColor}),(function(e){return e.height}),(function(e){return"calc(".concat(e.height," - 8px)")}),(function(e){return"calc(".concat(e.height," - 8px)")}),(function(e){return e.offLabel}),(function(e){return"calc(".concat(e.height," / 2)")}),(function(e){return e.onBackgroundColor}),(function(e){return"calc(".concat(e.width," - ").concat(e.height,")")}),(function(e){return e.onLabel}),(function(e){return"calc(".concat(e.height," / 2)")})),ro=function(e){return a.a.createElement(to,e)};ro.propTypes={width:u.a.string,height:u.a.string,fontSize:u.a.string,onValue:u.a.string,offValue:u.a.string,checked:u.a.bool,onBackgroundColor:u.a.string,offBackgroundColor:u.a.string,onLabel:u.a.string,offLabel:u.a.string},ro.defaultProps={width:"100%",height:"20px",fontSize:"${Theme.fontSizeSmall}",checked:!1};var ao,oo,io,lo,co,uo,so=t(78),fo=t.n(so);function po(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return mo(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return mo(e,n)}(e,n)||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 mo(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function bo(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var ho=function(e){var n=e.chevron,t=void 0===n||n;return a.a.Children.map(e.children,(function(e){return a.a.cloneElement(e,{chevron:t})}))},go=y.a.div(ao||(ao=bo(["\n align-items: center;\n display: flex;\n justify-content: space-between;\n margin-bottom: 5px;\n font-family: ",";\n"])),R.fontFamily),yo=y.a.div(oo||(oo=bo(["\n align-items: center;\n display: flex;\n\n &.can-expand {\n cursor: pointer;\n }\n\n &.selected {\n color: #956DBE;\n }\n\n span {\n font-weight: normal;\n font-size: ",";\n margin: 0 0 0 8px;\n }\n"])),R.fontSizeText),vo=y.a.div(io||(io=bo(["\n height: 24px;\n width: 24px;\n"]))),wo=y.a.div(lo||(lo=bo(["\n position: relative;\n width: 24px;\n height: 24px;\n"]))),xo=y.a.div(co||(co=bo(["\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 100;\n"]))),Eo=y.a.div(uo||(uo=bo(["\n border-left: 1px solid ",";\n margin-left: 12px;\n padding-left: 6px;\n\n &.no-line {\n border-left: 0;\n padding-left: 12px;\n }\n\n &.no-chevron {\n border-left: 0;\n margin-left: 0;\n padding-left: 0;\n }\n"])),R.finderBorder),ko=function(e){var n={gallery:Ge.a,tag:fo.a},t=e.title,o=e.chevron,i=e.rightElement,l=void 0===i?null:i,c=e.rightElementStyle,u=void 0===c?{marginLeft:"5px"}:c,s=e.showRightElement,d=void 0!==s&&s,f=e.selected,p=void 0!==f&&f,m=e.draggable,b=void 0!==m&&m,h=e.onDragStart,g=e.onDragOver,y=e.onDragEnd,v=e.onDrop,w=e.isExpanded,x=void 0!==w&&w,E=e.dragging,k=void 0!==E&&E,O=e.rightAction,j=void 0===O?null:O,S=e.rightActionOnHover,C=void 0===S?null:S,A=e.onDragLeave,z=(e.preventClose,!!e.icon),N=!!e.children,I=po(Object(r.useState)(x),2),T=I[0],_=I[1],D=po(Object(r.useState)((function(){return"string"==typeof e.icon&&Object.keys(n).includes(e.icon)?n[e.icon]:e.icon?e.icon:Be.a})),2),M=D[0],B=D[1],F=Boolean(M),L=po(Object(r.useState)(!1),2),U=L[0],G=L[1];Object(r.useEffect)((function(){_(x),z||B(x?Be.a:Le.a)}),[x]);var q=a.a.Children.map(e.children,(function(e){return a.a.cloneElement(e,{chevron:o})})),W=k||p?R.purple:p?R.black:R.blue;return a.a.createElement("div",null,a.a.createElement(go,{onMouseEnter:function(){return G(!0)},onMouseLeave:function(){return G(!1)}},a.a.createElement(yo,{onClick:function(){e.onClick&&e.onClick()},onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,draggable:b,onDragStart:h,onDragOver:g,onDrop:v,className:"".concat(F||q||e.onClick?"can-expand":""," ").concat(p?"selected":""),onDragLeave:A,onDragEnd:y},o?F&&N?a.a.createElement(P.Icon,{icon:T?Z.a:J.a,width:"24",height:"24",onClick:function(e){e.stopPropagation(),_(!T)}}):a.a.createElement(vo,null):null,a.a.createElement(wo,null,a.a.createElement(xo,null),a.a.createElement(P.Icon,{icon:M,color:W,width:"24",height:"24"})),a.a.createElement("span",null,t),d&&a.a.createElement("div",{style:u},l)),U&&C||j),T&&a.a.createElement(Eo,{className:"".concat(F?"":"no-line"," ").concat(o?"":"no-chevron")},q))},Oo=function(e){return a.a.createElement(ho,e)};Oo.propTypes={chevron:u.a.bool},Oo.defaultProps={chevron:!0};var jo,So=function(e){return a.a.createElement(ko,e)};So.propTypes={icon:u.a.oneOfType([u.a.instanceOf(P.IconifyIcon),u.a.oneOf(["gallery"])]),title:u.a.string,isExpanded:u.a.bool},So.defaultProps={icon:Be.a,title:void 0,isExpanded:!1};var Ro,Po,Co=y.a.div(jo||(jo=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n display: flex;\n width: 100%;\n height: 100%;\n max-width: 128px;\n max-height: 128px;\n\n & > * {\n width: 100%;\n height: auto;\n object-fit: contain;\n }\n"]))),Ao=function(){return a.a.createElement(Co,null,a.a.createElement("svg",{width:"54",height:"38",viewBox:"0 0 54 38",fill:"none",xmlns:"http://www.w3.org/2000/svg"},a.a.createElement("path",{d:"M11.3663 9.40518C9.2981 -3.25522 -0.310763 2.76769 2.5163 9.40518C2.5163 9.40518 8.29338 29.9322 22.3059 26.3677C36.3184 22.8031 23.9038 19.1156 23.9038 19.1156C23.9038 19.1156 13.4345 22.0656 11.3663 9.40518Z",fill:"#724024",stroke:"black",strokeWidth:"2.1869"}),a.a.createElement("path",{d:"M10.7517 8.0531C10.0142 10.7573 6.32673 12.1093 3.99131 11.2489C1.65589 10.3885 2.63923 13.8302 5.09756 14.9364C7.55589 16.0427 11.2434 14.1989 12.1038 12.4781C12.9642 10.7573 11.4892 5.34893 10.7517 8.0531Z",fill:"#B7782E"}),a.a.createElement("path",{d:"M14.0705 17.2718C13.8246 19.2385 9.64547 19.976 7.55589 19.8531C5.46631 19.7302 9.76839 23.5406 11.3663 23.5406C12.9642 23.5406 17.3892 21.2052 17.1434 19.2385C16.8976 17.2718 14.3163 15.3052 14.0705 17.2718Z",fill:"#B7782E"}),a.a.createElement("path",{d:"M17.5121 26.2448C18.6184 25.3843 20.9538 21.8198 19.8476 19.8531C18.7413 17.8864 22.4288 20.9593 22.4288 20.9593L21.6913 26.2448C21.6913 26.2448 16.4059 27.1052 17.5121 26.2448Z",fill:"#B7782E"}),a.a.createElement("path",{d:"M10.7517 8.0531C10.0142 10.7573 6.32673 12.1093 3.99131 11.2489C1.65589 10.3885 2.63923 13.8302 5.09756 14.9364C7.55589 16.0427 11.2434 14.1989 12.1038 12.4781C12.9642 10.7573 11.4892 5.34893 10.7517 8.0531Z",stroke:"black"}),a.a.createElement("path",{d:"M14.0705 17.2718C13.8246 19.2385 9.64547 19.976 7.55589 19.8531C5.46631 19.7302 9.76839 23.5406 11.3663 23.5406C12.9642 23.5406 17.3892 21.2052 17.1434 19.2385C16.8976 17.2718 14.3163 15.3052 14.0705 17.2718Z",stroke:"black"}),a.a.createElement("path",{d:"M17.5121 26.2448C18.6184 25.3843 20.9538 21.8198 19.8476 19.8531C18.7413 17.8864 22.4288 20.9593 22.4288 20.9593L21.6913 26.2448C21.6913 26.2448 16.4059 27.1052 17.5121 26.2448Z",stroke:"black"}),a.a.createElement("path",{d:"M11.3663 9.40518C9.2981 -3.25522 -0.310763 2.76769 2.5163 9.40518C2.5163 9.40518 8.29338 29.9322 22.3059 26.3677C36.3184 22.8031 23.658 19.4843 23.658 19.4843C23.658 19.4843 13.4345 22.0656 11.3663 9.40518Z",stroke:"black",strokeWidth:"2.1869"}),a.a.createElement("path",{d:"M25.3788 9.89685C25.3788 9.89685 21.3225 35.0947 21.9371 35.7093C22.5517 36.3239 27.4684 36.3239 28.083 35.7093C28.6975 35.0947 29.6523 22.5858 30.2955 21.9427C30.9386 21.2995 35.7226 33.1281 36.81 33.1281C37.8975 33.1281 43.2303 21.3567 43.8163 21.9427C44.4023 22.5287 45.2913 35.0947 45.9059 35.7093C46.5204 36.3239 51.3142 36.3239 51.9288 35.7093C52.5434 35.0947 48.9788 9.89685 48.9788 9.89685H42.9559C42.9559 9.89685 37.7934 21.9427 36.81 21.9427C35.8267 21.9427 31.4017 9.89685 31.4017 9.89685H25.3788Z",fill:"white",stroke:"black",strokeWidth:"2.1869"})))},zo=function(e){return a.a.createElement(Ao,e)};function No(e){return(No="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Io(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}zo.propTypes={},zo.defaultProps={};var To=Object(y.a)((function(e){var n=e.value,t=void 0===n?0:n,r=e.max,o=void 0===r?100:r,i=e.busy,l=void 0!==i&&i,c=e.status;t=Math.min(t,o);var u=parseFloat(t)/parseFloat(o);return a.a.createElement("div",{className:e.className},a.a.createElement(_o,{ratio:u,busy:e.busy,status:c}),a.a.createElement("div",{className:"nui-progress-buttons"},l&&e.onPauseClick&&a.a.createElement("div",{className:"nui-progress-button pause",onClick:e.onPauseClick},e.paused?a.a.createElement(P.InlineIcon,{icon:ae.a}):a.a.createElement(P.InlineIcon,{icon:te.a})),l&&e.onStopClick&&a.a.createElement("div",{className:"nui-progress-button stop",onClick:e.onStopClick},a.a.createElement(P.InlineIcon,{icon:fe.a}))))}))(Ro||(Ro=Io(["\n position: relative;\n box-sizing: border-box;\n height: 30px;\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 0.06) 0%,\n rgba(0, 0, 0, 0.02) 50%,\n rgba(0, 0, 0, 0.10) 100%\n );\n border-radius: 12px;\n\n .nui-progress-buttons {\n position: absolute;\n height: 100%;\n right: 0px;\n display: flex;\n align-items: center;\n padding-right: 5px;\n\n .nui-progress-button {\n border: none;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-left: 2px;\n border-radius: 100%;\n color: white;\n padding: 2px;\n width: 18px;\n height: 18px;\n background-color: ",";\n\n &:hover {\n background-color: ",";\n }\n\n &.stop {\n background: ",";\n\n &:hover {\n background-color: ",";\n }\n }\n }\n }\n"])),R.blue,Object(v.a)(.1,R.blue),R.red,Object(v.a)(.1,R.red)),_o=Object(y.a)((function(e){var n,t,r,o=isNaN(e.ratio)?0:parseInt(Math.round(100*e.ratio)),i=No(e.status),l="undefined"!==i?"string"===i?e.status:e.status(o):"".concat(o,"%");return a.a.createElement("div",{className:e.className,style:(n={minWidth:28},t="minWidth",r=o+"%",t in n?Object.defineProperty(n,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[t]=r,n)},a.a.createElement("div",null,l))}))(Po||(Po=Io(["\n position: absolute;\n overflow: hidden;\n top: 0; left: 0;\n height: 100%;\n background-color: ",";\n border-radius: 12px;\n text-align: center;\n padding: 0 10px;\n vertical-align: middle;\n color: white;\n font-family: ",";\n font-size: ",";\n display: flex;\n justify-content: center;\n align-items: center;\n transition: min-width .2s ease-out;\n\n background-size: 30px 30px;\n background-image: linear-gradient(135deg, rgba(255, 255, 255, .15) 25%,\n transparent 25%,\n transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%,\n transparent 75%, transparent);\n animation: ",";\n\n @keyframes animate-stripes {\n 0% { background-position: 0 0; }\n 100% { background-position: 60px 0; }\n }\n"])),R.progress,R.fontFamily,R.fontSizeText,(function(e){return e.busy?"animate-stripes 1.6s linear infinite":"none"})),Do=function(e){return a.a.createElement(To,e)};Do.propTypes={value:u.a.number,max:u.a.number,busy:u.a.bool,paused:u.a.bool,onPauseClick:u.a.func,onStopClick:u.a.func,status:u.a.oneOf([u.a.string,u.a.func])},Do.defaultProps={value:0,max:100,busy:!1,paused:!1,onPauseClick:void 0,onStopClick:void 0,status:void 0};var Mo,Bo=t(79),Fo=t.n(Bo);var Lo,Uo=y.a.div(Mo||(Mo=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n position: relative;\n color: white;\n font-family: ",";\n font-size: ",";\n display: flex;\n height: 61px;\n overflow: hidden;\n align-items: center;\n padding: 15px 20px;\n background-color: ",";\n display: flex;\n\n .nui-header-logo-container {\n width: 102px;\n height: 102px;\n padding: 20px;\n margin-right: 25px;\n background: rgba(",", 0.1);\n border-radius: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: rotate(-29.83deg);\n }\n\n .nui-header-title-container {\n flex-direction: column;\n display: flex;\n\n .nui-header-title {\n color: white;\n font-family: ",";\n font-size: 23px;\n line-height: normal;\n margin: 0;\n }\n\n .nui-header-subtitle {\n color: white;\n font-family: ",";\n line-height: normal;\n font-size: ",";\n }\n }\n\n .nui-header-extra-content {\n flex: 1;\n margin: 0 20px;\n }\n"])),R.fontFamily,R.fontSizeText,R.header,R.blackRGB,R.fontFamily,R.fontFamily,R.fontSizeText),Go=function(e){var n=e.title,t=void 0===n?"NekoUI":n,r=e.subtitle,o=void 0===r?"By Jordy Meow":r,i=e.children,l=e.saving,c=void 0!==l&&l;return a.a.createElement(Uo,null,a.a.createElement("div",{className:"nui-header-logo-container"},a.a.createElement(zo,null)),a.a.createElement("div",{className:"nui-header-title-container"},a.a.createElement("h1",{className:"nui-header-title"},t),a.a.createElement("small",{className:"nui-header-subtitle"},a.a.createElement("a",{target:"_blank",href:"https://meowapps.com",style:{color:"white",textDecoration:"none"}},o))),a.a.createElement("div",{className:"nui-header-extra-content"},i),c&&a.a.createElement(gt,{icon:Fo.a,width:"36",height:"36"}))},qo=function(e){return a.a.createElement(Go,e)};function Wo(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return Ho(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Ho(e,n)}(e,n)||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 Ho(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}qo.propTypes={title:u.a.string,subtitle:u.a.string,saving:u.a.bool},qo.defaultProps={title:"NekoUI",subtitle:"By Jordy Meow",saving:!1};var $o,Yo,Ko=y.a.div(Lo||(Lo=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n align-items: center;\n display: flex;\n user-select: none;\n\n .neko-paging-text {\n font-family: ",";\n font-style: normal;\n font-weight: normal;\n font-size: 15px;\n line-height: 14px;\n margin-right: 15px;\n }\n\n .neko-paging-controller {\n box-sizing: border-box;\n height: 30px;\n align-items: center;\n background-color: rgba(",", 0.8);\n border-radius: 15px;\n display: flex;\n padding: 3px 5px;\n\n .nako-paging-controller-icon {\n background-color: ",";\n border-radius: 100%;\n cursor: pointer;\n margin-right: 2px;\n height: 22px;\n width: 22px;\n box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.25);\n transition: transform 0.1s ease-in;\n box-sizing: border-box;\n\n :last-child {\n margin-right: 0;\n }\n\n &.disabled {\n color: ",";\n cursor: default;\n pointer-events: none;\n }\n\n &:hover {\n transform: scale(1.2) !important;\n z-index: 10;\n position: relative;\n }\n }\n\n .nako-paging-controller-text {\n color: ",";\n font-family: ",";\n font-style: normal;\n font-weight: normal;\n font-size: ",";\n margin: 0 40px;\n user-select: none;\n }\n\n span.neko-paging-current-page {\n cursor: pointer;\n text-decoration: underline;\n }\n\n input.neko-paging-current-page {\n width: 1.5rem;\n }\n }\n"])),R.fontFamily,R.blueRGB,R.white,R.darkGray,R.white,R.fontFamily,R.fontSizeText),Vo=function(e){var n=e.currentPage,t=e.limit,o=void 0===t?0:t,i=e.onClick,l=e.total,c=void 0===l?0:l,u=e.onCurrentPageChanged,s=(e.full,e.infinite),d=void 0!==s&&s,f=e.controllerText,p=!!u,m=Object(r.useMemo)((function(){return d?0:Math.ceil(0===c?1:o>0?c/o:1)}),[d,o,c]),b="nako-paging-controller-icon ".concat(d||1!==n?"":"disabled"),h="nako-paging-controller-icon ".concat(d||n!==m?"":"disabled"),g=Wo(Object(r.useState)(!1),2),y=g[0],v=g[1],w=function(e){v(!1),i(e)},x=function(e){if(d)return e;var n=Number(e);return n>m?m:n<1?1:n},E=function(e){var n=e.target.value;isNaN(n)||u(x(n)),v(!1)},k=function(e){if("Enter"===event.key){e.preventDefault();var n=e.target.value;isNaN(n)||u(x(n)),v(!1)}},O=Object(r.useMemo)((function(){if(!y){return a.a.createElement("span",{className:p?"neko-paging-current-page":"",onClick:function(){p&&v(!0)}},n)}return a.a.createElement("input",{autoFocus:!0,type:"text",className:p?"neko-paging-current-page":"",defaultValue:n,onBlur:E,onKeyPress:k})}),[n,y,u]),j=function(e){y&&e.target===e.currentTarget&&v(!1)};return a.a.createElement(Ko,null,!!c&&a.a.createElement("span",{className:"neko-paging-text"},c," result",c>0?"s":""),a.a.createElement("div",{className:"neko-paging-controller",onClick:j},!d&&a.a.createElement(P.Icon,{icon:W.a,className:b,onClick:function(){return w(1)}}),a.a.createElement(P.Icon,{icon:K.a,className:b,onClick:function(){return w(n-1)}}),a.a.createElement("p",{className:"nako-paging-controller-text",onClick:j},f||a.a.createElement(a.a.Fragment,null,"Page ",O," of ",m)),a.a.createElement(P.Icon,{icon:J.a,className:h,onClick:function(){return w(n+1)}}),!d&&a.a.createElement(P.Icon,{icon:$.a,className:h,onClick:function(){return w(m)}})))},Jo=function(e){return a.a.createElement(Vo,e)};function Xo(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}Jo.propTypes={currentPage:u.a.number,limit:u.a.number,total:u.a.number,onClick:u.a.func,lastPage:u.a.number,infinite:u.a.bool,controllerText:u.a.object},Jo.defaultProps={currentPage:void 0,limit:0,total:0,onClick:void 0,lastPage:void 0,infinite:!1,controllerText:void 0};var Zo=y.a.div($o||($o=Xo(["\n display: flex;\n align-items: center;\n"]))),Qo=y.a.span(Yo||(Yo=Xo(["\n color: ",";\n cursor: pointer;\n font-family: ",";\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 17px;\n\n &.is-active {\n cursor: default;\n color: ",';\n font-weight: bold;\n }\n\n &::after {\n content: "|";\n color: ',";\n padding: 0 4px;\n }\n\n &:last-child::after {\n content: none;\n }\n\n span {\n color: ",";\n font-weight: normal;\n margin-left: 4px;\n }\n"])),(function(e){return e.variant||R.blue}),R.fontFamily,R.black,R.darkGray,R.darkGray),ei=function(e){var n=e.id,t=e.value,r=e.onChange,o=e.busy,i=void 0!==o&&o,l=e.className,c=a.a.Children.map(e.children,(function(e,o){return a.a.cloneElement(e,{busy:i,isActive:e.props.value===t,onClick:function(e){e!==t&&r(e,n)}})}));return a.a.createElement(Zo,{className:l},c)},ni=function(e){var n=e.title,t=e.value,o=void 0===t?0:t,i=e.count,l=e.onClick,c=e.busy,u=e.isActive,s=e.className,d=e.variant,f=Object(r.useMemo)((function(){if(d)return Object.keys(R).includes(d)?R[d]:d}),[d]);return a.a.createElement(Qo,{onClick:function(){return l(o)},className:"".concat(u?"is-active":""," ").concat(s),variant:f},n,null===i?null:a.a.createElement("span",null,"(",c?a.a.createElement(gt,{icon:"replay",spinning:!0,width:12,containerStyle:{display:"inline"}}):i,")"))},ti=function(e){return a.a.createElement(ei,e)};ti.propTypes={id:u.a.string,value:u.a.string,onChange:u.a.func},ti.defaultProps={id:void 0,value:void 0,onChange:void 0};var ri,ai=function(e){return a.a.createElement(ni,e)};ai.propTypes={title:u.a.string,value:u.a.string,count:u.a.number,onClick:u.a.func,isActive:u.a.bool,variant:u.a.string},ai.defaultProps={title:void 0,value:"default",count:0,onClick:void 0,isActive:!1,variant:void 0};var oi,ii,li=y.a.section(ri||(ri=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n .mask {\n position: absolute;\n overflow: hidden;\n display: block;\n width: ","px;\n height: ","px;\n }\n\n .semi-circle {\n position: relative;\n display: block;\n width: ","px;\n height: ",'px;\n background: linear-gradient(to right, #27b775 0%, #f3f32c 50%, #f71b1b 100%);\n border-radius: 50% 50% 50% 50% / 100% 100% 0% 0% ;\n\n &::before {\n content: "";\n position: absolute;\n bottom: 0;\n left: 50%;\n z-index: 2;\n display: block;\n width: 140px;\n height: 70px;\n margin-left: -70px;\n background: ',";\n border-radius: 50% 50% 50% 50% / 100% 100% 0% 0% ;\n } \n }\n\n .semi-circle--mask {\n position: absolute;\n top: 0;\n left: 0;\n width: ","px;\n height: ",'px;\n background: transparent;\n transform-origin: center center;\n backface-visibility: hidden;\n transition: all .3s ease-in-out;\n\n &::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0%;\n z-index: 2;\n display: block;\n width: ',"px;\n height: ","px;\n margin-top: -1px;\n margin-left: -1px;\n background: #5396c1d6;\n border-radius: 50% 50% 50% 50% / 100% 100% 0% 0% ;\n } \n }\n\n .gauge { \n width: ","px;\n height: ","px;\n \n .semi-circle--mask {\n transform: rotate(","deg) translate3d(0,0,0);\n }\n }\n\n .child-container {\n position: absolute;\n font-size: 16px;\n display: flex;\n width: ","px;\n height: ","px;\n z-index: 10;\n\n .spacing {\n flex: auto;\n }\n\n .child {\n color: white;\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n }\n"])),(function(e){return e.width}),(function(e){return e.width/2}),(function(e){return e.width}),(function(e){return e.width/2}),(function(e){return e.backgroundColor}),(function(e){return e.width}),(function(e){return e.width}),(function(e){return e.width+2}),(function(e){return e.width/2+2}),(function(e){return e.width}),(function(e){return e.width/2}),(function(e){return e.degrees}),(function(e){return e.width+2}),(function(e){return e.width/2})),ci=function(e){var n=e.value,t=void 0===n?1e3:n,r=(e.min,e.max),o=void 0===r?2500:r,i=e.width,l=void 0===i?200:i,c=e.background,u=void 0===c?"#007cba":c,s=e.children,d=180*(t<=o?t:o)/o;return a.a.createElement(li,{backgroundColor:u,degrees:d,width:l},a.a.createElement("div",{class:"gauge"},a.a.createElement("div",{class:"mask"},a.a.createElement("div",{class:"semi-circle"}),a.a.createElement("div",{class:"semi-circle--mask"})),a.a.createElement("div",{class:"child-container"},a.a.createElement("div",{class:"child"},a.a.createElement("div",{class:"spacing"}),s))))};function ui(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}ci.propTypes={value:u.a.number,min:u.a.number,max:u.a.number,width:u.a.number,background:u.a.string},ci.defaultProps={value:1e3,min:0,max:2500,width:200,background:"#007cba"};var si,di=y.a.p(oi||(oi=ui(["\n background: #ba341e;\n padding: 20px;\n color: white;\n border-radius: 10px;\n font-size: 15px;\n\n a {\n color: white;\n font-weight: bold;\n }\n"]))),fi=y.a.p(ii||(ii=ui(["\n background: #1eba96;\n padding: 20px;\n color: white;\n border-radius: 10px;\n font-size: 15px;\n text-align: center;\n\n a {\n color: white;\n font-weight: bold;\n }\n"]))),pi=["multiple","width","height","iconSize","iconColor","onSuccess","onFailure","style","apiUrl","apiConfig","onClick","disabled"];function mi(){return(mi=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function bi(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function hi(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?bi(Object(t),!0).forEach((function(n){gi(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):bi(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function gi(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function yi(e){return function(e){if(Array.isArray(e))return ki(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Ei(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 vi(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function wi(e){return function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){vi(o,r,a,i,l,"next",e)}function l(e){vi(o,r,a,i,l,"throw",e)}i(void 0)}))}}function xi(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||Ei(e,n)||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 Ei(e,n){if(e){if("string"==typeof e)return ki(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?ki(e,n):void 0}}function ki(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function Oi(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var ji=y.a.div(si||(si=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n box-sizing: border-box;\n background: #C4C4C4;\n color: rgb(0 0 0 / 60%);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n transition: all 0.25s ease;\n\n &[data-is-disabled=true] {\n svg {\n opacity: 0.7;\n }\n }\n\n div {\n transition: all 0.5s ease;\n transform: scale(1.5);\n pointer-events: none;\n max-width: 100%;\n }\n\n &:hover {\n cursor: pointer;\n }\n\n &.dropping {\n background: #a4d5ff;\n\n div {\n transform: scale(2);\n }\n }\n"]))),Si=function(e){var n=e.multiple,t=e.width,o=void 0===t?"100%":t,i=e.height,l=void 0===i?"100%":i,c=e.iconSize,u=void 0===c?48:c,s=e.iconColor,d=void 0===s?"#A9A9A9":s,f=e.onSuccess,p=void 0===f?function(){}:f,m=e.onFailure,b=void 0===m?function(){}:m,h=e.style,g=void 0===h?{}:h,y=e.apiUrl,v=e.apiConfig,w=e.onClick,x=e.disabled,E=Oi(e,pi),k=xi(Object(r.useState)(!1),2),O=k[0],j=k[1],S=xi(Object(r.useState)(Math.floor(1e8*Math.random())),2),R=S[0],P=(S[1],Object(r.useRef)(null)),C=Object(r.useRef)(null),A=xi(Object(r.useState)(!1),2),z=A[0],N=A[1];Object(r.useEffect)((function(){C&&(C.current.style.pointerEvents=z?"none":"auto")}),[C,z]);var I=function(){var e=wi(regeneratorRuntime.mark((function e(t){var r,a,o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return N(!0),r=function(){var e=wi(regeneratorRuntime.mark((function e(n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return v.file=n,e.next=3,Yn(y,v);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),e.next=4,Promise.all(t.map(function(){var e=wi(regeneratorRuntime.mark((function e(n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,r(n);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}()));case 4:a=e.sent,o=a.filter((function(e){return e.success})),i=a.filter((function(e){return!e.success})),o.length&&p(n?o:o[0]),i.length&&b(n?i:i[0]),N(!1);case 10:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),T=function(e){e.preventDefault(),e.stopPropagation()},_=function(e){e.preventDefault(),e.stopPropagation(),j(!0)},D=function(e,n){n.preventDefault(),n.stopPropagation(),j(!1),console.log(e),I(e)};return a.a.createElement("div",{ref:C},a.a.createElement("input",{type:"file",id:R,accept:"image/*",ref:P,onChange:function(e){var n=yi(e.target.files);D(n,e)},style:{display:"none"},disabled:x,multiple:n}),a.a.createElement(ji,mi({onClick:function(){w?w():P.current.click()},style:hi(hi({},g),{},{width:o,height:l}),className:O?"dropping":"",onDragOver:T,onDragEnter:_,onDragLeave:function(e){e.preventDefault(),e.stopPropagation(),j(!1)},onDrop:function(e){var n=yi(e.dataTransfer.files);D(n,e)},"data-is-disabled":x},E),a.a.createElement(gt,{width:u,height:u,icon:"upload",spinning:z,color:d,onDragOver:T,onDragEnter:_})))};Si.propTypes={width:u.a.string,height:u.a.string,onSuccess:u.a.func,onFailure:u.a.func,style:u.a.object,apiUrl:u.a.string,apiConfig:u.a.object},Si.defaultProps={width:"100%",height:"100%",onSuccess:function(){},onFailure:function(){},style:{}};var Ri,Pi=["onSuccess","onFailure","apiUrl","apiConfig","className","disabled","children","multiple"];function Ci(){return(Ci=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function Ai(e){return function(e){if(Array.isArray(e))return _i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Ti(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 zi(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function Ni(e){return function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){zi(o,r,a,i,l,"next",e)}function l(e){zi(o,r,a,i,l,"throw",e)}i(void 0)}))}}function Ii(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||Ti(e,n)||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 Ti(e,n){if(e){if("string"==typeof e)return _i(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_i(e,n):void 0}}function _i(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function Di(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var Mi=y.a.div(Ri||(Ri=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n &.dropping {\n background: #a4d5ff;\n }\n"]))),Bi=Object(r.forwardRef)((function(e,n){var t=e.onSuccess,o=void 0===t?function(){}:t,i=e.onFailure,l=void 0===i?function(){}:i,c=e.apiUrl,u=e.apiConfig,s=e.className,d=e.disabled,f=void 0!==d&&d,p=e.children,m=e.multiple,b=Di(e,Pi),h=Ii(Object(r.useState)(!1),2),y=h[0],v=h[1],w=Ii(Object(r.useState)(!1),2),x=w[0],E=w[1],k=Object(r.useCallback)(function(){var e=Ni(regeneratorRuntime.mark((function e(n){var t,r,a,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return E(!0),t=function(){var e=Ni(regeneratorRuntime.mark((function e(n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u.file=n,e.next=3,Yn(c,u);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),e.next=4,Promise.all(n.map(function(){var e=Ni(regeneratorRuntime.mark((function e(n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t(n);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}()));case 4:r=e.sent,a=r.filter((function(e){return e.success})),i=r.filter((function(e){return!e.success})),a.length&&o(m?a:a[0]),i.length&&l(m?i:i[0]),E(!1);case 10:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),[u,o,l]),O=Object(r.useCallback)((function(e,n){n.preventDefault(),n.stopPropagation(),v(!1),k(e)}),[k]),j=Object(r.useCallback)((function(e){e.preventDefault(),e.stopPropagation()}),[]),S=Object(r.useCallback)((function(e){e.preventDefault(),e.stopPropagation(),f||v(!0)}),[f]),R=Object(r.useCallback)((function(e){e.preventDefault(),e.stopPropagation(),f||v(!1)}),[f]),P=Object(r.useCallback)((function(e){if(!f){var n=Ai(e.dataTransfer.files);O(n,e)}}),[f,O]),C=Object(r.useCallback)((function(e){var n=Ai(e.target.files);O(n,e)}),[O]);return a.a.createElement(g,{busy:x},a.a.createElement("input",{type:"file",accept:"image/*",ref:n,onChange:C,style:{display:"none"},multiple:m}),a.a.createElement(Mi,Ci({className:"".concat(s||""," ").concat(y?"dropping":""),onDragOver:j,onDragEnter:S,onDragLeave:R,onDrop:P},b),p))}));Bi.propTypes={ref:u.a.ref,onSuccess:u.a.func,onFailure:u.a.func,apiUrl:u.a.string,apiConfig:u.a.object,disabled:u.a.bool},Bi.defaultProps={onSuccess:function(){},onFailure:function(){},disabled:!1};var Fi,Li,Ui,Gi,qi,Wi=["month","year","onEventClicked","onEventMoved","eventBuilder","events"];function Hi(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function $i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function Yi(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return Ki(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Ki(e,n)}(e,n)||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 Ki(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function Vi(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function Ji(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var Xi={Monday:1,Tuesday:2,Wednesday:3,Thursday:4,Friday:5,Saturday:6,Sunday:7},Zi=y.a.div(Fi||(Fi=Ji(["\n display: flex;\n flex-direction: column;\n border-radius: 5px;\n font-family: ",";\n font-size: ",";\n"])),R.fontFamily,R.fontSizeSmall),Qi=y.a.div(Li||(Li=Ji(["\n display: flex;\n width: 100%;\n padding: 10px 0px;\n color: white;\n background: ",";\n border-radius: 5px 5px 0px 0px;\n\n div {\n width: calc(100% / 7);\n text-align: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n"])),R.primary),el=y.a.div(Ui||(Ui=Ji(["\n display: flex;\n flex-direction: column;\n"]))),nl=y.a.div(Gi||(Gi=Ji(["\n display: flex;\n"]))),tl=y.a.div(qi||(qi=Ji(["\n background: purple;\n width: calc(100% / 7);\n background: ",";;\n padding: 3px;\n border-bottom: 1px solid ",";\n border-right: 1px solid ",";\n position: relative;\n transition: background-color 150ms linear;\n box-sizing: border-box;\n\n &:first-child {\n border-left: 1px solid ",";\n }\n\n &:last-child {\n border-right: 1px solid ",";\n }\n\n .day {\n text-align: right;\n color: ",";\n margin-bottom: 5px;\n }\n\n &.highlighted {\n background: #ffe8bc;\n }\n\n &.today .day {\n font-weight: bold;\n text-decoration: underline;\n }\n\n .gray-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: ",";\n opacity: 0.8;\n }\n\n .event {\n margin-bottom: 2px;\n }\n\n .event:last-child {\n margin-bottom: 0px;\n }\n"])),R.white,R.lightGray,R.lightGray,R.lightGray,R.lightGray,R.black,R.lightGray);var rl=function(e){var n=e.month,t=void 0===n?(new Date).getMonth():n,a=e.year,o=void 0===a?(new Date).getFullYear():a,i=e.onEventClicked,l=void 0===i?function(){console.log("[NekoCalendar] onEventClicked not handled.")}:i,c=e.onEventMoved,u=void 0===c?function(){console.log("[NekoCalendar] onEventMoved not handled.")}:c,s=e.eventBuilder,d=void 0===s?function(){return"YOOO"}:s,f=e.events,p=Vi(e,Wi),m=Yi(Object(r.useState)(),2),b=m[0],h=m[1],g=Yi(Object(r.useState)(),2),y=g[0],v=g[1],w=e.disableDaysBefore,x=void 0===w?null:w;x=x||new Date((new Date).getFullYear(),(new Date).getMonth(),(new Date).getDate());var E=Object(r.useMemo)((function(){for(var e=[],n=function(e,n){for(var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Xi.Monday,r=new Date(n,e);r.getDay()!==t;)r.setDate(r.getDate()-1);return r}(t,o,Xi.Monday),r=function(e,n){for(var t=new Date(e),r=new Date(n),a=0;t<=r;)a++,t.setDate(t.getDate()+1);return a-1}(n,new Date(o,t,1))<5?34:41,a=new Date(n).setDate(n.getDate()+r);n<=a;)e.push(new Date(n)),n.setDate(n.getDate()+1);return function(e,n){for(var t=[],r=0;r<e.length;)t.push(e.slice(r,r+=n));return t}(e,7)}),[t,o]);return React.createElement(Zi,p,React.createElement(Qi,null,Object.keys(Xi).map((function(e){return React.createElement("div",{key:e},e)}))),React.createElement(el,null,E.map((function(e){return React.createElement(nl,{key:e},e.map((function(e){var n,r,a=e.getMonth()==t,o=!a||e<x,i=(o?"disabled ":"")+(n=e,r=new Date,n.getFullYear()===r.getFullYear()&&n.getMonth()===r.getMonth()&&n.getDate()===r.getDate()?"today":"")+(e===y?"highlighted":""),c=f.filter((function(n){return a&&n.date.getDate()===e.getDate()}));return React.createElement(tl,{className:i,key:e.getTime(),onDragOver:function(n){return!o&&(t=e,r=b.date,t.getFullYear()!==r.getFullYear()||t.getMonth()!==r.getMonth()||t.getDate()!==r.getDate())&&(n.preventDefault(),v(e),!0);var t,r},onDragLeave:function(){return v(null)},onDrop:function(){u(e,b),v(null)}},React.createElement("div",{className:"day"},e.getDate()),c.map((function(e){return React.createElement("div",{className:"event",key:e.key,draggable:e.draggable,onClick:function(){return l(e)},onDragStart:function(n){return h(e)}},d(function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?Hi(Object(t),!0).forEach((function(n){$i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Hi(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},e)))})),o&&React.createElement("div",{className:"gray-overlay"}))})))}))))};rl.propTypes={month:u.a.number,year:u.a.number,disableDaysBefore:u.a.instanceOf(Date),disableDaysAfter:u.a.instanceOf(Date),eventBuilder:u.a.func,events:u.a.array,onEventClicked:u.a.func,onEventMoved:u.a.func},rl.defaultProps={month:(new Date).getMonth(),year:(new Date).getFullYear(),disableDaysBefore:null,disableDaysAfter:null,eventBuilder:function(){return"UI for this event"},events:[{key:"A1",date:new Date},{key:"A2",date:new Date}],onEventClicked:function(e){console.log("An event was clicked",e)},onEventMoved:function(e,n){console.log("An event was moved to another day",n,e)}};var al,ol,il=t(80),ll=t.n(il),cl=["id","isOpen","children","className","style","ok","cancel","customButtons","customButtonsPosition","title","content","contentWidth","onOkClick","onCancelClick","okOnEnter","thumbnail"];function ul(){return(ul=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function sl(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function dl(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var fl=y.a.div(al||(al=dl(["\n\n .ReactModal__Overlay {\n z-index: 100;\n display: flex;\n justify-content: center;\n flex-direction: column;\n align-items: center;\n background: "," !important;\n }\n .ReactModal__Overlay {\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n .ReactModal__Overlay--after-open {\n opacity: 1;\n }\n .ReactModal__Overlay--before-close {\n opacity: 0;\n }\n .ReactModal__Overlay .neko-modal {\n opacity: 0;\n transform: scale(0.85);\n transition: all 200ms ease-in-out;\n }\n .ReactModal__Overlay--after-open .neko-modal {\n transform: scale(1);\n opacity: 1;\n }\n .ReactModal__Overlay--before-close .neko-modal {\n transform: scale(0.85);\n opacity: 0;\n }\n .neko-modal {\n background: ",";\n position: relative;\n box-shadow: 2px 2px 15px 2px rgba(0, 0, 0, 0.8);\n outline: none;\n padding: 15px;\n max-width: 820px;\n }\n"])),R.overlay,R.white),pl=y.a.div(ol||(ol=dl(["\n width: ",";\n\n p {\n margin: 0;\n }\n .title {\n font-family: ",";\n font-style: normal;\n font-weight: normal;\n font-size: 18px;\n line-height: 22px;\n }\n .content-container {\n display: flex;\n margin-top: 15px;\n\n .thumbnail {\n margin-right: 15px;\n width: 240px;\n overflow: hidden;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n }\n .content {\n flex: auto;\n font-family: ",";\n font-style: normal;\n font-weight: normal;\n font-size: ",";\n line-height: 14px;\n width: 100%;\n }\n }\n .button-group {\n align-items: center;\n display: flex;\n justify-content: flex-end;\n margin-top: 15px;\n font-size: inherit;\n white-space: normal;\n }\n"])),(function(e){var n;return null!==(n=e.width)&&void 0!==n?n:"518px"}),R.fontFamily,R.fontFamily,R.fontSizeText),ml=function(e){var n=e.id,t=void 0===n?"neko-modal-parent":n,o=e.isOpen,i=e.children,l=e.className,c=e.style,u=e.ok,s=void 0===u?"OK":u,d=e.cancel,f=void 0===d?"Cancel":d,p=e.customButtons,m=void 0===p?null:p,b=e.customButtonsPosition,h=void 0===b?"right":b,g=e.title,y=void 0===g?"":g,v=e.content,w=void 0===v?"":v,x=e.contentWidth,E=e.onOkClick,k=e.onCancelClick,O=e.okOnEnter,j=void 0!==O&&O,S=e.thumbnail,R=sl(e,cl),P=c?"custom-modal":"",C=null!==m,A=Object(r.useCallback)((function(e){"Enter"===e.key&&E()}),[E]);Object(r.useEffect)((function(){if(j&&o)return window.addEventListener("keyup",A),function(){window.removeEventListener("keyup",A)}}),[o,A]);var z=i||a.a.createElement(pl,{width:x},y&&a.a.createElement("p",{className:"title"},y),a.a.createElement("div",{className:"content-container"},S&&a.a.createElement("div",{className:"thumbnail"},S),w&&a.a.createElement("p",{className:"content"},w)),a.a.createElement("div",{className:"button-group"},C&&"left"===h&&m,k&&a.a.createElement(Ot,{className:"danger",onClick:k},f),E&&a.a.createElement(Ot,{onClick:E},s),C&&"right"===h&&m));return a.a.createElement(a.a.Fragment,null,a.a.createElement(fl,{id:t}),a.a.createElement(ll.a,ul({ariaHideApp:!1,parentSelector:function(){return document.getElementById(t)},closeTimeoutMS:200,className:"neko-modal ".concat(l||""," ").concat(P),isOpen:o},R),z))},bl=function(e){return a.a.createElement(ml,e)};bl.propTypes={className:u.a.string,style:u.a.object,ok:u.a.string,cancel:u.a.string,title:u.a.string,content:u.a.string,contentWidth:u.a.string,onOkClick:u.a.func,onCancelClick:u.a.func,customButtons:u.a.object,okOnEnter:u.a.bool,thumbnail:u.a.element},bl.defaultProps={className:void 0,style:void 0,ok:"OK",cancel:"Cancel",title:"",content:"",contentWidth:void 0,onOkClick:void 0,onCancelClick:void 0,customButtons:null,okOnEnter:!1,thumbnail:void 0};var hl,gl=t(81),yl=t.n(gl),vl=["checked","intermediate","onSelect","onUnselect"];function wl(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function xl(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?wl(Object(t),!0).forEach((function(n){El(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):wl(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function El(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function kl(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var Ol=y.a.table(hl||(hl=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n font-family: ",";\n border-spacing: 0;\n width: 100%;\n word-break: break-all;\n\n th, td {\n margin: 0;\n padding: 5px;\n border-bottom: 1px solid rgba(",", 0.1);\n border-right: 1px solid rgba(",", 0.1);\n\n a {\n text-decoration: none;\n }\n\n :last-child {\n border-right: 0;\n }\n }\n\n &.nekotable-raw {\n th, td {\n border: 0;\n }\n }\n\n th, tfoot td {\n height: 30px;\n background-color: ",";\n color: ",";\n font-style: normal;\n font-weight: normal;\n font-size: ",";\n line-height: 16px;\n text-align: left;\n\n div {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n &.sortable {\n cursor: pointer;\n }\n }\n }\n\n thead tr th:first-child {\n border-top-left-radius: 10px;\n }\n\n thead tr th:last-child {\n border-top-right-radius: 10px;\n }\n\n tfoot tr th:first-child {\n border-bottom-left-radius: 10px;\n }\n\n tfoot tr th:last-child {\n border-bottom-right-radius: 10px;\n }\n\n &.nekotable-raw {\n th {\n font-weight: bold;\n }\n th, tfoot td {\n background-color: ",";\n color: ",";\n\n div {\n justify-content: normal;\n }\n }\n }\n\n tbody {\n background-color: ",";\n \n tr {\n :nth-child(even) {\n background-color: ",";\n }\n &.selected {\n background-color: rgba(",", 0.8);\n color: ",";\n\n a {\n color: #81e8ff;\n }\n }\n }\n img {\n vertical-align: bottom;\n }\n }\n\n &.nekotable-raw {\n tbody {\n tr {\n :nth-child(even) {\n background-color: ",";\n }\n &.selected {\n background-color: ",";\n color: ",";\n }\n }\n }\n }\n\n tfoot tr:last-child {\n td {\n border-bottom: 0;\n }\n }\n\n .table-checkbox-cell {\n width: 35px;\n text-align: center;\n\n svg {\n padding: 5px;\n cursor: pointer;\n }\n }\n"])),R.fontFamily,R.blackRGB,R.blackRGB,R.blue,R.white,R.fontSizeText,R.white,R.black,R.white,R.tableGray,R.blueRGB,R.white,R.white,R.white,R.black),jl=function(e){var n=e.checked,t=e.intermediate,r=void 0!==t&&t,o=e.onSelect,i=void 0===o?function(){}:o,l=e.onUnselect,c=void 0===l?function(){}:l;kl(e,vl);return a.a.createElement(P.Icon,{icon:r?yl.a:n?Zr.a:Jr.a,width:"24px",height:"24px",onClick:function(e){n?c(e):i(e)}})},Sl={left:"start",center:"center",right:"end"},Rl=function(e){var n=e.columns,t=e.data,r=e.busy,o=void 0!==r&&r,i=e.onSelect,l=e.onUnselect,c=e.selectedItems,u=e.sort,s=e.onSortChange,d=e.variant,f=void 0===d?"default":d,p=e.sortIconColor,m=void 0===p?void 0:p,b=e.emptyMessage,h=void 0===b?"Empty.":b,y=n.length+(i?1:0),v=function(e){var n={};return e.align&&(n={textAlign:e.align,justifyContent:Sl[e.align]}),e.width&&(n=xl(xl({},n),{},{width:e.width})),e.style&&(n=xl(xl({},n),e.style)),n},w=t.map((function(e){var t=n.map((function(n){return{value:e[n.accessor],style:v(n)}}));return{id:e.id,cells:t}})),x=w.map((function(e){return e.id})),E=x.filter((function(e){return c.includes(e)})).length===x.length,k=!E&&c.length>0,O=n.reduce((function(e,n,t){return!1===n.visible&&e.push(t),e}),[]),j=a.a.createElement("tr",null,i&&a.a.createElement("th",{className:"table-checkbox-cell"},a.a.createElement(jl,{checked:E,intermediate:k,onSelect:function(e){return i(x,e)},onUnselect:function(e){l(k?c:x,e)}})),n.filter((function(e,n){return!O.includes(n)})).map((function(e){var n=u&&u.accessor===e.accessor,t=u&&"asc"===u.by,r=n?R.white:"rgba(".concat(R.blackRGB,", 0.1)");m&&(r=n?m:R.gray);var o=v(e);return a.a.createElement("th",{style:o,key:e.accessor},a.a.createElement("div",{className:e.sortable?"sortable":"",style:xl(xl({},o),{},{width:"auto"}),onClick:e.sortable?function(r){s(e.accessor,n&&t?"desc":"asc",r)}:void 0},a.a.createElement("div",null,e.title),a.a.createElement("div",{style:{flex:"auto"}}),a.a.createElement("div",null,e.sortable&&a.a.createElement(P.Icon,{icon:n?t?Z.a:ee.a:Z.a,color:r,width:"26px",height:"26px"}))))})));return a.a.createElement(g,{busy:o,overlayStyle:{top:"36px",height:"calc(100% - 76px)"}},a.a.createElement(Ol,{className:"nekotable-".concat(f)},a.a.createElement("thead",null,j),a.a.createElement("tbody",null,!w.length&&a.a.createElement("tr",null,a.a.createElement("td",{colspan:y,style:{textAlign:"center",height:40,color:"gray"}},h)),w.map((function(e){return a.a.createElement("tr",{className:c.includes(e.id)?"selected":""},i&&a.a.createElement("td",{className:"table-checkbox-cell"},a.a.createElement(jl,{checked:c.includes(e.id),onSelect:function(n){return i([e.id],n)},onUnselect:function(n){return l([e.id],n)}})),e.cells.filter((function(e,n){return!O.includes(n)})).map((function(e){return a.a.createElement("td",{style:e.style},e.value)})))}))),"default"===f&&a.a.createElement("tfoot",null,j)))},Pl=function(e){return a.a.createElement(Rl,e)};Pl.propTypes={columns:u.a.arrayOf(u.a.any),data:u.a.arrayOf(u.a.any),busy:u.a.arrayOf(u.a.bool),onSelect:u.a.func,onUnselect:u.a.func,selectedItems:u.a.arrayOf(u.a.object),onSortChange:u.a.func,variant:u.a.string,sortIconColor:u.a.string},Pl.defaultProps={columns:void 0,data:void 0,busy:!1,onSelect:void 0,onUnselect:void 0,selectedItems:void 0,onSortChange:void 0,variant:"default",sortIconColor:void 0};var Cl,Al=["images","onNextPage","onPreviousPage","onRefresh","onClick","onRemoveClick","onZoomClick","onSearch","searchValue","busy","currentPage","limit","total","onPageChange","selected","multiSelect","showUploader","uploader","onSelectedOrderChanged","onUploadSuccess","onUploadFailure","uploadApiUrl","uploadApiConfig","uploadMultiple","onClose","onCancel","onSave"];function zl(){return(zl=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function Nl(e){return function(e){if(Array.isArray(e))return _l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Tl(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 Il(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||Tl(e,n)||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 Tl(e,n){if(e){if("string"==typeof e)return _l(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_l(e,n):void 0}}function _l(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function Dl(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var Ml,Bl,Fl,Ll,Ul=Object(y.a)(bl)(Cl||(Cl=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n width: 633px;\n\n &.custom-modal {\n padding: 0;\n }\n\n .neko-modal-wrapper {\n padding: 15px;\n }\n\n .neko-media-library-modal-content-header {\n align-items: center;\n display: flex;\n justify-content: space-between;\n\n h1 {\n font-size: 21px;\n font-weight: bold;\n margin: 0;\n }\n\n input {\n background-color: ",";\n border: 1px solid ",";\n border-radius: 3px;\n }\n }\n .neko-media-library-modal-content-body {\n margin-top: 33px;\n margin-bottom: 36px;\n\n .neko-media-library-modal-content-body-list {\n max-height: 406px;\n overflow-y: scroll;\n margin-bottom: 10px;\n width: 100%;\n }\n .neko-media-library-modal-content-body-gallery {\n display: grid;\n gap: 10px;\n grid-template-columns: repeat(6, 1fr);\n margin-bottom: 10px;\n\n .neko-media-library-modal-content-media-container {\n cursor: pointer;\n position: relative;\n\n img {\n box-sizing: border-box;\n }\n\n &.selected {\n img {\n border: 5px solid ",";\n }\n }\n\n &:hover {\n .zoom-button {\n display: block;\n }\n }\n\n .zoom-button {\n background-color: rgba(",", 0.4);\n border: 0;\n border-radius: 30px;\n cursor: pointer;\n display: none;\n position: absolute;\n top: 2px;\n left: 2px;\n width: 30px;\n height: 30px;\n }\n }\n }\n\n .neko-media-library-modal-content-body-selected-gallery {\n display: flex;\n\n .neko-media-library-modal-content-selected-media-container {\n overflow: hidden;\n position: relative;\n height: 50px;\n width: 50px;\n padding-right: 5px;\n\n &.dummy {\n width: 50px;\n\n &.drag-over {\n width: 50px;\n }\n }\n\n &.drag-over {\n width: 105px;\n\n .zoom-button {\n left: 56px;\n }\n }\n\n &.drag-over::before {\n content: '';\n display: inline-block;\n width: 50px;\n height: 50px;\n background-color: ",";\n }\n\n img {\n box-sizing: border-box;\n width: 100%;\n max-width: 50px;\n }\n\n &.drag-over {\n img {\n margin-left: 5px;\n }\n }\n\n &:hover {\n .remove-button,\n .zoom-button {\n display: block;\n }\n }\n\n .remove-button {\n background-color: rgba(",", 0.4);\n border: 0;\n border-radius: 20px;\n cursor: pointer;\n display: none;\n position: absolute;\n top: 1px;\n right: 1px;\n width: 20px;\n height: 20px;\n }\n\n .zoom-button {\n background-color: rgba(",", 0.4);\n border: 0;\n border-radius: 20px;\n cursor: pointer;\n display: none;\n position: absolute;\n top: 1px;\n left: 1px;\n width: 20px;\n height: 20px;\n }\n }\n }\n }\n .neko-media-library-modal-content-footer {\n display: flex;\n justify-content: space-between;\n }\n .neko-media-library-modal-search {\n position: relative;\n }\n"])),R.white,R.black,R.blue,R.blackRGB,R.blue,R.blackRGB,R.blackRGB),Gl=function(e){Array.prototype.forEach.call(document.getElementsByClassName(e),(function(n){n.classList.remove(e)}))},ql="grid",Wl="list",Hl=[{accessor:"thumbnail_url",title:"Thumb",style:{width:"42px"}},{accessor:"title",title:"Title"},{accessor:"size",title:"Size",style:{width:"70px"}},{accessor:"filename",title:"Filename"}],$l=function(e){var n=e.images,t=(e.onNextPage,e.onPreviousPage,e.onRefresh),o=e.onClick,i=e.onRemoveClick,l=e.onZoomClick,c=e.onSearch,u=e.searchValue,s=e.busy,d=e.currentPage,f=e.limit,p=e.total,m=e.onPageChange,b=e.selected,h=e.multiSelect,y=void 0!==h&&h,v=e.showUploader,w=void 0!==v&&v,x=e.uploader,E=e.onSelectedOrderChanged,k=e.onUploadSuccess,O=void 0===k?function(){}:k,j=e.onUploadFailure,S=void 0===j?function(){}:j,P=e.uploadApiUrl,C=e.uploadApiConfig,A=e.uploadMultiple,z=e.onClose,N=e.onCancel,I=e.onSave,T=Dl(e,Al),_=Il(Object(r.useState)(u),2),D=_[0],M=_[1],B=Il(Object(r.useState)(null),2),F=B[0],L=B[1],U=Il(Object(r.useState)(ql),2),G=U[0],q=U[1],W=Object(r.useRef)(null),H=function(e,n){if(e.preventDefault(),null!==F){var t=e.currentTarget.getBoundingClientRect(),r=t.width,a=t.left,o=t.right,i=n;F<n&&(n>0&&n<b.length?i+1===F&&e.clientX>=o-25?i-=1:(i-1===F&&e.clientX>=a-25||55!==r&&e.clientX>=o-25)&&(i+=1):55!==r&&e.clientX>=o-25&&(i+=1)),Gl("drag-over"),F!==i&&F+1!==i&&document.getElementById("".concat("nmlm-selected-").concat(i)).classList.add("drag-over")}},$=function(e){e.preventDefault(),L(null),Gl("drag-over")},Y=function(e,n){e.preventDefault(),null!==F&&F!==n&&F+1!==n&&E({currentIndex:F,afterIndex:F>n?n:n-1})},K=Object(r.useMemo)((function(){if(!y)return[];var e=a.a.createElement("div",{id:"nmlm-selected-".concat(b.length),className:"neko-media-library-modal-content-selected-media-container dummy",draggable:!1,onDragEnd:function(e){return $(e)},onDragOver:function(e){return H(e,b.length)},onDrop:function(e){return Y(e,b.length)},onDragLeave:function(){return Gl("drag-over")}}),n=b.map((function(e,n){return a.a.createElement("div",{id:"nmlm-selected-".concat(n),key:e.id,className:"neko-media-library-modal-content-selected-media-container",draggable:!0,onDragStart:function(){return L(n)},onDragEnd:$,onDragOver:function(e){return H(e,n)},onDrop:function(e){return Y(e,n)}},a.a.createElement("img",{src:e.src,className:"neko-media-library-modal-content-media"}),a.a.createElement("button",{className:"remove-button",onClick:function(){return i({id:e.id,src:e.src})}},a.a.createElement(gt,{icon:"close",color:R.white,width:19,height:19})),a.a.createElement("button",{className:"zoom-button",onClick:function(){return l({id:e.id,src:e.zoom_src})}},a.a.createElement(gt,{icon:"zoom-in",color:R.white,width:19,height:19})))}));return[].concat(Nl(n),[e])}),[b,y,i,l,H,$,Y]),V=Object(r.useMemo)((function(){return n.map((function(e){return a.a.createElement("div",{key:e.id,className:"neko-media-library-modal-content-media-container ".concat(b.some((function(n){return n.id===e.id}))?"selected":""),onClick:function(){o({id:e.id,src:e.src,zoom_src:e.zoom_src})}},a.a.createElement("img",{src:e.src,className:"neko-media-library-modal-content-media",width:"90",height:"90"}),a.a.createElement("button",{className:"zoom-button",onClick:function(n){n.stopPropagation(),l({id:e.id,src:e.zoom_src})}},a.a.createElement(gt,{icon:"zoom-in",color:R.white,width:29,height:29})))}))}),[n,b,l,o]),J=Object(r.useMemo)((function(){return n.map((function(e){return{id:e.id,thumbnail_url:a.a.createElement("img",{src:e.src,style:{width:40,height:40,objectFit:"cover"}}),title:e.title,size:e.size,filename:e.filename}}))}),[n]),X=Object(r.useCallback)((function(){M(""),t()}),[t]),Z=Object(r.useMemo)((function(){var e=function(e,t){var r=n.find((function(n){return e.includes(n.id)}));o({id:r.id,src:r.src,zoom_src:r.zoom_src})};return a.a.createElement(Pl,{data:J,columns:Hl,onSelect:e,onUnselect:e,selectedItems:b.map((function(e){return e.id}))})}),[n,J,b,o]);return a.a.createElement(Ul,zl({style:!0},T),a.a.createElement("div",{className:"neko-modal-wrapper",draggable:!0,onDragOver:function(){return Gl("drag-over")}},a.a.createElement(Bi,{ref:W,onSuccess:O,onFailure:S,apiUrl:P,apiConfig:C,disabled:!w||null!==F,multiple:A},a.a.createElement("div",{className:"neko-media-library-modal-content"},a.a.createElement("div",{className:"neko-media-library-modal-content-header"},a.a.createElement(br,{h1:!0},"Media Library"),a.a.createElement("div",{style:{display:"flex"}},a.a.createElement("div",{className:"neko-media-library-modal-search"},a.a.createElement(da,{value:D,disabled:s,onEnter:c,onChange:function(e){return M(e)},placeholder:"Search..."}),""!==D&&a.a.createElement(gt,{icon:"close",containerStyle:{width:"20px",position:"absolute",right:"5px",top:"5px",cursor:"pointer"},width:20,height:20,color:R.darkGray,onClick:X})),a.a.createElement(Ot,{onClick:function(){return c(D)},style:{marginLeft:"4px",marginRight:"4px"}},"Search"),a.a.createElement(gt,{color:G===ql?R.black:R.blue,icon:"view-grid",onClick:function(){return q(ql)},width:"20",height:"20"}),a.a.createElement(gt,{color:G===Wl?R.black:R.blue,icon:"format-list-bulleted",onClick:function(){return q(Wl)},width:"20",height:"20"}))),a.a.createElement("div",null,a.a.createElement("div",{className:"neko-media-library-modal-content-body"},a.a.createElement(g,{busy:s},a.a.createElement("div",{className:"".concat(G===ql?"neko-media-library-modal-content-body-gallery":"neko-media-library-modal-content-body-list")},G===ql&&w&&x,G===ql?V:Z)),a.a.createElement("div",{className:"neko-media-library-modal-content-body-selected-gallery"},K))),a.a.createElement("div",{className:"neko-media-library-modal-content-footer"},a.a.createElement(Jo,{limit:f,currentPage:d,total:p,onClick:m}),a.a.createElement("div",{style:{display:"flex"}},!!z&&a.a.createElement(Ot,{onClick:function(){return z()}},"Close"),!!N&&a.a.createElement(Ot,{className:"danger",onClick:function(){return N()}},"Cancel"),!!I&&a.a.createElement(Ot,{onClick:function(){return I()}},"Save")))))))},Yl=function(e){return a.a.createElement($l,e)};function Kl(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return Vl(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Vl(e,n)}(e,n)||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 Vl(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function Jl(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}Yl.propTypes={images:u.a.array,onNextPage:u.a.func,onPreviousPage:u.a.func,onRefresh:u.a.func,onClick:u.a.func,onSearch:u.a.func,searchValue:u.a.string,busy:u.a.bool,currentPage:u.a.number,limit:u.a.number,total:u.a.number,onPageChange:u.a.func,multiSelect:u.a.bool,selected:u.a.array,onClose:u.a.func,onCancel:u.a.func,onSave:u.a.func},Yl.defaultProps={multiSelect:!1};var Xl=y.a.div(Ml||(Ml=Jl(["\n"]))),Zl=y.a.div(Bl||(Bl=Jl(["\n display: flex;\n"]))),Ql=y.a.button(Fl||(Fl=Jl(["\n font-family: ",";\n font-size: ",";\n border-radius: 8px 8px 0px 0px;\n border: 0;\n background-color: #459ad2;\n color: rgb(255 255 255 / 65%);\n display: flex;\n align-items: center;\n\n cursor: pointer;\n line-height: 17px;\n margin: 0 5px 0 0;\n text-align: left;\n padding: 10px 15px 10px 15px;\n\n &:focus {\n outline: none;\n }\n\n &.active {\n background-color: ",";\n color: ",";\n }\n\n &.disabled {\n background-color: rgb(224 156 54);\n cursor: default;\n display: inline-flex;\n padding-bottom: 7px;\n }\n\n &.hidden {\n display: none;\n }\n"])),R.fontFamily,R.fontSizeText,R.blue,R.white),ec=y.a.div(Ll||(Ll=Jl(["\n background-color: ",";\n display: none;\n padding: 10px;\n\n &.active {\n display: block;\n }\n"])),R.blue),nc=function(e){var n=Kl(a.a.useState(0),2),t=n[0],r=n[1],o=e.children?e.children.length?e.children.filter((function(e){return!!e})):[e.children]:[];a.a.useEffect((function(){if(e.keepTabOnReload){var n=new URL(window.location.href).searchParams.get("nekoTab");if(!n)return r(0),void(e.callOnTabChangeFirst&&c(0,i[0]));var t=decodeURIComponent(n),l=a.a.Children.toArray(o).map((function(e){return e.props.title.replaceAll(" ","")})).indexOf(t);return-1===l?(r(0),void(e.callOnTabChangeFirst&&c(0,i[0]))):(r(l),void(e.callOnTabChangeFirst&&c(l,i[l])))}r(0),e.callOnTabChangeFirst&&c(0,i[0])}),[]);var i=a.a.Children.map(o,(function(n,t){var r=n.props.title||"Untitled Tab "+(t+1);return{key:n.props.key||"neko-tab-"+r.toLowerCase(),title:r,onClick:n.props.onClick?n.props.onClick:null,requirePro:!e.isPro&&(n.props.requirePro||!1),hidden:n.props.hidden||!1,icon:n.props.icon||!1}})),l=a.a.Children.map(o,(function(e,n){var o=n===t,i=e.props.hidden;return o&&i&&r(0),a.a.cloneElement(e,{isActive:o&&!i})})),c=function(n,t,a){t.requirePro||(r(n),e.onChange&&e.onChange(n,t,a),e.keepTabOnReload&&function(e){if(history.pushState&&"string"==typeof e){var n=new URLSearchParams(window.location.search),t=encodeURIComponent(e.replaceAll(" ",""));n.set("nekoTab",t);var r=window.location.protocol+"//"+window.location.host+window.location.pathname+"?"+n.toString();window.history.replaceState({path:r},"",r)}}(t.title))};return a.a.createElement(Xl,null,a.a.createElement(Zl,null,i.map((function(e,n){return a.a.createElement(Ql,{key:e.key,className:"neko-tab-title ".concat(n===t?"active":""," ").concat(e.requirePro?"disabled":""," ").concat(e.hidden?"hidden":""),onClick:function(t){c(n,e,t)}},e.icon&&a.a.createElement(gt,{icon:e.icon,width:15,height:15,style:{marginRight:"2px"},raw:!0}),e.title,a.a.createElement(_t,{className:"inline",style:{marginLeft:10,marginRight:-5,top:-1},show:e.requirePro}))}))),l)},tc=function(e){var n=e.children,t=e.isActive;return a.a.createElement(ec,{className:"".concat(t?"active":"")},!!t&&n)},rc=function(e){return a.a.createElement(nc,e)};rc.propTypes={isPro:u.a.bool,onChange:u.a.func},rc.defaultProps={isPro:!1,onChange:void 0};var ac,oc,ic,lc=function(e){return a.a.createElement(tc,e)};function cc(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return uc(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return uc(e,n)}(e,n)||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 uc(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function sc(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}lc.propTypes={isActive:u.a.bool,requirePro:u.a.bool,title:u.a.string,icon:u.a.string},lc.defaultProps={isActive:!1,requirePro:!1,title:void 0,icon:void 0};var dc=y.a.div(ac||(ac=sc(["\n"]))),fc=y.a.div(oc||(oc=sc(["\n align-items: center;\n background-color: ",";\n border: 0;\n cursor: pointer;\n display: flex;\n padding: 2px 3px 2px 19px;\n\n &.disabled {\n background-color: rgba(",", 0.25);\n cursor: default;\n }\n\n p {\n color: ",";\n font-family: ",";\n font-size: 14px;\n line-height: 17px;\n margin: 0;\n }\n\n .neko-side-tab-icon {\n color: ",";\n margin-left: auto;\n height: 36px;\n width: 36px;\n }\n"])),R.blue,R.yellowRGB,R.white,R.fontFamily,R.white),pc=y.a.div(ic||(ic=sc(["\n background-color: ",";\n display: none;\n\n &.active {\n display: block;\n }\n"])),R.white),mc=function(e){var n=cc(a.a.useState(e.activeTabIndex),2),t=n[0],r=n[1],o=a.a.Children.map(e.children,(function(n,t){var r=n.props.title||"Untitled Tab "+(t+1);return{key:n.props.key||"neko-tab-"+r.toLowerCase(),title:r,onClick:n.props.onClick?n.props.onClick:null,requirePro:!e.isPro&&(n.props.requirePro||!1),onDragOver:n.props.onDragOver,onDrop:n.props.onDrop,rightActions:n.props.rightActions||null}})),i=a.a.Children.map(e.children,(function(e,n){return a.a.cloneElement(e,{isActive:n===t})}));return a.a.createElement(dc,null,o.map((function(n,o){return a.a.createElement(a.a.Fragment,null,a.a.createElement(fc,{key:n.key,className:"".concat(o===t?"active":""," ").concat(n.requirePro?"disabled":""),onClick:function(a){!function(n,a,o){if(!a.requirePro){var i=n===t?null:n;r(i),e.onChange&&e.onChange(i,a,o)}}(o,n,a)},onDragOver:n.onDragOver,onDrop:n.onDrop},a.a.createElement("p",null,a.a.createElement("span",{style:{fontSize:15}},n.title),a.a.createElement(_t,{className:"inline",show:n.requirePro})),null===n.rightActions?a.a.createElement(P.Icon,{icon:o===t?Z.a:J.a,className:"neko-side-tab-icon"}):o===t?a.a.createElement("div",{style:{marginLeft:"auto"}},n.rightActions):a.a.createElement(P.Icon,{icon:J.a,className:"neko-side-tab-icon"})),i[o])})))},bc=function(e){var n=e.children,t=e.isActive;return a.a.createElement(pc,{className:"".concat(t?"active":"")},n)},hc=function(e){return a.a.createElement(mc,e)};hc.propTypes={isPro:u.a.bool,onChange:u.a.func,activeTabIndex:u.a.number},hc.defaultProps={isPro:!1,onChange:void 0,activeTabIndex:null};var gc=function(e){return a.a.createElement(bc,e)};gc.propTypes={isActive:u.a.bool,requirePro:u.a.bool,title:u.a.string,onDragOver:u.a.func,onDrop:u.a.func,rightActions:u.a.element},gc.defaultProps={isActive:!1,requirePro:!1,title:void 0,onDragOver:void 0,onDrop:void 0,rightActions:void 0};var yc,vc=["align"];function wc(){return(wc=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function xc(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var Ec=y.a.div(yc||(yc=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n box-sizing: border-box;\n display: flex;\n width: 100%;\n padding: 10px 10px;\n background: ",";\n border-radius: 10px;\n box-shadow: 0px 0px 10px rgba(",", 0.1);\n\n &.neko-align-left {\n justify-content: flex-start;\n }\n\n &.neko-align-right {\n justify-content: flex-end;\n }\n\n > *:not(:last-child) {\n margin-right: 5px;\n }\n"])),R.white,R.blackRGB),kc=function(e){var n=e.align,t=void 0===n?"left":n,r=xc(e,vc);return a.a.createElement(Ec,wc({className:"neko-align-".concat(t)},r),r.children)},Oc=function(e){return a.a.createElement(kc,e)};Oc.propTypes={align:u.a.oneOf(["left","right"])},Oc.defaultProps={align:"left"};var jc,Sc,Rc,Pc,Cc,Ac=mgcl_gallery_custom_links.prefix,zc=mgcl_gallery_custom_links.domain,Nc=mgcl_gallery_custom_links.rest_url.replace(/\/+$/,""),Ic=mgcl_gallery_custom_links.api_url.replace(/\/+$/,""),Tc=mgcl_gallery_custom_links.plugin_url.replace(/\/+$/,""),_c="1"===mgcl_gallery_custom_links.is_pro,Dc=_c&&"1"===mgcl_gallery_custom_links.is_registered,Mc=mgcl_gallery_custom_links.rest_nonce;function Bc(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var Fc=y.a.div(jc||(jc=Bc(["\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"]))),Lc=Object(y.a)(wr)(Sc||(Sc=Bc(["\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"]))),Uc=y.a.img(Rc||(Rc=Bc(["\n width: 85px;\n height: 85px;\n padding-right: 10px;\n"]))),Gc=y.a.div(Pc||(Pc=Bc(["\n\n margin: 15px;\n\n .center {\n background: white;\n border-radius: 10px;\n padding: 10px;\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"]))),qc=y.a.ul(Cc||(Cc=Bc(["\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 Wc(e){return function(e){if(Array.isArray(e))return Vc(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Kc(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 Hc(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function $c(e){return function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){Hc(o,r,a,i,l,"next",e)}function l(e){Hc(o,r,a,i,l,"throw",e)}i(void 0)}))}}function Yc(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||Kc(e,n)||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 Kc(e,n){if(e){if("string"==typeof e)return Vc(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Vc(e,n):void 0}}function Vc(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var Jc=wp.element,Xc=Jc.useState,Zc=Jc.useEffect,Qc="".concat(Nc,"/meow-common/v1"),eu=function(e){var n=e.request,t=e.title,r=e.max,a=Yc(Xc(!1),2),o=a[0],i=a[1],l=Yc(Xc([]),2),c=l[0],u=l[1],s=c.length>0?c.reduce((function(e,n){return e+n})):0,d=c.length>0?Math.ceil(s/c.length):0,f=!c.length&&o;Zc((function(){o&&setTimeout($c(regeneratorRuntime.mark((function e(){var t,r,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=(new Date).getTime(),e.next=3,Yn("".concat(Qc,"/").concat(n),{nonce:Mc});case 3:r=(new Date).getTime(),a=r-t,u((function(e){return[].concat(Wc(e),[a])}));case 6:case"end":return e.stop()}}),e)}))),1e3)}),[c]);return React.createElement(Fc,{style:{width:200,textAlign:"center"}},React.createElement(br,{h2:!0,style:{color:"white"}},t),React.createElement(ci,{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":c.length+" requests")),React.createElement(Ot,{style:{width:"100%",marginTop:10},color:o?"#cc3627":"#ccb027",onClick:function(){o||u([]),i(!o)}},o?"Stop":"Start"))};function nu(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function tu(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?nu(Object(t),!0).forEach((function(n){ru(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):nu(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function ru(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function au(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function ou(e){return function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){au(o,r,a,i,l,"next",e)}function l(e){au(o,r,a,i,l,"throw",e)}i(void 0)}))}}function iu(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return lu(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return lu(e,n)}(e,n)||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 lu(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var cu=wp.element,uu=cu.useState,su=cu.useEffect;Ic&&Nc&&Tc||console.error("[@common/dashboard] apiUrl, restUrl and pluginUrl are mandatory.");var du="".concat(Nc,"/meow-common/v1"),fu=React.createElement(Fc,null,React.createElement(br,{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"),".")),pu=React.createElement(Fc,null,React.createElement(br,{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(br,{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"),".")),mu=React.createElement(Fc,null,React.createElement(br,{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(br,{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(br,{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"))))),bu=["".concat(du,"/all_settings/"),{headers:{"X-WP-Nonce":Mc}}],hu=function(){var e=iu(uu(!1),2),n=e[0],t=e[1],r=Object(l.a)(bu,$n),a=r.data,o=r.mutate,i=r.error,c=null==a?void 0:a.data,u=null==c?void 0:c.meowapps_hide_meowapps,s=null==c?void 0:c.force_sslverify,d=iu(uu(!1),2),f=d[0],p=d[1],m=iu(uu([]),2),b=m[0],h=m[1],g=iu(uu(""),2),y=g[0],v=g[1];su((function(){i&&!n&&(t(!0),console.error("Error from UseSWR",i.message))}),[i]),su((function(){var e=document.getElementById("meow-common-phpinfo");v(e.innerHTML)}),[]);var w=function(){var e=ou(regeneratorRuntime.mark((function e(n,t){var r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(r=tu({},a.data))[t]=n,o(tu(tu({},a),{},{data:r}),!1),p(!0),e.next=6,Yn("".concat(du,"/update_option"),{json:{name:t,value:n},nonce:Mc});case 6:i=e.sent,p(!1),i.success||alert(i.message),o();case 10:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}(),x=function(){var e=ou(regeneratorRuntime.mark((function e(){var n,t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return p(!0),e.next=3,Yn("".concat(du,"/error_logs"),{nonce:Mc});case 3:n=e.sent,t=n&&n.data?n.data:[],h(t.reverse()),p(!1);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),E=React.createElement(Ar,{title:"Main Menu"},React.createElement(ra,{max:"1"},React.createElement(na,{id:"meowapps_hide_meowapps",label:"Hide (Not Recommended)",description:React.createElement(br,{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:f,checked:u,onChange:w}))),k=React.createElement(Ar,{title:"SSL Verify"},React.createElement(ra,{max:"1"},React.createElement(na,{id:"force_sslverify",label:"Force (Not Recommended)",description:React.createElement(br,{p:!0},"This will enforce the usage of SSL when checking the license or updating the plugin."),value:"1",disabled:f,checked:s,onChange:w})));return React.createElement(Qt,{showRestError:n},React.createElement(qo,{title:"The Dashboard"}),React.createElement($r,null,React.createElement(Yr,{full:!0},React.createElement(rc,null,React.createElement(lc,{title:"Meow Apps"},fu,React.createElement($r,null,React.createElement(Yr,{minimal:!0},React.createElement(Lc,{title:"Media Cleaner",className:"primary"},React.createElement(Uc,{src:"".concat(Tc,"/common/img/media-cleaner.png")}),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(Lc,{title:"Database Cleaner",className:"primary"},React.createElement(Uc,{src:"".concat(Tc,"/common/img/database-cleaner.png")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/database-cleaner/"},"Database Cleaner")),React.createElement("p",null,"Clean your WordPress database. This plugin is simple, handles risk levels, and aims to work even on oversized databases on which other plugins fail to operate."))),React.createElement(Lc,{title:"Media File Renamer",className:"primary"},React.createElement(Uc,{src:"".concat(Tc,"/common/img/media-file-renamer.png")}),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(Lc,{title:"Social Engine",className:"primary"},React.createElement(Uc,{src:"".concat(Tc,"/common/img/social-engine.png")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/social-engine/"},"Social Engine")),React.createElement("p",null,"Organize, schedule and automate the publishing of your content and photos on social accounts. Similar to Buffer, TweetDeck, etc, but without all the limitations, and in your WordPress."))),React.createElement(Lc,{title:"Meow Analytics",className:"primary"},React.createElement(Uc,{src:"".concat(Tc,"/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(Yr,{minimal:!0},React.createElement(Lc,{title:"Photo Engine",className:"primary"},React.createElement(Uc,{src:"".concat(Tc,"/common/img/wplr-sync.png")}),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(Lc,{title:"Meow Gallery",className:"primary"},React.createElement(Uc,{src:"".concat(Tc,"/common/img/meow-gallery.png")}),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(Lc,{title:"Meow Lightbox",className:"primary"},React.createElement(Uc,{src:"".concat(Tc,"/common/img/meow-lightbox.png")}),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(Lc,{title:"Perfect Images (Retina)",className:"primary"},React.createElement(Uc,{src:"".concat(Tc,"/common/img/wp-retina-2x.png")}),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(Lc,{title:"Contact Form Block",className:"primary"},React.createElement(Uc,{src:"".concat(Tc,"/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(lc,{title:"Performance"},pu,React.createElement("div",{style:{display:"flex",justifyContent:"space-around",marginBottom:25}},React.createElement(eu,{title:"Empty Request Time",request:"empty_request",max:2500}),React.createElement(eu,{title:"File Operation Time",request:"file_operation",max:2600}),React.createElement(eu,{title:"SQL Request Time",request:"sql_request",max:2800}))),React.createElement(lc,{title:"Recommendations"},mu),React.createElement(lc,{title:"PHP Info"},React.createElement(Gc,{dangerouslySetInnerHTML:{__html:y}})),React.createElement(lc,{title:"PHP Error Logs"},React.createElement(Fc,null,React.createElement(Ot,{style:{marginBottom:10},color:"#ccb027",onClick:x},"Load PHP Error Logs"),React.createElement(qc,null,b.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(lc,{title:"Settings"},React.createElement(wr,{title:"Settings",className:"primary"},E,k))))))};function gu(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function yu(e){return function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){gu(o,r,a,i,l,"next",e)}function l(e){gu(o,r,a,i,l,"throw",e)}i(void 0)}))}}function vu(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return wu(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return wu(e,n)}(e,n)||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 wu(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var xu=wp.element,Eu=xu.useState,ku=xu.useEffect,Ou="".concat(Nc,"/meow-licenser/").concat(Ac,"/v1"),ju=function(){var e=vu(Eu(!1),2),n=e[0],t=e[1],r=vu(Eu(!1),2),a=r[0],o=r[1],i=vu(Eu(null),2),l=i[0],c=i[1],u=vu(Eu(null),2),s=u[0],d=u[1],f=vu(Eu(""),2),p=f[0],m=f[1],b=Dc&&(!s||"valid"!==s.license),h=function(){var e=yu(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(_c){e.next=2;break}return e.abrupt("return");case 2:return t(!0),e.next=5,Yn("".concat(Ou,"/get_license"),{nonce:Mc});case 5:n=e.sent,d(n.data),n.data.key&&m(n.data.key),t(!1);case 9:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),g=function(){var e=yu(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t(!0),e.next=3,Yn("".concat(Ou,"/set_license"),{nonce:Mc,json:{serialKey:null}});case 3:e.sent.success&&(m(""),d(null),c("licenseRemoved")),t(!1);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),y=function(){var e=yu(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t(!0),e.next=3,Yn("".concat(Ou,"/set_license"),{nonce:Mc,json:{serialKey:p,override:!0}});case 3:(n=e.sent).success&&(d(n.data),n.data&&!n.data.issue&&c("licenseAdded")),t(!1);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),v=function(){var e=yu(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("MEOW_OVERRIDE"!==p){e.next=5;break}return o(!0),d(null),m(""),e.abrupt("return");case 5:return t(!0),e.next=8,Yn("".concat(Ou,"/set_license"),{nonce:Mc,json:{serialKey:p}});case 8:(n=e.sent).success&&(d(n.data),n.data&&!n.data.issue&&c("licenseAdded")),t(!1);case 11:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();ku((function(){h()}),[]);var w=b?"Forced License":Dc?"Enabled":"Disabled",x=b||s&&"valid"===s.license,E="Your license is active. Thanks a lot for your support :)";b&&s&&s.check_url&&(E=React.createElement(React.Fragment,null,React.createElement("span",null,E),React.createElement("br",null),React.createElement("small",null,"This license was enabled manually. To check your license status, please click ",React.createElement("a",{target:"_blank",href:s.check_url+"&cache="+642e3*Math.random()},"here"),"."))),x||(s?"no_activations_left"===s.issue?E=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://meowapps.com"},"Meow Apps Store"),", unregister a site, and click on ",React.createElement("i",null,"Retry to validate"),"."):"expired"===s.issue?E=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://meowapps.com"},"Meow Apps Store"),"."):"missing"===s.issue?E="This license does not exist.":"disabled"===s.issue?E="This license has been disabled.":"item_name_mismatch"===s.issue?E="This license seems to be for a different plugin... isn't it? :)":"forced"===s.issue?E="ABC":(E=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:s})):E="Unknown error :(");var k=React.createElement(wr,{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://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://meowapps.com/"},"Meow Apps Store"),"."),O=React.createElement(wr,{title:"Pro Version (".concat(w,")"),busy:n,className:"primary"},React.createElement(Ar,{title:"Serial Key",style:{fontWeight:"bold"}},React.createElement(da,{id:"mfrh_pro_serial",name:"mfrh_pro_serial",disabled:n,value:p,onChange:function(e){return m(e)},placeholder:""})),s&&!x&&React.createElement(di,null,E),s&&x&&React.createElement(fi,null,E),!s&&React.createElement(br,{p:!0},"Insert your serial key above. If you don't have one yet, you can get one ",React.createElement("a",{href:"https://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(Ar,{contentAlign:"right"},s&&!x&&React.createElement(Ot,{className:"secondary",disabled:n||!p,onClick:v},"Retry to validate"),s&&s.key===p&&React.createElement(Ot,{className:"secondary",disabled:n||!p,onClick:g},"Remove License"),React.createElement(Ot,{disabled:n||!p||s&&s.key===p,onClick:v},"Validate License"),a&&!x&&React.createElement(Ot,{disabled:n||!p||s&&s.key===p,onClick:y,className:"danger"},"Force License")),React.createElement(bl,{isOpen:"licenseAdded"===l,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(bl,{isOpen:"licenseRemoved"===l,title:"Goodbye :(",content:"The Pro features have been disabled. This page should be now reloaded.",ok:"Reload",onOkClick:function(){return location.reload()}}));return _c?O:k},Su=wp.element.render;function Ru(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function Pu(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?Ru(Object(t),!0).forEach((function(n){Cu(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Ru(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function Cu(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function Au(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function zu(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return Nu(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Nu(e,n)}(e,n)||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 Nu(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}document.meowDashboardLoaded||(document.meowDashboardLoaded=!0,document.addEventListener("DOMContentLoaded",(function(e){var n=document.getElementById("meow-common-dashboard");n&&Su(React.createElement(hu,null),n)})));var Iu=wp.element,Tu=Iu.useState,_u=Iu.useMemo,Du=function(){var e=_u((function(){return["".concat(Ic,"/all_settings/"),{headers:{"X-WP-Nonce":Mc}}]}),[Ic,Mc]),n=Object(l.a)(e,$n),t=n.data,a=n.mutate,o=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,t=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=Object(r.useState)(n),o=Kn(a,2),i=o[0],l=o[1],c=Object(r.useState)(null),u=Kn(c,2),s=u[0],d=u[1],f=Object(r.useState)(t),p=Kn(f,2),m=p[0],b=p[1],h=Object(r.useState)(0),g=Kn(h,2),y=g[0],v=g[1];return Object(r.useEffect)((function(){void 0!==e&&(e.success?(d(null),l(e.data),v(e.total?e.total:0)):d(e.error)),b(void 0===e)}),[e]),{busy:m,data:i,total:y,error:s}}(t,{},!0),i=o.busy,c=o.data,u=o.error,s=zu(Tu(!1),2),d=s[0],f=s[1],p=i||d,m=null==c?void 0:c.mgcl_obmode,b=null==c?void 0:c.mgcl_parsing_engine,h=null==c?void 0:c.mgcl_log,g=null==c?void 0:c.mgcl_button_enabled,y=null==c?void 0:c.mgcl_button_label,v=function(){var e,n=(e=regeneratorRuntime.mark((function e(n,r){var o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(o=Pu({},t.data))[r]=n,a(Pu(Pu({},t),{},{data:o}),!1),f(!0),e.prev=4,e.next=7,Yn("".concat(Ic,"/update_option"),{json:{name:r,value:n},nonce:Mc});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,f(!1),a(),e.finish(12);case 16:case"end":return e.stop()}}),e,null,[[4,9,12,16]])})),function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){Au(o,r,a,i,l,"next",e)}function l(e){Au(o,r,a,i,l,"throw",e)}i(void 0)}))});return function(e,t){return n.apply(this,arguments)}}(),w=React.createElement(Ar,{title:"OB Mode"},React.createElement(ra,{max:"1"},React.createElement(na,{id:"mgcl_obmode",label:"Enabled",value:"1",checked:m,onChange:v,description:"If the linked images are outside of the main content (header, sidebar, etc), OB Mode is needed. This slows down the processing (cache recommended)."}))),x=React.createElement(Ar,{title:"Parsing Engine",description:"Hello"},React.createElement($a,{id:"mgcl_parsing_engine",onChange:v},[{id:"none",value:"None",label:"None (Not Supported Yet)"},{id:"htmldomparser",value:"HtmlDomParser",label:"HtmlDomParser"},{id:"didom",value:"DiDom",label:"DiDom"}].map((function(e){return React.createElement(Ka,{id:"mgcl_parsing_engine_".concat(e.id),value:e.value,label:e.label,checked:b===e.value})})))),E=React.createElement(Ar,{title:"Logs"},React.createElement(ra,{max:"1"},React.createElement(na,{id:"mgcl_log",label:"Logs",value:"1",checked:h,onChange:v,description:"Simple logging, written directly in the PHP Error Logs."}))),k=React.createElement(Ar,{title:"Use Buttons"},React.createElement(ra,{max:"1"},React.createElement(na,{id:"mgcl_button_enabled",label:"Enabled",value:"1",description:"A call-to-action button will be used of a clickable image.",checked:g,onChange:v}))),O=React.createElement(Ar,{title:"Label"},React.createElement(da,{id:"mgcl_button_label",name:"mgcl_button_label",value:y,description:"A call-to-action button will be used of a clickable image.",onBlur:v}));return React.createElement(Qt,{nekoErrors:[u]},React.createElement(qo,{title:"Gallery Custom Links | Settings",subtitle:"By Jordy Meow"}),React.createElement($r,null,React.createElement(Yr,{full:!0},React.createElement(Sr,null,React.createElement(br,{p:!0},"This plugin works out of the box, the default settings are the best for most installs. Don't hesitate to take a look at the ",React.createElement("a",{target:"_blank",href:"https://meowapps.com/plugin/gallery-custom-links/"},"official page"),". ",React.createElement("b",null,"If you are interested in the Pro Version, it's ",React.createElement("a",{target:"_blank",href:"https://meowapps.com/products/gallery-custom-links-pro/"},"here!"))," 💕")),React.createElement(rc,null,React.createElement(lc,{title:"Settings"},React.createElement($r,null,React.createElement(Yr,{minimal:!0},React.createElement(wr,{busy:p,title:"Settings",className:"primary"},x,w,E)),React.createElement(Yr,{minimal:!0},React.createElement(wr,{busy:p,title:"CTA Buttons",className:"primary"},React.createElement(br,{p:!0},React.createElement("b",null,"Currently works with the ",React.createElement("a",{href:"https://wordpress.org/plugins/meow-gallery/"},"Meow Gallery")," and Gutenberg Galleries.")," In a future Pro version, support for additional galleries might be added (please contact ",React.createElement("a",{href:"https://meowapps.com/contact/"},"Meow Apps")," for this)."),k,g?O:null)))),React.createElement(lc,{title:"License"},React.createElement(ju,{domain:zc,prefix:Ac,isPro:_c,isRegistered:Dc}))))))},Mu=wp.i18n.__,Bu={};Bu.PENDING=Mu("Pending","gallery-custom-links"),Bu.RENAME=Mu("Rename","gallery-custom-links"),Bu.TITLE=Mu("Title","gallery-custom-links"),Bu.SAME_PAGE=Mu("Same page","gallery-custom-links"),Bu.NEW_PAGE=Mu("New page","gallery-custom-links"),Bu.LINK_URL=Mu("Link URL","gallery-custom-links"),Bu.LINK_TARGET=Mu("Link Target","gallery-custom-links"),Bu.LINK_REL=Mu("Link Rel","gallery-custom-links"),Bu.ARIAL_LABEL=Mu("Arial Label","gallery-custom-links");var Fu,Lu=Bu;function Uu(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function Gu(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return qu(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return qu(e,n)}(e,n)||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 qu(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var Wu=wp.element,Hu=Wu.useState,$u=Wu.useCallback,Yu=[{label:Lu.SAME_PAGE,value:"_self"},{label:Lu.NEW_PAGE,value:"_blank"}],Ku=y.a.div(Fu||(Fu=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n\talign-items: center;\n\tdisplay: flex;\n\tmargin-bottom: 10px;\n\n\tp {\n\t\tmargin: 0 !important;\n\t\twidth: 20%;\n\t}\n\n\t> div {\n\t\tflex-grow: 1;\n\t}\n"]))),Vu=function(e){var n=Gu(Hu(!1),2),t=n[0],r=n[1],a=t,o=e.postId,i=Gu(Hu(e.url),2),l=i[0],c=i[1],u=Gu(Hu(e.target?e.target:"_self"),2),s=u[0],d=u[1],f=Gu(Hu(e.rel),2),p=f[0],m=f[1],b=Gu(Hu(e.aria),2),h=b[0],g=b[1],y=Gu(Hu(!1),2),v=y[0],w=y[1],x=function(){var e,n=(e=regeneratorRuntime.mark((function e(n,t,a,o,i){var l,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r(!0),l=!0,e.prev=2,e.next=5,Yn("".concat(Ic,"/update_meta"),{json:{post_id:n,_gallery_link_url:t,_gallery_link_target:a,_gallery_link_rel:o,_gallery_link_aria:i},nonce:Mc});case 5:(c=e.sent).success||(l=!1,alert(c.message)),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),l=!1,alert(e.t0.message);case 13:return e.prev=13,l&&E(),r(!1),e.finish(13);case 17:case"end":return e.stop()}}),e,null,[[2,9,13,17]])})),function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){Uu(o,r,a,i,l,"next",e)}function l(e){Uu(o,r,a,i,l,"throw",e)}i(void 0)}))});return function(e,t,r,a,o){return n.apply(this,arguments)}}(),E=function(){return w(!1)},k=$u((function(){x(o,l,s,p,h)}),[o,l,s,p,h,x,E]),O=$u((function(e){"Enter"!==e.key&&13!==e.keyCode||(e.preventDefault(),k())}),[k]);return React.createElement(React.Fragment,null,React.createElement("span",{onClick:function(){return w(!0)},style:{cursor:"pointer"}},React.createElement(gt,{icon:"link",disabled:!l})),React.createElement(bl,{isOpen:v,onRequestClose:E,title:"Edit the custom link",content:React.createElement("div",null,React.createElement(Ku,null,React.createElement(br,{p:!0},Lu.LINK_URL),React.createElement(da,{disabled:a,onInput:function(e){return c(e.target.value)},onKeyDown:O,value:l,autoFocus:!0})),React.createElement(Ku,null,React.createElement(br,{p:!0},Lu.LINK_TARGET),React.createElement($a,{scrolldown:!0,value:s,onChange:function(e){return d(e)},disabled:a},Yu.map((function(e){return React.createElement(Ka,{value:e.value,label:e.label})})))),React.createElement(Ku,null,React.createElement(br,{p:!0},Lu.LINK_REL),React.createElement(da,{disabled:a,onInput:function(e){return m(e.target.value)},value:p})),React.createElement(Ku,null,React.createElement(br,{p:!0},Lu.ARIAL_LABEL),React.createElement(da,{disabled:a,onInput:function(e){return g(e.target.value)},value:h}))),onOkClick:k,onCancelClick:E}))},Ju=null;document.addEventListener("DOMContentLoaded",(function(e){var n;(Ju=document.getElementsByClassName("upload-php")[0],(n=document.getElementById("mgcl-admin-settings"))&&(i.a.render(a.a.createElement(Du,null),n),1)||!Ju)||Array.from(document.getElementsByClassName("mgcl-edit-link-field")).forEach((function(e){var n=e.getAttribute("data-post-id"),t=e.getAttribute("data-url"),r=e.getAttribute("data-target"),o=e.getAttribute("data-rel"),l=e.getAttribute("data-aria");i.a.render(a.a.createElement(Vu,{postId:n,url:t,target:r,rel:o,aria:l}),e)}))}))}});
2
  //# sourceMappingURL=index.js.map
1
+ !function(e){function n(n){for(var r,i,l=n[0],c=n[1],u=n[2],d=0,p=[];d<l.length;d++)i=l[d],Object.prototype.hasOwnProperty.call(a,i)&&a[i]&&p.push(a[i][0]),a[i]=0;for(r in c)Object.prototype.hasOwnProperty.call(c,r)&&(e[r]=c[r]);for(s&&s(n);p.length;)p.shift()();return o.push.apply(o,u||[]),t()}function t(){for(var e,n=0;n<o.length;n++){for(var t=o[n],r=!0,l=1;l<t.length;l++){var c=t[l];0!==a[c]&&(r=!1)}r&&(o.splice(n--,1),e=i(i.s=t[0]))}return e}var r={},a={0:0},o=[];function i(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.m=e,i.c=r,i.d=function(e,n,t){i.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,n){if(1&n&&(e=i(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var r in e)i.d(t,r,function(n){return e[n]}.bind(null,r));return t},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.p="";var l=window.wpJsonMgcl=window.wpJsonMgcl||[],c=l.push.bind(l);l.push=n,l=l.slice();for(var u=0;u<l.length;u++)n(l[u]);var s=c;o.push([101,1]),t()}({0:function(e,n){e.exports=React},10:function(e,n){e.exports=ReactDOM},101:function(e,n,t){"use strict";t.r(n);var r=t(0),a=t.n(r),o=t(10),i=t.n(o),l=t(21),c=t(1),u=t.n(c);function s(){return(s=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function d(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function p(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?d(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):d(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function f(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function m(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return b(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return b(e,n)}(e,n)||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 b(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var h=function(e){var n=e.spinner,t=void 0===n||n,o=e.busy,i=void 0!==o&&o,l=e.overlayStyle,c=m(Object(r.useState)(!0),2),u=c[0],d=c[1];Object(r.useEffect)((function(){var e;return i?d(!0):e=setTimeout((function(){d(!1),e=null}),250),function(){e&&clearTimeout(e)}}),[i]);var f=u?a.a.createElement(a.a.Fragment,null,a.a.createElement("div",{className:"overlay "+(i?"":"overlayHidden"),style:l},Boolean(t)&&a.a.createElement("div",{className:"lds-ellipsis "+(i?"":"spinnerHidden")},a.a.createElement("div",null),a.a.createElement("div",null),a.a.createElement("div",null),a.a.createElement("div",null))),a.a.createElement("style",{jsx:!0},"\n .overlay {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n background: rgb(30 124 186 / 85%);\n transition: opacity 1s ease-out;\n z-index: 10;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n }\n\n .overlayHidden {\n opacity: 0;\n transition: opacity 0.25s ease-out;\n }\n .spinnerHidden {\n opacity: 0;\n transition: opacity 0.25s ease-out;\n }\n .lds-ellipsis {\n position: relative;\n width: 80px;\n height: 80px;\n display: flex;\n justify-items: center;\n align-items: center;\n }\n .lds-ellipsis div {\n position: absolute;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: white;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n }\n .lds-ellipsis div:nth-child(1) {\n left: 8px;\n animation: lds-ellipsis1 0.6s infinite;\n }\n .lds-ellipsis div:nth-child(2) {\n left: 8px;\n animation: lds-ellipsis2 0.6s infinite;\n }\n .lds-ellipsis div:nth-child(3) {\n left: 32px;\n animation: lds-ellipsis2 0.6s infinite;\n }\n .lds-ellipsis div:nth-child(4) {\n left: 56px;\n animation: lds-ellipsis3 0.6s infinite;\n }\n @keyframes lds-ellipsis1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n }\n @keyframes lds-ellipsis3 {\n 0% {\n transform: scale(1);\n }\n 100% {\n transform: scale(0);\n }\n }\n @keyframes lds-ellipsis2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n } \n ")):null,b=p(p({},e),{},{busy:void 0,spinner:void 0});return a.a.createElement("div",s({style:{position:"relative"}},b),f,e.children)};h.propTypes={busy:u.a.bool.isRequired,spinner:u.a.bool,children:u.a.oneOfType([u.a.arrayOf(u.a.node),u.a.node]).isRequired};var g=h,y=t(2),v=t(4);function w(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function E(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?w(Object(t),!0).forEach((function(n){k(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):w(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function k(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}var O,j={black:"#000000",blackRGB:"0, 0, 0",blue:"#007cba",blueRGB:"0, 124, 186",blueDisabled:"#459ad2",deepBlue:"#134575",deepBlueDisabled:"#446687",finderBorder:"#DEDEDE",lightBlue:"#EBF3FF",lightGray:"#cacaca",lightGray2:"#F5F5F5",lightPurple:"#D8B1FF",gray:"#E8E8E8",green:"#0EA480",darkGray:"#A0A0A0",disabledForm:"#828282",orange:"#daa827",overlay:"rgba(16, 16, 16, 0.92)",red:"#ba4300",redHighlight:"#de5307",header:"#007cba",proGray:"#7F8EA0",progress:"#8414a8",purple:"#956DBE",tableGray:"#FAFAFA",yellow:"#e4b42b",yellowRGB:"224, 156, 54",white:"#ffffff",whiteRGB:"255, 255, 255"},S={danger:j.red,primary:j.blue,secondary:j.lightBlue,success:j.green},P=E(E(E({},j),S),{},{fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell,"Helvetica Neue", sans-serif',fontSizeH1:"24px",fontSizeH2:"18px",fontSizeText:"13px",fontSizeSmall:"12px",fontSizeSmallButton:"10px",lightShadow:"0px 0px 10px rgba(0,0,0,0.1)"}),R=t(3),C=["type"];function A(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var z,N,I=y.a.div(O||(z=["\n width: ",";\n padding-top: ",";\n position: relative;\n margin: 0 auto;\n\n .double-bounce1, .double-bounce2 {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: ",";\n opacity: 0.6;\n position: absolute;\n top: 0;\n left: 0;\n\n -webkit-animation: sk-bounce 2.0s infinite ease-in-out;\n animation: sk-bounce 2.0s infinite ease-in-out;\n }\n\n .double-bounce2 {\n -webkit-animation-delay: -1.0s;\n animation-delay: -1.0s;\n }\n\n @-webkit-keyframes sk-bounce {\n 0%, 100% { -webkit-transform: scale(0.0) }\n 50% { -webkit-transform: scale(1.0) }\n }\n\n @keyframes sk-bounce {\n 0%, 100% {\n transform: scale(0.0);\n -webkit-transform: scale(0.0);\n } 50% {\n transform: scale(1.0);\n -webkit-transform: scale(1.0);\n }\n }\n"],N||(N=z.slice(0)),O=Object.freeze(Object.defineProperties(z,{raw:{value:Object.freeze(N)}}))),(function(e){return e.size||"50%"}),(function(e){return e.size||"50%"}),(function(e){return e.color||"#333"})),T=function(e){return a.a.createElement(I,e,a.a.createElement("div",{className:"double-bounce1"}),a.a.createElement("div",{className:"double-bounce2"}))},_=function(e){var n=e.type,t=void 0===n?"circle":n,r=A(e,C);switch(t){case"circle":return a.a.createElement(T,r);default:return null}},D=function(e){return a.a.createElement(_,e)};D.propTypes={type:u.a.string},D.defaultProps={type:"circle"};var M=t(35),B=t.n(M),F=t(36),L=t.n(F),U=t(37),G=t.n(U),q=t(12),W=t.n(q),H=t(13),$=t.n(H),Y=t(14),K=t.n(Y),V=t(6),J=t.n(V),X=t(5),Z=t.n(X),Q=t(7),ee=t.n(Q),ne=t(15),te=t.n(ne),re=t(16),ae=t.n(re),oe=t(38),ie=t.n(oe),le=t(39),ce=t.n(le),ue=t(40),se=t.n(ue),de=t(17),pe=t.n(de),fe=t(41),me=t.n(fe),be=t(42),he=t.n(be),ge=t(43),ye=t.n(ge),ve=t(44),we=t.n(ve),xe=(t(86),t(45)),Ee=t.n(xe),ke=t(46),Oe=t.n(ke),je=t(47),Se=t.n(je),Pe=t(48),Re=t.n(Pe),Ce=t(49),Ae=t.n(Ce),ze=t(50),Ne=t.n(ze),Ie=t(51),Te=t.n(Ie),_e=t(52),De=t.n(_e),Me=t(8),Be=t.n(Me),Fe=t(18),Le=t.n(Fe),Ue=t(19),Ge=t.n(Ue),qe=t(53),We=t.n(qe),He=t(54),$e=t.n(He),Ye=t(55),Ke=t.n(Ye),Ve=t(56),Je=t.n(Ve),Xe=t(57),Ze=t.n(Xe),Qe=t(58),en=t.n(Qe),nn=t(59),tn=t.n(nn),rn=t(60),an=t.n(rn),on=t(61),ln=t.n(on),cn=t(62),un=t.n(cn),sn=t(63),dn=t.n(sn),pn=t(64),fn=t.n(pn),mn=t(65),bn=t.n(mn),hn=t(66),gn=t.n(hn),yn=t(67),vn=t.n(yn),wn=t(68),xn=t.n(wn),En=t(69),kn=t.n(En),On=t(70),jn=t.n(On),Sn=t(71),Pn=t.n(Sn),Rn=t(72),Cn=t.n(Rn),An=t(73),zn=t.n(An),Nn=t(74),In=t.n(Nn),Tn={lock:B.a,"lock-open":L.a,"file-undo":G.a,"chevron-double-left":W.a,"chevron-double-right":$.a,"chevron-left":K.a,"chevron-right":J.a,"chevron-down":Z.a,"chevron-up":ee.a,pause:te.a,play:ae.a,replay:ie.a,check:ce.a,"check-circle":se.a,stop:pe.a,delete:me.a,undo:he.a,alert:ye.a,database:we.a,tools:Ee.a,cog:Oe.a,close:Se.a,cat:Re.a,upload:dn.a,trash:Ae.a,pencil:Ne.a,dashboard:Te.a,search:De.a,folder:Be.a,"folder-open":Le.a,"image-multiple-outline":Ge.a,plus:We.a,"folder-plus":$e.a,"image-plus":Ke.a,"view-grid":Je.a,"format-list-bulleted":Ze.a,twitter:en.a,instagram:tn.a,facebook:an.a,star:ln.a,"timer-outline":un.a,link:fn.a,linkedin:bn.a,pinterest:gn.a,"zoom-in":vn.a,"info-outline":xn.a,"arrow-up":kn.a,"arrow-down":jn.a,sort:Pn.a,eye:Cn.a,"rocket-launch":zn.a,"calendar-month":In.a},_n=t(24),Dn=t.n(_n);t(25);function Mn(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}var Bn=function e(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};Mn(this,e),this.url=r,this.message=n,this.code=t,this.body=a,this.debug=o};function Fn(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||qn(e,n)||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 Ln(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function Un(e){return function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){Ln(o,r,a,i,l,"next",e)}function l(e){Ln(o,r,a,i,l,"throw",e)}i(void 0)}))}}function Gn(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=qn(e))||n&&e&&"number"==typeof e.length){t&&(e=t);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,l=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return i=e.done,e},e:function(e){l=!0,o=e},f:function(){try{i||null==t.return||t.return()}finally{if(l)throw o}}}}function qn(e,n){if(e){if("string"==typeof e)return Wn(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Wn(e,n):void 0}}function Wn(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var Hn=function(e){if(!e.data)return e;if(e.data.length>0&&e.data[0].meta){var n,t=Gn(e.data);try{for(t.s();!(n=t.n()).done;){var r=n.value;try{r.meta=JSON.parse(r.meta)}catch(e){console.error("[JsonFetcher]","Could not decode meta.",r.meta)}}}catch(e){t.e(e)}finally{t.f()}}else if(e.data.meta)try{e.data.meta=JSON.parse(e.data.meta)}catch(e){console.error("[JsonFetcher]","Could not decode meta.",x.meta)}return e},$n=function(){var e=Un(regeneratorRuntime.mark((function e(n){var t,r,a,o,i,l,c,u,s,d=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=d.length>1&&void 0!==d[1]?d[1]:{},r=null,a={},o=null,i=null,e.prev=5,(t=t||{}).headers=t.headers?t.headers:{},t.headers.Pragma="no-cache",t.headers["Cache-Control"]="no-cache",e.next=12,fetch("".concat(n),t);case 12:return i=e.sent,e.next=15,i.text();case 15:r=e.sent,(a=JSON.parse(r)).success||(l=!1===a.success?"NOT-SUCCESS":"N/A",c=a.message?a.message:"Unknown error. Check your Console Logs.","rest_no_route"===a.code?(c="The API can't be accessed. Is Rest API enabled?",l="NO-ROUTE"):"internal_server_error"===a.code&&(c="Server error. Please check your PHP Error Logs.",l="SERVER-ERROR"),o=new Bn(c,l,n,r||i)),e.next=26;break;case 20:e.prev=20,e.t0=e.catch(5),u="BROKEN-REPLY",s="The reply sent by the server is broken.",i&&i.status&&408===i.status&&(u="REQUEST-TIMEOUT",s="The request generated a timeout."),o=new Bn(s,u,n,r||i,e.t0);case 26:return o&&(console.error("[NekoError] JsonFetcher",o.url,{code:o.code,error:o.error,body:o.body}),a.success=!1,a.error=o),e.abrupt("return",Hn(a));case 28:case"end":return e.stop()}}),e,null,[[5,20]])})));return function(n){return e.apply(this,arguments)}}(),Yn=function(){var e=Un(regeneratorRuntime.mark((function e(n){var t,r,a,o,i,l,c,u,s,d,p,f,m,b=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=b.length>1&&void 0!==b[1]?b[1]:{},r=t.json,a=void 0===r?{}:r,o=t.signal,i=t.file,l=t.nonce,c=i?new FormData:null,i)for(c.append("file",i),u=0,s=Object.entries(a);u<s.length;u++)d=Fn(s[u],2),p=d[0],f=d[1],c.append(p,f);return m=l?{"X-WP-Nonce":l}:{},c||(m["Content-Type"]="application/json"),e.abrupt("return",$n(n,{method:"POST",headers:m,body:c||JSON.stringify(a),signal:o}));case 7:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}();function Kn(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||Vn(e,n)||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 Vn(e,n){if(e){if("string"==typeof e)return Jn(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Jn(e,n):void 0}}function Jn(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var Xn,Zn,Qn=function(){var e=Object(r.useRef)(),n=Kn(Object(r.useState)({}),2),t=n[0],a=n[1];return Object(r.useEffect)((function(){if(e&&e.current){var n=new ResizeObserver((function(e){var n=e[0];n.contentRect&&a({width:n.contentRect.left+n.contentRect.right,height:n.contentRect.top+n.contentRect.bottom})}));return n.observe(e.current),function(){n.unobserve(e.current)}}}),[]),{ref:e,width:t.width?t.width:0,height:t.height?t.height:0}},et=function(e){var n=Object(r.useRef)(),t=function(t){e&&!n.current.contains(t.target)&&e()};return Object(r.useEffect)((function(){return document.addEventListener("mousedown",t),function(){document.removeEventListener("mousedown",t)}})),n};new Dn.a({concurrency:1,autoStart:!1});function nt(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return tt(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return tt(e,n)}(e,n)||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 tt(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function rt(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var at=y.a.div(Xn||(Xn=rt(["\n\tdisplay: flex;\n"]))),ot=y.a.div(Zn||(Zn=rt(["\n\tbackground-color: rgba(",", 0.8);\n\tborder-radius: 4px;\n\tcolor: ",";\n\tfont-family: ",";\n\tfont-weight: normal;\n\tmin-width: 180px;\n\tmax-width: 280px;\n\tfont-size: ",";\n\tpadding: 8px 12px;\n\tposition: absolute;\n \tmax-width: 280px;\n\tword-break: break-word;\n\tdisplay: ",';\n\tz-index: 100;\n\n\t&:before {\n\t\tcontent: "";\n\t\tposition: absolute;\n\t\tborder: 4px solid transparent;\n\t}\n\n\t&.top {\n\t\t&:before {\n\t\t\tmargin-left: -4px;\n\t\t\ttop: 100%;\n\t\t\tleft: 50%;\n\t\t\tborder-top: 4px solid rgba(',", 0.8);\n\t\t}\n\t}\n\n\t&.left {\n\t\t&:before {\n\t\t\tmargin-top: -4px;\n\t\t\ttop: 50%;\n\t\t\tright: -8px;\n\t\t\tborder-left: 4px solid rgba(",", 0.8);\n\t\t}\n\t}\n\n\t&.right {\n\t\t&:before {\n\t\t\tmargin-top: -4px;\n\t\t\ttop: 50%;\n\t\t\tleft: -8px;\n\t\t\tborder-right: 4px solid rgba(",", 0.8);\n\t\t}\n\t}\n\n\t&.bottom {\n\t\t&:before {\n\t\t\tmargin-left: -4px;\n\t\t\ttop: -8px;\n\t\t\tleft: 50%;\n\t\t\tborder-bottom: 4px solid rgba(",", 0.8);\n\t\t}\n\t}\n\n\t","\n"])),P.blackRGB,P.white,P.fontFamily,P.fontSizeText,(function(e){return e.visible?"inline-block":"none"}),P.blackRGB,P.blackRGB,P.blackRGB,P.blackRGB,(function(e){return e.style})),it=function(e){var n=e.text,t=void 0===n?"Hello world!":n,o=e.position,i=void 0===o?"top":o,l=nt(Object(r.useState)(!1),2),c=l[0],u=l[1],s=Qn(),d=s.ref,p=s.width,f=s.height,m=Qn(),b=m.ref,h=m.width,g=m.height,y=Object(r.useMemo)((function(){var e=0,n=0;if("top"===i)e=-1*f-5,n=p/2*-1+h/2;else if("bottom"===i)e=g+5,n=p/2*-1+h/2;else if("left"===i){e=(f-g)/2*-1,n=-1*p-5}else if("right"===i){e=(f-g)/2*-1,n=h+5}return{transform:"translateX(".concat(n,"px) translateY(").concat(e,"px)")}}),[i,p,f,h,g]);return a.a.createElement(at,null,a.a.createElement(ot,{ref:d,visible:c,className:i,style:y},t),a.a.createElement("div",{ref:b,onMouseEnter:function(){return t&&u(!0)},onMouseLeave:function(){return u(!1)}},e.children))},lt=function(e){return a.a.createElement(it,e)};lt.propTypes={text:u.a.string,position:u.a.oneOf(["top","right","bottom","left"])},lt.defaultProps={text:"Hello world!",position:"top"};var ct,ut,st=["icon","spinning","className","title","tooltip","containerStyle","color","hoverColor","disabled","raw","isBusy"];function dt(){return(dt=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function pt(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function ft(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var mt=y.a.div(ct||(ct=ft(["\n display: flex;\n align-items: center;\n"]))),bt=Object(y.a)(R.Icon)(ut||(ut=ft(["\n\n path {\n fill: ",";\n }\n\n ","\n\n &.nui-clickable {\n cursor: pointer;\n }\n\n &.spin {\n animation-name: spin;\n animation-duration: 700ms;\n animation-iteration-count: infinite;\n animation-timing-function: linear;\n\n @keyframes spin {\n 0% {\n transform: rotate(360deg);\n }\n 100% {\n transform: rotate(0deg);\n }\n }\n }\n\n &.busy {\n animation: crescendo 0.4s alternate infinite;\n @keyframes crescendo {\n 0% {transform: scale(.65);}\n 100% {transform: scale(1);}\n }\n }\n\n &.disabled {\n pointer-events: none;\n opacity: 0.35;\n cursor: default;\n }\n"])),(function(e){return e.color}),(function(e){return n=e.color,(t=e.hoverColor)?"\n &:hover {\n path {\n fill: ".concat(t,";\n }\n }\n "):n?"\n &:hover {\n path {\n fill: ".concat(Object(v.a)(.1,n),";\n }\n }\n "):void 0;var n,t})),ht=function(e){var n=e.icon,t=e.spinning,r=void 0!==t&&t,o=e.className,i=void 0===o?"":o,l=e.title,c=e.tooltip,u=e.containerStyle,s=e.color,d=e.hoverColor,p=e.disabled,f=void 0!==p&&p,m=e.raw,b=e.isBusy,h=void 0!==b&&b,g=pt(e,st);g.width||g.height||(g.width=g.height=30);var y=function(){return"string"==typeof n?Tn[n]||null:n},v="nui-icon ".concat(i).concat(g.onClick?" nui-clickable":"").concat(r?" spin":"").concat(f?" disabled":"").concat(h?" busy":"");return c?a.a.createElement(lt,{text:c.text,position:c.position||"top"},a.a.createElement(mt,{style:u},a.a.createElement(bt,dt({icon:y(),className:v,color:s,hoverColor:d},g)))):m?a.a.createElement(bt,dt({icon:y(),className:v,color:s,hoverColor:d},g)):a.a.createElement(mt,{style:u,title:l},a.a.createElement(bt,dt({icon:y(),className:v,color:s,hoverColor:d},g)),c?a.a.createElement(lt,null,c):null)},gt=function(e){return a.a.createElement(ht,e)};gt.propTypes={icon:u.a.oneOfType([u.a.instanceOf(R.IconifyIcon),u.a.oneOf(["lock","lock-open","file-undo","chevron-double-left","chevron-double-right","chevron-left","chevron-right","chevron-down","chevron-up","pause","play","replay","check","stop","delete","undo","alert","database","pencil","tools","cog","close","cat","upload"])]),color:u.a.string,spinning:u.a.bool,className:u.a.string,tooltip:u.a.string,raw:u.a.bool,isBusy:u.a.bool},gt.defaultProps={icon:void 0,color:void 0,spinning:!1,className:"",tooltip:void 0,raw:void 0,isBusy:!1};var yt,vt=["show","className"];function wt(){return(wt=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function xt(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var Et=y.a.a(yt||(yt=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n background-color: ",";\n position: relative;\n border-radius: 10px;\n color: ",";\n font-family: ",";\n font-size: 9px;\n line-height: 10px;\n padding: 5px 8px;\n text-transform: uppercase;\n text-decoration: none;\n\n &:hover {\n color: ",";\n background-color: #f78c1f;\n }\n\n &.inline {\n display: inline;\n margin-left: 5px;\n vertical-align: middle;\n }\n"])),P.yellow,P.white,P.fontFamily,P.white),kt=function(e){var n=e.show,t=void 0===n||n,r=e.className,o=xt(e,vt);return t?a.a.createElement(Et,wt({href:"https://store.meowapps.com",target:"_blank",className:"".concat(r||"")},o),"Pro Only"):null},Ot=function(e){return a.a.createElement(kt,e)};Ot.propTypes={show:u.a.bool,className:u.a.string},Ot.defaultProps={show:!0,className:void 0};var jt,St=["className","icon","onClick","disabled","color","disabledColor","small","isBusy","width","height","children","rounded","busyText","spinning","hideBusyIcon","busyIconSize","requirePro","isPro"];function Pt(){return(Pt=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function Rt(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var Ct,At,zt,Nt,It=Object(y.a)((function(e){var n=e.className,t=e.icon,o=void 0===t?null:t,i=e.onClick,l=e.disabled,c=void 0!==l&&l,u=e.color,s=void 0===u?null:u,d=(e.disabledColor,e.small),p=e.isBusy,f=void 0!==p&&p,m=e.width,b=(e.height,e.children),h=e.rounded,g=e.busyText,y=e.spinning,v=void 0!==y&&y,w=e.hideBusyIcon,x=void 0!==w&&w,E=e.busyIconSize,k=e.requirePro,O=void 0!==k&&k,j=e.isPro,S=void 0!==j&&j,P=Rt(e,St),R=!!o,C=Object(r.useMemo)((function(){var e=null!=m?m:30;return h?e-10:e-6}),[m,h]),A=Object(r.useMemo)((function(){return E||(h?"82%":"35%")}),[h,E]),z=O&&!S,N="nui-button ".concat(n||"").concat(R?" has-icon":"").concat(s?" custom-color":"").concat(d?" small":"").concat(h?" rounded":"").concat(f?" busy":"").concat(z?" is-pro":"");return a.a.createElement("button",Pt({type:"button",className:N,onClick:i,disabled:c||z},P),f&&!x&&a.a.createElement(D,{type:"circle",color:"#fff",size:A}),f&&!!g&&a.a.createElement("span",{style:{marginLeft:x?0:"4px",marginRight:"2xp"}},g),R&&!f&&a.a.createElement(gt,{icon:o,width:C,height:C,spinning:v,raw:!0,style:h?{margin:"0 auto"}:{}}),!!b&&!f&&a.a.createElement("span",{style:{marginLeft:R?"4px":0,marginRight:R?"2xp":0}},b),z&&a.a.createElement(Ot,{style:{marginLeft:"8px"}}))}))(jt||(jt=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n display: inline-block;\n box-sizing: border-box;\n height: 30px;\n min-height: 30px;\n min-width: 6em;\n border: none;\n border-radius: 4px;\n text-align: center;\n font-family: ",";\n font-size: ",";\n padding: 0 15px;\n\n background-color: ",";\n color: white;\n transition: background-color .10s, opacity .25s;\n\n :not([disabled]):hover {\n cursor: pointer;\n background-color: ",";\n }\n\n :disabled {\n opacity: 0.35;\n }\n\n :focus {\n outline: none;\n }\n\n &.is-pro {\n background-color: ",";\n rgb(255 255 255 / 65%);\n display: inline-flex;\n align-items: center;\n opacity: 1;\n }\n\n &.has-icon {\n align-items: center;\n display: inline-flex;\n padding: 2.5px 8px;\n }\n\n &.secondary {\n background-color: ",";\n border: 1px solid ",";\n color: ",";\n\n &:hover {\n background-color: ",";\n }\n\n &.is-pro {\n color: ",";\n border-color: ",";\n\n &:hover {\n background-color: ",";\n }\n }\n }\n\n &.danger {\n background-color: ",";\n border-color: ",";\n\n\t &:hover {\n\t\t background-color: ",";\n\t }\n\n &.is-pro {\n background-color: ",";\n\n &:hover {\n background-color: ",";\n }\n }\n }\n\n &.success {\n background-color: ",";\n border-color: ",";\n\n\t &:hover {\n\t\t background-color: ",";\n\t }\n\n &.is-pro {\n background-color: ",";\n\n &:hover {\n background-color: ",";\n }\n }\n }\n\n & + button {\n margin-left: .25rem;\n }\n\n &.small {\n font-size: ",";\n height: 24px;\n }\n\n &.header {\n background-color: ",";\n border-color: ",";\n height: 40px;\n padding: 0 20px;\n\n\t &:hover {\n\t\t background-color: ",";\n\t }\n\n &.is-pro {\n background-color: ",";\n\n &:hover {\n background-color: ",";\n }\n }\n }\n\n &.rounded {\n border-radius: 100%;\n min-width: 30px;\n height: ","px;\n width: ","px;\n padding: 3px;\n }\n\n &.busy {\n pointer-events: none;\n }\n\n ","\n ","\n"])),P.fontFamily,P.fontSizeText,P.blue,Object(v.a)(.1,P.blue),P.blueDisabled,P.lightBlue,P.blue,P.blue,Object(v.a)(.1,P.lightBlue),P.blueDisabled,P.blueDisabled,P.lightBlue,P.red,P.red,Object(v.a)(.1,P.red),P.red,P.red,P.green,P.green,Object(v.a)(.1,P.green),P.green,P.green,P.fontSizeSmallButton,P.deepBlue,P.deepBlue,Object(v.a)(.1,P.deepBlue),P.deepBlueDisabled,P.deepBlueDisabled,(function(e){var n,t;return null!==(n=e.height)&&void 0!==n?n:null!==(t=e.width)&&void 0!==t?t:30}),(function(e){var n;return null!==(n=e.width)&&void 0!==n?n:30}),(function(e){return Tt(e.color)}),(function(e){return _t(e.disabledColor)})),Tt=function(e){if(e)return"\n &.custom-color {\n background-color: ".concat(e,";\n border: 1px solid ").concat(e,";\n\n &:hover {\n background-color: ").concat(Object(v.a)(.1,e),";\n }\n }\n ")},_t=function(e){if(e)return"\n &.custom-color {\n &.is-pro {\n background-color: ".concat(e,";\n\n &:hover {\n background-color: ").concat(e,";\n }\n }\n }\n ")},Dt=function(e){return a.a.createElement(It,e)};function Mt(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return Bt(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Bt(e,n)}(e,n)||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 Bt(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function Ft(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}Dt.propTypes={className:u.a.oneOf(["primary","secondary","danger","success","header"]),disabled:u.a.bool,icon:u.a.oneOfType([u.a.instanceOf(R.IconifyIcon),u.a.oneOf(["setting","edit","trash"])]),color:u.a.string,onClick:u.a.func.isRequired,rounded:u.a.bool,isBusy:u.a.bool,spinning:u.a.bool,busyText:u.a.string,hideBusyIcon:u.a.bool,busyIconSize:u.a.string,requirePro:u.a.bool,isPro:u.a.bool,disabledColor:u.a.string},Dt.defaultProps={className:"primary",disabled:!1,icon:null,color:null,onClick:function(){},rounded:void 0,isBusy:!1,spinning:!1,busyText:void 0,hideBusyIcon:!1,busyIconSize:void 0,requirePro:!1,isPro:!1,disabledColor:null};var Lt,Ut=y.a.div(Ct||(Ct=Ft(["\n display: inline-block;\n"]))),Gt=y.a.button(At||(At=Ft(["\n align-items: center;\n background-color: ",";\n border: none;\n border-radius: 4px;\n box-sizing: border-box;\n color: white;\n display: inline-flex;\n justify-content: space-between;\n font-family: ",";\n font-size: ",";\n height: 30px;\n min-width: 6em;\n padding: 0px 10px;\n text-align: center;\n transition: background-color .10s, opacity .25s;\n\n :not([disabled]):hover {\n cursor: pointer;\n background-color: ",";\n }\n\n :disabled {\n opacity: 0.35;\n }\n\n :focus {\n outline: none;\n }\n\n & + button {\n margin-left: .25rem;\n }\n"])),P.blue,P.fontFamily,P.fontSizeText,Object(v.a)(.1,P.blue)),qt=y.a.div(zt||(zt=Ft(["\n position: relative;\n display: block;\n margin-top: 18px;\n background-color: ",";\n position: absolute;\n z-index: 10;\n box-shadow: ",';\n\n &:before {\n content: "";\n position: absolute;\n top: -18px;\n left: 50%;\n margin-left: -8px;\n border: 8px solid transparent;\n border-bottom: 10px solid ',";\n }\n"])),P.blue,P.lightShadow,P.blue),Wt=function(e){var n=e.title,t=e.disabled,r=void 0!==t&&t,o=e.isPro,i=void 0!==o&&o,l=e.style,c=void 0===l?{}:l,u=e.hideChevron,s=e.titleStyle,d=void 0===s?{}:s,p=Mt(a.a.useState(!1),2),f=p[0],m=p[1],b=et((function(){m(!1)})),h=Qn(),g=h.ref,y=h.width,v=function(){m(!f)},w=a.a.Children.map(e.children,(function(e){return a.a.cloneElement(e,{isPro:i,disabled:e.props.disabled||r,onClick:function(){e.props.onClick&&e.props.onClick(),v()}})}));return a.a.createElement(Ut,{ref:b},a.a.createElement(Gt,{ref:g,type:"button",disabled:r,onClick:v,style:c},a.a.createElement("span",{style:d},n),!u&&a.a.createElement(R.Icon,{icon:Z.a,width:"24",height:"24",style:{marginLeft:"4px"}})),f&&a.a.createElement(qt,{style:{transform:"translateX(calc(-50% + ".concat(y/2,"px))")}},w))},Ht=y.a.button(Nt||(Nt=Ft(["\n align-items: center;\n background-color: ",";\n border: none;\n box-sizing: border-box;\n color: white;\n display: flex;\n font-family: ",";\n font-size: ",";\n width: 100%;\n padding: 8px 15px 8px 15px;\n text-align: center;\n transition: background-color .10s, opacity .25s;\n\n :not([disabled]):hover {\n cursor: pointer;\n background-color: ",";\n }\n\n :disabled:not(.is-pro) {\n opacity: 0.35;\n }\n\n :focus {\n outline: none;\n }\n\n &.is-pro {\n background-color: ",";\n justify-content: space-between;\n }\n\n &.separator {\n border-top: 1px solid ",";\n font-size: 10px;\n padding: 5px;\n }\n"])),P.blue,P.fontFamily,P.fontSizeText,Object(v.a)(.1,P.blue),P.proGray,P.white),$t=function(e){var n=e.onClick,t=e.children,r=e.isPro,o=e.requirePro,i=void 0!==o&&o,l=e.disabled,c=e.separator,u=i&&!r;return a.a.createElement(Ht,{type:"button",className:"".concat(u?"is-pro":""," ").concat(c?"separator":""),onClick:n,disabled:l||u},a.a.createElement("span",null,t),u&&!r&&a.a.createElement(Ot,null))},Yt=function(e){return a.a.createElement(Wt,e)},Kt=function(e){return a.a.createElement($t,e)};function Vt(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||Jt(e,n)||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 Jt(e,n){if(e){if("string"==typeof e)return Xt(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Xt(e,n):void 0}}function Xt(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}Yt.propTypes={title:u.a.string,disabled:u.a.bool,isPro:u.a.bool,hideChevron:u.a.bool,style:u.a.object,titleStyle:u.a.object},Yt.defaultProps={title:void 0,disabled:!1,isPro:!1,hideChevron:void 0,style:{},titleStyle:{}},Kt.propTypes={onClick:u.a.func.isRequired,requirePro:u.a.bool,separator:u.a.bool},Kt.defaultProps={onClick:function(){},requirePro:!1,separator:void 0};var Zt=y.a.div(Lt||(Lt=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n position: relative;\n background: #f1f1f1;\n margin-left: -20px;\n background-color: rgb(30 124 186 / 10%);\n padding-bottom: 50px;\n margin-bottom: -26px;\n\n .neko-rest-error {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: #1e232deb;\n z-index: 100;\n\n .container {\n color: white;\n padding: 5px 20px 15px 20px;\n min-width: 480px;\n max-width: 600px;\n border-radius: 20px;\n background: #883131;\n margin-left: 50%;\n transform: translateX(-50%);\n margin-top: 100px;\n\n h3 {\n color: white;\n }\n\n .neko-debug {\n padding: 5px 10px;\n background: #692426;\n border-radius: 10px;\n\n * {\n margin: 0px;\n padding: 0px;\n } \n }\n }\n }\n"]))),Qt=function(e){var n=e.className,t=e.children,o=e.nekoErrors,i=void 0===o?[]:o,l=e.style,c=void 0===l?{}:l,u=Vt(Object(r.useState)(!1),2),s=u[0],d=u[1],p=Vt(Object(r.useState)(!1),2),f=p[0],m=p[1];if(i&&!s){var b,h=function(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=Jt(e))||n&&e&&"number"==typeof e.length){t&&(e=t);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,l=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return i=e.done,e},e:function(e){l=!0,o=e},f:function(){try{i||null==t.return||t.return()}finally{if(l)throw o}}}}(i);try{for(h.s();!(b=h.n()).done;){var g=b.value;if(g){d(g);break}}}catch(e){h.e(e)}finally{h.f()}}return a.a.createElement(Zt,{className:n||"",style:c},s&&a.a.createElement("div",{className:"neko-rest-error"},a.a.createElement("div",{className:"container"},!f&&a.a.createElement(a.a.Fragment,null,a.a.createElement("h3",null,"The Rest API is disabled or broken 😢"),a.a.createElement("p",null,"The Rest API is required for this plugin to work. It is enabled in WordPress by default since December 2016 and used by the Gutenberg Editor since 2019. In short, it allows more robustness and a much cleaner infrastructure. Soon, Wordpress will entirely depends on it, so it is important to keep it enabled."),a.a.createElement("p",null,a.a.createElement("i",null,"Last but not least: check your PHP Error Logs and your Debugging Console.")),a.a.createElement("p",{className:"neko-debug"},a.a.createElement("small",null,"URL: ",s.url,a.a.createElement("br",null),"CODE: ",s.code,a.a.createElement("br",null),"MESSAGE: ",s.message,a.a.createElement("br",null)))),s.body&&f&&a.a.createElement("p",{className:"neko-debug"},a.a.createElement("div",{dangerouslySetInnerHTML:{__html:s.body}})),s.body&&a.a.createElement(Dt,{color:"#a94242",onClick:function(){return m(!f)}},f?"Hide":"Display"," response from server"),a.a.createElement(Dt,{color:"#a94242",onClick:function(){window.open("https://meowapps.com/fix-wordpress-rest-api/","_blank")}},"Learn about WordPress Debugging"))),t)},er=function(e){return a.a.createElement(Qt,e)};er.propTypes={className:u.a.string,style:u.a.object,nekoErrors:u.a.bool},er.defaultProps={className:void 0,style:{},nekoErrors:!1};var nr,tr,rr,ar,or,ir=["children"];function lr(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function cr(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var ur,sr=y.a.h1(nr||(nr=cr(["\n font-family: ",";\n font-weight: normal;\n font-size: ",";\n line-height: normal;\n margin-top: 0;\n margin-bottom: 16px;\n padding: 0;\n"])),P.fontFamily,P.fontSizeH1),dr=y.a.h2(tr||(tr=cr(["\n font-family: ",";\n font-size: ",";\n font-weight: normal;\n line-height: normal;\n margin-top: 0;\n margin-bottom: 16px;\n padding: 0;\n"])),P.fontFamily,P.fontSizeH2),pr=y.a.p(rr||(rr=cr(["\n font-family: ",";\n font-size: ",";\n line-height: normal;\n margin: 16px 0 24px;\n padding: 0;\n"])),P.fontFamily,P.fontSizeText),fr=y.a.span(ar||(ar=cr(["\n font-family: ",";\n font-size: ",";\n line-height: normal;\n margin: 0;\n padding: 0;\n"])),P.fontFamily,P.fontSizeText),mr=y.a.label(or||(or=cr(["\n font-family: ",";\n font-size: ",";\n line-height: normal;\n margin: 0;\n padding: 0;\n"])),P.fontFamily,P.fontSizeText),br=function(e){var n=e.children,t=lr(e,ir);return e.h1?a.a.createElement(sr,t,n):e.h2?a.a.createElement(dr,t,n):e.p?a.a.createElement(pr,t,n):e.label?a.a.createElement(mr,t,n):a.a.createElement(fr,t,n)},hr=function(e){return a.a.createElement(br,e)};hr.propTypes={h1:u.a.any,h2:u.a.any,p:u.a.any},hr.defaultProps={h1:void 0,h2:void 0,p:void 0};var gr,yr,vr=y.a.div(ur||(ur=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n font-size: ",";\n margin-bottom: 15px;\n\n .nui-block-header {\n display: flex;\n justify-content: space-between;\n }\n\n .nui-block-title {\n color: ",";\n padding: 5px 10px;\n margin-bottom: 5px;\n }\n\n .nui-block-content {\n background-color: #f1f1f1;\n padding: 26px;\n box-shadow: 0px 2px 5px 0px #0000004a;\n border-radius: 10px;\n\n p:first-child {\n margin-top: 0;\n }\n\n p:last-child {\n margin-bottom: 0;\n }\n }\n\n &.primary {\n padding: 8px;\n background-color: ",";\n\n .nui-block-title {\n color: ",";\n }\n\n .nui-block-content {\n background-color: ",";\n }\n }\n"])),P.fontSizeText,P.blue,P.blue,P.white,P.white),wr=function(e){var n=e.title,t=e.children,r=e.className,o=e.busy,i=void 0!==o&&o,l=e.style,c=void 0===l?{}:l,u=e.contentStyle,s=void 0===u?{}:u,d=e.action;return a.a.createElement(vr,{className:"nui-block "+(r||""),style:c},a.a.createElement(g,{busy:i},a.a.createElement("div",{className:"nui-block-header"},a.a.createElement(hr,{h2:!0,className:"nui-block-title"},n),!!d&&d),a.a.createElement("div",{className:"nui-block-content",style:s},t)))},xr=function(e){return a.a.createElement(wr,e)};function Er(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}xr.propTypes={title:u.a.string,className:u.a.oneOf(["","primary"]),style:u.a.object,action:u.a.element},xr.defaultProps={title:void 0,className:"",style:{},action:void 0};var kr,Or=y.a.div(gr||(gr=Er(["\n font-size: ",";\n font-family: ",";\n background-color: ",";\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n margin-bottom: 25px;\n\n &.primary {\n background-color: ",";\n }\n\n p:first-child {\n margin-top: 0px;\n }\n\n p:last-child {\n margin-bottom: 0px;\n }\n\n .content {\n padding: 20px 20px;\n }\n"])),P.fontSizeText,P.fontFamily,P.white,P.blue),jr=y.a.div(yr||(yr=Er(["\n justify-content: flex-start;\n background-color: ",";\n display: flex;\n align-items: center;\n padding: 8px 10px;\n\n &.align-right {\n justify-content: flex-end;\n }\n"])),P.lightGray2),Sr=function(e){var n=e.children,t=e.header,r=e.headerAlign,o=void 0===r?"left":r,i=e.footer,l=e.footerAlign,c=void 0===l?"right":l,u=e.className,s=e.style,d=void 0===s?{}:s;return a.a.createElement(Or,{className:u||"",style:d},t&&a.a.createElement(jr,{className:"align-".concat(o)},t),a.a.createElement("div",{className:"content"},n),i&&a.a.createElement(jr,{className:"align-".concat(c)},i))},Pr=function(e){return a.a.createElement(Sr,e)};Pr.propTypes={header:u.a.element,headerAlign:u.a.oneOf(["left","right"]),footer:u.a.element,footerAlign:u.a.oneOf(["left","right"]),className:u.a.string,style:u.a.object},Pr.defaultProps={header:void 0,headerAlign:"left",footer:void 0,footerAlign:"right",className:void 0,style:{}};var Rr,Cr,Ar=Object(y.a)((function(e){var n=e.title,t=void 0===n?"":n,r=e.contentAlign,o=void 0===r?"left":r;return a.a.createElement("div",{className:e.className||""},t?a.a.createElement("div",{className:"nui-settings-head"},t):null,a.a.createElement("div",{className:"nui-settings-content nui-settings-content-align-".concat(o)},e.children))}))(kr||(kr=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n display: flex;\n font-family: ",";\n\n > .nui-settings-head {\n font-family: ",";\n font-size: 14px;\n line-height: 17px;\n width: 120px;\n margin-right: 16px;\n }\n\n /* Select, Checkbox, Input need to be a bit higher to be in front of the settings title */\n\n .nui-settings-content > .nui-select:first-child {\n position: relative;\n margin-top: -5px;\n }\n \n .nui-settings-content > .nui-checkbox:first-child {\n position: relative;\n margin-top: -5px;\n }\n\n .nui-settings-content > .nui-checkbox:first-child {\n position: relative;\n margin-top: -5px;\n }\n\n .nui-settings-content > .nui-button:first-child {\n position: relative;\n margin-top: -5px;\n }\n\n .nui-settings-content > div:first-child > .neko-input {\n position: relative;\n margin-top: -5px;\n }\n\n > .nui-settings-content {\n flex: 1;\n\n &.nui-settings-content-align-right {\n flex: none;\n margin-left: auto;\n }\n\n input[type=text] {\n width: 100%;\n }\n\n\n }\n\n & + div {\n margin-top: 15px;\n }\n"])),P.fontFamily,P.fontFamily),zr=function(e){return a.a.createElement(Ar,e)};function Nr(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}zr.propTypes={title:u.a.string,className:u.a.string,contentAlign:u.a.string},zr.defaultProps={title:"",className:void 0,contentAlign:"left"};var Ir=y.a.div(Rr||(Rr=Nr(["\n margin: 20px;\n padding: 14px;\n background-color: white;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n\n > * + * {\n /* Base margin between child elements */\n margin-top: 14px;\n }\n"]))),Tr=Object(y.a)((function(e){return e.children?a.a.createElement("div",{className:e.className},e.children):null}))(Cr||(Cr=Nr(["\n background-color: ",";\n color: white;\n"])),P.blue),_r=function(e){return a.a.createElement(Ir,{className:"window"},a.a.createElement(Tr,null,e.title),e.children)},Dr=function(e){return a.a.createElement(_r,e)};Dr.propTypes={title:u.a.string},Dr.defaultProps={title:void 0};var Mr,Br,Fr=["full","minimal"];function Lr(){return(Lr=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function Ur(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function Gr(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var qr=y.a.div(Mr||(Mr=Gr(["\n display: flex;\n flex-wrap: wrap;\n"]))),Wr=y.a.div(Br||(Br=Gr(["\n flex: 1;\n padding: 32px 30px;\n\n .nui-block:not(:first-child) {\n margin-top: -20px;\n }\n\n .nui-block:last-child {\n margin-bottom: 0px;\n }\n\n &.minimal {\n padding: 0;\n }\n\n &.full {\n flex-basis: 100%;\n padding-bottom: 0;\n }\n\n & + .full {\n padding-bottom: 32px;\n padding-top: 0;\n }\n\n &:not(.full) + div:not(.full) {\n padding-left: 0;\n }\n"]))),Hr=function(e){return a.a.createElement(qr,null,e.children)},$r=function(e){var n=e.full,t=e.minimal,r=Ur(e,Fr),o=n?"full":"";return o+=t?" minimal":"",a.a.createElement(Wr,Lr({className:o},r),e.children)},Yr=function(e){return a.a.createElement(Hr,e)},Kr=function(e){return a.a.createElement($r,e)};Yr.propTypes={},Yr.defaultProps={},Kr.propTypes={full:u.a.any},Kr.defaultProps={full:void 0};var Vr,Jr=t(9),Xr=t.n(Jr),Zr=t(20),Qr=t.n(Zr);var ea,na=Object(y.a)((function(e){var n=e.id,t=e.name,r=e.checked,o=void 0!==r&&r,i=e.onChange,l=e.label,c=e.description,u=e.isPro,s=e.disabled,d=e.requirePro,p=void 0!==d&&d,f=e.isBusy,m=void 0!==f&&f,b=p&&!u,h=s||b,g=h?"disabled":"";return a.a.createElement("div",{className:["nui-checkbox",e.className,g].join(" "),onClick:function(e){return e.stopPropagation()}},a.a.createElement("input",{id:n,name:t,type:"checkbox",defaultChecked:!1,disabled:h||m}),a.a.createElement("label",{htmlFor:n,onClick:function(){h||(i?i(!o,n):console.log("The onChange handler it not set for the NekoCheckbox.",e))}},a.a.createElement("div",{className:"nui-checkbox-check-container"},m?a.a.createElement("div",{className:"nui-checkbox-busy-container"},a.a.createElement(R.Icon,{icon:Xr.a,width:"30px",height:"30px",color:P.blue}),a.a.createElement(D,{type:"circle",size:"16px",style:{position:"absolute",top:"7px",left:"7px"}})):a.a.createElement(R.Icon,{icon:o?Qr.a:Xr.a,width:"30px",height:"30px",color:h?P.disabledForm:P.blue})),a.a.createElement("div",{className:"nui-checkbox-inner-container"},a.a.createElement("span",{className:"label"},l,a.a.createElement(Ot,{className:"inline",show:b})),c?a.a.createElement("small",{className:"description"},c):null)))}))(Vr||(Vr=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n font-family: ",";\n user-select: none;\n\n &.disabled {\n color: ",";\n\n label {\n cursor: default;\n }\n }\n\n input {\n display: none;\n }\n\n label {\n cursor: pointer;\n display: flex;\n }\n .nui-checkbox-check-container {\n display: flex;\n align-content: center;\n flex-basis: 30px;\n\n .nui-checkbox-busy-container {\n position: relative\n }\n }\n .nui-checkbox-inner-container {\n margin-left: 4px;\n\n .label {\n display: block;\n font-size: 14px;\n line-height: 28px;\n }\n \n .description {\n display: block;\n font-size: ",";\n line-height: 14px;\n color: ",";\n\n * {\n font-size: ",";\n line-height: inherit;\n margin: 0;\n }\n }\n }\n"])),P.fontFamily,P.disabledForm,P.fontSizeSmall,P.darkGray,P.fontSizeSmall),ta=function(e){return a.a.createElement(na,e)};ta.propTypes={id:u.a.string,name:u.a.string,checked:u.a.bool,label:u.a.string,description:u.a.string,isPro:u.a.bool,requirePro:u.a.bool,isBusy:u.a.bool},ta.defaultProps={id:void 0,name:void 0,checked:!1,label:void 0,description:void 0,isPro:!1,requirePro:!1,isBusy:!1};var ra=Object(y.a)((function(e){var n=e.name,t=(e.max,e.isPro),r=void 0!==t&&t;return a.a.Children.map(e.children,(function(e){return e.props.name?e:a.a.cloneElement(e,{name:n,isPro:r})}))}))(ea||(ea=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n"]))),aa=function(e){return a.a.createElement(ra,e)};aa.propTypes={name:u.a.string,mas:u.a.number,isPro:u.a.bool},aa.defaultProps={name:void 0,mas:-1,isPro:!1};var oa,ia=["id","name","value","description","placeholder","onEnter","readOnly","type","step","min","max","maxLength","className","style","natural","inputStyle","onChange","onBlur","onReset"];function la(){return(la=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function ca(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return ua(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return ua(e,n)}(e,n)||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 ua(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function sa(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var da=Object(y.a)((function(e){var n=e.id,t=e.name,o=e.value,i=void 0===o?"":o,l=e.description,c=e.placeholder,u=void 0===c?"":c,s=e.onEnter,d=void 0===s?null:s,p=e.readOnly,f=void 0!==p&&p,m=e.type,b=void 0===m?"text":m,h=e.step,g=void 0===h?1:h,y=e.min,v=void 0===y?1:y,w=e.max,x=void 0===w?999:w,E=e.maxLength,k=void 0===E?void 0:E,O=e.className,j=e.style,S=e.natural,R=void 0!==S&&S,C=e.inputStyle,A=e.onChange,z=e.onBlur,N=e.onReset,I=sa(e,ia),T=ca(Object(r.useState)(i),2),_=T[0],D=T[1],M=!!A,B=k||("number"===b?3:void 0);Object(r.useEffect)((function(){M||D(i)}),[i]);var F=function(e){M?A(e.target.value,n):D(e.target.value)},L=function(e){d&&"Enter"===event.key&&(e.preventDefault(),d(e.target.value,n))},U=function(e){z&&i!==e.target.value&&z(e.target.value,n)},G="neko-input ".concat(R?" natural":"");return a.a.createElement("div",{className:[O].join(" "),style:j},a.a.createElement("div",{style:{position:"relative"}},"number"===b?a.a.createElement("input",la({className:[G].join(" "),id:n,name:t,value:M?i:_,type:b,step:g,min:v,max:x,maxLength:B,autoComplete:"off",placeholder:u,style:C,onChange:F,onKeyPress:L,onBlur:U,readOnly:f},I)):a.a.createElement("input",la({className:[G].join(" ")},I,{id:n,name:t,value:M?i:_,type:b,spellCheck:"false",autoComplete:"off",placeholder:u,style:C,maxLength:B,onChange:F,onKeyPress:L,onBlur:U,readOnly:f},I)),!!i&&!!N&&a.a.createElement(gt,{icon:"close",width:24,style:{position:"absolute",top:"3px",right:"3px"},color:P.blue,onClick:N})),l&&a.a.createElement("p",{className:"neko-input-description"},l))}))(oa||(oa=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n .neko-input {\n font-family: ",";\n font-size: ",";\n border: 2px solid ",";\n box-sizing: border-box;\n height: 30px;\n background: rgb(0 124 186 / 10%);\n padding: 0 10px;\n width: 100%;\n\n &.natural {\n border-color: gray;\n border-width: 1px;\n }\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.25);\n }\n\n :focus {\n background-color: white;\n }\n\n :read-only {\n background-color: ",";\n }\n }\n\n .neko-input-description {\n font-family: ",";\n font-size: ",";\n color: ",";\n line-height: 14px;\n margin-top: 8px;\n margin-bottom: 0;\n }\n"])),P.fontFamily,P.fontSizeText,P.blue,P.gray,P.fontFamily,P.fontSizeSmall,P.darkGray),pa=function(e){return a.a.createElement(da,e)};pa.propTypes={id:u.a.string,type:u.a.oneOf(["number","text"]),name:u.a.string,value:u.a.string,description:u.a.string,placeholder:u.a.string,onChange:u.a.func,onEnter:u.a.func,onBlur:u.a.func,readOnly:u.a.bool,step:u.a.number,min:u.a.number,max:u.a.number,maxLength:u.a.number,natural:u.a.bool,onReset:u.a.func},pa.defaultProps={id:void 0,type:"text",name:void 0,value:"",description:void 0,placeholder:"",onChange:void 0,onEnter:void 0,onBlur:void 0,readOnly:!1,step:1,min:1,max:999,maxLength:void 0,natural:!1,onReset:void 0};var fa,ma=["id","name","value","description","placeholder","avoidOnEnterWithShift","onEnter","readOnly","maxLength","className","style","textAreaStyle","countable"];function ba(){return(ba=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function ha(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return ga(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return ga(e,n)}(e,n)||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 ga(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function ya(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var va=Object(y.a)((function(e){var n=e.id,t=e.name,o=e.value,i=void 0===o?"":o,l=e.description,c=e.placeholder,u=void 0===c?"":c,s=e.avoidOnEnterWithShift,d=void 0!==s&&s,p=e.onEnter,f=void 0===p?null:p,m=e.readOnly,b=void 0!==m&&m,h=e.maxLength,g=void 0===h?null:h,y=e.className,v=e.style,w=e.textAreaStyle,x=void 0===w?{}:w,E=e.countable,k=void 0!==E&&E,O=ya(e,ma),j=ha(Object(r.useState)(i),2),S=j[0],P=j[1],R=ha(Object(r.useState)(0),2),C=R[0],A=R[1],z=ha(Object(r.useState)(!1),2),N=z[0],I=z[1],T=!!e.onChange,_=Object(r.useCallback)((function(e){I(e.shiftKey)}),[]),D=Object(r.useCallback)((function(){I(!1)}),[]);Object(r.useEffect)((function(){return document.addEventListener("keydown",_,!1),document.addEventListener("keyup",D,!1),function(){document.removeEventListener("keydown",_,!1),document.removeEventListener("keyup",D,!1)}}),[]),Object(r.useEffect)((function(){T||P(i),k&&A(i.length)}),[i,k]);var M=Object(r.useCallback)((function(t){var r=g?t.target.value.substr(0,g):t.target.value;T?e.onChange(r,n):P(r,n)}),[g,e.onChange]);return a.a.createElement("div",{className:[y].join(" "),style:v},a.a.createElement("div",{className:"neko-textarea-container"},a.a.createElement("textarea",ba({className:"neko-textarea",rows:6},O,{id:n,name:t,spellCheck:"false",placeholder:u,onChange:M,onKeyPress:function(t){if(f&&!t.shiftKey&&"Enter"===t.key){if(d&&N)return;t.preventDefault(),e.onEnter(t.target.value,n)}},onBlur:function(t){e.onBlur&&i!==t.target.value&&e.onBlur(t.target.value,n)},readOnly:b,style:x,value:T?i:S})),k&&a.a.createElement("p",{className:"neko-textarea-count"},C," / ",g," characters")),l&&a.a.createElement("p",{className:"neko-input-description"},l))}))(fa||(fa=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n .neko-textarea-container {\n position: relative;\n }\n .neko-textarea {\n font-family: ",";\n font-size: ",";\n border: 2px solid ",";\n box-sizing: border-box;\n background: rgb(0 124 186 / 10%);\n padding: 5px 10px;\n width: 100%;\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.25);\n }\n\n :focus {\n background-color: white;\n }\n\n :read-only {\n background-color: ",";\n }\n }\n .neko-textarea-count {\n color: rgba(",", 0.4);\n font-size: 11px;\n margin: 0;\n position: absolute;\n right: 13px;\n bottom: 10px;\n }\n\n .neko-input-description {\n font-family: ",";\n font-size: ",";\n line-height: 14px;\n margin-top: 8px;\n margin-bottom: 0;\n }\n"])),P.fontFamily,P.fontSizeText,P.blue,P.gray,P.blackRGB,P.fontFamily,P.fontSizeSmall),wa=function(e){return a.a.createElement(va,e)};wa.propTypes={id:u.a.string,name:u.a.string,value:u.a.string,description:u.a.string,placeholder:u.a.string,onChange:u.a.func,onEnter:u.a.func,onBlur:u.a.func,readOnly:u.a.bool,avoidOnEnterWithShift:u.a.bool},wa.defaultProps={id:void 0,name:void 0,value:"",description:void 0,placeholder:"",onChange:void 0,onEnter:void 0,onBlur:void 0,readOnly:!1,avoidOnEnterWithShift:!1};var xa,Ea,ka,Oa,ja,Sa,Pa,Ra=t(76),Ca=t.n(Ra),Aa=t(77),za=t.n(Aa),Na=["id","name","value","scrolldown","isPro","onChange","className","disabled","isBusy","chevronIconSize","textFiltering"];function Ia(){return(Ia=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function Ta(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return _a(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return _a(e,n)}(e,n)||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 _a(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function Da(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function Ma(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var Ba=y.a.div(xa||(xa=Ma(["\n border-radius: 8px;\n position: relative;\n user-select: none;\n cursor: pointer;\n\n &.show-options {\n background-color: ",";\n border-radius: 8px 8px 0 0;\n }\n\n &[data-is-disabled=true] {\n cursor: none;\n pointer-events: none;\n\n .nui-select-option {\n pointer-events: none;\n background: ",";\n border-color: ",";\n padding-right: 10px;\n }\n }\n"])),P.blue,P.gray,P.gray),Fa=y.a.div(Ea||(Ea=Ma(["\n align-items: center;\n background-color: ",";\n border: 2px solid ",";\n border-radius: 8px;\n display: flex;\n font-family: ",";\n font-size: 14px;\n padding: 0 5px 0 10px;\n box-sizing: border-box;\n height: 30px;\n\n &.isBusy {\n padding-left: 5px;\n }\n\n .rightContent {\n align-items: center;\n display: flex;\n margin-left: auto;\n }\n"])),P.white,P.blue,P.fontFamily),La=y.a.div(ka||(ka=Ma(["\n display: block;\n margin-top: 5px;\n font-size: ",";\n line-height: 14px;\n color: ",";\n\n * {\n font-size: ",";\n line-height: inherit;\n margin: 0;\n }\n"])),P.fontSizeSmall,P.darkGray,P.fontSizeSmall),Ua=y.a.div(Oa||(Oa=Ma(["\n border-radius: 8px;\n overflow: hidden;\n padding-top: 28px;\n position: absolute;\n top: 0;\n z-index: 10;\n width: 100%;\n transition: all 0.2s ease-in;\n\n &.hidden {\n opacity: 0;\n }\n"]))),Ga=y.a.div(ja||(ja=Ma(["\n background-color: ",";\n overflow-y: auto;\n max-height: 300px;\n\n &.nui-select-filter-container {\n background-color: ",";\n background: rgb(38 155 214);\n padding: 6px;\n margin-top: 2px;\n overflow: hidden;\n\n div {\n overflow: hidden;\n }\n }\n"])),P.white,P.blue),qa=function(e){var n,t=e.id,o=e.name,i=e.value,l=e.scrolldown,c=void 0!==l&&l,u=e.isPro,s=void 0!==u&&u,d=e.onChange,p=e.className,f=e.disabled,m=e.isBusy,b=void 0!==m&&m,h=e.chevronIconSize,g=void 0===h?24:h,y=e.textFiltering,v=Da(e,Na),w=null===(n=a.a.Children.toArray(e.children).find((function(e){return e.props.value===i||e.props.checked})))||void 0===n?void 0:n.props,x=(null==w?void 0:w.label)||"Select",E=(null==w?void 0:w.description)||e.description,k=(null==w?void 0:w.requirePro)||!1,O=null==w?void 0:w.icon,j=null==w?void 0:w.iconSize,S=Ta(Object(r.useState)(!1),2),C=S[0],A=S[1],z=Ta(Object(r.useState)(""),2),N=z[0],I=z[1],T=c?et((function(){A(!1)})):null,_=k&&!s,M=function(n){if(n!==i){if(!d)return void console.log("The onChange handler it not set for this checkbox.",e);d(n,t)}c&&A(!1)},B=a.a.Children.map(e.children,(function(e){return a.a.cloneElement(e,{name:e.props.name||o,checked:e.props.value===i||e.props.checked,onClick:M,scrolldown:c,isPro:s,disabled:f})})),F=Object(r.useMemo)((function(){if(!N||!B.length)return B;var e=[];return a.a.Children.forEach(B,(function(n){(n.props.label.includes(N)||n.props.value.includes(N))&&e.push(n)})),e}),[B,N]);return c?a.a.createElement(Ba,Ia({id:t,ref:T},v,{onClick:function(){return A(!C)},className:["nui-select",p,C?"show-options":""],childrenLength:B.length,"data-is-disabled":f||b}),a.a.createElement(Fa,{className:"nui-select-option ".concat(b?"isBusy":"")},b?a.a.createElement(a.a.Fragment,null,a.a.createElement(D,{type:"circle",size:"20px"})):a.a.createElement(a.a.Fragment,null,O&&a.a.createElement(gt,{icon:O,width:j,height:j,style:{marginRight:"".concat(Math.max(j-15,4),"px")}}),a.a.createElement("span",{className:"nui-select-option-label"},x),a.a.createElement("div",{className:"rightContent"},_&&a.a.createElement(Ot,null),!f&&a.a.createElement(R.Icon,{icon:C?ee.a:Z.a,width:g})))),E&&a.a.createElement(La,null,E),C&&a.a.createElement(Ua,{className:"nui-option ".concat(C?"":"hidden")},y&&a.a.createElement(Ga,{className:"nui-select-filter-container"},a.a.createElement(pa,{id:"nui-select-filter",value:N,placeholder:"Search...",onChange:function(e){return I(e)},onClick:function(e){return e.stopPropagation()},style:{background:P.white},inputStyle:{margin:0,borderRadius:0},autoFocus:!0})),a.a.createElement(Ga,null,[F]))):B},Wa=y.a.div(Sa||(Sa=Ma(["\n font-family: ",";\n margin-bottom: 6px;\n\n input {\n display: none;\n }\n\n label {\n cursor: pointer;\n display: flex;\n }\n\n .inner-container {\n margin-left: 4px;\n\n .label {\n display: block;\n font-size: 14px;\n line-height: 17px;\n padding-top: 4.5px;\n padding-bottom: 4px;\n }\n .description {\n display: block;\n font-size: ",";\n }\n }\n\n &.disabled {\n color: ",";\n\n label {\n cursor: default;\n }\n }\n"])),P.fontFamily,P.fontSizeSmall,P.disabledForm),Ha=y.a.div(Pa||(Pa=Ma(["\n background-color: ",";\n cursor: pointer;\n font-family: ",";\n\n &:hover {\n filter: brightness(80%);\n }\n\n input {\n display: none;\n }\n\n .option {\n align-items: center;\n color: ",";\n display: flex;\n justify-content: space-between;\n font-family: ",";\n font-size: 14px;\n line-height: 17px;\n padding: 8px 12px;\n\n .option-group {\n align-items: center;\n display: flex;\n }\n }\n\n &.disabled {\n background-color: rgb(224 156 54);\n pointer-events: none;\n\n .option {\n color: rgb(255 255 255 / 35%);\n }\n }\n"])),P.blue,P.fontFamily,P.white,P.fontFamily),$a=function(e){var n=e.id,t=e.name,r=e.value,o=e.checked,i=e.icon,l=e.label,c=e.description,u=e.onClick,s=e.scrolldown,d=e.isPro,p=void 0!==d&&d,f=e.requirePro,m=void 0!==f&&f,b=e.disabled,h=e.iconSize,g=void 0===h?20:h,y=m&&!p,v=y||b?"disabled":"",w=a.a.createElement(Wa,{className:"nui-select ".concat(e.className||""," ").concat(v)},a.a.createElement("input",{id:n,name:t,type:"radio",value:r,defaultChecked:o,onClick:function(e){return u(e.target.value)},disabled:y||b}),a.a.createElement("label",{htmlFor:n},a.a.createElement(R.Icon,{icon:o?za.a:Ca.a,width:"24px",color:y?P.disabledForm:P.blue}),a.a.createElement("div",{className:"inner-container"},a.a.createElement("span",{className:"label"},l,a.a.createElement(Ot,{className:"inline",style:{top:-1},show:y})),c?a.a.createElement("small",{className:"description"},c):null))),x=a.a.createElement(Ha,{className:"nui-select ".concat(e.className||""," ").concat(v)},a.a.createElement("input",{id:n,name:t,type:"radio",value:r,defaultChecked:o,disabled:y||b}),a.a.createElement("div",{className:"option",onClick:function(){return u(r)}},a.a.createElement("div",{className:"option-group"},i&&a.a.createElement(gt,{icon:i,width:g,height:g,style:{marginRight:"".concat(Math.max(g-11,4),"px")}}),l),a.a.createElement(Ot,{show:y})));return s?x:w},Ya=function(e){return a.a.createElement(qa,e)};Ya.propTypes={id:u.a.string,name:u.a.string,description:u.a.string,scrolldown:u.a.bool,isPro:u.a.bool,onChange:u.a.func,isBusy:u.a.bool,chevronIconSize:u.a.number,textFiltering:u.a.bool},Ya.propTypes={id:void 0,name:void 0,description:void 0,scrolldown:!1,isPro:!1,onChange:void 0,isBusy:!1,chevronIconSize:24,textFiltering:void 0};var Ka,Va=function(e){return a.a.createElement($a,e)};Va.propTypes={id:u.a.string,name:u.a.string,value:u.a.string,checked:u.a.bool,label:u.a.string,description:u.a.string,onClick:u.a.func,scrolldown:u.a.bool,isPro:u.a.bool,requirePro:u.a.bool,icon:u.a.string,iconSize:u.a.number},Va.defaultProps={id:void 0,name:void 0,value:void 0,checked:!1,label:void 0,description:void 0,onClick:void 0,scrolldown:!1,isPro:!1,requirePro:!1,icon:void 0,iconSize:20};var Ja=y.a.div(Ka||(Ka=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n label {\n display: block;\n margin-bottom: 3px;\n }\n\n .neko-input, .neko-textarea {\n margin-bottom: 5px;\n }\n"]))),Xa=function(e){return a.a.createElement(Ja,null,e.children||null)},Za=function(e){return a.a.createElement(Xa,e)};Za.propTypes={},Za.defaultProps={};var Qa,eo=["width","height","fontSize","onValue","offValue","checked","onBackgroundColor","offBackgroundColor","onLabel","offLabel","onChange","disabled"];function no(){return(no=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function to(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var ro=Object(y.a)((function(e){e.width,e.height;var n=e.fontSize,t=(void 0===n&&P.fontSizeSmall,e.onValue),o=e.offValue,i=e.checked,l=void 0!==i&&i,c=(e.onBackgroundColor,e.offBackgroundColor,e.onLabel,e.offLabel,e.onChange),u=e.disabled,s=to(e,eo),d=Object(r.useCallback)((function(e){c(e.target.checked?t:o)}),[c,t,o]);return a.a.createElement("label",no({},s,{"data-is-disabled":u?"disabled":""}),a.a.createElement("input",{type:"checkbox",onChange:d,checked:l,disabled:u}),a.a.createElement("span",{className:"nui-switch-slider"}))}))(Qa||(Qa=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n color: ",";\n font-family: ",";\n font-size: ",";\n position: relative;\n display: inline-block;\n width: ",";\n height: ",";\n\n &[data-is-disabled=disabled] {\n opacity: 0.4;\n\n .nui-switch-slider {\n cursor: auto;\n }\n }\n\n input {\n opacity: 0;\n width: 0;\n height: 0;\n border: 0;\n }\n\n .nui-switch-slider {\n background-color: ",";\n border-radius: ",';\n align-items: center;\n cursor: pointer;\n display: inline-flex;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n transition: .4s;\n }\n\n .nui-switch-slider:before {\n border-radius: 50%;\n position: absolute;\n content: "";\n height: ',";\n width: ",';\n left: 4px;\n bottom: 4px;\n background-color: white;\n transition: .3s;\n }\n\n .nui-switch-slider:after {\n content: "','";\n margin-left: auto;\n margin-right: ',";\n }\n\n input:checked + .nui-switch-slider {\n background-color: ",";\n }\n\n input:checked + .nui-switch-slider:before {\n transform: translateX(",');\n }\n\n input:checked + .nui-switch-slider:after {\n content: "','";\n margin-left: ',";\n margin-right: auto;\n }\n"])),P.white,P.fontFamily,(function(e){return e.fontSize}),(function(e){return e.width}),(function(e){return e.height}),(function(e){return e.offBackgroundColor}),(function(e){return e.height}),(function(e){return"calc(".concat(e.height," - 8px)")}),(function(e){return"calc(".concat(e.height," - 8px)")}),(function(e){return e.offLabel}),(function(e){return"calc(".concat(e.height," / 2)")}),(function(e){return e.onBackgroundColor}),(function(e){return"calc(".concat(e.width," - ").concat(e.height,")")}),(function(e){return e.onLabel}),(function(e){return"calc(".concat(e.height," / 2)")})),ao=function(e){return a.a.createElement(ro,e)};ao.propTypes={width:u.a.string,height:u.a.string,fontSize:u.a.string,onValue:u.a.string,offValue:u.a.string,checked:u.a.bool,onBackgroundColor:u.a.string,offBackgroundColor:u.a.string,onLabel:u.a.string,offLabel:u.a.string},ao.defaultProps={width:"100%",height:"20px",fontSize:"${Theme.fontSizeSmall}",checked:!1};var oo,io,lo,co,uo,so,po=t(78),fo=t.n(po);function mo(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return bo(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return bo(e,n)}(e,n)||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 bo(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function ho(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var go=function(e){var n=e.chevron,t=void 0===n||n;return a.a.Children.map(e.children,(function(e){return a.a.cloneElement(e,{chevron:t})}))},yo=y.a.div(oo||(oo=ho(["\n align-items: center;\n display: flex;\n justify-content: space-between;\n margin-bottom: 5px;\n font-family: ",";\n"])),P.fontFamily),vo=y.a.div(io||(io=ho(["\n align-items: center;\n display: flex;\n\n &.can-expand {\n cursor: pointer;\n }\n\n &.selected {\n color: #956DBE;\n }\n\n span {\n font-weight: normal;\n font-size: ",";\n margin: 0 0 0 8px;\n }\n"])),P.fontSizeText),wo=y.a.div(lo||(lo=ho(["\n height: 24px;\n width: 24px;\n"]))),xo=y.a.div(co||(co=ho(["\n position: relative;\n width: 24px;\n height: 24px;\n"]))),Eo=y.a.div(uo||(uo=ho(["\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 100;\n"]))),ko=y.a.div(so||(so=ho(["\n border-left: 1px solid ",";\n margin-left: 12px;\n padding-left: 6px;\n\n &.no-line {\n border-left: 0;\n padding-left: 12px;\n }\n\n &.no-chevron {\n border-left: 0;\n margin-left: 0;\n padding-left: 0;\n }\n"])),P.finderBorder),Oo=function(e){var n={gallery:Ge.a,tag:fo.a},t=e.title,o=e.chevron,i=e.rightElement,l=void 0===i?null:i,c=e.rightElementStyle,u=void 0===c?{marginLeft:"5px"}:c,s=e.showRightElement,d=void 0!==s&&s,p=e.selected,f=void 0!==p&&p,m=e.draggable,b=void 0!==m&&m,h=e.onDragStart,g=e.onDragOver,y=e.onDragEnd,v=e.onDrop,w=e.isExpanded,x=void 0!==w&&w,E=e.dragging,k=void 0!==E&&E,O=e.rightAction,j=void 0===O?null:O,S=e.rightActionOnHover,C=void 0===S?null:S,A=e.onDragLeave,z=(e.preventClose,!!e.icon),N=!!e.children,I=mo(Object(r.useState)(x),2),T=I[0],_=I[1],D=mo(Object(r.useState)((function(){return"string"==typeof e.icon&&Object.keys(n).includes(e.icon)?n[e.icon]:e.icon?e.icon:Be.a})),2),M=D[0],B=D[1],F=Boolean(M),L=mo(Object(r.useState)(!1),2),U=L[0],G=L[1];Object(r.useEffect)((function(){_(x),z||B(x?Be.a:Le.a)}),[x]);var q=a.a.Children.map(e.children,(function(e){return a.a.cloneElement(e,{chevron:o})})),W=k||f?P.purple:f?P.black:P.blue;return a.a.createElement("div",null,a.a.createElement(yo,{onMouseEnter:function(){return G(!0)},onMouseLeave:function(){return G(!1)}},a.a.createElement(vo,{onClick:function(){e.onClick&&e.onClick()},onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,draggable:b,onDragStart:h,onDragOver:g,onDrop:v,className:"".concat(F||q||e.onClick?"can-expand":""," ").concat(f?"selected":""),onDragLeave:A,onDragEnd:y},o?F&&N?a.a.createElement(R.Icon,{icon:T?Z.a:J.a,width:"24",height:"24",onClick:function(e){e.stopPropagation(),_(!T)}}):a.a.createElement(wo,null):null,a.a.createElement(xo,null,a.a.createElement(Eo,null),a.a.createElement(R.Icon,{icon:M,color:W,width:"24",height:"24"})),a.a.createElement("span",null,t),d&&a.a.createElement("div",{style:u},l)),U&&C||j),T&&a.a.createElement(ko,{className:"".concat(F?"":"no-line"," ").concat(o?"":"no-chevron")},q))},jo=function(e){return a.a.createElement(go,e)};jo.propTypes={chevron:u.a.bool},jo.defaultProps={chevron:!0};var So,Po=function(e){return a.a.createElement(Oo,e)};Po.propTypes={icon:u.a.oneOfType([u.a.instanceOf(R.IconifyIcon),u.a.oneOf(["gallery"])]),title:u.a.string,isExpanded:u.a.bool},Po.defaultProps={icon:Be.a,title:void 0,isExpanded:!1};var Ro,Co,Ao=y.a.div(So||(So=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n display: flex;\n width: 100%;\n height: 100%;\n max-width: 128px;\n max-height: 128px;\n\n & > * {\n width: 100%;\n height: auto;\n object-fit: contain;\n }\n"]))),zo=function(){return a.a.createElement(Ao,null,a.a.createElement("svg",{width:"54",height:"38",viewBox:"0 0 54 38",fill:"none",xmlns:"http://www.w3.org/2000/svg"},a.a.createElement("path",{d:"M11.3663 9.40518C9.2981 -3.25522 -0.310763 2.76769 2.5163 9.40518C2.5163 9.40518 8.29338 29.9322 22.3059 26.3677C36.3184 22.8031 23.9038 19.1156 23.9038 19.1156C23.9038 19.1156 13.4345 22.0656 11.3663 9.40518Z",fill:"#724024",stroke:"black",strokeWidth:"2.1869"}),a.a.createElement("path",{d:"M10.7517 8.0531C10.0142 10.7573 6.32673 12.1093 3.99131 11.2489C1.65589 10.3885 2.63923 13.8302 5.09756 14.9364C7.55589 16.0427 11.2434 14.1989 12.1038 12.4781C12.9642 10.7573 11.4892 5.34893 10.7517 8.0531Z",fill:"#B7782E"}),a.a.createElement("path",{d:"M14.0705 17.2718C13.8246 19.2385 9.64547 19.976 7.55589 19.8531C5.46631 19.7302 9.76839 23.5406 11.3663 23.5406C12.9642 23.5406 17.3892 21.2052 17.1434 19.2385C16.8976 17.2718 14.3163 15.3052 14.0705 17.2718Z",fill:"#B7782E"}),a.a.createElement("path",{d:"M17.5121 26.2448C18.6184 25.3843 20.9538 21.8198 19.8476 19.8531C18.7413 17.8864 22.4288 20.9593 22.4288 20.9593L21.6913 26.2448C21.6913 26.2448 16.4059 27.1052 17.5121 26.2448Z",fill:"#B7782E"}),a.a.createElement("path",{d:"M10.7517 8.0531C10.0142 10.7573 6.32673 12.1093 3.99131 11.2489C1.65589 10.3885 2.63923 13.8302 5.09756 14.9364C7.55589 16.0427 11.2434 14.1989 12.1038 12.4781C12.9642 10.7573 11.4892 5.34893 10.7517 8.0531Z",stroke:"black"}),a.a.createElement("path",{d:"M14.0705 17.2718C13.8246 19.2385 9.64547 19.976 7.55589 19.8531C5.46631 19.7302 9.76839 23.5406 11.3663 23.5406C12.9642 23.5406 17.3892 21.2052 17.1434 19.2385C16.8976 17.2718 14.3163 15.3052 14.0705 17.2718Z",stroke:"black"}),a.a.createElement("path",{d:"M17.5121 26.2448C18.6184 25.3843 20.9538 21.8198 19.8476 19.8531C18.7413 17.8864 22.4288 20.9593 22.4288 20.9593L21.6913 26.2448C21.6913 26.2448 16.4059 27.1052 17.5121 26.2448Z",stroke:"black"}),a.a.createElement("path",{d:"M11.3663 9.40518C9.2981 -3.25522 -0.310763 2.76769 2.5163 9.40518C2.5163 9.40518 8.29338 29.9322 22.3059 26.3677C36.3184 22.8031 23.658 19.4843 23.658 19.4843C23.658 19.4843 13.4345 22.0656 11.3663 9.40518Z",stroke:"black",strokeWidth:"2.1869"}),a.a.createElement("path",{d:"M25.3788 9.89685C25.3788 9.89685 21.3225 35.0947 21.9371 35.7093C22.5517 36.3239 27.4684 36.3239 28.083 35.7093C28.6975 35.0947 29.6523 22.5858 30.2955 21.9427C30.9386 21.2995 35.7226 33.1281 36.81 33.1281C37.8975 33.1281 43.2303 21.3567 43.8163 21.9427C44.4023 22.5287 45.2913 35.0947 45.9059 35.7093C46.5204 36.3239 51.3142 36.3239 51.9288 35.7093C52.5434 35.0947 48.9788 9.89685 48.9788 9.89685H42.9559C42.9559 9.89685 37.7934 21.9427 36.81 21.9427C35.8267 21.9427 31.4017 9.89685 31.4017 9.89685H25.3788Z",fill:"white",stroke:"black",strokeWidth:"2.1869"})))},No=function(e){return a.a.createElement(zo,e)};function Io(e){return(Io="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function To(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}No.propTypes={},No.defaultProps={};var _o=Object(y.a)((function(e){var n=e.value,t=void 0===n?0:n,r=e.max,o=void 0===r?100:r,i=e.busy,l=void 0!==i&&i,c=e.status;t=Math.min(t,o);var u=parseFloat(t)/parseFloat(o);return a.a.createElement("div",{className:e.className},a.a.createElement(Do,{ratio:u,busy:e.busy,status:c}),a.a.createElement("div",{className:"nui-progress-buttons"},l&&e.onPauseClick&&a.a.createElement("div",{className:"nui-progress-button pause",onClick:e.onPauseClick},e.paused?a.a.createElement(R.InlineIcon,{icon:ae.a}):a.a.createElement(R.InlineIcon,{icon:te.a})),l&&e.onStopClick&&a.a.createElement("div",{className:"nui-progress-button stop",onClick:e.onStopClick},a.a.createElement(R.InlineIcon,{icon:pe.a}))))}))(Ro||(Ro=To(["\n position: relative;\n box-sizing: border-box;\n height: 30px;\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 0.06) 0%,\n rgba(0, 0, 0, 0.02) 50%,\n rgba(0, 0, 0, 0.10) 100%\n );\n border-radius: 12px;\n\n .nui-progress-buttons {\n position: absolute;\n height: 100%;\n right: 0px;\n display: flex;\n align-items: center;\n padding-right: 5px;\n\n .nui-progress-button {\n border: none;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-left: 2px;\n border-radius: 100%;\n color: white;\n padding: 2px;\n width: 18px;\n height: 18px;\n background-color: ",";\n\n &:hover {\n background-color: ",";\n }\n\n &.stop {\n background: ",";\n\n &:hover {\n background-color: ",";\n }\n }\n }\n }\n"])),P.blue,Object(v.a)(.1,P.blue),P.red,Object(v.a)(.1,P.red)),Do=Object(y.a)((function(e){var n,t,r,o=isNaN(e.ratio)?0:parseInt(Math.round(100*e.ratio)),i=Io(e.status),l="undefined"!==i?"string"===i?e.status:e.status(o):"".concat(o,"%");return a.a.createElement("div",{className:e.className,style:(n={minWidth:28},t="minWidth",r=o+"%",t in n?Object.defineProperty(n,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[t]=r,n)},a.a.createElement("div",null,l))}))(Co||(Co=To(["\n box-sizing: border-box;\n position: absolute;\n overflow: hidden;\n top: 0; left: 0;\n height: 100%;\n background-color: ",";\n border-radius: 12px;\n text-align: center;\n padding: 0 10px;\n vertical-align: middle;\n color: white;\n font-family: ",";\n font-size: ",";\n display: flex;\n justify-content: center;\n align-items: center;\n transition: min-width .2s ease-out;\n\n background-size: 30px 30px;\n background-image: linear-gradient(135deg, rgba(255, 255, 255, .15) 25%,\n transparent 25%,\n transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%,\n transparent 75%, transparent);\n animation: ",";\n\n @keyframes animate-stripes {\n 0% { background-position: 0 0; }\n 100% { background-position: 60px 0; }\n }\n"])),P.progress,P.fontFamily,P.fontSizeText,(function(e){return e.busy?"animate-stripes 1.6s linear infinite":"none"})),Mo=function(e){return a.a.createElement(_o,e)};Mo.propTypes={value:u.a.number,max:u.a.number,busy:u.a.bool,paused:u.a.bool,onPauseClick:u.a.func,onStopClick:u.a.func,status:u.a.oneOf([u.a.string,u.a.func])},Mo.defaultProps={value:0,max:100,busy:!1,paused:!1,onPauseClick:void 0,onStopClick:void 0,status:void 0};var Bo,Fo=t(79),Lo=t.n(Fo);var Uo,Go=y.a.div(Bo||(Bo=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n position: relative;\n color: white;\n font-family: ",";\n font-size: ",";\n display: flex;\n height: 61px;\n overflow: hidden;\n align-items: center;\n padding: 15px 20px;\n background-color: ",";\n display: flex;\n\n .nui-header-logo-container {\n width: 102px;\n height: 102px;\n padding: 20px;\n margin-right: 25px;\n background: rgba(",", 0.1);\n border-radius: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: rotate(-29.83deg);\n }\n\n .nui-header-title-container {\n flex-direction: column;\n display: flex;\n\n .nui-header-title {\n color: white;\n font-family: ",";\n font-size: 23px;\n line-height: normal;\n margin: 0;\n }\n\n .nui-header-subtitle {\n color: white;\n font-family: ",";\n line-height: normal;\n font-size: ",";\n }\n }\n\n .nui-header-extra-content {\n flex: 1;\n margin: 0 20px;\n }\n"])),P.fontFamily,P.fontSizeText,P.header,P.blackRGB,P.fontFamily,P.fontFamily,P.fontSizeText),qo=function(e){var n=e.title,t=void 0===n?"NekoUI":n,r=e.subtitle,o=void 0===r?"By Jordy Meow":r,i=e.children,l=e.saving,c=void 0!==l&&l;return a.a.createElement(Go,null,a.a.createElement("div",{className:"nui-header-logo-container"},a.a.createElement(No,null)),a.a.createElement("div",{className:"nui-header-title-container"},a.a.createElement("h1",{className:"nui-header-title"},t),a.a.createElement("small",{className:"nui-header-subtitle"},a.a.createElement("a",{target:"_blank",href:"https://meowapps.com",style:{color:"white",textDecoration:"none"}},o))),a.a.createElement("div",{className:"nui-header-extra-content"},i),c&&a.a.createElement(gt,{icon:Lo.a,width:"36",height:"36"}))},Wo=function(e){return a.a.createElement(qo,e)};function Ho(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return $o(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return $o(e,n)}(e,n)||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 $o(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}Wo.propTypes={title:u.a.string,subtitle:u.a.string,saving:u.a.bool},Wo.defaultProps={title:"NekoUI",subtitle:"By Jordy Meow",saving:!1};var Yo,Ko,Vo=y.a.div(Uo||(Uo=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n align-items: center;\n display: flex;\n user-select: none;\n\n .neko-paging-text {\n font-family: ",";\n font-style: normal;\n font-weight: normal;\n font-size: 15px;\n line-height: 14px;\n margin-right: 15px;\n }\n\n .neko-paging-controller {\n box-sizing: border-box;\n height: 30px;\n align-items: center;\n background-color: rgba(",", 0.8);\n border-radius: 15px;\n display: flex;\n padding: 3px 5px;\n\n .nako-paging-controller-icon {\n background-color: ",";\n border-radius: 100%;\n cursor: pointer;\n margin-right: 2px;\n height: 22px;\n width: 22px;\n box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.25);\n transition: transform 0.1s ease-in;\n box-sizing: border-box;\n\n :last-child {\n margin-right: 0;\n }\n\n &.disabled {\n color: ",";\n cursor: default;\n pointer-events: none;\n }\n\n &:hover {\n transform: scale(1.2) !important;\n z-index: 10;\n position: relative;\n }\n }\n\n .nako-paging-controller-text {\n color: ",";\n font-family: ",";\n font-style: normal;\n font-weight: normal;\n font-size: ",";\n margin: 0 40px;\n user-select: none;\n }\n\n span.neko-paging-current-page {\n cursor: pointer;\n text-decoration: underline;\n }\n\n input.neko-paging-current-page {\n width: 1.5rem;\n }\n }\n"])),P.fontFamily,P.blueRGB,P.white,P.darkGray,P.white,P.fontFamily,P.fontSizeText),Jo=function(e){var n=e.currentPage,t=e.limit,o=void 0===t?0:t,i=e.onClick,l=e.total,c=void 0===l?0:l,u=e.onCurrentPageChanged,s=(e.full,e.infinite),d=void 0!==s&&s,p=e.controllerText,f=!!u,m=Object(r.useMemo)((function(){return d?0:Math.ceil(0===c?1:o>0?c/o:1)}),[d,o,c]),b="nako-paging-controller-icon ".concat(d||1!==n?"":"disabled"),h="nako-paging-controller-icon ".concat(d||n!==m?"":"disabled"),g=Ho(Object(r.useState)(!1),2),y=g[0],v=g[1],w=function(e){v(!1),i(e)},x=function(e){if(d)return e;var n=Number(e);return n>m?m:n<1?1:n},E=function(e){var n=e.target.value;isNaN(n)||u(x(n)),v(!1)},k=function(e){if("Enter"===event.key){e.preventDefault();var n=e.target.value;isNaN(n)||u(x(n)),v(!1)}},O=Object(r.useMemo)((function(){if(!y){return a.a.createElement("span",{className:f?"neko-paging-current-page":"",onClick:function(){f&&v(!0)}},n)}return a.a.createElement("input",{autoFocus:!0,type:"text",className:f?"neko-paging-current-page":"",defaultValue:n,onBlur:E,onKeyPress:k})}),[n,y,u]),j=function(e){y&&e.target===e.currentTarget&&v(!1)};return a.a.createElement(Vo,null,!!c&&a.a.createElement("span",{className:"neko-paging-text"},c," result",c>0?"s":""),a.a.createElement("div",{className:"neko-paging-controller",onClick:j},!d&&a.a.createElement(R.Icon,{icon:W.a,className:b,onClick:function(){return w(1)}}),a.a.createElement(R.Icon,{icon:K.a,className:b,onClick:function(){return w(n-1)}}),a.a.createElement("p",{className:"nako-paging-controller-text",onClick:j},p||a.a.createElement(a.a.Fragment,null,"Page ",O," of ",m)),a.a.createElement(R.Icon,{icon:J.a,className:h,onClick:function(){return w(n+1)}}),!d&&a.a.createElement(R.Icon,{icon:$.a,className:h,onClick:function(){return w(m)}})))},Xo=function(e){return a.a.createElement(Jo,e)};function Zo(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}Xo.propTypes={currentPage:u.a.number,limit:u.a.number,total:u.a.number,onClick:u.a.func,lastPage:u.a.number,infinite:u.a.bool,controllerText:u.a.object},Xo.defaultProps={currentPage:void 0,limit:0,total:0,onClick:void 0,lastPage:void 0,infinite:!1,controllerText:void 0};var Qo=y.a.div(Yo||(Yo=Zo(["\n display: flex;\n align-items: center;\n"]))),ei=y.a.span(Ko||(Ko=Zo(["\n color: ",";\n cursor: pointer;\n font-family: ",";\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 17px;\n\n &.is-active {\n cursor: default;\n color: ",';\n font-weight: bold;\n }\n\n &::after {\n content: "|";\n color: ',";\n padding: 0 4px;\n }\n\n &:last-child::after {\n content: none;\n }\n\n span {\n color: ",";\n font-weight: normal;\n margin-left: 4px;\n }\n"])),(function(e){return e.variant||P.blue}),P.fontFamily,P.black,P.darkGray,P.darkGray),ni=function(e){var n=e.id,t=e.value,r=e.onChange,o=e.busy,i=void 0!==o&&o,l=e.className,c=a.a.Children.map(e.children,(function(e,o){return a.a.cloneElement(e,{busy:i,isActive:e.props.value===t,onClick:function(e){e!==t&&r(e,n)}})}));return a.a.createElement(Qo,{className:l},c)},ti=function(e){var n=e.title,t=e.value,o=void 0===t?0:t,i=e.count,l=e.onClick,c=e.busy,u=e.isActive,s=e.className,d=e.variant,p=Object(r.useMemo)((function(){if(d)return Object.keys(P).includes(d)?P[d]:d}),[d]);return a.a.createElement(ei,{onClick:function(){return l(o)},className:"".concat(u?"is-active":""," ").concat(s),variant:p},n,null===i?null:a.a.createElement("span",null,"(",c?a.a.createElement(gt,{icon:"replay",spinning:!0,width:12,containerStyle:{display:"inline"}}):i,")"))},ri=function(e){return a.a.createElement(ni,e)};ri.propTypes={id:u.a.string,value:u.a.string,onChange:u.a.func},ri.defaultProps={id:void 0,value:void 0,onChange:void 0};var ai,oi=function(e){return a.a.createElement(ti,e)};oi.propTypes={title:u.a.string,value:u.a.string,count:u.a.number,onClick:u.a.func,isActive:u.a.bool,variant:u.a.string},oi.defaultProps={title:void 0,value:"default",count:0,onClick:void 0,isActive:!1,variant:void 0};var ii,li,ci=y.a.section(ai||(ai=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n .mask {\n position: absolute;\n overflow: hidden;\n display: block;\n width: ","px;\n height: ","px;\n }\n\n .semi-circle {\n position: relative;\n display: block;\n width: ","px;\n height: ",'px;\n background: linear-gradient(to right, #27b775 0%, #f3f32c 50%, #f71b1b 100%);\n border-radius: 50% 50% 50% 50% / 100% 100% 0% 0% ;\n\n &::before {\n content: "";\n position: absolute;\n bottom: 0;\n left: 50%;\n z-index: 2;\n display: block;\n width: 140px;\n height: 70px;\n margin-left: -70px;\n background: ',";\n border-radius: 50% 50% 50% 50% / 100% 100% 0% 0% ;\n } \n }\n\n .semi-circle--mask {\n position: absolute;\n top: 0;\n left: 0;\n width: ","px;\n height: ",'px;\n background: transparent;\n transform-origin: center center;\n backface-visibility: hidden;\n transition: all .3s ease-in-out;\n\n &::before {\n content: "";\n position: absolute;\n top: 0;\n left: 0%;\n z-index: 2;\n display: block;\n width: ',"px;\n height: ","px;\n margin-top: -1px;\n margin-left: -1px;\n background: #5396c1d6;\n border-radius: 50% 50% 50% 50% / 100% 100% 0% 0% ;\n } \n }\n\n .gauge { \n width: ","px;\n height: ","px;\n \n .semi-circle--mask {\n transform: rotate(","deg) translate3d(0,0,0);\n }\n }\n\n .child-container {\n position: absolute;\n font-size: 16px;\n display: flex;\n width: ","px;\n height: ","px;\n z-index: 10;\n\n .spacing {\n flex: auto;\n }\n\n .child {\n color: white;\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n }\n"])),(function(e){return e.width}),(function(e){return e.width/2}),(function(e){return e.width}),(function(e){return e.width/2}),(function(e){return e.backgroundColor}),(function(e){return e.width}),(function(e){return e.width}),(function(e){return e.width+2}),(function(e){return e.width/2+2}),(function(e){return e.width}),(function(e){return e.width/2}),(function(e){return e.degrees}),(function(e){return e.width+2}),(function(e){return e.width/2})),ui=function(e){var n=e.value,t=void 0===n?1e3:n,r=(e.min,e.max),o=void 0===r?2500:r,i=e.width,l=void 0===i?200:i,c=e.background,u=void 0===c?"#007cba":c,s=e.children,d=180*(t<=o?t:o)/o;return a.a.createElement(ci,{backgroundColor:u,degrees:d,width:l},a.a.createElement("div",{class:"gauge"},a.a.createElement("div",{class:"mask"},a.a.createElement("div",{class:"semi-circle"}),a.a.createElement("div",{class:"semi-circle--mask"})),a.a.createElement("div",{class:"child-container"},a.a.createElement("div",{class:"child"},a.a.createElement("div",{class:"spacing"}),s))))};function si(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}ui.propTypes={value:u.a.number,min:u.a.number,max:u.a.number,width:u.a.number,background:u.a.string},ui.defaultProps={value:1e3,min:0,max:2500,width:200,background:"#007cba"};var di,pi=y.a.p(ii||(ii=si(["\n background: #ba341e;\n padding: 20px;\n color: white;\n border-radius: 10px;\n font-size: 15px;\n\n a {\n color: white;\n font-weight: bold;\n }\n"]))),fi=y.a.p(li||(li=si(["\n background: #1eba96;\n padding: 20px;\n color: white;\n border-radius: 10px;\n font-size: 15px;\n text-align: center;\n\n a {\n color: white;\n font-weight: bold;\n }\n"]))),mi=["multiple","width","height","iconSize","iconColor","onSuccess","onFailure","style","apiUrl","apiConfig","onClick","disabled"];function bi(){return(bi=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function hi(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function gi(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?hi(Object(t),!0).forEach((function(n){yi(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):hi(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function yi(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function vi(e){return function(e){if(Array.isArray(e))return Oi(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ki(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 wi(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function xi(e){return function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){wi(o,r,a,i,l,"next",e)}function l(e){wi(o,r,a,i,l,"throw",e)}i(void 0)}))}}function Ei(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||ki(e,n)||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 ki(e,n){if(e){if("string"==typeof e)return Oi(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Oi(e,n):void 0}}function Oi(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function ji(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var Si=y.a.div(di||(di=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n box-sizing: border-box;\n background: #C4C4C4;\n color: rgb(0 0 0 / 60%);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n transition: all 0.25s ease;\n\n &[data-is-disabled=true] {\n svg {\n opacity: 0.7;\n }\n }\n\n div {\n transition: all 0.5s ease;\n transform: scale(1.5);\n pointer-events: none;\n max-width: 100%;\n }\n\n &:hover {\n cursor: pointer;\n }\n\n &.dropping {\n background: #a4d5ff;\n\n div {\n transform: scale(2);\n }\n }\n"]))),Pi=function(e){var n=e.multiple,t=e.width,o=void 0===t?"100%":t,i=e.height,l=void 0===i?"100%":i,c=e.iconSize,u=void 0===c?48:c,s=e.iconColor,d=void 0===s?"#A9A9A9":s,p=e.onSuccess,f=void 0===p?function(){}:p,m=e.onFailure,b=void 0===m?function(){}:m,h=e.style,g=void 0===h?{}:h,y=e.apiUrl,v=e.apiConfig,w=e.onClick,x=e.disabled,E=ji(e,mi),k=Ei(Object(r.useState)(!1),2),O=k[0],j=k[1],S=Ei(Object(r.useState)(Math.floor(1e8*Math.random())),2),P=S[0],R=(S[1],Object(r.useRef)(null)),C=Object(r.useRef)(null),A=Ei(Object(r.useState)(!1),2),z=A[0],N=A[1];Object(r.useEffect)((function(){C&&(C.current.style.pointerEvents=z?"none":"auto")}),[C,z]);var I=function(){var e=xi(regeneratorRuntime.mark((function e(t){var r,a,o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return N(!0),r=function(){var e=xi(regeneratorRuntime.mark((function e(n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return v.file=n,e.next=3,Yn(y,v);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),e.next=4,Promise.all(t.map(function(){var e=xi(regeneratorRuntime.mark((function e(n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,r(n);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}()));case 4:a=e.sent,o=a.filter((function(e){return e.success})),i=a.filter((function(e){return!e.success})),o.length&&f(n?o:o[0]),i.length&&b(n?i:i[0]),N(!1);case 10:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),T=function(e){e.preventDefault(),e.stopPropagation()},_=function(e){e.preventDefault(),e.stopPropagation(),j(!0)},D=function(e,n){n.preventDefault(),n.stopPropagation(),j(!1),console.log(e),I(e)};return a.a.createElement("div",{ref:C},a.a.createElement("input",{type:"file",id:P,accept:"image/*",ref:R,onChange:function(e){var n=vi(e.target.files);D(n,e)},style:{display:"none"},disabled:x,multiple:n}),a.a.createElement(Si,bi({onClick:function(){w?w():R.current.click()},style:gi(gi({},g),{},{width:o,height:l}),className:O?"dropping":"",onDragOver:T,onDragEnter:_,onDragLeave:function(e){e.preventDefault(),e.stopPropagation(),j(!1)},onDrop:function(e){var n=vi(e.dataTransfer.files);D(n,e)},"data-is-disabled":x},E),a.a.createElement(gt,{width:u,height:u,icon:"upload",spinning:z,color:d,onDragOver:T,onDragEnter:_})))};Pi.propTypes={width:u.a.string,height:u.a.string,onSuccess:u.a.func,onFailure:u.a.func,style:u.a.object,apiUrl:u.a.string,apiConfig:u.a.object},Pi.defaultProps={width:"100%",height:"100%",onSuccess:function(){},onFailure:function(){},style:{}};var Ri,Ci=["onSuccess","onFailure","apiUrl","apiConfig","className","disabled","children","multiple"];function Ai(){return(Ai=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function zi(e){return function(e){if(Array.isArray(e))return Di(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||_i(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 Ni(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function Ii(e){return function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){Ni(o,r,a,i,l,"next",e)}function l(e){Ni(o,r,a,i,l,"throw",e)}i(void 0)}))}}function Ti(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||_i(e,n)||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 _i(e,n){if(e){if("string"==typeof e)return Di(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Di(e,n):void 0}}function Di(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function Mi(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var Bi=y.a.div(Ri||(Ri=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n &.dropping {\n background: #a4d5ff;\n }\n"]))),Fi=Object(r.forwardRef)((function(e,n){var t=e.onSuccess,o=void 0===t?function(){}:t,i=e.onFailure,l=void 0===i?function(){}:i,c=e.apiUrl,u=e.apiConfig,s=e.className,d=e.disabled,p=void 0!==d&&d,f=e.children,m=e.multiple,b=Mi(e,Ci),h=Ti(Object(r.useState)(!1),2),y=h[0],v=h[1],w=Ti(Object(r.useState)(!1),2),x=w[0],E=w[1],k=Object(r.useCallback)(function(){var e=Ii(regeneratorRuntime.mark((function e(n){var t,r,a,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return E(!0),t=function(){var e=Ii(regeneratorRuntime.mark((function e(n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u.file=n,e.next=3,Yn(c,u);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),e.next=4,Promise.all(n.map(function(){var e=Ii(regeneratorRuntime.mark((function e(n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t(n);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}()));case 4:r=e.sent,a=r.filter((function(e){return e.success})),i=r.filter((function(e){return!e.success})),a.length&&o(m?a:a[0]),i.length&&l(m?i:i[0]),E(!1);case 10:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),[u,o,l]),O=Object(r.useCallback)((function(e,n){n.preventDefault(),n.stopPropagation(),v(!1),k(e)}),[k]),j=Object(r.useCallback)((function(e){e.preventDefault(),e.stopPropagation()}),[]),S=Object(r.useCallback)((function(e){e.preventDefault(),e.stopPropagation(),p||v(!0)}),[p]),P=Object(r.useCallback)((function(e){e.preventDefault(),e.stopPropagation(),p||v(!1)}),[p]),R=Object(r.useCallback)((function(e){if(!p){var n=zi(e.dataTransfer.files);O(n,e)}}),[p,O]),C=Object(r.useCallback)((function(e){var n=zi(e.target.files);O(n,e)}),[O]);return a.a.createElement(g,{busy:x},a.a.createElement("input",{type:"file",accept:"image/*",ref:n,onChange:C,style:{display:"none"},multiple:m}),a.a.createElement(Bi,Ai({className:"".concat(s||""," ").concat(y?"dropping":""),onDragOver:j,onDragEnter:S,onDragLeave:P,onDrop:R},b),f))}));Fi.propTypes={ref:u.a.ref,onSuccess:u.a.func,onFailure:u.a.func,apiUrl:u.a.string,apiConfig:u.a.object,disabled:u.a.bool},Fi.defaultProps={onSuccess:function(){},onFailure:function(){},disabled:!1};var Li,Ui,Gi,qi,Wi,Hi=["month","year","onEventClicked","onEventMoved","eventBuilder","events"];function $i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function Yi(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function Ki(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return Vi(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Vi(e,n)}(e,n)||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 Vi(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function Ji(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function Xi(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var Zi={Monday:1,Tuesday:2,Wednesday:3,Thursday:4,Friday:5,Saturday:6,Sunday:7},Qi=y.a.div(Li||(Li=Xi(["\n display: flex;\n flex-direction: column;\n border-radius: 5px;\n font-family: ",";\n font-size: ",";\n"])),P.fontFamily,P.fontSizeSmall),el=y.a.div(Ui||(Ui=Xi(["\n display: flex;\n width: 100%;\n padding: 10px 0px;\n color: white;\n background: ",";\n border-radius: 5px 5px 0px 0px;\n\n div {\n width: calc(100% / 7);\n text-align: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n"])),P.primary),nl=y.a.div(Gi||(Gi=Xi(["\n display: flex;\n flex-direction: column;\n"]))),tl=y.a.div(qi||(qi=Xi(["\n display: flex;\n"]))),rl=y.a.div(Wi||(Wi=Xi(["\n background: purple;\n width: calc(100% / 7);\n background: ",";;\n padding: 3px;\n border-bottom: 1px solid ",";\n border-right: 1px solid ",";\n position: relative;\n transition: background-color 150ms linear;\n box-sizing: border-box;\n\n &:first-child {\n border-left: 1px solid ",";\n }\n\n &:last-child {\n border-right: 1px solid ",";\n }\n\n .day {\n text-align: right;\n color: ",";\n margin-bottom: 5px;\n }\n\n &.highlighted {\n background: #ffe8bc;\n }\n\n &.today .day {\n font-weight: bold;\n text-decoration: underline;\n }\n\n .gray-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: ",";\n opacity: 0.8;\n }\n\n .event {\n margin-bottom: 2px;\n }\n\n .event:last-child {\n margin-bottom: 0px;\n }\n"])),P.white,P.lightGray,P.lightGray,P.lightGray,P.lightGray,P.black,P.lightGray);var al=function(e){var n=e.month,t=void 0===n?(new Date).getMonth():n,a=e.year,o=void 0===a?(new Date).getFullYear():a,i=e.onEventClicked,l=void 0===i?function(){console.log("[NekoCalendar] onEventClicked not handled.")}:i,c=e.onEventMoved,u=void 0===c?function(){console.log("[NekoCalendar] onEventMoved not handled.")}:c,s=e.eventBuilder,d=void 0===s?function(){return"YOOO"}:s,p=e.events,f=Ji(e,Hi),m=Ki(Object(r.useState)(),2),b=m[0],h=m[1],g=Ki(Object(r.useState)(),2),y=g[0],v=g[1],w=e.disableDaysBefore,x=void 0===w?null:w;x=x||new Date((new Date).getFullYear(),(new Date).getMonth(),(new Date).getDate());var E=Object(r.useMemo)((function(){for(var e=[],n=function(e,n){for(var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Zi.Monday,r=new Date(n,e);r.getDay()!==t;)r.setDate(r.getDate()-1);return r}(t,o,Zi.Monday),r=function(e,n){for(var t=new Date(e),r=new Date(n),a=0;t<=r;)a++,t.setDate(t.getDate()+1);return a-1}(n,new Date(o,t,1))<5?34:41,a=new Date(n).setDate(n.getDate()+r);n<=a;)e.push(new Date(n)),n.setDate(n.getDate()+1);return function(e,n){for(var t=[],r=0;r<e.length;)t.push(e.slice(r,r+=n));return t}(e,7)}),[t,o]);return React.createElement(Qi,f,React.createElement(el,null,Object.keys(Zi).map((function(e){return React.createElement("div",{key:e},e)}))),React.createElement(nl,null,E.map((function(e){return React.createElement(tl,{key:e},e.map((function(e){var n,r,a=e.getMonth()==t,o=!a||e<x,i=(o?"disabled ":"")+(n=e,r=new Date,n.getFullYear()===r.getFullYear()&&n.getMonth()===r.getMonth()&&n.getDate()===r.getDate()?"today":"")+(e===y?"highlighted":""),c=p.filter((function(n){return a&&n.date.getDate()===e.getDate()}));return React.createElement(rl,{className:i,key:e.getTime(),onDragOver:function(n){return!o&&(t=e,r=b.date,t.getFullYear()!==r.getFullYear()||t.getMonth()!==r.getMonth()||t.getDate()!==r.getDate())&&(n.preventDefault(),v(e),!0);var t,r},onDragLeave:function(){return v(null)},onDrop:function(){u(e,b),v(null)}},React.createElement("div",{className:"day"},e.getDate()),c.map((function(e){return React.createElement("div",{className:"event",key:e.key,draggable:e.draggable,onClick:function(){return l(e)},onDragStart:function(n){return h(e)}},d(function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?$i(Object(t),!0).forEach((function(n){Yi(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):$i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},e)))})),o&&React.createElement("div",{className:"gray-overlay"}))})))}))))};al.propTypes={month:u.a.number,year:u.a.number,disableDaysBefore:u.a.instanceOf(Date),disableDaysAfter:u.a.instanceOf(Date),eventBuilder:u.a.func,events:u.a.array,onEventClicked:u.a.func,onEventMoved:u.a.func},al.defaultProps={month:(new Date).getMonth(),year:(new Date).getFullYear(),disableDaysBefore:null,disableDaysAfter:null,eventBuilder:function(){return"UI for this event"},events:[{key:"A1",date:new Date},{key:"A2",date:new Date}],onEventClicked:function(e){console.log("An event was clicked",e)},onEventMoved:function(e,n){console.log("An event was moved to another day",n,e)}};var ol,il,ll=t(80),cl=t.n(ll),ul=["id","isOpen","children","className","style","ok","cancel","customButtons","customButtonsPosition","title","content","contentWidth","onOkClick","onCancelClick","okOnEnter","thumbnail"];function sl(){return(sl=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function dl(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function pl(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var fl=y.a.div(ol||(ol=pl(["\n\n .ReactModal__Overlay {\n z-index: 100;\n display: flex;\n justify-content: center;\n flex-direction: column;\n align-items: center;\n background: "," !important;\n }\n .ReactModal__Overlay {\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n .ReactModal__Overlay--after-open {\n opacity: 1;\n }\n .ReactModal__Overlay--before-close {\n opacity: 0;\n }\n .ReactModal__Overlay .neko-modal {\n opacity: 0;\n transform: scale(0.85);\n transition: all 200ms ease-in-out;\n }\n .ReactModal__Overlay--after-open .neko-modal {\n transform: scale(1);\n opacity: 1;\n }\n .ReactModal__Overlay--before-close .neko-modal {\n transform: scale(0.85);\n opacity: 0;\n }\n .neko-modal {\n background: ",";\n position: relative;\n box-shadow: 2px 2px 15px 2px rgba(0, 0, 0, 0.8);\n outline: none;\n padding: 15px;\n max-width: 820px;\n }\n"])),P.overlay,P.white),ml=y.a.div(il||(il=pl(["\n width: ",";\n\n p {\n margin: 0;\n }\n .title {\n font-family: ",";\n font-style: normal;\n font-weight: normal;\n font-size: 18px;\n line-height: 22px;\n }\n .content-container {\n display: flex;\n margin-top: 15px;\n\n .thumbnail {\n margin-right: 15px;\n width: 240px;\n overflow: hidden;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n }\n .content {\n flex: auto;\n font-family: ",";\n font-style: normal;\n font-weight: normal;\n font-size: ",";\n line-height: 14px;\n width: 100%;\n }\n }\n .button-group {\n align-items: center;\n display: flex;\n justify-content: flex-end;\n margin-top: 15px;\n font-size: inherit;\n white-space: normal;\n }\n"])),(function(e){var n;return null!==(n=e.width)&&void 0!==n?n:"518px"}),P.fontFamily,P.fontFamily,P.fontSizeText),bl=function(e){var n=e.id,t=void 0===n?"neko-modal-parent":n,o=e.isOpen,i=e.children,l=e.className,c=e.style,u=e.ok,s=void 0===u?"OK":u,d=e.cancel,p=void 0===d?"Cancel":d,f=e.customButtons,m=void 0===f?null:f,b=e.customButtonsPosition,h=void 0===b?"right":b,g=e.title,y=void 0===g?"":g,v=e.content,w=void 0===v?"":v,x=e.contentWidth,E=e.onOkClick,k=e.onCancelClick,O=e.okOnEnter,j=void 0!==O&&O,S=e.thumbnail,P=dl(e,ul),R=c?"custom-modal":"",C=null!==m,A=Object(r.useCallback)((function(e){"Enter"===e.key&&E()}),[E]);Object(r.useEffect)((function(){if(j&&o)return window.addEventListener("keyup",A),function(){window.removeEventListener("keyup",A)}}),[o,A]);var z=i||a.a.createElement(ml,{width:x},y&&a.a.createElement("p",{className:"title"},y),a.a.createElement("div",{className:"content-container"},S&&a.a.createElement("div",{className:"thumbnail"},S),w&&a.a.createElement("p",{className:"content"},w)),a.a.createElement("div",{className:"button-group"},C&&"left"===h&&m,k&&a.a.createElement(Dt,{className:"danger",onClick:k},p),E&&a.a.createElement(Dt,{onClick:E},s),C&&"right"===h&&m));return a.a.createElement(a.a.Fragment,null,a.a.createElement(fl,{id:t}),a.a.createElement(cl.a,sl({ariaHideApp:!1,parentSelector:function(){return document.getElementById(t)},closeTimeoutMS:200,className:"neko-modal ".concat(l||""," ").concat(R),isOpen:o},P),z))},hl=function(e){return a.a.createElement(bl,e)};hl.propTypes={className:u.a.string,style:u.a.object,ok:u.a.string,cancel:u.a.string,title:u.a.string,content:u.a.string,contentWidth:u.a.string,onOkClick:u.a.func,onCancelClick:u.a.func,customButtons:u.a.object,okOnEnter:u.a.bool,thumbnail:u.a.element},hl.defaultProps={className:void 0,style:void 0,ok:"OK",cancel:"Cancel",title:"",content:"",contentWidth:void 0,onOkClick:void 0,onCancelClick:void 0,customButtons:null,okOnEnter:!1,thumbnail:void 0};var gl,yl=t(81),vl=t.n(yl),wl=["checked","intermediate","onSelect","onUnselect"];function xl(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function El(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?xl(Object(t),!0).forEach((function(n){kl(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):xl(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function kl(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function Ol(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var jl=y.a.table(gl||(gl=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n font-family: ",";\n border-spacing: 0;\n width: 100%;\n word-break: break-all;\n\n th, td {\n margin: 0;\n padding: 5px;\n border-bottom: 1px solid rgba(",", 0.1);\n border-right: 1px solid rgba(",", 0.1);\n\n a {\n text-decoration: none;\n }\n\n :last-child {\n border-right: 0;\n }\n }\n\n &.nekotable-raw {\n th, td {\n border: 0;\n }\n }\n\n th, tfoot td {\n height: 30px;\n background-color: ",";\n color: ",";\n font-style: normal;\n font-weight: normal;\n font-size: ",";\n line-height: 16px;\n text-align: left;\n\n div {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n &.sortable {\n cursor: pointer;\n }\n }\n }\n\n thead tr th:first-child {\n border-top-left-radius: 10px;\n }\n\n thead tr th:last-child {\n border-top-right-radius: 10px;\n }\n\n tfoot tr th:first-child {\n border-bottom-left-radius: 10px;\n }\n\n tfoot tr th:last-child {\n border-bottom-right-radius: 10px;\n }\n\n &.nekotable-raw {\n th {\n font-weight: bold;\n }\n th, tfoot td {\n background-color: ",";\n color: ",";\n\n div {\n justify-content: normal;\n }\n }\n }\n\n tbody {\n background-color: ",";\n \n tr {\n :nth-child(even) {\n background-color: ",";\n }\n &.selected {\n background-color: rgba(",", 0.8);\n color: ",";\n\n a {\n color: #81e8ff;\n }\n }\n }\n img {\n vertical-align: bottom;\n }\n }\n\n &.nekotable-raw {\n tbody {\n tr {\n :nth-child(even) {\n background-color: ",";\n }\n &.selected {\n background-color: ",";\n color: ",";\n }\n }\n }\n }\n\n tfoot tr:last-child {\n td {\n border-bottom: 0;\n }\n }\n\n .table-checkbox-cell {\n width: 35px;\n text-align: center;\n\n svg {\n padding: 5px;\n cursor: pointer;\n }\n }\n"])),P.fontFamily,P.blackRGB,P.blackRGB,P.blue,P.white,P.fontSizeText,P.white,P.black,P.white,P.tableGray,P.blueRGB,P.white,P.white,P.white,P.black),Sl=function(e){var n=e.checked,t=e.intermediate,r=void 0!==t&&t,o=e.onSelect,i=void 0===o?function(){}:o,l=e.onUnselect,c=void 0===l?function(){}:l;Ol(e,wl);return a.a.createElement(R.Icon,{icon:r?vl.a:n?Qr.a:Xr.a,width:"24px",height:"24px",onClick:function(e){n?c(e):i(e)}})},Pl={left:"start",center:"center",right:"end"},Rl=function(e){var n=e.columns,t=e.data,r=e.busy,o=void 0!==r&&r,i=e.onSelect,l=e.onUnselect,c=e.selectedItems,u=e.sort,s=e.onSortChange,d=e.variant,p=void 0===d?"default":d,f=e.sortIconColor,m=void 0===f?void 0:f,b=e.emptyMessage,h=void 0===b?"Empty.":b,y=n.length+(i?1:0),v=function(e){var n={};return e.align&&(n={textAlign:e.align,justifyContent:Pl[e.align]}),e.width&&(n=El(El({},n),{},{width:e.width})),e.style&&(n=El(El({},n),e.style)),n},w=t.map((function(e){var t=n.map((function(n){return{value:e[n.accessor],style:v(n)}}));return{id:e.id,cells:t}})),x=w.map((function(e){return e.id})),E=x.filter((function(e){return c.includes(e)})).length===x.length,k=!E&&c.length>0,O=n.reduce((function(e,n,t){return!1===n.visible&&e.push(t),e}),[]),j=a.a.createElement("tr",null,i&&a.a.createElement("th",{className:"table-checkbox-cell"},a.a.createElement(Sl,{checked:E,intermediate:k,onSelect:function(e){return i(x,e)},onUnselect:function(e){l(k?c:x,e)}})),n.filter((function(e,n){return!O.includes(n)})).map((function(e){var n=u&&u.accessor===e.accessor,t=u&&"asc"===u.by,r=n?P.white:"rgba(".concat(P.blackRGB,", 0.1)");m&&(r=n?m:P.gray);var o=v(e);return a.a.createElement("th",{style:o,key:e.accessor},a.a.createElement("div",{className:e.sortable?"sortable":"",style:El(El({},o),{},{width:"auto"}),onClick:e.sortable?function(r){s(e.accessor,n&&t?"desc":"asc",r)}:void 0},a.a.createElement("div",null,e.title),a.a.createElement("div",{style:{flex:"auto"}}),a.a.createElement("div",null,e.sortable&&a.a.createElement(R.Icon,{icon:n?t?Z.a:ee.a:Z.a,color:r,width:"26px",height:"26px"}))))})));return a.a.createElement(g,{busy:o,overlayStyle:{top:"36px",height:"calc(100% - 76px)"}},a.a.createElement(jl,{className:"nekotable-".concat(p)},a.a.createElement("thead",null,j),a.a.createElement("tbody",null,!w.length&&a.a.createElement("tr",null,a.a.createElement("td",{colspan:y,style:{textAlign:"center",height:40,color:"gray"}},h)),w.map((function(e){return a.a.createElement("tr",{className:c.includes(e.id)?"selected":""},i&&a.a.createElement("td",{className:"table-checkbox-cell"},a.a.createElement(Sl,{checked:c.includes(e.id),onSelect:function(n){return i([e.id],n)},onUnselect:function(n){return l([e.id],n)}})),e.cells.filter((function(e,n){return!O.includes(n)})).map((function(e){return a.a.createElement("td",{style:e.style},e.value)})))}))),"default"===p&&a.a.createElement("tfoot",null,j)))},Cl=function(e){return a.a.createElement(Rl,e)};Cl.propTypes={columns:u.a.arrayOf(u.a.any),data:u.a.arrayOf(u.a.any),busy:u.a.arrayOf(u.a.bool),onSelect:u.a.func,onUnselect:u.a.func,selectedItems:u.a.arrayOf(u.a.object),onSortChange:u.a.func,variant:u.a.string,sortIconColor:u.a.string},Cl.defaultProps={columns:void 0,data:void 0,busy:!1,onSelect:void 0,onUnselect:void 0,selectedItems:void 0,onSortChange:void 0,variant:"default",sortIconColor:void 0};var Al,zl=["images","onNextPage","onPreviousPage","onRefresh","onClick","onRemoveClick","onZoomClick","onSearch","searchValue","busy","currentPage","limit","total","onPageChange","selected","multiSelect","showUploader","uploader","onSelectedOrderChanged","onUploadSuccess","onUploadFailure","uploadApiUrl","uploadApiConfig","uploadMultiple","onClose","onCancel","onSave"];function Nl(){return(Nl=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function Il(e){return function(e){if(Array.isArray(e))return Dl(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||_l(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 Tl(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||_l(e,n)||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 _l(e,n){if(e){if("string"==typeof e)return Dl(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Dl(e,n):void 0}}function Dl(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function Ml(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var Bl,Fl,Ll,Ul,Gl=Object(y.a)(hl)(Al||(Al=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n width: 633px;\n\n &.custom-modal {\n padding: 0;\n }\n\n .neko-modal-wrapper {\n padding: 15px;\n }\n\n .neko-media-library-modal-content-header {\n align-items: center;\n display: flex;\n justify-content: space-between;\n\n h1 {\n font-size: 21px;\n font-weight: bold;\n margin: 0;\n }\n\n input {\n background-color: ",";\n border: 1px solid ",";\n border-radius: 3px;\n }\n }\n .neko-media-library-modal-content-body {\n margin-top: 33px;\n margin-bottom: 36px;\n\n .neko-media-library-modal-content-body-list {\n max-height: 406px;\n overflow-y: scroll;\n margin-bottom: 10px;\n width: 100%;\n }\n .neko-media-library-modal-content-body-gallery {\n display: grid;\n gap: 10px;\n grid-template-columns: repeat(6, 1fr);\n margin-bottom: 10px;\n\n .neko-media-library-modal-content-media-container {\n cursor: pointer;\n position: relative;\n\n img {\n box-sizing: border-box;\n }\n\n &.selected {\n img {\n border: 5px solid ",";\n }\n }\n\n &:hover {\n .zoom-button {\n display: block;\n }\n }\n\n .zoom-button {\n background-color: rgba(",", 0.4);\n border: 0;\n border-radius: 30px;\n cursor: pointer;\n display: none;\n position: absolute;\n top: 2px;\n left: 2px;\n width: 30px;\n height: 30px;\n }\n }\n }\n\n .neko-media-library-modal-content-body-selected-gallery {\n display: flex;\n\n .neko-media-library-modal-content-selected-media-container {\n overflow: hidden;\n position: relative;\n height: 50px;\n width: 50px;\n padding-right: 5px;\n\n &.dummy {\n width: 50px;\n\n &.drag-over {\n width: 50px;\n }\n }\n\n &.drag-over {\n width: 105px;\n\n .zoom-button {\n left: 56px;\n }\n }\n\n &.drag-over::before {\n content: '';\n display: inline-block;\n width: 50px;\n height: 50px;\n background-color: ",";\n }\n\n img {\n box-sizing: border-box;\n width: 100%;\n max-width: 50px;\n }\n\n &.drag-over {\n img {\n margin-left: 5px;\n }\n }\n\n &:hover {\n .remove-button,\n .zoom-button {\n display: block;\n }\n }\n\n .remove-button {\n background-color: rgba(",", 0.4);\n border: 0;\n border-radius: 20px;\n cursor: pointer;\n display: none;\n position: absolute;\n top: 1px;\n right: 1px;\n width: 20px;\n height: 20px;\n }\n\n .zoom-button {\n background-color: rgba(",", 0.4);\n border: 0;\n border-radius: 20px;\n cursor: pointer;\n display: none;\n position: absolute;\n top: 1px;\n left: 1px;\n width: 20px;\n height: 20px;\n }\n }\n }\n }\n .neko-media-library-modal-content-footer {\n display: flex;\n justify-content: space-between;\n }\n .neko-media-library-modal-search {\n position: relative;\n }\n"])),P.white,P.black,P.blue,P.blackRGB,P.blue,P.blackRGB,P.blackRGB),ql=function(e){Array.prototype.forEach.call(document.getElementsByClassName(e),(function(n){n.classList.remove(e)}))},Wl="grid",Hl="list",$l=[{accessor:"thumbnail_url",title:"Thumb",style:{width:"42px"}},{accessor:"title",title:"Title"},{accessor:"size",title:"Size",style:{width:"70px"}},{accessor:"filename",title:"Filename"}],Yl=function(e){var n=e.images,t=(e.onNextPage,e.onPreviousPage,e.onRefresh),o=e.onClick,i=e.onRemoveClick,l=e.onZoomClick,c=e.onSearch,u=e.searchValue,s=e.busy,d=e.currentPage,p=e.limit,f=e.total,m=e.onPageChange,b=e.selected,h=e.multiSelect,y=void 0!==h&&h,v=e.showUploader,w=void 0!==v&&v,x=e.uploader,E=e.onSelectedOrderChanged,k=e.onUploadSuccess,O=void 0===k?function(){}:k,j=e.onUploadFailure,S=void 0===j?function(){}:j,R=e.uploadApiUrl,C=e.uploadApiConfig,A=e.uploadMultiple,z=e.onClose,N=e.onCancel,I=e.onSave,T=Ml(e,zl),_=Tl(Object(r.useState)(u),2),D=_[0],M=_[1],B=Tl(Object(r.useState)(null),2),F=B[0],L=B[1],U=Tl(Object(r.useState)(Wl),2),G=U[0],q=U[1],W=Object(r.useRef)(null),H=Object(r.useMemo)((function(e,n){if(null==e||e.preventDefault(),null!==F){var t=e.currentTarget.getBoundingClientRect(),r=t.width,a=t.left,o=t.right,i=n;F<n&&(n>0&&n<b.length?i+1===F&&e.clientX>=o-25?i-=1:(i-1===F&&e.clientX>=a-25||55!==r&&e.clientX>=o-25)&&(i+=1):55!==r&&e.clientX>=o-25&&(i+=1)),ql("drag-over"),F!==i&&F+1!==i&&document.getElementById("".concat("nmlm-selected-").concat(i)).classList.add("drag-over")}}),[F,b.length]),$=Object(r.useMemo)((function(e){null==e||e.preventDefault(),L(null),ql("drag-over")}),[]),Y=Object(r.useMemo)((function(e,n){null==e||e.preventDefault(),null!==F&&F!==n&&F+1!==n&&E({currentIndex:F,afterIndex:F>n?n:n-1})}),[F,E]),K=Object(r.useMemo)((function(){if(!y)return[];var e=a.a.createElement("div",{id:"nmlm-selected-".concat(b.length),className:"neko-media-library-modal-content-selected-media-container dummy",draggable:!1,onDragEnd:function(e){return $(e)},onDragOver:function(e){return H(e,b.length)},onDrop:function(e){return Y(e,b.length)},onDragLeave:function(){return ql("drag-over")}}),n=b.map((function(e,n){return a.a.createElement("div",{id:"nmlm-selected-".concat(n),key:e.id,className:"neko-media-library-modal-content-selected-media-container",draggable:!0,onDragStart:function(){return L(n)},onDragEnd:$,onDragOver:function(e){return H(e,n)},onDrop:function(e){return Y(e,n)}},a.a.createElement("img",{src:e.src,className:"neko-media-library-modal-content-media"}),a.a.createElement("button",{className:"remove-button",onClick:function(){return i({id:e.id,src:e.src})}},a.a.createElement(gt,{icon:"close",color:P.white,width:19,height:19})),a.a.createElement("button",{className:"zoom-button",onClick:function(){return l(e)}},a.a.createElement(gt,{icon:"zoom-in",color:P.white,width:19,height:19})))}));return[].concat(Il(n),[e])}),[b,y,i,l,H,$,Y]),V=Object(r.useMemo)((function(){return n.map((function(e){return a.a.createElement("div",{key:e.id,className:"neko-media-library-modal-content-media-container ".concat(b.some((function(n){return n.id===e.id}))?"selected":""),onClick:function(){o({id:e.id,src:e.src,zoom_src:e.zoom_src})}},a.a.createElement("img",{src:e.src,className:"neko-media-library-modal-content-media",width:"90",height:"90"}),a.a.createElement("button",{className:"zoom-button",onClick:function(n){n.stopPropagation(),l(e)}},a.a.createElement(gt,{icon:"zoom-in",color:P.white,width:29,height:29})))}))}),[n,b,l,o]),J=Object(r.useMemo)((function(){return n.map((function(e){return{id:e.id,thumbnail_url:a.a.createElement("img",{src:e.src,style:{width:40,height:40,objectFit:"cover"}}),title:e.title,size:e.size,filename:e.filename}}))}),[n]),X=Object(r.useCallback)((function(){M(""),t()}),[t]),Z=Object(r.useMemo)((function(){var e=function(e,t){var r=n.find((function(n){return e.includes(n.id)}));o({id:r.id,src:r.src,zoom_src:r.zoom_src})};return a.a.createElement(Cl,{data:J,columns:$l,onSelect:e,onUnselect:e,selectedItems:b.map((function(e){return e.id}))})}),[n,J,b,o]);return a.a.createElement(Gl,Nl({style:!0},T),a.a.createElement("div",{className:"neko-modal-wrapper",draggable:!0,onDragOver:function(){return ql("drag-over")}},a.a.createElement(Fi,{ref:W,onSuccess:O,onFailure:S,apiUrl:R,apiConfig:C,disabled:!w||null!==F,multiple:A},a.a.createElement("div",{className:"neko-media-library-modal-content"},a.a.createElement("div",{className:"neko-media-library-modal-content-header"},a.a.createElement(hr,{h1:!0},"Media Library"),a.a.createElement("div",{style:{display:"flex"}},a.a.createElement("div",{className:"neko-media-library-modal-search"},a.a.createElement(pa,{value:D,disabled:s,onEnter:c,onChange:function(e){return M(e)},placeholder:"Search..."}),""!==D&&a.a.createElement(gt,{icon:"close",containerStyle:{width:"20px",position:"absolute",right:"5px",top:"5px",cursor:"pointer"},width:20,height:20,color:P.darkGray,onClick:X})),a.a.createElement(Dt,{onClick:function(){return c(D)},style:{marginLeft:"4px",marginRight:"4px"}},"Search"),a.a.createElement(gt,{color:G===Wl?P.black:P.blue,icon:"view-grid",onClick:function(){return q(Wl)},width:"20",height:"20"}),a.a.createElement(gt,{color:G===Hl?P.black:P.blue,icon:"format-list-bulleted",onClick:function(){return q(Hl)},width:"20",height:"20"}))),a.a.createElement("div",null,a.a.createElement("div",{className:"neko-media-library-modal-content-body"},a.a.createElement(g,{busy:s},a.a.createElement("div",{className:"".concat(G===Wl?"neko-media-library-modal-content-body-gallery":"neko-media-library-modal-content-body-list")},G===Wl&&w&&x,G===Wl?V:Z)),a.a.createElement("div",{className:"neko-media-library-modal-content-body-selected-gallery"},K))),a.a.createElement("div",{className:"neko-media-library-modal-content-footer"},a.a.createElement(Xo,{limit:p,currentPage:d,total:f,onClick:m}),a.a.createElement("div",{style:{display:"flex"}},!!z&&a.a.createElement(Dt,{onClick:function(){return z()}},"Close"),!!N&&a.a.createElement(Dt,{className:"danger",onClick:function(){return N()}},"Cancel"),!!I&&a.a.createElement(Dt,{onClick:function(){return I()}},"Save")))))))},Kl=function(e){return a.a.createElement(Yl,e)};function Vl(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return Jl(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Jl(e,n)}(e,n)||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 Jl(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function Xl(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}Kl.propTypes={images:u.a.array,onNextPage:u.a.func,onPreviousPage:u.a.func,onRefresh:u.a.func,onClick:u.a.func,onSearch:u.a.func,searchValue:u.a.string,busy:u.a.bool,currentPage:u.a.number,limit:u.a.number,total:u.a.number,onPageChange:u.a.func,multiSelect:u.a.bool,selected:u.a.array,onClose:u.a.func,onCancel:u.a.func,onSave:u.a.func},Kl.defaultProps={multiSelect:!1};var Zl=y.a.div(Bl||(Bl=Xl(["\n"]))),Ql=y.a.div(Fl||(Fl=Xl(["\n display: flex;\n"]))),ec=y.a.button(Ll||(Ll=Xl(["\n font-family: ",";\n font-size: ",";\n border-radius: 8px 8px 0px 0px;\n border: 0;\n background-color: #459ad2;\n color: rgb(255 255 255 / 65%);\n display: flex;\n align-items: center;\n\n cursor: pointer;\n line-height: 17px;\n margin: 0 5px 0 0;\n text-align: left;\n padding: 10px 15px 10px 15px;\n\n &:focus {\n outline: none;\n }\n\n &.active {\n background-color: ",";\n color: ",";\n }\n\n &.disabled {\n background-color: rgb(224 156 54);\n cursor: default;\n display: inline-flex;\n padding-bottom: 7px;\n }\n\n &.hidden {\n display: none;\n }\n"])),P.fontFamily,P.fontSizeText,P.blue,P.white),nc=y.a.div(Ul||(Ul=Xl(["\n background-color: ",";\n display: none;\n padding: 10px;\n\n &.active {\n display: block;\n }\n"])),P.blue),tc=function(e){var n=Vl(a.a.useState(0),2),t=n[0],r=n[1],o=e.children?e.children.length?e.children.filter((function(e){return!!e})):[e.children]:[];a.a.useEffect((function(){if(e.keepTabOnReload){var n=new URL(window.location.href).searchParams.get("nekoTab");if(!n)return r(0),void(e.callOnTabChangeFirst&&c(0,i[0]));var t=decodeURIComponent(n),l=a.a.Children.toArray(o).map((function(e){return e.props.title.replaceAll(" ","")})).indexOf(t);return-1===l?(r(0),void(e.callOnTabChangeFirst&&c(0,i[0]))):(r(l),void(e.callOnTabChangeFirst&&c(l,i[l])))}r(0),e.callOnTabChangeFirst&&c(0,i[0])}),[]);var i=a.a.Children.map(o,(function(n,t){var r=n.props.title||"Untitled Tab "+(t+1);return{key:n.props.key||"neko-tab-"+r.toLowerCase(),title:r,onClick:n.props.onClick?n.props.onClick:null,requirePro:!e.isPro&&(n.props.requirePro||!1),hidden:n.props.hidden||!1,icon:n.props.icon||!1}})),l=a.a.Children.map(o,(function(e,n){var o=n===t,i=e.props.hidden;return o&&i&&r(0),a.a.cloneElement(e,{isActive:o&&!i})})),c=function(n,t,a){t.requirePro||(r(n),e.onChange&&e.onChange(n,t,a),e.keepTabOnReload&&function(e){if(history.pushState&&"string"==typeof e){var n=new URLSearchParams(window.location.search),t=encodeURIComponent(e.replaceAll(" ",""));n.set("nekoTab",t);var r=window.location.protocol+"//"+window.location.host+window.location.pathname+"?"+n.toString();window.history.replaceState({path:r},"",r)}}(t.title))};return a.a.createElement(Zl,null,a.a.createElement(Ql,null,i.map((function(e,n){return a.a.createElement(ec,{key:e.key,className:"neko-tab-title ".concat(n===t?"active":""," ").concat(e.requirePro?"disabled":""," ").concat(e.hidden?"hidden":""),onClick:function(t){c(n,e,t)}},e.icon&&a.a.createElement(gt,{icon:e.icon,width:15,height:15,style:{marginRight:"2px"},raw:!0}),e.title,a.a.createElement(Ot,{className:"inline",style:{marginLeft:10,marginRight:-5,top:-1},show:e.requirePro}))}))),l)},rc=function(e){var n=e.children,t=e.isActive;return a.a.createElement(nc,{className:"".concat(t?"active":"")},!!t&&n)},ac=function(e){return a.a.createElement(tc,e)};ac.propTypes={isPro:u.a.bool,onChange:u.a.func},ac.defaultProps={isPro:!1,onChange:void 0};var oc,ic,lc,cc=function(e){return a.a.createElement(rc,e)};function uc(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return sc(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return sc(e,n)}(e,n)||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 sc(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function dc(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}cc.propTypes={isActive:u.a.bool,requirePro:u.a.bool,title:u.a.string,icon:u.a.string},cc.defaultProps={isActive:!1,requirePro:!1,title:void 0,icon:void 0};var pc=y.a.div(oc||(oc=dc(["\n"]))),fc=y.a.div(ic||(ic=dc(["\n align-items: center;\n background-color: ",";\n border: 0;\n cursor: pointer;\n display: flex;\n padding: 2px 3px 2px 19px;\n\n &.disabled {\n background-color: rgba(",", 0.25);\n cursor: default;\n }\n\n p {\n color: ",";\n font-family: ",";\n font-size: 14px;\n line-height: 17px;\n margin: 0;\n }\n\n .neko-side-tab-icon {\n color: ",";\n margin-left: auto;\n height: 36px;\n width: 36px;\n }\n"])),P.blue,P.yellowRGB,P.white,P.fontFamily,P.white),mc=y.a.div(lc||(lc=dc(["\n background-color: ",";\n display: none;\n\n &.active {\n display: block;\n }\n"])),P.white),bc=function(e){var n=uc(a.a.useState(e.activeTabIndex),2),t=n[0],r=n[1],o=a.a.Children.map(e.children,(function(n,t){var r=n.props.title||"Untitled Tab "+(t+1);return{key:n.props.key||"neko-tab-"+r.toLowerCase(),title:r,onClick:n.props.onClick?n.props.onClick:null,requirePro:!e.isPro&&(n.props.requirePro||!1),onDragOver:n.props.onDragOver,onDrop:n.props.onDrop,rightActions:n.props.rightActions||null}})),i=a.a.Children.map(e.children,(function(e,n){return a.a.cloneElement(e,{isActive:n===t})}));return a.a.createElement(pc,null,o.map((function(n,o){return a.a.createElement(a.a.Fragment,null,a.a.createElement(fc,{key:n.key,className:"".concat(o===t?"active":""," ").concat(n.requirePro?"disabled":""),onClick:function(a){!function(n,a,o){if(!a.requirePro){var i=n===t?null:n;r(i),e.onChange&&e.onChange(i,a,o)}}(o,n,a)},onDragOver:n.onDragOver,onDrop:n.onDrop},a.a.createElement("p",null,a.a.createElement("span",{style:{fontSize:15}},n.title),a.a.createElement(Ot,{className:"inline",show:n.requirePro})),null===n.rightActions?a.a.createElement(R.Icon,{icon:o===t?Z.a:J.a,className:"neko-side-tab-icon"}):o===t?a.a.createElement("div",{style:{marginLeft:"auto"}},n.rightActions):a.a.createElement(R.Icon,{icon:J.a,className:"neko-side-tab-icon"})),i[o])})))},hc=function(e){var n=e.children,t=e.isActive;return a.a.createElement(mc,{className:"".concat(t?"active":"")},n)},gc=function(e){return a.a.createElement(bc,e)};gc.propTypes={isPro:u.a.bool,onChange:u.a.func,activeTabIndex:u.a.number},gc.defaultProps={isPro:!1,onChange:void 0,activeTabIndex:null};var yc=function(e){return a.a.createElement(hc,e)};yc.propTypes={isActive:u.a.bool,requirePro:u.a.bool,title:u.a.string,onDragOver:u.a.func,onDrop:u.a.func,rightActions:u.a.element},yc.defaultProps={isActive:!1,requirePro:!1,title:void 0,onDragOver:void 0,onDrop:void 0,rightActions:void 0};var vc,wc=["align"];function xc(){return(xc=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function Ec(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var kc=y.a.div(vc||(vc=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n box-sizing: border-box;\n display: flex;\n width: 100%;\n padding: 10px 10px;\n background: ",";\n border-radius: 10px;\n box-shadow: 0px 0px 10px rgba(",", 0.1);\n\n &.neko-align-left {\n justify-content: flex-start;\n }\n\n &.neko-align-right {\n justify-content: flex-end;\n }\n\n > *:not(:last-child) {\n margin-right: 5px;\n }\n"])),P.white,P.blackRGB),Oc=function(e){var n=e.align,t=void 0===n?"left":n,r=Ec(e,wc);return a.a.createElement(kc,xc({className:"neko-align-".concat(t)},r),r.children)},jc=function(e){return a.a.createElement(Oc,e)};jc.propTypes={align:u.a.oneOf(["left","right"])},jc.defaultProps={align:"left"};var Sc,Pc,Rc,Cc,Ac,zc=mgcl_gallery_custom_links.prefix,Nc=mgcl_gallery_custom_links.domain,Ic=mgcl_gallery_custom_links.rest_url.replace(/\/+$/,""),Tc=mgcl_gallery_custom_links.api_url.replace(/\/+$/,""),_c=mgcl_gallery_custom_links.plugin_url.replace(/\/+$/,""),Dc="1"===mgcl_gallery_custom_links.is_pro,Mc=Dc&&"1"===mgcl_gallery_custom_links.is_registered,Bc=mgcl_gallery_custom_links.rest_nonce;function Fc(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var Lc=y.a.div(Sc||(Sc=Fc(["\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"]))),Uc=Object(y.a)(xr)(Pc||(Pc=Fc(["\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"]))),Gc=y.a.img(Rc||(Rc=Fc(["\n width: 85px;\n height: 85px;\n padding-right: 10px;\n"]))),qc=y.a.div(Cc||(Cc=Fc(["\n\n margin: 15px;\n\n .center {\n background: white;\n border-radius: 10px;\n padding: 10px;\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"]))),Wc=y.a.ul(Ac||(Ac=Fc(["\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 Hc(e){return function(e){if(Array.isArray(e))return Jc(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Vc(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 $c(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function Yc(e){return function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){$c(o,r,a,i,l,"next",e)}function l(e){$c(o,r,a,i,l,"throw",e)}i(void 0)}))}}function Kc(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||Vc(e,n)||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 Vc(e,n){if(e){if("string"==typeof e)return Jc(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Jc(e,n):void 0}}function Jc(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var Xc=wp.element,Zc=Xc.useState,Qc=Xc.useEffect,eu="".concat(Ic,"/meow-common/v1"),nu=function(e){var n=e.request,t=e.title,r=e.max,a=Kc(Zc(!1),2),o=a[0],i=a[1],l=Kc(Zc([]),2),c=l[0],u=l[1],s=c.length>0?c.reduce((function(e,n){return e+n})):0,d=c.length>0?Math.ceil(s/c.length):0,p=!c.length&&o;Qc((function(){o&&setTimeout(Yc(regeneratorRuntime.mark((function e(){var t,r,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=(new Date).getTime(),e.next=3,Yn("".concat(eu,"/").concat(n),{nonce:Bc});case 3:r=(new Date).getTime(),a=r-t,u((function(e){return[].concat(Hc(e),[a])}));case 6:case"end":return e.stop()}}),e)}))),1e3)}),[c]);return React.createElement(Lc,{style:{width:200,textAlign:"center"}},React.createElement(hr,{h2:!0,style:{color:"white"}},t),React.createElement(ui,{size:200,value:p?r:d,max:r},React.createElement("span",{style:{fontSize:20}},p?"START":d+" ms"),React.createElement("span",{style:{fontSize:12}},p?"YOUR ENGINE":c.length+" requests")),React.createElement(Dt,{style:{width:"100%",marginTop:10},color:o?"#cc3627":"#ccb027",onClick:function(){o||u([]),i(!o)}},o?"Stop":"Start"))};function tu(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function ru(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?tu(Object(t),!0).forEach((function(n){au(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):tu(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function au(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function ou(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function iu(e){return function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){ou(o,r,a,i,l,"next",e)}function l(e){ou(o,r,a,i,l,"throw",e)}i(void 0)}))}}function lu(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return cu(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return cu(e,n)}(e,n)||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 cu(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var uu=wp.element,su=uu.useState,du=uu.useEffect;Tc&&Ic&&_c||console.error("[@common/dashboard] apiUrl, restUrl and pluginUrl are mandatory.");var pu="".concat(Ic,"/meow-common/v1"),fu=React.createElement(Lc,null,React.createElement(hr,{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"),".")),mu=React.createElement(Lc,null,React.createElement(hr,{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(hr,{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"),".")),bu=React.createElement(Lc,null,React.createElement(hr,{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(hr,{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(hr,{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"))))),hu=["".concat(pu,"/all_settings/"),{headers:{"X-WP-Nonce":Bc}}],gu=function(){var e=lu(su(!1),2),n=e[0],t=e[1],r=Object(l.a)(hu,$n),a=r.data,o=r.mutate,i=r.error,c=null==a?void 0:a.data,u=null==c?void 0:c.meowapps_hide_meowapps,s=null==c?void 0:c.force_sslverify,d=lu(su(!1),2),p=d[0],f=d[1],m=lu(su([]),2),b=m[0],h=m[1],g=lu(su(""),2),y=g[0],v=g[1];du((function(){i&&!n&&(t(!0),console.error("Error from UseSWR",i.message))}),[i]),du((function(){var e=document.getElementById("meow-common-phpinfo");v(e.innerHTML)}),[]);var w=function(){var e=iu(regeneratorRuntime.mark((function e(n,t){var r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(r=ru({},a.data))[t]=n,o(ru(ru({},a),{},{data:r}),!1),f(!0),e.next=6,Yn("".concat(pu,"/update_option"),{json:{name:t,value:n},nonce:Bc});case 6:i=e.sent,f(!1),i.success||alert(i.message),o();case 10:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}(),x=function(){var e=iu(regeneratorRuntime.mark((function e(){var n,t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(!0),e.next=3,Yn("".concat(pu,"/error_logs"),{nonce:Bc});case 3:n=e.sent,t=n&&n.data?n.data:[],h(t.reverse()),f(!1);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),E=React.createElement(zr,{title:"Main Menu"},React.createElement(aa,{max:"1"},React.createElement(ta,{id:"meowapps_hide_meowapps",label:"Hide (Not Recommended)",description:React.createElement(hr,{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:u,onChange:w}))),k=React.createElement(zr,{title:"SSL Verify"},React.createElement(aa,{max:"1"},React.createElement(ta,{id:"force_sslverify",label:"Force (Not Recommended)",description:React.createElement(hr,{p:!0},"This will enforce the usage of SSL when checking the license or updating the plugin."),value:"1",disabled:p,checked:s,onChange:w})));return React.createElement(er,{showRestError:n},React.createElement(Wo,{title:"The Dashboard"}),React.createElement(Yr,null,React.createElement(Kr,{full:!0},React.createElement(ac,null,React.createElement(cc,{title:"Meow Apps"},fu,React.createElement(Yr,null,React.createElement(Kr,{minimal:!0},React.createElement(Uc,{title:"Media Cleaner",className:"primary"},React.createElement(Gc,{src:"".concat(_c,"/common/img/media-cleaner.png")}),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(Uc,{title:"Database Cleaner",className:"primary"},React.createElement(Gc,{src:"".concat(_c,"/common/img/database-cleaner.png")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/database-cleaner/"},"Database Cleaner")),React.createElement("p",null,"Clean your WordPress database. This plugin is simple, handles risk levels, and aims to work even on oversized databases on which other plugins fail to operate."))),React.createElement(Uc,{title:"Media File Renamer",className:"primary"},React.createElement(Gc,{src:"".concat(_c,"/common/img/media-file-renamer.png")}),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(Uc,{title:"Social Engine",className:"primary"},React.createElement(Gc,{src:"".concat(_c,"/common/img/social-engine.png")}),React.createElement("div",null,React.createElement("h2",null,React.createElement("a",{target:"_blank",href:"https://wordpress.org/plugins/social-engine/"},"Social Engine")),React.createElement("p",null,"Organize, schedule and automate the publishing of your content and photos on social accounts. Similar to Buffer, TweetDeck, etc, but without all the limitations, and in your WordPress."))),React.createElement(Uc,{title:"Meow Analytics",className:"primary"},React.createElement(Gc,{src:"".concat(_c,"/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(Kr,{minimal:!0},React.createElement(Uc,{title:"Photo Engine",className:"primary"},React.createElement(Gc,{src:"".concat(_c,"/common/img/wplr-sync.png")}),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(Uc,{title:"Meow Gallery",className:"primary"},React.createElement(Gc,{src:"".concat(_c,"/common/img/meow-gallery.png")}),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(Uc,{title:"Meow Lightbox",className:"primary"},React.createElement(Gc,{src:"".concat(_c,"/common/img/meow-lightbox.png")}),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(Uc,{title:"Perfect Images (Retina)",className:"primary"},React.createElement(Gc,{src:"".concat(_c,"/common/img/wp-retina-2x.png")}),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(Uc,{title:"Contact Form Block",className:"primary"},React.createElement(Gc,{src:"".concat(_c,"/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(cc,{title:"Performance"},mu,React.createElement("div",{style:{display:"flex",justifyContent:"space-around",marginBottom:25}},React.createElement(nu,{title:"Empty Request Time",request:"empty_request",max:2500}),React.createElement(nu,{title:"File Operation Time",request:"file_operation",max:2600}),React.createElement(nu,{title:"SQL Request Time",request:"sql_request",max:2800}))),React.createElement(cc,{title:"Recommendations"},bu),React.createElement(cc,{title:"PHP Info"},React.createElement(qc,{dangerouslySetInnerHTML:{__html:y}})),React.createElement(cc,{title:"PHP Error Logs"},React.createElement(Lc,null,React.createElement(Dt,{style:{marginBottom:10},color:"#ccb027",onClick:x},"Load PHP Error Logs"),React.createElement(Wc,null,b.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(cc,{title:"Settings"},React.createElement(xr,{title:"Settings",className:"primary"},E,k))))))};function yu(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function vu(e){return function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){yu(o,r,a,i,l,"next",e)}function l(e){yu(o,r,a,i,l,"throw",e)}i(void 0)}))}}function wu(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return xu(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return xu(e,n)}(e,n)||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 xu(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var Eu=wp.element,ku=Eu.useState,Ou=Eu.useEffect,ju="".concat(Ic,"/meow-licenser/").concat(zc,"/v1"),Su=function(){var e=wu(ku(!1),2),n=e[0],t=e[1],r=wu(ku(!1),2),a=r[0],o=r[1],i=wu(ku(null),2),l=i[0],c=i[1],u=wu(ku(null),2),s=u[0],d=u[1],p=wu(ku(""),2),f=p[0],m=p[1],b=Mc&&(!s||"valid"!==s.license),h=function(){var e=vu(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Dc){e.next=2;break}return e.abrupt("return");case 2:return t(!0),e.next=5,Yn("".concat(ju,"/get_license"),{nonce:Bc});case 5:n=e.sent,d(n.data),n.data.key&&m(n.data.key),t(!1);case 9:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),g=function(){var e=vu(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t(!0),e.next=3,Yn("".concat(ju,"/set_license"),{nonce:Bc,json:{serialKey:null}});case 3:e.sent.success&&(m(""),d(null),c("licenseRemoved")),t(!1);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),y=function(){var e=vu(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t(!0),e.next=3,Yn("".concat(ju,"/set_license"),{nonce:Bc,json:{serialKey:f,override:!0}});case 3:(n=e.sent).success&&(d(n.data),n.data&&!n.data.issue&&c("licenseAdded")),t(!1);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),v=function(){var e=vu(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("MEOW_OVERRIDE"!==f){e.next=5;break}return o(!0),d(null),m(""),e.abrupt("return");case 5:return t(!0),e.next=8,Yn("".concat(ju,"/set_license"),{nonce:Bc,json:{serialKey:f}});case 8:(n=e.sent).success&&(d(n.data),n.data&&!n.data.issue&&c("licenseAdded")),t(!1);case 11:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();Ou((function(){h()}),[]);var w=b?"Forced License":Mc?"Enabled":"Disabled",x=b||s&&"valid"===s.license,E="Your license is active. Thanks a lot for your support :)";b&&s&&s.check_url&&(E=React.createElement(React.Fragment,null,React.createElement("span",null,E),React.createElement("br",null),React.createElement("small",null,"This license was enabled manually. To check your license status, please click ",React.createElement("a",{target:"_blank",href:s.check_url+"&cache="+642e3*Math.random()},"here"),"."))),x||(s?"no_activations_left"===s.issue?E=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://meowapps.com"},"Meow Apps Store"),", unregister a site, and click on ",React.createElement("i",null,"Retry to validate"),"."):"expired"===s.issue?E=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://meowapps.com"},"Meow Apps Store"),"."):"missing"===s.issue?E="This license does not exist.":"disabled"===s.issue?E="This license has been disabled.":"item_name_mismatch"===s.issue?E="This license seems to be for a different plugin... isn't it? :)":"forced"===s.issue?E="ABC":(E=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:s})):E="Unknown error :(");var k=React.createElement(xr,{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://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://meowapps.com/"},"Meow Apps Store"),"."),O=React.createElement(xr,{title:"Pro Version (".concat(w,")"),busy:n,className:"primary"},React.createElement(zr,{title:"Serial Key",style:{fontWeight:"bold"}},React.createElement(pa,{id:"mfrh_pro_serial",name:"mfrh_pro_serial",disabled:n,value:f,onChange:function(e){return m(e)},placeholder:""})),s&&!x&&React.createElement(pi,null,E),s&&x&&React.createElement(fi,null,E),!s&&React.createElement(hr,{p:!0},"Insert your serial key above. If you don't have one yet, you can get one ",React.createElement("a",{href:"https://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(zr,{contentAlign:"right"},s&&!x&&React.createElement(Dt,{className:"secondary",disabled:n||!f,onClick:v},"Retry to validate"),s&&s.key===f&&React.createElement(Dt,{className:"secondary",disabled:n||!f,onClick:g},"Remove License"),React.createElement(Dt,{disabled:n||!f||s&&s.key===f,onClick:v},"Validate License"),a&&!x&&React.createElement(Dt,{disabled:n||!f||s&&s.key===f,onClick:y,className:"danger"},"Force License")),React.createElement(hl,{isOpen:"licenseAdded"===l,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(hl,{isOpen:"licenseRemoved"===l,title:"Goodbye :(",content:"The Pro features have been disabled. This page should be now reloaded.",ok:"Reload",onOkClick:function(){return location.reload()}}));return Dc?O:k},Pu=wp.element.render;function Ru(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function Cu(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?Ru(Object(t),!0).forEach((function(n){Au(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Ru(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function Au(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function zu(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function Nu(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return Iu(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Iu(e,n)}(e,n)||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 Iu(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}document.meowDashboardLoaded||(document.meowDashboardLoaded=!0,document.addEventListener("DOMContentLoaded",(function(e){var n=document.getElementById("meow-common-dashboard");n&&Pu(React.createElement(gu,null),n)})));var Tu=wp.element,_u=Tu.useState,Du=Tu.useMemo,Mu=function(){var e=Du((function(){return["".concat(Tc,"/all_settings/"),{headers:{"X-WP-Nonce":Bc}}]}),[Tc,Bc]),n=Object(l.a)(e,$n),t=n.data,a=n.mutate,o=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,t=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=Object(r.useState)(n),o=Kn(a,2),i=o[0],l=o[1],c=Object(r.useState)(null),u=Kn(c,2),s=u[0],d=u[1],p=Object(r.useState)(t),f=Kn(p,2),m=f[0],b=f[1],h=Object(r.useState)(0),g=Kn(h,2),y=g[0],v=g[1];return Object(r.useEffect)((function(){void 0!==e&&(e.success?(d(null),l(e.data),v(e.total?e.total:0)):d(e.error)),b(void 0===e)}),[e]),{busy:m,data:i,total:y,error:s}}(t,{},!0),i=o.busy,c=o.data,u=o.error,s=Nu(_u(!1),2),d=s[0],p=s[1],f=i||d,m=null==c?void 0:c.mgcl_obmode,b=null==c?void 0:c.mgcl_parsing_engine,h=null==c?void 0:c.mgcl_log,g=null==c?void 0:c.mgcl_button_enabled,y=null==c?void 0:c.mgcl_button_label,v=function(){var e,n=(e=regeneratorRuntime.mark((function e(n,r){var o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(o=Cu({},t.data))[r]=n,a(Cu(Cu({},t),{},{data:o}),!1),p(!0),e.prev=4,e.next=7,Yn("".concat(Tc,"/update_option"),{json:{name:r,value:n},nonce:Bc});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,p(!1),a(),e.finish(12);case 16:case"end":return e.stop()}}),e,null,[[4,9,12,16]])})),function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){zu(o,r,a,i,l,"next",e)}function l(e){zu(o,r,a,i,l,"throw",e)}i(void 0)}))});return function(e,t){return n.apply(this,arguments)}}(),w=React.createElement(zr,{title:"OB Mode"},React.createElement(aa,{max:"1"},React.createElement(ta,{id:"mgcl_obmode",label:"Enabled",value:"1",checked:m,onChange:v,description:"If the linked images are outside of the main content (header, sidebar, etc), OB Mode is needed. This slows down the processing (cache recommended)."}))),x=React.createElement(zr,{title:"Parsing Engine",description:"Hello"},React.createElement(Ya,{id:"mgcl_parsing_engine",onChange:v},[{id:"none",value:"None",label:"None (Not Supported Yet)"},{id:"htmldomparser",value:"HtmlDomParser",label:"HtmlDomParser"},{id:"didom",value:"DiDom",label:"DiDom"}].map((function(e){return React.createElement(Va,{id:"mgcl_parsing_engine_".concat(e.id),value:e.value,label:e.label,checked:b===e.value})})))),E=React.createElement(zr,{title:"Logs"},React.createElement(aa,{max:"1"},React.createElement(ta,{id:"mgcl_log",label:"Logs",value:"1",checked:h,onChange:v,description:"Simple logging, written directly in the PHP Error Logs."}))),k=React.createElement(zr,{title:"Use Buttons"},React.createElement(aa,{max:"1"},React.createElement(ta,{id:"mgcl_button_enabled",label:"Enabled",value:"1",description:"A call-to-action button will be used of a clickable image.",checked:g,onChange:v}))),O=React.createElement(zr,{title:"Label"},React.createElement(pa,{id:"mgcl_button_label",name:"mgcl_button_label",value:y,description:"A call-to-action button will be used of a clickable image.",onBlur:v}));return React.createElement(er,{nekoErrors:[u]},React.createElement(Wo,{title:"Gallery Custom Links | Settings",subtitle:"By Jordy Meow"}),React.createElement(Yr,null,React.createElement(Kr,{full:!0},React.createElement(Pr,null,React.createElement(hr,{p:!0},"This plugin works out of the box, the default settings are the best for most installs. Don't hesitate to take a look at the ",React.createElement("a",{target:"_blank",href:"https://meowapps.com/plugin/gallery-custom-links/"},"official page"),". ",React.createElement("b",null,"If you are interested in the Pro Version, it's ",React.createElement("a",{target:"_blank",href:"https://meowapps.com/products/gallery-custom-links-pro/"},"here!"))," 💕")),React.createElement(ac,null,React.createElement(cc,{title:"Settings"},React.createElement(Yr,null,React.createElement(Kr,{minimal:!0},React.createElement(xr,{busy:f,title:"Settings",className:"primary"},x,w,E)),React.createElement(Kr,{minimal:!0},React.createElement(xr,{busy:f,title:"CTA Buttons",className:"primary"},React.createElement(hr,{p:!0},React.createElement("b",null,"Currently works with the ",React.createElement("a",{href:"https://wordpress.org/plugins/meow-gallery/"},"Meow Gallery")," and Gutenberg Galleries.")," In a future Pro version, support for additional galleries might be added (please contact ",React.createElement("a",{href:"https://meowapps.com/contact/"},"Meow Apps")," for this)."),k,g?O:null)))),React.createElement(cc,{title:"License"},React.createElement(Su,{domain:Nc,prefix:zc,isPro:Dc,isRegistered:Mc}))))))},Bu=wp.i18n.__,Fu={};Fu.PENDING=Bu("Pending","gallery-custom-links"),Fu.RENAME=Bu("Rename","gallery-custom-links"),Fu.TITLE=Bu("Title","gallery-custom-links"),Fu.SAME_PAGE=Bu("Same page","gallery-custom-links"),Fu.NEW_PAGE=Bu("New page","gallery-custom-links"),Fu.LINK_URL=Bu("Link URL","gallery-custom-links"),Fu.LINK_TARGET=Bu("Link Target","gallery-custom-links"),Fu.LINK_REL=Bu("Link Rel","gallery-custom-links"),Fu.ARIAL_LABEL=Bu("Arial Label","gallery-custom-links");var Lu,Uu=Fu;function Gu(e,n,t,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void t(e)}l.done?n(c):Promise.resolve(c).then(r,a)}function qu(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var r,a,o=[],i=!0,l=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==t.return||t.return()}finally{if(l)throw a}}return o}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return Wu(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Wu(e,n)}(e,n)||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 Wu(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var Hu=wp.element,$u=Hu.useState,Yu=Hu.useCallback,Ku=[{label:Uu.SAME_PAGE,value:"_self"},{label:Uu.NEW_PAGE,value:"_blank"}],Vu=y.a.div(Lu||(Lu=function(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(["\n\talign-items: center;\n\tdisplay: flex;\n\tmargin-bottom: 10px;\n\n\tp {\n\t\tmargin: 0 !important;\n\t\twidth: 20%;\n\t}\n\n\t> div {\n\t\tflex-grow: 1;\n\t}\n"]))),Ju=function(e){var n=qu($u(!1),2),t=n[0],r=n[1],a=t,o=e.postId,i=qu($u(e.url),2),l=i[0],c=i[1],u=qu($u(e.target?e.target:"_self"),2),s=u[0],d=u[1],p=qu($u(e.rel),2),f=p[0],m=p[1],b=qu($u(e.aria),2),h=b[0],g=b[1],y=qu($u(!1),2),v=y[0],w=y[1],x=function(){var e,n=(e=regeneratorRuntime.mark((function e(n,t,a,o,i){var l,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r(!0),l=!0,e.prev=2,e.next=5,Yn("".concat(Tc,"/update_meta"),{json:{post_id:n,_gallery_link_url:t,_gallery_link_target:a,_gallery_link_rel:o,_gallery_link_aria:i},nonce:Bc});case 5:(c=e.sent).success||(l=!1,alert(c.message)),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),l=!1,alert(e.t0.message);case 13:return e.prev=13,l&&E(),r(!1),e.finish(13);case 17:case"end":return e.stop()}}),e,null,[[2,9,13,17]])})),function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function i(e){Gu(o,r,a,i,l,"next",e)}function l(e){Gu(o,r,a,i,l,"throw",e)}i(void 0)}))});return function(e,t,r,a,o){return n.apply(this,arguments)}}(),E=function(){return w(!1)},k=Yu((function(){x(o,l,s,f,h)}),[o,l,s,f,h,x,E]),O=Yu((function(e){"Enter"!==e.key&&13!==e.keyCode||(e.preventDefault(),k())}),[k]);return React.createElement(React.Fragment,null,React.createElement("span",{onClick:function(){return w(!0)},style:{cursor:"pointer"}},React.createElement(gt,{icon:"link",disabled:!l})),React.createElement(hl,{isOpen:v,onRequestClose:E,title:"Edit the custom link",content:React.createElement("div",null,React.createElement(Vu,null,React.createElement(hr,{p:!0},Uu.LINK_URL),React.createElement(pa,{disabled:a,onInput:function(e){return c(e.target.value)},onKeyDown:O,value:l,autoFocus:!0})),React.createElement(Vu,null,React.createElement(hr,{p:!0},Uu.LINK_TARGET),React.createElement(Ya,{scrolldown:!0,value:s,onChange:function(e){return d(e)},disabled:a},Ku.map((function(e){return React.createElement(Va,{value:e.value,label:e.label})})))),React.createElement(Vu,null,React.createElement(hr,{p:!0},Uu.LINK_REL),React.createElement(pa,{disabled:a,onInput:function(e){return m(e.target.value)},value:f})),React.createElement(Vu,null,React.createElement(hr,{p:!0},Uu.ARIAL_LABEL),React.createElement(pa,{disabled:a,onInput:function(e){return g(e.target.value)},value:h}))),onOkClick:k,onCancelClick:E}))},Xu=null;document.addEventListener("DOMContentLoaded",(function(e){var n;(Xu=document.getElementsByClassName("upload-php")[0],(n=document.getElementById("mgcl-admin-settings"))&&(i.a.render(a.a.createElement(Mu,null),n),1)||!Xu)||Array.from(document.getElementsByClassName("mgcl-edit-link-field")).forEach((function(e){var n=e.getAttribute("data-post-id"),t=e.getAttribute("data-url"),r=e.getAttribute("data-target"),o=e.getAttribute("data-rel"),l=e.getAttribute("data-aria");i.a.render(a.a.createElement(Ju,{postId:n,url:t,target:r,rel:o,aria:l}),e)}))}))}});
2
  //# sourceMappingURL=index.js.map
app/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"React\"","webpack:///external \"ReactDOM\"","webpack:///../neko-ui/src/common/NekoBusyOverlay.js","webpack:///../neko-ui/src/common/NekoTheme.js","webpack:///../neko-ui/src/misc/Spinner.js","webpack:///../neko-ui/src/common/PresetIcons.js","webpack:///../neko-ui/src/errors.js","webpack:///../neko-ui/src/helpers.js","webpack:///../neko-ui/src/hooks.js","webpack:///../neko-ui/src/misc/Tooltip.js","webpack:///../neko-ui/src/misc/Icon.js","webpack:///../neko-ui/src/button/Button.js","webpack:///../neko-ui/src/label/ProOnly.js","webpack:///../neko-ui/src/button/MenuButton.js","webpack:///../neko-ui/src/container/Page.js","webpack:///../neko-ui/src/misc/Typography.js","webpack:///../neko-ui/src/container/Block.js","webpack:///../neko-ui/src/container/Container.js","webpack:///../neko-ui/src/container/Settings.js","webpack:///../neko-ui/src/container/Window.js","webpack:///../neko-ui/src/container/Wrapper.js","webpack:///../neko-ui/src/form/Checkbox.js","webpack:///../neko-ui/src/form/CheckboxGroup.js","webpack:///../neko-ui/src/form/Input.js","webpack:///../neko-ui/src/form/TextArea.js","webpack:///../neko-ui/src/form/Select.js","webpack:///../neko-ui/src/form/Form.js","webpack:///../neko-ui/src/form/Switch.js","webpack:///../neko-ui/src/misc/Finder.js","webpack:///../neko-ui/src/misc/Logo.js","webpack:///../neko-ui/src/misc/Progress.js","webpack:///../neko-ui/src/misc/Header.js","webpack:///../neko-ui/src/misc/Paging.js","webpack:///../neko-ui/src/misc/Links.js","webpack:///../neko-ui/src/misc/Gauge.js","webpack:///../neko-ui/src/misc/Message.js","webpack:///../neko-ui/src/misc/Upload.js","webpack:///../neko-ui/src/misc/UploadDropArea.js","webpack:///../neko-ui/src/misc/Calendar.js","webpack:///../neko-ui/src/modal/Modal.js","webpack:///../neko-ui/src/table/Table.js","webpack:///../neko-ui/src/modal/MediaLibraryModal.js","webpack:///../neko-ui/src/tabs/Tabs.js","webpack:///../neko-ui/src/tabs/SideTabs.js","webpack:///../neko-ui/src/toolbar/Toolbar.js","webpack:///./app/js/settings.js","webpack:///./common/js/dashboard/Dashboard.styled.js","webpack:///./common/js/dashboard/SpeedTester.js","webpack:///./common/js/dashboard/Dashboard.js","webpack:///./common/js/components/LicenseBlock.js","webpack:///./common/js/index.js","webpack:///./app/js/components/Settings.js","webpack:///./app/js/i18n.js","webpack:///./app/js/components/EditLinkField.js","webpack:///./app/js/index.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","React","ReactDOM","NekoBusyOverlay","props","spinner","busy","overlayStyle","useState","showLoader","setShowLoader","useEffect","timeout","setTimeout","clearTimeout","loader","Fragment","className","style","Boolean","jsx","propsForElement","undefined","position","children","propTypes","PropTypes","bool","isRequired","oneOfType","arrayOf","node","NekoColors","black","blackRGB","blue","blueRGB","deepBlue","finderBorder","lightBlue","lightGray","lightGray2","lightPurple","gray","green","darkGray","disabledForm","orange","overlay","red","redHighlight","header","proGray","progress","purple","tableGray","yellow","yellowRGB","white","whiteRGB","NekoColorTheme","danger","primary","secondary","success","NekoTheme","fontFamily","fontSizeH1","fontSizeH2","fontSizeText","fontSizeSmall","fontSizeSmallButton","lightShadow","StyledCircleSpinner","Styled","div","size","color","CircleSpinner","StyledNekoSpinner","type","rest","NekoSpinner","string","defaultProps","presetIcons","lockCheck","lockOpenVariant","fileUndo","chevronDoubleLeft","chevronDoubleRight","chevronLeft","chevronRight","chevronDown","chevronUp","pauseIcon","playIcon","replayIcon","checkIcon","checkCircle","stopIcon","deleteIcon","undoIcon","alertCircle","databaseIcon","toolsIcon","cogIcon","closeIcon","catIcon","arrowUpBoldCircleOutline","trashCan","leadPencil","viewDashboard","databaseSearch","folderIcon","folderOpen","imageMultipleOutline","plusIcon","folderPlus","imagePlus","viewGrid","formatListBulleted","twitterIcon","instagramIcon","facebookIcon","starIcon","timerOutline","linkVariant","linkedin","pinterest","zoomIn","infoOutline","arrowUp","arrowDown","sort","eye","rocketLaunch","calendarMonth","NekoError","message","code","url","body","debug","this","consolidateJsonResult","json","meta","x","JSON","parse","err","console","error","jsonFetcher","options","nekoError","rawBody","headers","fetch","text","status","postFetch","config","signal","file","nonce","formData","FormData","append","entries","method","stringify","useComponentSize","ref","useRef","setSize","current","observer","ResizeObserver","element","contentRect","width","left","right","height","top","bottom","observe","unobserve","useOutsideClick","onOutsideClick","componentRef","handleOutsideClick","e","contains","target","document","addEventListener","removeEventListener","PQueue","concurrency","autoStart","TooltipContainer","Tooltip","Theme","prop","visible","StyledNekoTooltip","show","setShow","tooltipRef","tooltipWidth","tooltipHeight","childRef","childWidth","childHeight","transformStyle","useMemo","transY","transX","transform","onMouseEnter","onMouseLeave","NekoTooltip","oneOf","StyledIconContainer","StyledIcon","Icon","hoverColor","lighten","StyledNekoIcon","icon","spinning","title","tooltip","containerStyle","disabled","raw","isBusy","getIcon","PresetIcons","iconClassName","onClick","NekoIcon","instanceOf","IconifyIcon","StyledButton","small","rounded","busyText","hideBusyIcon","busyIconSize","hasIcon","iconWidth","base","spinnerSize","classNames","marginLeft","marginRight","margin","additionalColor","NekoButton","func","Tag","a","Colors","StyledProOnly","href","ProOnly","MenuButtonWrapper","MenuButton","button","MenuItemContainer","StyledMenuButton","isPro","hideChevron","titleStyle","isOpen","setIsOpen","wrapperRef","buttonRef","buttonWidth","Children","map","child","cloneElement","MenuItem","StyledNekoMenuItem","requirePro","separator","needsProUser","NekoMenuButton","NekoMenuItem","Page","StyledNekoPage","nekoErrors","fatalError","setFatalError","showBody","setShowBody","dangerouslySetInnerHTML","__html","open","NekoPage","NekoH1","h1","NekoH2","h2","NekoP","NekoSpan","span","NekoLabel","label","StyledNekoTypo","NekoTypo","any","Block","StyledNekoBlock","contentStyle","action","NekoBlock","Container","Bar","StyledNekoContainer","headerAlign","footer","footerAlign","NekoContainer","StyledNekoSettings","contentAlign","NekoSettings","WindowBase","TitleBar","StyledNekoWindow","NekoWindow","Wrapper","Column","StyledNekoWrapper","StyledNekoColumn","full","minimal","NekoWrapper","NekoColumn","StyledNekoCheckbox","id","checked","onChange","description","showUpProOnly","isDisabled","disabledClass","join","stopPropagation","defaultChecked","htmlFor","log","checkboxBlankOutline","checkboxMarked","NekoCheckbox","StyledNekoCheckboxGroup","max","NekoCheckboxGroup","mas","number","StyledNekoInput","placeholder","onEnter","readOnly","step","min","maxLength","defaultMaxLength","natural","inputStyle","onCustomChange","onCustomBlur","onBlur","onReset","newValue","setNewValue","isControlled","onKeyPress","event","preventDefault","autoComplete","spellCheck","NekoInput","StyledNekoTextArea","avoidOnEnterWithShift","textAreaStyle","countable","count","setCount","pressShift","setPressShift","keydownFunction","useCallback","shiftKey","keyupFunction","substr","rows","NekoTextArea","Select","SelectedOption","Description","Options","OptionsContainer","StyledNekoSelect","scrolldown","chevronIconSize","textFiltering","currentOption","toArray","find","iconSize","showOptions","toggleOptions","filterText","setFilterText","onOptionClick","filteredChildren","filtered","forEach","includes","childrenLength","data-is-disabled","Math","v","background","borderRadius","autoFocus","RadioOption","SelectOption","StyledNekoOption","radioOption","recordCircle","checkboxBlankCircleOutline","selectOption","NekoSelect","NekoOption","Form","StyledNekoForm","NekoForm","StyledNekoSwitch","fontSize","onValue","offValue","onBackgroundColor","offBackgroundColor","onLabel","offLabel","onToggle","NekoSwitch","StyledNekoFinder","chevron","FinderTitleContainer","FinderTitle","ChevronSpace","FinderTitleIconDropZone","FinderTitleIconDroppableArea","ItemContainer","StyledNekoFinderItem","defaultIcons","gallery","tag","tagIcon","rightElement","rightElementStyle","showRightElement","selected","draggable","onDragStart","onDragOver","onDragEnd","onDrop","isExpanded","dragging","rightAction","rightActionOnHover","onDragLeave","isCustomizedIcon","preventClose","hasChild","expanded","setExpanded","keys","setIcon","isFolder","showRightAction","setShowRightAction","iconColor","NekoFinder","NekoFinderItem","Logo","StyledNekoLogo","viewBox","fill","xmlns","stroke","strokeWidth","NekoLogo","StyledNekoProgress","ratio","parseFloat","ProgressCurrent","onPauseClick","paused","onStopClick","percent","isNaN","parseInt","round","typeOfStatus","minWidth","NekoProgress","HeaderBase","StyledNekoHeader","subtitle","saving","textDecoration","contentSave","NekoHeader","PagingContainer","StyledNekoPaging","currentPage","limit","total","onCurrentPageChanged","infinite","controllerText","isEditable","maxPage","ceil","prevIconClassName","nextIconClassName","showCurrentPageInput","setShowCurrentPageInput","onClickHandle","page","getValidPage","numberPage","Number","currentPageJsx","defaultValue","onControllerClick","currentTarget","NekoPaging","lastPage","LinkContainer","Link","variant","StyledNekoQuickLinks","isActive","StyledNekoLink","variantValue","display","NekoQuickLinks","NekoLink","StyledSection","section","backgroundColor","degrees","NekoGauge","class","NekoMessageDanger","NekoMessageSuccess","StyledUpload","NekoUpload","multiple","onSuccess","onFailure","apiUrl","apiConfig","inDropZone","setInDropZone","floor","random","inputId","inputEl","divEl","setBusy","pointerEvents","uploadFile","files","upload","Promise","all","response","successResponses","filter","failerResponses","onDragEnter","uploadFiles","accept","click","dataTransfer","StyledUploadDropArea","NekoUploadDropArea","forwardRef","onInputUpload","Days","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday","StyledNekoCalendar","CalendarHeaders","CalendarContent","WeekContainer","DayContainer","NekoCalendar","month","Date","getMonth","year","getFullYear","onEventClicked","onEventMoved","eventBuilder","events","draggedEvent","setDraggedEvent","highlightedDay","setHighlightedDay","disableDaysBefore","getDate","weeks","days","currentDate","weekDay","date","getDay","setDate","getFirstWeekDayForMonth","totalCalendarDays","startDate","endDate","start","end","numberOfDaysBetween","lastDate","array","chunkSize","chunks","splitArrayInChunks","day","week","today","isCurrentMonth","filterEvents","getTime","date1","date2","disableDaysAfter","NekoModalParent","NekoModalContent","StyledNekoModal","ok","cancel","customButtons","customButtonsPosition","content","contentWidth","onOkClick","onCancelClick","okOnEnter","thumbnail","customClassName","showCustomButtons","keyUpHandler","modalContent","ariaHideApp","parentSelector","getElementById","closeTimeoutMS","NekoModal","Table","table","TableCheckBox","intermediate","onSelect","onUnselect","checkboxMultipleMarked","alignToJustifyContent","center","StyledNekoTable","columns","selectedItems","onSortChange","sortIconColor","emptyMessage","columnsCount","getColumnStyle","column","align","textAlign","justifyContent","cells","accessor","currentRowsIds","areAllRowsSelected","isIntermediate","hiddenColumnIndexes","reduce","headersFooters","beingSorted","beingSortedAsc","by","columnStyle","sortable","flex","colspan","row","cell","NekoTable","removeClass","Array","getElementsByClassName","ele","classList","remove","displayModes","StyledNekoMediaLibraryModal","images","onRefresh","onNextPage","onPreviousPage","onRemoveClick","onZoomClick","onSearch","searchValue","onPageChange","multiSelect","showUploader","uploader","onSelectedOrderChanged","onUploadSuccess","onUploadFailure","uploadApiUrl","uploadApiConfig","uploadMultiple","onClose","onCancel","onSave","search","setSerch","dragImageIndex","setDragImageIndex","displayMode","setDisplayMode","getBoundingClientRect","clientX","add","currentIndex","afterIndex","selectedMediaJsx","dummyElementForDrop","selectedElement","image","src","zoom_src","mediaGridJsx","some","mediaRows","thumbnail_url","objectFit","filename","mediaListJsx","ids","cursor","NekoMediaLibraryModal","TabContainer","TabGroup","Tab","TabContent","StyledNekoTabs","isActiveTabIndex","setIsActiveTabIndex","childrenProp","keepTabOnReload","URL","location","searchParams","callOnTabChangeFirst","onTabClick","tabAttributes","searchTitle","decodeURIComponent","index","replaceAll","indexOf","toLowerCase","hidden","tabIndex","tabAttr","ev","history","pushState","URLSearchParams","encodeURIComponent","set","newUrl","protocol","host","pathname","toString","replaceState","path","keepTab","attr","StyledNekoTab","NekoTabs","NekoTab","StyledNekoSideTabs","activeTabIndex","rightActions","newTabIndex","StyledNekoSideTab","NekoSideTabs","NekoSideTab","ToolbarBase","StyledNekoToolbar","NekoToolbar","prefix","mgcl_gallery_custom_links","domain","restUrl","rest_url","replace","api_url","pluginUrl","plugin_url","is_pro","isRegistered","is_registered","restNonce","rest_nonce","TabText","StyledPluginBlock","StyledPluginImage","img","StyledPhpInfo","StyledPhpErrorLogs","ul","wp","CommonApiUrl","SpeedTester","request","runRequests","setRunRequests","results","setResults","resultsTotal","b","resultsAverage","isInitializing","time","marginTop","jsxTextStory","jsxTextPerformance","jsxTextRecommendations","swrAllSettingsKey","Dashboard","useSWR","swrSettings","mutateSwrSettings","mutate","swrError","settings","hide_meowapps","meowapps_hide_meowapps","force_sslverify","phpErrorLogs","setPhpErrorLogs","phpInfo","setPhpInfo","info","innerHTML","updateOption","newSettingsData","res","alert","loadErrorLogs","fresh","reverse","jsxHideMeowApps","jsxForceSSLVerify","showRestError","marginBottom","LicenseBlock","meowMode","setMeowMode","currentModal","setCurrentModal","license","setLicense","serialKey","setSerialKey","isOverridenLicense","checkLicense","removeLicense","forceLicense","override","issue","validateLicense","licenseTextStatus","check_url","rel","jsxNonPro","jsxProVersion","fontWeight","txt","reload","render","meowDashboardLoaded","commmonDash","Settings","swrData","defaultData","defaultBusy","setData","setError","setTotal","useHandleSWR","busySettings","busyAction","setBusyAction","obmode","mgcl_obmode","parsingEngine","mgcl_parsing_engine","mgcl_log","buttonEnabled","mgcl_button_enabled","buttonLabel","mgcl_button_label","jsxOBMode","jsxParsingEngine","option","jsxLog","jsxUseButtons","jsxButtonLabel","__","i18n","PENDING","RENAME","TITLE","SAME_PAGE","NEW_PAGE","LINK_URL","LINK_TARGET","LINK_REL","ARIAL_LABEL","targets","GroupContainer","EditLinkField","postId","setUrl","setTarget","setRel","aria","setAria","openModal","setOpenModal","post_id","_gallery_link_url","_gallery_link_target","_gallery_link_rel","_gallery_link_aria","onCloseModal","onKeyDown","keyCode","onRequestClose","onInput","isMediaLibrary","container","from","field","getAttribute"],"mappings":"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","file":"index.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"wpJsonMgcl\"] = window[\"wpJsonMgcl\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([101,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = React;","module.exports = ReactDOM;","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nconst NekoBusyOverlay = (props) => {\n const { spinner = true, busy = false, overlayStyle } = props;\n const [ showLoader, setShowLoader ] = useState(true);\n\n useEffect(() => {\n let timeout;\n\n // Show the loader\n if (!busy) { \n timeout = setTimeout(() => { \n setShowLoader(false); \n timeout = null; \n }, 250);\n }\n else { \n setShowLoader(true);\n }\n\n // Cleanup\n return (() => {\n if (timeout) {\n clearTimeout(timeout);\n }\n });\n }, [busy]);\n\n const loader = !showLoader ? null : (\n <React.Fragment>\n <div className={'overlay' + ' ' + (!busy ? 'overlayHidden' : '')} style={overlayStyle}>\n {Boolean(spinner) && \n <div className={'lds-ellipsis ' + (!busy ? 'spinnerHidden' : '')}>\n <div></div><div></div><div></div><div></div>\n </div>\n }\n </div>\n <style jsx>{`\n .overlay {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n background: rgb(30 124 186 / 85%);\n transition: opacity 1s ease-out;\n z-index: 10;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n }\n\n .overlayHidden {\n opacity: 0;\n transition: opacity 0.25s ease-out;\n }\n .spinnerHidden {\n opacity: 0;\n transition: opacity 0.25s ease-out;\n }\n .lds-ellipsis {\n position: relative;\n width: 80px;\n height: 80px;\n display: flex;\n justify-items: center;\n align-items: center;\n }\n .lds-ellipsis div {\n position: absolute;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: white;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n }\n .lds-ellipsis div:nth-child(1) {\n left: 8px;\n animation: lds-ellipsis1 0.6s infinite;\n }\n .lds-ellipsis div:nth-child(2) {\n left: 8px;\n animation: lds-ellipsis2 0.6s infinite;\n }\n .lds-ellipsis div:nth-child(3) {\n left: 32px;\n animation: lds-ellipsis2 0.6s infinite;\n }\n .lds-ellipsis div:nth-child(4) {\n left: 56px;\n animation: lds-ellipsis3 0.6s infinite;\n }\n @keyframes lds-ellipsis1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n }\n @keyframes lds-ellipsis3 {\n 0% {\n transform: scale(1);\n }\n 100% {\n transform: scale(0);\n }\n }\n @keyframes lds-ellipsis2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n } \n `}</style>\n </React.Fragment>\n );\n\n // I am removing the busy because I like it as a boolean...\n // ... but React doesn't like pure boolean value here.\n const propsForElement = { ...props, busy: undefined, spinner: undefined };\n return (\n <div style={{ position: 'relative' }} {...propsForElement}> \n {loader}\n {props.children}\n </div>\n );\n};\n\nNekoBusyOverlay.propTypes = {\n busy: PropTypes.bool.isRequired,\n spinner: PropTypes.bool,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired\n};\n\nexport default NekoBusyOverlay;","export const NekoColors = {\n black: '#000000',\n blackRGB: '0, 0, 0',\n blue: '#007cba',\n blueRGB: '0, 124, 186',\n deepBlue: '#134575',\n finderBorder: '#DEDEDE',\n lightBlue: '#EBF3FF',\n lightGray: '#cacaca',\n lightGray2: '#F5F5F5',\n lightPurple: '#D8B1FF',\n gray: '#E8E8E8',\n green: '#0EA480',\n darkGray: '#A0A0A0',\n disabledForm: '#828282',\n orange: '#daa827',\n overlay: 'rgba(16, 16, 16, 0.92)',\n red: '#ba4300',\n redHighlight: '#de5307',\n header: '#007cba',\n proGray: '#7F8EA0',\n progress: '#8414a8',\n purple: '#956DBE',\n tableGray: '#FAFAFA',\n yellow: '#e4b42b',\n yellowRGB: '224, 156, 54',\n white: '#ffffff',\n whiteRGB: '255, 255, 255',\n}\n\nexport const NekoColorTheme = {\n danger: NekoColors.red,\n primary: NekoColors.blue,\n secondary: NekoColors.lightBlue,\n success: NekoColors.green,\n}\n\nconst NekoTheme = {\n\n // COLORS\n ...NekoColors,\n ...NekoColorTheme,\n\n // FONT\n\n fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell,\"Helvetica Neue\", sans-serif',\n fontSizeH1: '24px',\n fontSizeH2: '18px',\n fontSizeText: '13px',\n fontSizeSmall: '12px',\n fontSizeSmallButton: '10px',\n\n // SHADOW\n\n lightShadow: '0px 0px 10px rgba(0,0,0,0.1)',\n};\n\nexport default NekoTheme;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Styled from \"styled-components\";\n\nconst StyledCircleSpinner = Styled.div`\n width: ${props => props.size || '50%'};\n padding-top: ${props => props.size || '50%'};\n position: relative;\n margin: 0 auto;\n\n .double-bounce1, .double-bounce2 {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: ${props => props.color || '#333'};\n opacity: 0.6;\n position: absolute;\n top: 0;\n left: 0;\n\n -webkit-animation: sk-bounce 2.0s infinite ease-in-out;\n animation: sk-bounce 2.0s infinite ease-in-out;\n }\n\n .double-bounce2 {\n -webkit-animation-delay: -1.0s;\n animation-delay: -1.0s;\n }\n\n @-webkit-keyframes sk-bounce {\n 0%, 100% { -webkit-transform: scale(0.0) }\n 50% { -webkit-transform: scale(1.0) }\n }\n\n @keyframes sk-bounce {\n 0%, 100% {\n transform: scale(0.0);\n -webkit-transform: scale(0.0);\n } 50% {\n transform: scale(1.0);\n -webkit-transform: scale(1.0);\n }\n }\n`;\n\nconst CircleSpinner = (props) => {\n return (\n <StyledCircleSpinner {...props}>\n <div className=\"double-bounce1\"></div>\n <div className=\"double-bounce2\"></div>\n </StyledCircleSpinner>\n );\n};\n\n/**\n * @param {string} (variant) Tag Name\n */\nconst StyledNekoSpinner = (props) => {\n const { type = 'circle', ...rest } = props;\n\n switch (type) {\n case 'circle':\n return <CircleSpinner {...rest} />\n\n default:\n return null;\n }\n};\n\nconst NekoSpinner = (props) => {\n return <StyledNekoSpinner {...props} />;\n};\n\nNekoSpinner.propTypes = {\n type: PropTypes.string,\n};\n\nNekoSpinner.defaultProps = {\n type: 'circle',\n};\n\nexport { NekoSpinner };\n","import lockCheck from '@iconify/icons-mdi/lock-check';\nimport lockOpenVariant from '@iconify/icons-mdi/lock-open-variant';\nimport fileUndo from '@iconify/icons-mdi/file-undo';\nimport chevronDoubleLeft from '@iconify/icons-mdi/chevron-double-left';\nimport chevronDoubleRight from '@iconify/icons-mdi/chevron-double-right';\nimport chevronLeft from '@iconify/icons-mdi/chevron-left';\nimport chevronRight from '@iconify/icons-mdi/chevron-right';\nimport chevronDown from '@iconify/icons-mdi/chevron-down';\nimport chevronUp from '@iconify/icons-mdi/chevron-up';\nimport pauseIcon from '@iconify/icons-mdi/pause';\nimport playIcon from '@iconify/icons-mdi/play';\nimport replayIcon from '@iconify/icons-mdi/replay';\nimport checkIcon from '@iconify/icons-mdi/check';\nimport checkCircle from '@iconify/icons-mdi/check-circle';\nimport stopIcon from '@iconify/icons-mdi/stop';\nimport deleteIcon from '@iconify/icons-mdi/delete';\nimport undoIcon from '@iconify/icons-mdi/undo';\n//import alertIcon from '@iconify/icons-mdi/alert';\nimport alertCircle from '@iconify/icons-mdi/alert-circle';\nimport databaseIcon from '@iconify/icons-mdi/database';\nimport pencilIcon from '@iconify/icons-mdi/pencil';\nimport toolsIcon from '@iconify/icons-mdi/tools';\nimport cogIcon from '@iconify/icons-mdi/cog';\nimport closeIcon from '@iconify/icons-mdi/close';\nimport catIcon from '@iconify/icons-mdi/cat';\nimport trashCan from '@iconify/icons-mdi/trash-can';\nimport leadPencil from '@iconify/icons-mdi/lead-pencil';\nimport viewDashboard from '@iconify/icons-mdi/view-dashboard';\nimport databaseSearch from '@iconify/icons-mdi/database-search';\nimport folderIcon from '@iconify/icons-mdi/folder';\nimport folderOpen from '@iconify/icons-mdi/folder-open';\nimport imageMultipleOutline from '@iconify/icons-mdi/image-multiple-outline';\nimport plusIcon from '@iconify/icons-mdi/plus';\nimport folderPlus from '@iconify/icons-mdi/folder-plus';\nimport imagePlus from '@iconify/icons-mdi/image-plus';\nimport viewGrid from '@iconify/icons-mdi/view-grid';\nimport formatListBulleted from '@iconify/icons-mdi/format-list-bulleted';\nimport twitterIcon from '@iconify/icons-mdi/twitter';\nimport instagramIcon from '@iconify/icons-mdi/instagram';\nimport facebookIcon from '@iconify/icons-mdi/facebook';\nimport starIcon from '@iconify/icons-mdi/star';\nimport timerOutline from '@iconify/icons-mdi/timer-outline';\nimport arrowUpBoldCircleOutline from '@iconify/icons-mdi/arrow-up-bold-circle-outline';\nimport linkVariant from '@iconify/icons-mdi/link-variant';\nimport linkedin from '@iconify/icons-mdi/linkedin';\nimport pinterest from '@iconify/icons-mdi/pinterest';\nimport zoomIn from '@iconify/icons-mdi/zoom-in'\nimport infoOutline from '@iconify/icons-mdi/info-outline'\nimport arrowUp from '@iconify/icons-mdi/arrow-up'\nimport arrowDown from '@iconify/icons-mdi/arrow-down'\nimport sort from '@iconify/icons-mdi/sort'\nimport eye from '@iconify/icons-mdi/eye'\nimport rocketLaunch from '@iconify/icons-mdi/rocket-launch'\nimport calendarMonth from '@iconify/icons-mdi/calendar-month'\n\nconst presetIcons = {\n 'lock': lockCheck,\n 'lock-open': lockOpenVariant,\n 'file-undo': fileUndo,\n 'chevron-double-left': chevronDoubleLeft,\n 'chevron-double-right': chevronDoubleRight,\n 'chevron-left': chevronLeft,\n 'chevron-right': chevronRight,\n 'chevron-down': chevronDown,\n 'chevron-up': chevronUp,\n 'pause': pauseIcon,\n 'play': playIcon,\n 'replay': replayIcon,\n 'check': checkIcon,\n 'check-circle': checkCircle,\n 'stop': stopIcon,\n 'delete': deleteIcon,\n 'undo': undoIcon,\n 'alert': alertCircle,\n 'database': databaseIcon,\n 'tools': toolsIcon,\n 'cog': cogIcon,\n 'close': closeIcon,\n 'cat': catIcon,\n 'upload': arrowUpBoldCircleOutline,\n 'trash': trashCan,\n 'pencil': leadPencil,\n 'dashboard': viewDashboard,\n 'search': databaseSearch,\n 'folder': folderIcon,\n 'folder-open': folderOpen,\n 'image-multiple-outline': imageMultipleOutline,\n 'plus': plusIcon,\n 'folder-plus': folderPlus,\n 'image-plus': imagePlus,\n 'view-grid': viewGrid,\n 'format-list-bulleted': formatListBulleted,\n 'twitter': twitterIcon,\n 'instagram': instagramIcon,\n 'facebook': facebookIcon,\n 'star': starIcon,\n 'timer-outline': timerOutline,\n 'link': linkVariant,\n 'linkedin': linkedin,\n 'pinterest': pinterest,\n 'zoom-in': zoomIn,\n 'info-outline': infoOutline,\n 'arrow-up': arrowUp,\n 'arrow-down': arrowDown,\n 'sort': sort,\n 'eye': eye,\n 'rocket-launch': rocketLaunch,\n 'calendar-month': calendarMonth,\n};\n\nexport default presetIcons;","class NekoError {\n\n constructor(message, code = '', url = null, body = null, debug = {}, ) {\n this.url = url;\n this.message = message;\n this.code = code;\n this.body = body;\n this.debug = debug;\n }\n}\n\nexport { NekoError };","import { cache, mutate } from 'swr';\nimport { NekoError } from './errors';\n\n// This function allows to invalidate a SWR key which might\n// have been use for paging, for example: swrInvalidateMany('/api/items')\n// will reset everything which happens around this key.\n\nfunction swrInvalidateMany(select) {\n const keys = cache.keys();\n const mutations = [];\n let regexp = new RegExp(`(.*)${select}(.*)`);\n for (let key of keys) {\n if (regexp.test(key)) {\n mutations.push(mutate(key, null, true));\n }\n }\n return Promise.all(mutations);\n}\n\nfunction chunkArrayInGroups(arr, size) {\n let result = [];\n for (let i = 0; i < arr.length; i += size)\n result.push(arr.slice(i, i + size));\n return result;\n}\n\nconst consolidateJsonResult = (json) => {\n if (!json.data) {\n return json;\n }\n if (json.data.length > 0 && json.data[0].meta) {\n for (let x of json.data) {\n try { x.meta = JSON.parse(x.meta); }\n catch (err) { console.error('[JsonFetcher]', 'Could not decode meta.', x.meta); }\n }\n }\n else if (json.data.meta) {\n try { json.data.meta = JSON.parse(json.data.meta); }\n catch (err) { console.error('[JsonFetcher]', 'Could not decode meta.', x.meta); }\n }\n return json;\n}\n\nconst jsonFetcher = async (url, options = {}) => {\n let body = null;\n let json = {};\n let nekoError = null;\n let rawBody = null;\n\n try {\n options = options ? options : {};\n options.headers = options.headers ? options.headers : {};\n options.headers['Pragma'] = 'no-cache';\n options.headers['Cache-Control'] = 'no-cache';\n rawBody = await fetch(`${url}`, options);\n body = await rawBody.text();\n json = JSON.parse(body);\n if (!json.success) {\n let code = json.success === false ? 'NOT-SUCCESS' : 'N/A';\n let message = json.message ? json.message : 'Unknown error. Check your Console Logs.';\n if (json.code === 'rest_no_route') {\n message = \"The API can't be accessed. Is Rest API enabled?\";\n code = 'NO-ROUTE';\n }\n else if (json.code === 'internal_server_error') {\n message = \"Server error. Please check your PHP Error Logs.\";\n code = 'SERVER-ERROR';\n }\n nekoError = new NekoError(message, code, url, body ? body : rawBody);\n }\n }\n catch (error) {\n let code = 'BROKEN-REPLY';\n let message = \"The reply sent by the server is broken.\";\n if (rawBody && rawBody.status) {\n if (rawBody.status === 408) {\n code = \"REQUEST-TIMEOUT\";\n message = \"The request generated a timeout.\";\n }\n }\n nekoError = new NekoError(message, code, url, body ? body : rawBody, error);\n }\n\n // Rewrite the Json if there is an error\n if (nekoError) {\n console.error('[NekoError] JsonFetcher', nekoError.url, { code: nekoError.code, \n error: nekoError.error, body: nekoError.body });\n json.success = false;\n json.error = nekoError;\n }\n return consolidateJsonResult(json);\n}\n\nconst getFetch = async (url, json, signal, nonce) => {\n const nonceHeader = nonce ? { 'X-WP-Nonce': nonce } : {};\n return jsonFetcher(url, { \n method: 'GET', \n headers: { 'Content-Type': 'application/json', ...nonceHeader },\n signal: signal\n });\n}\n\nconst postFetch = async (url, config = {}) => {\n const { json = {}, signal, file, nonce } = config;\n let formData = file ? new FormData() : null;\n if (file) {\n formData.append('file', file);\n for (const [key, value] of Object.entries(json)) {\n formData.append(key, value);\n }\n }\n\n const headers = nonce ? { 'X-WP-Nonce': nonce } : {};\n if (!formData) {\n headers['Content-Type'] = 'application/json';\n }\n\n return jsonFetcher(url, { \n method: 'POST',\n headers: headers,\n body: formData ? formData :JSON.stringify(json) ,\n signal: signal\n });\n}\n\nconst buildUrlWithParams = (apiUrl, params) => {\n const isPlainPermalink = apiUrl.includes('index.php?rest_route');\n const urlParams = new URLSearchParams(params);\n const finalUrl = apiUrl + (isPlainPermalink ? '&' : '?') + urlParams.toString();\n return finalUrl;\n}\n\nconst formatBytes = (bytes, decimals = 2) => {\n //if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n let i = bytes > 0 ? Math.floor(Math.log(bytes) / Math.log(k)) : 0;\n if ( sizes[i] === 'Bytes' ) {\n i = 1;\n }\n bytes = parseFloat((bytes / Math.pow(k, i)).toFixed(dm));\n var str = bytes.toFixed(Math.max(dm, (bytes.toString().split('.')[1] || []).length));\n return str + ' ' + sizes[i];\n}\n\nfunction sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport { getFetch, postFetch, jsonFetcher, swrInvalidateMany, chunkArrayInGroups,\n buildUrlWithParams, formatBytes, sleep };","import { useState, useRef, useEffect, useCallback } from 'react';\nimport PQueue from 'p-queue';\nimport { sleep } from './helpers';\n\nconst useHandleSWR = (swrData = undefined, defaultData = null, defaultBusy = false) => {\n const [ data, setData ] = useState(defaultData);\n const [ error, setError ] = useState(null);\n const [ busy, setBusy ] = useState(defaultBusy);\n const [ total, setTotal ] = useState(0);\n\n useEffect(() => {\n if (swrData !== undefined) { \n if (swrData.success) {\n setError(null);\n setData(swrData.data);\n setTotal(swrData.total ? swrData.total : 0);\n }\n else {\n setError(swrData.error);\n }\n }\n setBusy(swrData === undefined);\n }, [ swrData ]);\n\n return { busy, data, total, error };\n}\n\n// Sometimes, we need to align or place elements depending on other dynamic elements.\n// This hook returns a ref (which should be assign to a component), and the size of\n// this element every time it changes.\n\nconst useComponentSize = () => {\n const ref = useRef();\n const [ size, setSize ] = useState({});\n\n useEffect(() => {\n if (ref && ref.current) {\n const observer = new ResizeObserver(entries => {\n let element = entries[0];\n if (element.contentRect) {\n setSize({ \n width: element.contentRect.left + element.contentRect.right, \n height: element.contentRect.top + element.contentRect.bottom \n });\n }\n });\n observer.observe(ref.current);\n return () => { observer.unobserve(ref.current); };\n }\n }, []);\n return { ref, width: size.width ? size.width : 0, height: size.height ? size.height : 0 };\n};\n\n// If a click is made outside the component, then the function onOutsideClick is called.\n// This function returns a ref which needs to be assigned to the component.\n\nconst useOutsideClick = (onOutsideClick) => {\n const componentRef = useRef();\n const handleOutsideClick = (e) => {\n if (!onOutsideClick || componentRef.current.contains(e.target)) {\n return;\n }\n onOutsideClick();\n };\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleOutsideClick);\n return () => { document.removeEventListener(\"mousedown\", handleOutsideClick); };\n });\n return componentRef;\n};\n\n\n// This hook allows calling many requests without having too many of them\n// running concurrently.\n\nlet GlobalQueue = null;\n\nconst useNekoGlobalQueue = (params = {}) => {\n\n if (!GlobalQueue) {\n let { concurrency = 2 } = params;\n GlobalQueue = new PQueue({ concurrency, autoStart: true });\n }\n\n const runTask = async (func) => {\n return await GlobalQueue.add(func);\n }\n\n return { runTask };\n};\n\n// This hook handles batch of asynchronous requests, and provide everything\n// the NekoProgress might need.\n\nconst isDebug = true;\nconst UploadQueue = new PQueue({ concurrency: 1, autoStart: false });\n\nconst useNekoTasks = () => {\n\n // We should be able to kill fetch requests using this\n // Interesting article: https://davidwalsh.name/cancel-fetch\n const [ controller, setController ] = useState(new AbortController());\n const refSkip = useRef(false);\n const refErrors = useRef(0);\n const refCurrentTask = useRef(null);\n const refRetries = useRef(0);\n const refRetriesLeft = useRef(0);\n const [ isSleeping, setIsSleeping ] = useState(false);\n const [ busy, setBusy ] = useState(null);\n const [ paused, setPaused ] = useState(false);\n const [ max, setMax ] = useState(0);\n const [ error, setError ] = useState(false);\n const [ success, setSuccess ] = useState(false);\n const [ value, setValue ] = useState(0);\n\n const reset = async () => {\n let newController = new AbortController();\n setController(newController);\n setError(false);\n refErrors.current = 0;\n refSkip.current = false;\n setPaused(false);\n setSuccess(false);\n setValue(0);\n setMax(0);\n };\n\n const start = async (tasks) => {\n const runnerPromise = new Promise((resolve, reject) => {\n setError(false);\n refRetries.current = 0;\n refRetriesLeft.current = 0;\n refErrors.current = 0;\n refSkip.current = false;\n setPaused(false);\n setSuccess(false);\n setTasks(tasks);\n setBusy(true);\n if (isDebug) { console.log('[useNekoTasks] Start.'); }\n UploadQueue.start();\n UploadQueue.onIdle().then(() => {\n onIdle();\n resolve();\n }); \n });\n return runnerPromise;\n };\n\n const pause = async () => {\n if (isDebug) { console.log('[useNekoTasks] Pause.'); }\n UploadQueue.pause();\n setPaused(true);\n };\n\n const resume = async () => {\n if (isDebug) { console.log('[useNekoTasks] Resume.'); }\n setError(false);\n setPaused(false);\n UploadQueue.start();\n };\n\n const autoRetry = async (maxRetries = 5) => {\n refRetries.current = maxRetries;\n refRetriesLeft.current = maxRetries;\n retry();\n }\n\n const retry = async () => {\n if (isDebug) { console.log('[useNekoTasks] Retrying.'); }\n setError(false);\n setPaused(false);\n if (refRetriesLeft.current > 0) {\n if (refRetriesLeft.current < refRetries.current) {\n let retries = refRetries.current - refRetriesLeft.current;\n setIsSleeping(true);\n let sleepFor = retries * 5000;\n if (isDebug) {\n console.log(`[useNekoTasks] Sleep for ${sleepFor}ms.`);\n }\n await sleep(sleepFor);\n setIsSleeping(false);\n }\n refRetriesLeft.current--;\n }\n if (refCurrentTask.current) {\n await executeTask(refCurrentTask.current, true);\n }\n //UploadQueue.start();\n };\n\n const stop = async () => {\n if (isDebug) { console.log('[useNekoTasks] Cancel.'); }\n UploadQueue.pause();\n controller.abort();\n setBusy(false);\n setError(false);\n setSuccess(false);\n };\n\n const onIdle = async () => {\n if (isDebug) { console.log('[useNekoTasks] onIdle.'); }\n setSuccess(true);\n setBusy(false);\n };\n\n const executeTask = async(task, isRetry = false) => {\n try {\n if (isRetry) {\n refErrors.current--;\n setValue(value => value - 1);\n }\n refCurrentTask.current = task;\n let res = await task(controller.signal);\n if (!res || !res.success) {\n console.error('[useNekoTasks] The function for that task did not return anything.', res);\n }\n if (!res.success) {\n refErrors.current++;\n\n // Otherwise, if \"auto-skip\" is not set, we set an error and break.\n if (!refSkip.current) {\n pause();\n // If there are retries left, let's retry.\n if (refRetriesLeft.current > 0) {\n retry();\n return;\n }\n else {\n setError(res.error);\n }\n }\n }\n // If we are retrying a task and it is successful, we should restart PQueue\n else if (isRetry) {\n refRetriesLeft.current = refRetries.current;\n UploadQueue.start();\n }\n }\n catch (err) {\n if (err.name === 'AbortError') {\n console.log('[useNekoTasks] Aborted');\n return;\n }\n else {\n refErrors.current++;\n if (!refSkip.current) {\n setError(\"[useNekoTasks] An error was caught (more information in the console).\");\n pause();\n }\n }\n }\n finally {\n setValue(value => value + 1);\n }\n }\n\n const addTask = async (task) => {\n UploadQueue.add(async () => executeTask(task));\n setMax(max => max + 1);\n }\n\n const setTasks = async (tasks) => {\n UploadQueue.clear();\n for (let task of tasks) {\n addTask(task);\n }\n setValue(0);\n };\n\n const setAlwaysSkip = useCallback((value = true) => {\n refSkip.current = true;\n }, []);\n\n const getErrorCount = useCallback(() => {\n return refErrors.current;\n }, []);\n\n return { start, stop, pause, resume, reset, retry, autoRetry, isSleeping,\n addTask, setAlwaysSkip, getErrorCount,\n error, success, busy, paused, value, max };\n};\n\nconst useKeyboardEvent = () => {\n\tconst [ pressShift, setPressShift ] = useState(false);\n const [ pressControl, setPressControl ] = useState(false);\n\n\tconst keydownFunction = useCallback((e) => {\n\t\tsetPressShift(e.shiftKey);\n setPressControl(e.ctrlKey || e.metaKey);\n\t}, []);\n\tconst keyupFunction = useCallback(() => {\n\t\tsetPressShift(false);\n setPressControl(false);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tdocument.addEventListener(\"keydown\", keydownFunction, false);\n\t\tdocument.addEventListener(\"keyup\", keyupFunction, false);\n\n\t\treturn () => {\n\t\tdocument.removeEventListener(\"keydown\", keydownFunction, false);\n\t\tdocument.removeEventListener(\"keyup\", keyupFunction, false);\n\t\t}\n\t}, []);\n\n\treturn { pressShift, pressControl };\n}\n\nexport { useHandleSWR, useOutsideClick, useNekoGlobalQueue, useNekoTasks, useComponentSize, useKeyboardEvent };","import React, { useState, useCallback, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\n\nimport { useComponentSize } from '../hooks';\nimport Theme from '../common/NekoTheme';\n\nconst TooltipContainer = Styled.div`\n\tdisplay: flex;\n`;\n\nconst Tooltip = Styled.div`\n\tbackground-color: rgba(${Theme.blackRGB}, 0.8);\n\tborder-radius: 4px;\n\tcolor: ${Theme.white};\n\tfont-family: ${Theme.fontFamily};\n\tfont-weight: normal;\n\tmin-width: 180px;\n\tmax-width: 280px;\n\tfont-size: ${Theme.fontSizeText};\n\tpadding: 8px 12px;\n\tposition: absolute;\n \tmax-width: 280px;\n\tword-break: break-word;\n\tdisplay: ${prop => prop.visible ? 'inline-block' : 'none'};\n\tz-index: 100;\n\n\t&:before {\n\t\tcontent: \"\";\n\t\tposition: absolute;\n\t\tborder: 4px solid transparent;\n\t}\n\n\t&.top {\n\t\t&:before {\n\t\t\tmargin-left: -4px;\n\t\t\ttop: 100%;\n\t\t\tleft: 50%;\n\t\t\tborder-top: 4px solid rgba(${Theme.blackRGB}, 0.8);\n\t\t}\n\t}\n\n\t&.left {\n\t\t&:before {\n\t\t\tmargin-top: -4px;\n\t\t\ttop: 50%;\n\t\t\tright: -8px;\n\t\t\tborder-left: 4px solid rgba(${Theme.blackRGB}, 0.8);\n\t\t}\n\t}\n\n\t&.right {\n\t\t&:before {\n\t\t\tmargin-top: -4px;\n\t\t\ttop: 50%;\n\t\t\tleft: -8px;\n\t\t\tborder-right: 4px solid rgba(${Theme.blackRGB}, 0.8);\n\t\t}\n\t}\n\n\t&.bottom {\n\t\t&:before {\n\t\t\tmargin-left: -4px;\n\t\t\ttop: -8px;\n\t\t\tleft: 50%;\n\t\t\tborder-bottom: 4px solid rgba(${Theme.blackRGB}, 0.8);\n\t\t}\n\t}\n\n\t${prop => prop.style}\n`;\n\n/**\n * @param {string} (variant) Tag Name\n */\nconst StyledNekoTooltip = props => {\n\tconst { text = 'Hello world!', position = 'top' } = props;\n\tconst [ show, setShow ] = useState(false);\n\tconst { ref: tooltipRef, width: tooltipWidth, height: tooltipHeight } = useComponentSize();\n\tconst { ref: childRef, width: childWidth, height: childHeight } = useComponentSize();\n\n\tconst transformStyle = useMemo(() => {\n\t\tconst pointerSize = 5;\n\t\tlet transY = 0;\n\t\tlet transX = 0;\n\n\t\tif (position === 'top') {\n\t\t\ttransY = -1 * tooltipHeight - pointerSize;\n\t\t\ttransX = -1 * (tooltipWidth / 2) + (childWidth / 2);\n\t\t}\n\t\telse if (position === 'bottom') {\n\t\t\ttransY = childHeight + pointerSize;\n\t\t\ttransX = -1 * (tooltipWidth / 2) + (childWidth / 2);\n\t\t}\n\t\telse if (position === 'left') {\n\t\t\tconst diff = tooltipHeight - childHeight;\n\t\t\ttransY = -1 * (diff / 2);\n\t\t\ttransX = -1 * tooltipWidth - pointerSize;\n\t\t}\n\t\telse if (position === 'right') {\n\t\t\tconst diff = tooltipHeight - childHeight;\n\t\t\ttransY = -1 * (diff / 2);\n\t\t\ttransX = childWidth + pointerSize;\n\t\t}\n\t\t\n\t\treturn { \n\t\t\ttransform: `translateX(${transX}px) translateY(${transY}px)`\n\t\t};\n\n\t}, [position, tooltipWidth, tooltipHeight, childWidth, childHeight])\n\n\treturn (\n\t\t<TooltipContainer>\n\t\t\t<Tooltip ref={tooltipRef} visible={show} className={position} style={transformStyle}>\n\t\t\t\t{text}\n\t\t\t</Tooltip>\n\t\t\t<div ref={childRef} onMouseEnter={() => text && setShow(true)} onMouseLeave={() => setShow(false)}>\n\t\t\t\t{props.children}\n\t\t\t</div>\n\t\t</TooltipContainer>\n\t);\n};\n\nconst NekoTooltip = (props) => {\n return (<StyledNekoTooltip {...props} />);\n}\n\nNekoTooltip.propTypes = {\n\ttext: PropTypes.string,\n\tposition: PropTypes.oneOf(['top', 'right', 'bottom', 'left'])\n};\n\nNekoTooltip.defaultProps = {\n\ttext: 'Hello world!',\n\tposition: 'top'\n};\n\nexport { NekoTooltip };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { lighten } from 'polished';\nimport { Icon, IconifyIcon } from '@iconify/react';\n\nimport PresetIcons from '../common/PresetIcons';\nimport { NekoTooltip } from './Tooltip';\n\nconst StyledIconContainer = Styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst hoverColor = (color, hoverColor) => {\n if (hoverColor) {\n return `\n &:hover {\n path {\n fill: ${hoverColor};\n }\n }\n `;\n }\n if (color) {\n return `\n &:hover {\n path {\n fill: ${lighten(0.1, color)};\n }\n }\n `;\n }\n};\n\nconst StyledIcon = Styled(Icon)`\n\n path {\n fill: ${props => props.color};\n }\n\n ${props => hoverColor(props.color, props.hoverColor)}\n\n &.nui-clickable {\n cursor: pointer;\n }\n\n &.spin {\n animation-name: spin;\n animation-duration: 700ms;\n animation-iteration-count: infinite;\n animation-timing-function: linear;\n\n @keyframes spin {\n 0% {\n transform: rotate(360deg);\n }\n 100% {\n transform: rotate(0deg);\n }\n }\n }\n\n &.busy {\n animation: crescendo 0.4s alternate infinite;\n @keyframes crescendo {\n 0% {transform: scale(.65);}\n 100% {transform: scale(1);}\n }\n }\n\n &.disabled {\n pointer-events: none;\n opacity: 0.35;\n cursor: default;\n }\n`;\n\nconst StyledNekoIcon = props => {\n\n let { icon, spinning = false, className = '', title, tooltip, containerStyle, color, hoverColor,\n disabled = false, raw, isBusy = false, ...rest } = props;\n\n if (!rest.width && !rest.height) {\n rest.width = rest.height = 30;\n }\n\n const getIcon = () => {\n if (typeof icon === 'string') {\n return PresetIcons[icon] || null;\n }\n return icon;\n };\n\n const iconClassName = `nui-icon ${className}${rest.onClick ? ' nui-clickable' : ''}${spinning ? ' spin' : ''}${disabled ? ' disabled' : ''}${isBusy ? ' busy' : ''}`;\n\n if (tooltip) {\n return (\n <NekoTooltip text={tooltip.text} position={tooltip.position || 'top'}>\n <StyledIconContainer style={containerStyle}>\n <StyledIcon icon={getIcon()} className={iconClassName} color={color} hoverColor={hoverColor} {...rest}/>\n </StyledIconContainer>\n </NekoTooltip>\n );\n }\n\n if (raw) {\n return <StyledIcon icon={getIcon()} className={iconClassName} color={color} hoverColor={hoverColor} {...rest} />\n }\n\n return (\n <StyledIconContainer style={containerStyle} title={title}>\n <StyledIcon icon={getIcon()} className={iconClassName} color={color} hoverColor={hoverColor} {...rest} />\n {!tooltip ? null : <NekoTooltip>{tooltip}</NekoTooltip>}\n </StyledIconContainer>\n );\n};\n\nconst NekoIcon = (props) => {\n return (<StyledNekoIcon {...props} />);\n};\n\nNekoIcon.propTypes = {\n icon: PropTypes.oneOfType([PropTypes.instanceOf(IconifyIcon), PropTypes.oneOf(['lock' ,'lock-open' ,'file-undo' ,'chevron-double-left' ,'chevron-double-right' ,'chevron-left' ,'chevron-right' ,'chevron-down' ,'chevron-up' ,'pause' ,'play' ,'replay' ,'check' ,'stop' ,'delete' ,'undo' ,'alert' ,'database' ,'pencil' ,'tools' ,'cog' ,'close' ,'cat' ,'upload'])]),\n color: PropTypes.string,\n spinning: PropTypes.bool,\n className: PropTypes.string,\n tooltip: PropTypes.string,\n raw: PropTypes.bool,\n isBusy: PropTypes.bool,\n};\n\nNekoIcon.defaultProps = {\n icon: undefined,\n color: undefined,\n spinning: false,\n className: '',\n tooltip: undefined,\n raw: undefined,\n isBusy: false,\n};\n\nexport { NekoIcon };\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { lighten } from 'polished';\nimport Theme from '../common/NekoTheme';\nimport { IconifyIcon } from '@iconify/react';\nimport { NekoSpinner } from '../misc/Spinner';\nimport { NekoIcon } from '../misc/Icon';\n\nconst StyledButton = Styled(props => {\n\n const { className, icon = null, onClick, disabled = false, color = null, small, isBusy = false, width, height,\n children, rounded, busyText, spinning = false, hideBusyIcon = false, busyIconSize, ...rest } = props;\n const hasIcon = !!icon;\n const iconWidth = useMemo(() => {\n const base = width ?? 30;\n return rounded ? base - 10 : base - 6;\n }, [width, rounded]);\n const spinnerSize = useMemo(() => {\n if (busyIconSize) return busyIconSize;\n return rounded ? '82%' : '35%';\n }, [rounded, busyIconSize]);\n\n const classNames = `nui-button ${className || ''}${hasIcon ? ' has-icon' : ''}${color ? ' custom-color' : ''}${small ? ' small' : ''}${rounded ? ' rounded' : ''}${isBusy ? ' busy' : ''}`;\n\n return (\n <button type=\"button\" className={classNames} onClick={onClick} disabled={disabled} {...rest}>\n {isBusy && !hideBusyIcon && <NekoSpinner type=\"circle\" color=\"#fff\" size={spinnerSize} />}\n {isBusy && !!busyText && <span style={{ marginLeft: hideBusyIcon ? 0 : '4px', marginRight: '2xp' }}>{busyText}</span>}\n {hasIcon && !isBusy && <NekoIcon icon={icon} width={iconWidth} height={iconWidth} spinning={spinning} raw style={ rounded ? { margin: '0 auto' } : {}} />}\n {!!children && !isBusy && <span style={{ marginLeft: hasIcon ? '4px' : 0, marginRight: hasIcon ? '2xp' : 0 }}>{children}</span>}\n </button>\n );\n})`\n display: inline-block;\n box-sizing: border-box;\n height: 30px;\n min-height: 30px;\n min-width: 6em;\n border: none;\n border-radius: 4px;\n text-align: center;\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n padding: 0 15px;\n\n background-color: ${Theme.blue};\n color: white;\n transition: background-color .10s, opacity .25s;\n\n :not([disabled]):hover {\n cursor: pointer;\n background-color: ${lighten(0.1, Theme.blue)};\n }\n\n :disabled {\n opacity: 0.35;\n }\n\n :focus {\n outline: none;\n }\n\n &.has-icon {\n align-items: center;\n display: inline-flex;\n padding: 2.5px 8px;\n }\n\n &.secondary {\n background-color: ${Theme.lightBlue};\n border: 1px solid ${Theme.blue};\n color: ${Theme.blue};\n\n &:hover {\n background-color: ${lighten(0.1, Theme.lightBlue)};\n }\n }\n\n &.danger {\n background-color: ${Theme.red};\n border-color: ${Theme.red};\n\n\t &:hover {\n\t\t background-color: ${lighten(0.1, Theme.red)};\n\t }\n }\n\n &.success {\n background-color: ${Theme.green};\n border-color: ${Theme.green};\n\n\t &:hover {\n\t\t background-color: ${lighten(0.1, Theme.green)};\n\t }\n }\n\n & + button {\n margin-left: .25rem;\n }\n\n &.small {\n font-size: ${Theme.fontSizeSmallButton};\n height: 24px;\n }\n\n &.header {\n background-color: ${Theme.deepBlue};\n border-color: ${Theme.deepBlue};\n height: 40px;\n padding: 0 20px;\n\n\t &:hover {\n\t\t background-color: ${lighten(0.1, Theme.deepBlue)};\n\t }\n }\n\n &.rounded {\n border-radius: 100%;\n min-width: 30px;\n height: ${props => props.height ?? (props.width ?? 30)}px;\n width: ${props => props.width ?? 30}px;\n padding: 3px;\n }\n\n &.busy {\n pointer-events: none;\n }\n\n ${props => additionalColor(props.color)}\n`;\n\nconst additionalColor = (color) => {\n if (color) {\n return `\n &.custom-color {\n background-color: ${color};\n border: 1px solid ${color};\n\n &:hover {\n background-color: ${lighten(0.1, color)};\n }\n }\n `;\n }\n};\n\n/**\n * The NekoButton works out of the box without specific attributes.\n */\nconst NekoButton = (props) => {\n return (<StyledButton {...props} />);\n};\n\nNekoButton.propTypes = {\n className: PropTypes.oneOf(['primary', 'secondary', 'danger', 'success', 'header']),\n disabled: PropTypes.bool,\n icon: PropTypes.oneOfType([PropTypes.instanceOf(IconifyIcon), PropTypes.oneOf(['setting', 'edit', 'trash'])]),\n color: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n rounded: PropTypes.bool,\n isBusy: PropTypes.bool,\n spinning: PropTypes.bool,\n busyText: PropTypes.string,\n hideBusyIcon: PropTypes.bool,\n busyIconSize: PropTypes.string,\n};\n\nNekoButton.defaultProps = {\n className: 'primary',\n disabled: false,\n icon: null,\n color: null,\n onClick: () => {},\n rounded: undefined,\n isBusy: false,\n spinning: false,\n busyText: undefined,\n hideBusyIcon: false,\n busyIconSize: undefined,\n};\n\nexport { NekoButton };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Colors from '../common/NekoTheme';\nimport Theme from '../common/NekoTheme';\n\nconst Tag = Styled.a`\n background-color: ${Colors.yellow};\n position: relative;\n border-radius: 10px;\n color: ${Colors.white};\n font-family: ${Theme.fontFamily};\n font-size: 9px;\n line-height: 10px;\n padding: 5px 8px;\n text-transform: uppercase;\n text-decoration: none;\n\n &:hover {\n color: ${Colors.white};\n background-color: #f78c1f;\n }\n\n &.inline {\n display: inline;\n margin-left: 5px;\n vertical-align: middle;\n }\n`;\n\n/**\n * @param {string} className\n * @param {string|object} icon\n * @param {bool} disabled\n * @param {function} onClick\n */\nconst StyledProOnly = (props) => {\n\n const { show = true, className, ...rest } = props;\n\n if (!show) {\n return null;\n }\n\n return (\n <Tag href='https://store.meowapps.com' target='_blank' className={`${className || ''}`} {...rest}>\n Pro Only\n </Tag>\n );\n};\n\nconst ProOnly = (props) => {\n return (<StyledProOnly {...props} />);\n}\n\nProOnly.propTypes = {\n show: PropTypes.bool,\n className: PropTypes.string\n};\n\nProOnly.defaultProps = {\n show: true,\n className: undefined\n};\n\nexport { ProOnly };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { lighten } from 'polished';\nimport Theme from '../common/NekoTheme';\nimport { ProOnly } from '../label/ProOnly';\nimport { Icon } from '@iconify/react';\nimport chevronDown from '@iconify/icons-mdi/chevron-down';\nimport { useOutsideClick, useComponentSize } from '../hooks';\n\nconst MenuButtonWrapper = Styled.div`\n display: inline-block;\n`;\n\nconst MenuButton = Styled.button`\n align-items: center;\n background-color: ${Theme.blue};\n border: none;\n border-radius: 4px;\n box-sizing: border-box;\n color: white;\n display: inline-flex;\n justify-content: space-between;\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n height: 30px;\n min-width: 6em;\n padding: 0px 10px;\n text-align: center;\n transition: background-color .10s, opacity .25s;\n\n :not([disabled]):hover {\n cursor: pointer;\n background-color: ${lighten(0.1, Theme.blue)};\n }\n\n :disabled {\n opacity: 0.35;\n }\n\n :focus {\n outline: none;\n }\n\n & + button {\n margin-left: .25rem;\n }\n`;\n\nconst MenuItemContainer = Styled.div`\n position: relative;\n display: block;\n margin-top: 18px;\n background-color: ${Theme.blue};\n position: absolute;\n z-index: 10;\n box-shadow: ${Theme.lightShadow};\n\n &:before {\n content: \"\";\n position: absolute;\n top: -18px;\n left: 50%;\n margin-left: -8px;\n border: 8px solid transparent;\n border-bottom: 10px solid ${Theme.blue};\n }\n`;\n\nconst StyledMenuButton = props => {\n\n const { title, disabled = false, isPro = false, style = {}, hideChevron, titleStyle = {} } = props;\n const [ isOpen, setIsOpen ] = React.useState(false);\n const wrapperRef = useOutsideClick(() => { setIsOpen(false) });\n const { ref: buttonRef, width: buttonWidth } = useComponentSize();\n\n const onClick = () => {\n setIsOpen(!isOpen);\n }\n\n const children = React.Children.map(props.children, child => {\n return React.cloneElement(child, {\n isPro,\n disabled: child.props.disabled || disabled,\n onClick: () => {\n if (child.props.onClick) {\n child.props.onClick();\n }\n onClick();\n }\n });\n });\n\n return (\n <MenuButtonWrapper ref={wrapperRef}>\n <MenuButton ref={buttonRef} type=\"button\" disabled={disabled} onClick={onClick} style={style}>\n <span style={titleStyle}>{title}</span>\n {!hideChevron && <Icon icon={chevronDown} width=\"24\" height=\"24\" style={{ marginLeft: '4px' }} />}\n </MenuButton>\n {isOpen &&\n <MenuItemContainer style={{ transform: `translateX(calc(-50% + ${buttonWidth / 2}px))` }}>\n {children}\n </MenuItemContainer>\n }\n </MenuButtonWrapper>\n );\n};\n\nconst MenuItem = Styled.button`\n align-items: center;\n background-color: ${Theme.blue};\n border: none;\n box-sizing: border-box;\n color: white;\n display: flex;\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n width: 100%;\n padding: 8px 15px 8px 15px;\n text-align: center;\n transition: background-color .10s, opacity .25s;\n\n :not([disabled]):hover {\n cursor: pointer;\n background-color: ${lighten(0.1, Theme.blue)};\n }\n\n :disabled:not(.is-pro) {\n opacity: 0.35;\n }\n\n :focus {\n outline: none;\n }\n\n &.is-pro {\n background-color: ${Theme.proGray};\n justify-content: space-between;\n }\n\n &.separator {\n border-top: 1px solid ${Theme.white};\n font-size: 10px;\n padding: 5px;\n }\n`;\n\nconst StyledNekoMenuItem = props => {\n\n const { onClick, children, isPro, requirePro = false, disabled, separator } = props;\n const needsProUser = requirePro && !isPro;\n\n return (\n <MenuItem type=\"button\" className={`${needsProUser? 'is-pro' : ''} ${separator ? 'separator' : ''}`} onClick={onClick} disabled={disabled || needsProUser}>\n <span>{children}</span>\n {needsProUser && !isPro && <ProOnly />}\n </MenuItem>\n );\n};\n\n/**\n * The NekoMenuButton works out of the box without specific attributes.\n */\nconst NekoMenuButton = (props) => {\n return (<StyledMenuButton {...props} />);\n}\nconst NekoMenuItem = (props) => {\n return (<StyledNekoMenuItem {...props} />);\n}\n\nNekoMenuButton.propTypes = {\n title: PropTypes.string,\n disabled: PropTypes.bool,\n isPro: PropTypes.bool,\n hideChevron: PropTypes.bool,\n style: PropTypes.object,\n titleStyle: PropTypes.object,\n};\n\nNekoMenuButton.defaultProps = {\n title: undefined,\n disabled: false,\n isPro: false,\n hideChevron: undefined,\n style: {},\n titleStyle: {},\n};\n\nNekoMenuItem.propTypes = {\n onClick: PropTypes.func.isRequired,\n requirePro: PropTypes.bool,\n separator: PropTypes.bool,\n};\n\nNekoMenuItem.defaultProps = {\n onClick: () => {},\n requirePro: false,\n separator: undefined,\n};\n\nexport { NekoMenuButton, NekoMenuItem };\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { NekoButton } from '../button/Button';\n\nconst Page = Styled.div`\n position: relative;\n background: #f1f1f1;\n margin-left: -20px;\n background-color: rgb(30 124 186 / 10%);\n padding-bottom: 50px;\n margin-bottom: -26px;\n\n .neko-rest-error {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: #1e232deb;\n z-index: 100;\n\n .container {\n color: white;\n padding: 5px 20px 15px 20px;\n min-width: 480px;\n max-width: 600px;\n border-radius: 20px;\n background: #883131;\n margin-left: 50%;\n transform: translateX(-50%);\n margin-top: 100px;\n\n h3 {\n color: white;\n }\n\n .neko-debug {\n padding: 5px 10px;\n background: #692426;\n border-radius: 10px;\n\n * {\n margin: 0px;\n padding: 0px;\n } \n }\n }\n }\n`;\n\n/**\n * @oaram {string} className\n */\nconst StyledNekoPage = props => {\n\n const { className, children, nekoErrors = [], style = {} } = props;\n const [ fatalError, setFatalError ] = useState(false);\n const [ showBody, setShowBody ] = useState(false);\n\n if (nekoErrors && !fatalError) {\n for (let error of nekoErrors) {\n if (error) {\n setFatalError(error);\n break\n }\n }\n }\n\n return (\n <Page className={className || ''} style={style}>\n {fatalError && \n <div className='neko-rest-error'>\n <div className='container'>\n {!showBody &&\n <>\n <h3>The Rest API is disabled or broken 😢</h3>\n <p>The Rest API is required for this plugin to work. It is enabled in WordPress by default since December 2016 and used by the Gutenberg Editor since 2019. In short, it allows more robustness and a much cleaner infrastructure. Soon, Wordpress will entirely depends on it, so it is important to keep it enabled.</p>\n <p><i>Last but not least: check your PHP Error Logs and your Debugging Console.</i></p>\n <p className='neko-debug'>\n <small>\n URL: {fatalError.url}<br />\n CODE: {fatalError.code}<br />\n MESSAGE: {fatalError.message}<br />\n </small>\n </p>\n </>\n }\n {fatalError.body && showBody &&\n <p className='neko-debug'>\n <div dangerouslySetInnerHTML={{ __html: fatalError.body }}></div>\n </p>\n }\n {fatalError.body &&\n <NekoButton color=\"#a94242\" onClick={() => setShowBody(!showBody)}>\n {showBody ? 'Hide' : 'Display'} response from server\n </NekoButton>\n }\n <NekoButton color=\"#a94242\" onClick={() => { window.open('https://meowapps.com/fix-wordpress-rest-api/', '_blank') }}>\n Learn about WordPress Debugging\n </NekoButton>\n </div>\n </div>}\n {children}\n </Page>\n );\n};\n\nconst NekoPage = (props) => {\n return (<StyledNekoPage {...props} />);\n};\n\nNekoPage.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n nekoErrors: PropTypes.bool\n};\n\nNekoPage.defaultProps = {\n className: undefined,\n style: {},\n nekoErrors: false\n};\n\nexport { NekoPage };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\n\nimport Theme from '../common/NekoTheme';\n\nconst NekoH1 = Styled.h1`\n font-family: ${Theme.fontFamily};\n font-weight: normal;\n font-size: ${Theme.fontSizeH1};\n line-height: normal;\n margin-top: 0;\n margin-bottom: 16px;\n padding: 0;\n`;\n\nconst NekoH2 = Styled.h2`\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeH2};\n font-weight: normal;\n line-height: normal;\n margin-top: 0;\n margin-bottom: 16px;\n padding: 0;\n`;\n\nconst NekoP = Styled.p`\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n line-height: normal;\n margin: 16px 0 24px;\n padding: 0;\n`;\n\nconst NekoSpan = Styled.span`\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n line-height: normal;\n margin: 0;\n padding: 0;\n`;\n\nconst NekoLabel = Styled.label`\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n line-height: normal;\n margin: 0;\n padding: 0;\n`;\n\n/**\n * @param {string} (variant) Tag Name\n */\nconst StyledNekoTypo = props => {\n const { children, ...rest } = props;\n\n return (\n props.h1 ? <NekoH1 {...rest}>{children}</NekoH1>\n : props.h2 ? <NekoH2 {...rest}>{children}</NekoH2>\n : props.p ? <NekoP {...rest}>{children}</NekoP>\n : props.label ? <NekoLabel {...rest}>{children}</NekoLabel>\n : <NekoSpan {...rest}>{children}</NekoSpan>\n );\n};\n\nconst NekoTypo = (props) => {\n return (<StyledNekoTypo {...props} />);\n}\n\nNekoTypo.propTypes = {\n h1: PropTypes.any,\n h2: PropTypes.any,\n p: PropTypes.any\n};\n\nNekoTypo.defaultProps = {\n h1: undefined,\n h2: undefined,\n p: undefined\n};\n\nexport { NekoTypo };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { NekoTypo } from '../misc/Typography';\nimport NekoBusyOverlay from '../common/NekoBusyOverlay';\n\nconst Block = Styled.div`\n font-size: ${Theme.fontSizeText};\n margin-bottom: 15px;\n\n .nui-block-header {\n display: flex;\n justify-content: space-between;\n }\n\n .nui-block-title {\n color: ${Theme.blue};\n padding: 5px 10px;\n margin-bottom: 5px;\n }\n\n .nui-block-content {\n background-color: #f1f1f1;\n padding: 26px;\n box-shadow: 0px 2px 5px 0px #0000004a;\n border-radius: 10px;\n\n p:first-child {\n margin-top: 0;\n }\n\n p:last-child {\n margin-bottom: 0;\n }\n }\n\n &.primary {\n padding: 8px;\n background-color: ${Theme.blue};\n\n .nui-block-title {\n color: ${Theme.white};\n }\n\n .nui-block-content {\n background-color: ${Theme.white};\n }\n }\n`;\n\n/**\n * @oaram {string} className\n */\nconst StyledNekoBlock = props => {\n\n const { title, children, className, busy = false, style = {}, contentStyle = {}, action } = props;\n\n return (\n <Block className={'nui-block ' + (className || '')} style={style}>\n <NekoBusyOverlay busy={busy}>\n <div className=\"nui-block-header\">\n <NekoTypo h2 className=\"nui-block-title\">{title}</NekoTypo>\n {!!action && action}\n </div>\n <div className=\"nui-block-content\" style={contentStyle}>\n {children}\n </div>\n </NekoBusyOverlay>\n </Block>\n );\n};\n\nconst NekoBlock = (props) => {\n return (<StyledNekoBlock {...props} />);\n}\n\nNekoBlock.propTypes = {\n title: PropTypes.string,\n className: PropTypes.oneOf(['', 'primary']),\n style: PropTypes.object,\n action: PropTypes.element,\n};\n\nNekoBlock.defaultProps = {\n title: undefined,\n className: '',\n style: {},\n action: undefined,\n};\n\nexport { NekoBlock };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\n\nconst Container = Styled.div`\n font-size: ${Theme.fontSizeText};\n font-family: ${Theme.fontFamily};\n background-color: ${Theme.white};\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n margin-bottom: 25px;\n\n &.primary {\n background-color: ${Theme.blue};\n }\n\n p:first-child {\n margin-top: 0px;\n }\n\n p:last-child {\n margin-bottom: 0px;\n }\n\n .content {\n padding: 20px 20px;\n }\n`;\n\nconst Bar = Styled.div`\n justify-content: flex-start;\n background-color: ${Theme.lightGray2};\n display: flex;\n align-items: center;\n padding: 8px 10px;\n\n &.align-right {\n justify-content: flex-end;\n }\n`;\n\n/**\n * @oaram {string} className\n */\nconst StyledNekoContainer = props => {\n\n const { children, header, headerAlign = 'left', footer, footerAlign = 'right', className, style = {} } = props;\n\n return (\n <Container className={className || ''} style={style}>\n {header && <Bar className={`align-${headerAlign}`}>{ header }</Bar>}\n <div className=\"content\">\n { children }\n </div>\n {footer && <Bar className={`align-${footerAlign}`}>{ footer }</Bar>}\n </Container>\n );\n};\n\nconst NekoContainer = (props) => {\n return (<StyledNekoContainer {...props} />);\n}\n\nNekoContainer.propTypes = {\n header: PropTypes.element,\n headerAlign: PropTypes.oneOf(['left', 'right']),\n footer: PropTypes.element,\n footerAlign: PropTypes.oneOf(['left', 'right']),\n className: PropTypes.string,\n style: PropTypes.object\n};\nNekoContainer.defaultProps = {\n header: undefined,\n headerAlign: 'left',\n footer: undefined,\n footerAlign: 'right',\n className: undefined,\n style: {}\n};\n\nexport { NekoContainer };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\n\n/**\n * @param {string} title=''\n */\nconst StyledNekoSettings = Styled(props => {\n const { title = '', contentAlign = 'left' } = props;\n return (\n <div className={props.className || ''}>\n {title ? <div className=\"nui-settings-head\">{title}</div> : null}\n <div className={`nui-settings-content nui-settings-content-align-${contentAlign}`}>\n {props.children}\n </div>\n </div>\n );\n})`\n display: flex;\n font-family: ${Theme.fontFamily};\n\n > .nui-settings-head {\n font-family: ${Theme.fontFamily};\n font-size: 14px;\n line-height: 17px;\n width: 120px;\n margin-right: 16px;\n }\n\n /* Select, Checkbox, Input need to be a bit higher to be in front of the settings title */\n\n .nui-settings-content > .nui-select:first-child {\n position: relative;\n margin-top: -5px;\n }\n \n .nui-settings-content > .nui-checkbox:first-child {\n position: relative;\n margin-top: -5px;\n }\n\n .nui-settings-content > .nui-checkbox:first-child {\n position: relative;\n margin-top: -5px;\n }\n\n .nui-settings-content > .nui-button:first-child {\n position: relative;\n margin-top: -5px;\n }\n\n .nui-settings-content > div:first-child > .neko-input {\n position: relative;\n margin-top: -5px;\n }\n\n > .nui-settings-content {\n flex: 1;\n\n &.nui-settings-content-align-right {\n flex: none;\n margin-left: auto;\n }\n\n input[type=text] {\n width: 100%;\n }\n\n\n }\n\n & + div {\n margin-top: 15px;\n }\n`;\n\nconst NekoSettings = (props) => {\n return (<StyledNekoSettings {...props} />);\n}\n\nNekoSettings.propTypes = {\n title: PropTypes.string,\n className: PropTypes.string,\n contentAlign: PropTypes.string\n};\n\nNekoSettings.defaultProps = {\n title: '',\n className: undefined,\n contentAlign: 'left'\n};\n\nexport { NekoSettings };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\n\nconst WindowBase = Styled.div`\n margin: 20px;\n padding: 14px;\n background-color: white;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n\n > * + * {\n /* Base margin between child elements */\n margin-top: 14px;\n }\n`;\n\nconst TitleBar = Styled(props => (\n props.children ? (\n <div className={props.className}>\n {props.children}\n </div>\n ) : null\n))`\n background-color: ${Theme.blue};\n color: white;\n`;\n\nconst StyledNekoWindow = props => (\n <WindowBase className='window'>\n <TitleBar>{props.title}</TitleBar>\n {props.children}\n </WindowBase>\n);\n\nconst NekoWindow = (props) => {\n return (<StyledNekoWindow {...props} />);\n}\n\nNekoWindow.propTypes = {\n title: PropTypes.string\n};\nNekoWindow.defaultProps = {\n title: undefined\n};\n\nexport { NekoWindow };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\n\nconst Wrapper = Styled.div`\n display: flex;\n flex-wrap: wrap;\n`;\n\nconst Column = Styled.div`\n flex: 1;\n padding: 32px 30px;\n\n .nui-block:not(:first-child) {\n margin-top: -20px;\n }\n\n .nui-block:last-child {\n margin-bottom: 0px;\n }\n\n &.minimal {\n padding: 0;\n }\n\n &.full {\n flex-basis: 100%;\n padding-bottom: 0;\n }\n\n & + .full {\n padding-bottom: 32px;\n padding-top: 0;\n }\n\n &:not(.full) + div:not(.full) {\n padding-left: 0;\n }\n`;\n\n/**\n * @oaram {string} className\n */\nconst StyledNekoWrapper = props => {\n return (\n <Wrapper>\n { props.children }\n </Wrapper>\n );\n};\n\nconst StyledNekoColumn = props => {\n const { full, minimal, ...rest } = props;\n let className = full ? 'full' : '';\n className += minimal ? ' minimal' : '';\n return (\n <Column className={className} {...rest}>{props.children}</Column>\n );\n};\n\nconst NekoWrapper = (props) => {\n return (<StyledNekoWrapper {...props} />);\n};\n\nconst NekoColumn = (props) => {\n return (<StyledNekoColumn {...props} />);\n};\n\nNekoWrapper.propTypes = {\n};\nNekoWrapper.defaultProps = {\n};\n\nNekoColumn.propTypes = {\n full: PropTypes.any\n};\nNekoColumn.defaultProps = {\n full: undefined\n};\n\nexport { NekoWrapper, NekoColumn };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { ProOnly } from '../label/ProOnly';\nimport { NekoSpinner } from '../misc/Spinner';\n\nimport { Icon } from '@iconify/react';\nimport checkboxBlankOutline from '@iconify/icons-mdi/checkbox-blank-outline';\nimport checkboxMarked from '@iconify/icons-mdi/checkbox-marked';\n\n/**\n * @param {string} id\n * @param {string} name\n * @param {bool} checked\n * @param {string} label\n * @param {string} description\n */\nconst StyledNekoCheckbox = Styled(props => {\n const { id, name, checked = false, onChange, label, description, isPro, disabled, requirePro = false, isBusy = false } = props;\n\n const showUpProOnly = requirePro && !isPro;\n const isDisabled = disabled || showUpProOnly;\n const disabledClass = isDisabled ? 'disabled' : '';\n\n const onClick = () => {\n if (isDisabled) {\n return;\n }\n if (!onChange) {\n console.log(`The onChange handler it not set for the NekoCheckbox.`, props);\n return;\n }\n onChange(!checked, id);\n };\n\n return (\n <div className={['nui-checkbox', props.className, disabledClass].join(' ')}\n onClick={(e) => e.stopPropagation() }>\n <input id={id} name={name} type=\"checkbox\" defaultChecked={false} disabled={isDisabled || isBusy} />\n <label htmlFor={id} onClick={onClick}>\n <div className=\"nui-checkbox-check-container\">\n {isBusy\n ? <div className='nui-checkbox-busy-container'><Icon icon={checkboxBlankOutline} width=\"30px\" height=\"30px\" \n color={Theme.blue} /><NekoSpinner type=\"circle\" size=\"16px\" style={{ position: 'absolute', top: '7px', left: '7px' }} /></div>\n : <Icon icon={checked ? checkboxMarked : checkboxBlankOutline} width=\"30px\" height=\"30px\" \n color={isDisabled ? Theme.disabledForm : Theme.blue} />\n }\n </div>\n <div className=\"nui-checkbox-inner-container\">\n <span className=\"label\">{label}<ProOnly className=\"inline\" show={showUpProOnly} /></span>\n {description ? <small className=\"description\">{description}</small> : null}\n </div>\n </label>\n </div>\n );\n})`\n font-family: ${Theme.fontFamily};\n user-select: none;\n\n &.disabled {\n color: ${Theme.disabledForm};\n\n label {\n cursor: default;\n }\n }\n\n input {\n display: none;\n }\n\n label {\n cursor: pointer;\n display: flex;\n }\n .nui-checkbox-check-container {\n display: flex;\n align-content: center;\n flex-basis: 30px;\n\n .nui-checkbox-busy-container {\n position: relative\n }\n }\n .nui-checkbox-inner-container {\n margin-left: 4px;\n\n .label {\n display: block;\n font-size: 14px;\n line-height: 28px;\n }\n \n .description {\n display: block;\n font-size: ${Theme.fontSizeSmall};\n line-height: 14px;\n color: ${Theme.darkGray};\n\n * {\n font-size: ${Theme.fontSizeSmall};\n line-height: inherit;\n margin: 0;\n }\n }\n }\n`;\n\nconst NekoCheckbox = (props) => {\n return (<StyledNekoCheckbox {...props} />);\n};\n\nNekoCheckbox.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n checked: PropTypes.bool,\n label: PropTypes.string,\n description: PropTypes.string,\n isPro: PropTypes.bool,\n requirePro: PropTypes.bool,\n isBusy: PropTypes.bool,\n};\n\nNekoCheckbox.defaultProps = {\n id: undefined,\n name: undefined,\n checked: false,\n label: undefined,\n description: undefined,\n isPro: false,\n requirePro: false,\n isBusy: false,\n};\n\nexport { NekoCheckbox };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\n\n/**\n * @param {string} name\n * @param {int} max=-1 Max number of checkboxes to be checked. Negative number means unlimited\n */\nconst StyledNekoCheckboxGroup = Styled(props => {\n const { name, max = -1, isPro = false } = props;\n\n // React.Children.toArray(props.children)\n\n // Modify child components (Checkboxes)\n const children = React.Children.map(props.children, child => {\n if (child.props.name) return child; // Do not modify if the child has its own name\n return React.cloneElement(child, {\n name: name, // Apply the group's name\n isPro\n });\n });\n\n return children;\n})`\n`;\n\nconst NekoCheckboxGroup = (props) => {\n return (<StyledNekoCheckboxGroup {...props} />);\n}\n\nNekoCheckboxGroup.propTypes = {\n name: PropTypes.string,\n mas: PropTypes.number,\n isPro: PropTypes.bool\n};\n\nNekoCheckboxGroup.defaultProps = {\n name: undefined,\n mas: -1,\n isPro: false\n}\n\nexport { NekoCheckboxGroup };\n","import React, { useState, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { NekoIcon } from '../misc/Icon';\n\n/**\n * @param {string} id\n * @param {string} name\n * @param {string} value\n * @param {string} description\n * @param {string} placeholder\n */\nconst StyledNekoInput = Styled(props => {\n const { id, name, value = '', description, placeholder = '', onEnter = null,\n readOnly = false, type = 'text', step = 1, min = 1, max = 999, maxLength : defaultMaxLength = undefined,\n className, style, natural = false, inputStyle, onChange: onCustomChange, onBlur: onCustomBlur, onReset, ...rest } = props;\n\n const [ newValue, setNewValue ] = useState(value);\n const isControlled = !!onCustomChange;\n const maxLength = defaultMaxLength ? defaultMaxLength : (type === 'number' ? 3 : undefined);\n\n useEffect(() => {\n if (!isControlled) {\n setNewValue(value);\n }\n }, [ value ]);\n\n const onChange = (e) => {\n if (isControlled) { \n onCustomChange(e.target.value, id);\n }\n else {\n setNewValue(e.target.value);\n }\n };\n\n const onKeyPress = (e) => {\n if (onEnter && event.key === 'Enter') {\n e.preventDefault();\n onEnter(e.target.value, id);\n }\n };\n\n const onBlur = (e) => {\n if (onCustomBlur && value !== e.target.value) {\n onCustomBlur(e.target.value, id);\n }\n };\n\n const classNames = `neko-input ${natural ? ' natural' : ''}`;\n\n return (\n <div className={[className].join(' ')} style={style}>\n <div style={{ position: 'relative' }}>\n {type === 'number'\n ? <input className={[classNames].join(' ')} id={id} name={name} value={isControlled ? value : newValue} type={type} \n step={step} min={min} max={max} maxLength={maxLength}\n autoComplete=\"off\"\n placeholder={placeholder} style={inputStyle}\n onChange={onChange} onKeyPress={onKeyPress} onBlur={onBlur} readOnly={readOnly} {...rest} />\n : <input className={[classNames].join(' ')} {...rest} id={id} name={name} value={isControlled ? value : newValue} type={type} \n spellCheck=\"false\"\n autoComplete=\"off\"\n placeholder={placeholder} style={inputStyle} maxLength={maxLength}\n onChange={onChange} onKeyPress={onKeyPress} onBlur={onBlur} readOnly={readOnly} {...rest} />\n }\n {!!value && !!onReset && <NekoIcon icon='close' width={24} style={{ position: 'absolute', top: '3px', right: '3px' }} color={Theme.blue} onClick={onReset} />}\n </div>\n {description && <p className=\"neko-input-description\">{description}</p>}\n </div>\n );\n})`\n .neko-input {\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n border: 2px solid ${Theme.blue};\n box-sizing: border-box;\n height: 30px;\n background: rgb(0 124 186 / 10%);\n padding: 0 10px;\n width: 100%;\n\n &.natural {\n border-color: gray;\n border-width: 1px;\n }\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.25);\n }\n\n :focus {\n background-color: white;\n }\n\n :read-only {\n background-color: ${Theme.gray};\n }\n }\n\n .neko-input-description {\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeSmall};\n color: ${Theme.darkGray};\n line-height: 14px;\n margin-top: 8px;\n margin-bottom: 0;\n }\n`;\n\nconst NekoInput = (props) => {\n return (<StyledNekoInput {...props} />);\n};\n\nNekoInput.propTypes = {\n id: PropTypes.string,\n type: PropTypes.oneOf(['number', 'text']),\n name: PropTypes.string,\n value: PropTypes.string,\n description: PropTypes.string,\n placeholder: PropTypes.string,\n onChange: PropTypes.func,\n onEnter: PropTypes.func,\n onBlur: PropTypes.func,\n readOnly: PropTypes.bool,\n step: PropTypes.number,\n min: PropTypes.number,\n max: PropTypes.number,\n maxLength: PropTypes.number,\n natural: PropTypes.bool,\n onReset: PropTypes.func,\n};\n\nNekoInput.defaultProps = {\n id: undefined,\n type: 'text',\n name: undefined,\n value: '',\n description: undefined,\n placeholder: '',\n onChange: undefined,\n onEnter: undefined,\n onBlur: undefined,\n readOnly: false,\n step: 1,\n min: 1,\n max: 999,\n maxLength: undefined,\n natural: false,\n onReset: undefined,\n};\n\nexport { NekoInput };\n","import React, { useState, useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\n\n/**\n * @param {string} id\n * @param {string} name\n * @param {string} value\n * @param {string} description\n * @param {string} placeholder\n */\nconst StyledNekoTextArea = Styled(props => {\n const { id, name, value = '', description, placeholder = '', avoidOnEnterWithShift = false, onEnter = null, readOnly = false, \n maxLength = null, className, style, textAreaStyle = {}, countable = false, ...rest } = props;\n\n const [ newValue, setNewValue ] = useState(value);\n const [ count, setCount ] = useState(0);\n const [ pressShift, setPressShift ] = useState(false);\n const isControlled = !!props.onChange;\n\n const keydownFunction = useCallback((e) => {\n setPressShift(e.shiftKey);\n }, []);\n const keyupFunction = useCallback(() => {\n setPressShift(false);\n }, []);\n\n useEffect(() => {\n document.addEventListener(\"keydown\", keydownFunction, false);\n document.addEventListener(\"keyup\", keyupFunction, false);\n\n return () => {\n document.removeEventListener(\"keydown\", keydownFunction, false);\n document.removeEventListener(\"keyup\", keyupFunction, false);\n }\n }, []);\n\n useEffect(() => {\n if (!isControlled) {\n setNewValue(value);\n }\n if (countable) {\n setCount(value.length);\n }\n }, [ value, countable ]);\n\n const onChange = useCallback((e) => {\n const newValue = maxLength ? e.target.value.substr(0, maxLength): e.target.value;\n if (isControlled) { \n props.onChange(newValue, id);\n }\n else {\n setNewValue(newValue, id);\n }\n }, [maxLength, props.onChange]);\n\n const onKeyPress = (e) => {\n if (onEnter && !e.shiftKey && e.key === 'Enter') {\n if (avoidOnEnterWithShift && pressShift) return;\n\n e.preventDefault();\n props.onEnter(e.target.value, id);\n }\n };\n\n const onBlur = (e) => {\n if (props.onBlur && value !== e.target.value) {\n props.onBlur(e.target.value, id);\n }\n };\n\n return (\n <div className={[className].join(' ')} style={style}>\n <div className=\"neko-textarea-container\">\n <textarea className=\"neko-textarea\" rows={6} {...rest} id={id} name={name} spellCheck=\"false\" placeholder={placeholder} \n onChange={onChange} onKeyPress={onKeyPress} onBlur={onBlur} readOnly={readOnly} style={textAreaStyle}\n value={isControlled ? value : newValue} />\n {countable && <p className=\"neko-textarea-count\">{count} / {maxLength} characters</p>}\n </div>\n {description && <p className=\"neko-input-description\">{description}</p>}\n </div>\n );\n})`\n .neko-textarea-container {\n position: relative;\n }\n .neko-textarea {\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n border: 2px solid ${Theme.blue};\n box-sizing: border-box;\n background: rgb(0 124 186 / 10%);\n padding: 5px 10px;\n width: 100%;\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.25);\n }\n\n :focus {\n background-color: white;\n }\n\n :read-only {\n background-color: ${Theme.gray};\n }\n }\n .neko-textarea-count {\n color: rgba(${Theme.blackRGB}, 0.4);\n font-size: 11px;\n margin: 0;\n position: absolute;\n right: 13px;\n bottom: 10px;\n }\n\n .neko-input-description {\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeSmall};\n line-height: 14px;\n margin-top: 8px;\n margin-bottom: 0;\n }\n`;\n\nconst NekoTextArea = (props) => {\n return (<StyledNekoTextArea {...props} />);\n};\n\nNekoTextArea.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.string,\n description: PropTypes.string,\n placeholder: PropTypes.string,\n onChange: PropTypes.func,\n onEnter: PropTypes.func,\n onBlur: PropTypes.func,\n readOnly: PropTypes.bool,\n avoidOnEnterWithShift: PropTypes.bool\n};\n\nNekoTextArea.defaultProps = {\n id: undefined,\n name: undefined,\n value: '',\n description: undefined,\n placeholder: '',\n onChange: undefined,\n onEnter: undefined,\n onBlur: undefined,\n readOnly: false,\n avoidOnEnterWithShift: false\n};\n\nexport { NekoTextArea };\n","import React, { useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { ProOnly } from '../label/ProOnly';\nimport { useOutsideClick } from '../hooks';\nimport { NekoSpinner } from '../misc/Spinner';\n\nimport { Icon } from '@iconify/react';\nimport checkboxBlankCircleOutline from '@iconify/icons-mdi/checkbox-blank-circle-outline';\nimport recordCircle from '@iconify/icons-mdi/record-circle';\nimport chevronDown from '@iconify/icons-mdi/chevron-down';\nimport chevronUp from '@iconify/icons-mdi/chevron-up';\nimport { NekoIcon } from '../misc/Icon';\nimport { NekoInput } from './Input';\n\nconst Select = Styled.div`\n border-radius: 8px;\n position: relative;\n user-select: none;\n cursor: pointer;\n\n &.show-options {\n background-color: ${Theme.blue};\n border-radius: 8px 8px 0 0;\n }\n\n &[data-is-disabled=true] {\n cursor: none;\n pointer-events: none;\n\n .nui-select-option {\n pointer-events: none;\n background: ${Theme.gray};\n padding-right: 10px;\n }\n }\n`;\n\nconst SelectedOption = Styled.div`\n align-items: center;\n background-color: ${Theme.white};\n border: 2px solid ${Theme.blue};\n border-radius: 8px;\n display: flex;\n font-family: ${Theme.fontFamily};\n font-size: 14px;\n padding: 0 5px 0 10px;\n box-sizing: border-box;\n height: 30px;\n\n &.isBusy {\n padding-left: 5px;\n }\n\n .rightContent {\n align-items: center;\n display: flex;\n margin-left: auto;\n }\n`;\n\nconst Description = Styled.div`\n display: block;\n margin-top: 5px;\n font-size: ${Theme.fontSizeSmall};\n line-height: 14px;\n color: ${Theme.darkGray};\n\n * {\n font-size: ${Theme.fontSizeSmall};\n line-height: inherit;\n margin: 0;\n }\n`;\n\nconst Options = Styled.div`\n border-radius: 8px;\n overflow: hidden;\n padding-top: 28px;\n position: absolute;\n top: 0;\n z-index: 10;\n width: 100%;\n transition: all 0.2s ease-in;\n\n &.hidden {\n opacity: 0;\n }\n`;\n\nconst OptionsContainer = Styled.div`\n background-color: ${Theme.white};\n overflow-y: auto;\n max-height: 300px;\n\n &.nui-select-filter-container {\n background-color: ${Theme.blue};\n background: rgb(38 155 214);\n padding: 6px;\n margin-top: 2px;\n overflow: hidden;\n\n div {\n overflow: hidden;\n }\n }\n`;\n\n/**\n * @param {string} name\n */\nconst StyledNekoSelect = props => {\n const { id, name, value, scrolldown = false, isPro = false, onChange, className, disabled, isBusy = false,\n chevronIconSize = 24, textFiltering, ...rest } = props;\n\n const currentOption = React.Children.toArray(props.children)\n .find(child => child.props.value === value || child.props.checked)?.props;\n\n const label = currentOption?.label || 'Select';\n const description = currentOption?.description || props.description;\n const requirePro = currentOption?.requirePro || false;\n const icon = currentOption?.icon;\n const iconSize = currentOption?.iconSize;\n //const id = scrolldown ? props.id : currentOption?.id;\n\n const [ showOptions, toggleOptions ] = useState(false);\n const [ filterText, setFilterText ] = useState('');\n const componentRef = scrolldown ? useOutsideClick(() => { toggleOptions(false) }) : null;\n const showUpProOnly = requirePro && !isPro;\n\n const onOptionClick = (newValue) => {\n if (newValue !== value) {\n if (!onChange) {\n console.log(`The onChange handler it not set for this checkbox.`, props);\n return;\n }\n onChange(newValue, id);\n }\n if (scrolldown) {\n toggleOptions(false);\n }\n }\n\n const children = React.Children.map(props.children, child => {\n return React.cloneElement(child, {\n name: child.props.name || name,\n checked: child.props.value === value || child.props.checked,\n onClick: onOptionClick,\n scrolldown,\n isPro,\n disabled\n });\n });\n\n const filteredChildren = useMemo(() => {\n if (!filterText || !children.length) return children;\n\n const filtered = [];\n React.Children.forEach(children, child => {\n if (child.props.label.includes(filterText) || child.props.value.includes(filterText)) {\n filtered.push(child);\n }\n });\n return filtered;\n }, [children, filterText]);\n\n return scrolldown\n ? <Select id={id} ref={componentRef} {...rest}\n onClick={() => toggleOptions(!showOptions)}\n className={[ 'nui-select', className, showOptions ? 'show-options' : '']}\n childrenLength={children.length} data-is-disabled={disabled || isBusy}\n >\n <SelectedOption className={`nui-select-option ${isBusy ? 'isBusy' : ''}`}>\n {isBusy\n ? <>\n <NekoSpinner type=\"circle\" size=\"20px\" />\n </>\n : <>\n {icon && <NekoIcon icon={icon} width={iconSize} height={iconSize} style={{ marginRight: `${Math.max(iconSize - 15, 4)}px` }} />}\n <span className='nui-select-option-label'>{label}</span>\n <div className=\"rightContent\">\n {showUpProOnly && <ProOnly />}\n {!disabled && <Icon icon={showOptions ? chevronUp : chevronDown} width={chevronIconSize} />}\n </div>\n </>}\n </SelectedOption>\n {description && <Description>{description}</Description>}\n {showOptions &&\n <Options className={`nui-option ${showOptions ? '' : 'hidden'}`}>\n {textFiltering && \n <OptionsContainer className='nui-select-filter-container'>\n <NekoInput id=\"nui-select-filter\" value={filterText} placeholder=\"Search...\" onChange={(v) => setFilterText(v)}\n onClick={(e) => e.stopPropagation()} style={{ background: Theme.white }} inputStyle={{ margin: 0, borderRadius: 0 }} autoFocus />\n </OptionsContainer>\n }\n <OptionsContainer>{[filteredChildren]}</OptionsContainer>\n </Options>\n }\n </Select>\n : children;\n};\n\nconst RadioOption = Styled.div`\n font-family: ${Theme.fontFamily};\n margin-bottom: 6px;\n\n input {\n display: none;\n }\n\n label {\n cursor: pointer;\n display: flex;\n }\n\n .inner-container {\n margin-left: 4px;\n\n .label {\n display: block;\n font-size: 14px;\n line-height: 17px;\n padding-top: 4.5px;\n padding-bottom: 4px;\n }\n .description {\n display: block;\n font-size: ${Theme.fontSizeSmall};\n }\n }\n\n &.disabled {\n color: ${Theme.disabledForm};\n\n label {\n cursor: default;\n }\n }\n`;\n\nconst SelectOption = Styled.div`\n background-color: ${Theme.blue};\n cursor: pointer;\n font-family: ${Theme.fontFamily};\n\n &:hover {\n filter: brightness(80%);\n }\n\n input {\n display: none;\n }\n\n .option {\n align-items: center;\n color: ${Theme.white};\n display: flex;\n justify-content: space-between;\n font-family: ${Theme.fontFamily};\n font-size: 14px;\n line-height: 17px;\n padding: 8px 12px;\n\n .option-group {\n align-items: center;\n display: flex;\n }\n }\n\n &.disabled {\n background-color: rgb(224 156 54);\n pointer-events: none;\n\n .option {\n color: rgb(255 255 255 / 35%);\n }\n }\n`;\n\n/**\n * @param {string} id\n * @param {string} name\n * @param {string} value\n * @param {bool} checked\n * @param {string} label\n * @param {string} description\n * @param {function} onClick\n */\nconst StyledNekoOption = props => {\n const { id, name, value, checked, icon, label, description, onClick, scrolldown, isPro = false,\n requirePro = false, disabled, iconSize = 20 } = props;\n\n const showUpProOnly = requirePro && !isPro;\n const disabledClass = showUpProOnly || disabled ? 'disabled' : '';\n\n const radioOption = (\n <RadioOption className={`nui-select ${props.className || ''} ${disabledClass}`}>\n <input id={id} name={name} type=\"radio\" value={value} defaultChecked={checked} onClick={(e) => onClick(e.target.value)} disabled={showUpProOnly || disabled} />\n <label htmlFor={id}>\n <Icon icon={checked ? recordCircle : checkboxBlankCircleOutline} width=\"24px\" color={showUpProOnly ? Theme.disabledForm : Theme.blue}/>\n <div className=\"inner-container\">\n <span className=\"label\">{label}<ProOnly className=\"inline\" style={{ top: -1 }} show={showUpProOnly} /></span>\n {description ? <small className=\"description\">{description}</small> : null}\n </div>\n </label>\n </RadioOption>\n );\n\n const selectOption = (\n <SelectOption className={`nui-select ${props.className || ''} ${disabledClass}`}>\n <input id={id} name={name} type=\"radio\" value={value} defaultChecked={checked} disabled={showUpProOnly || disabled} />\n <div className=\"option\" onClick={() => onClick(value)}>\n <div className=\"option-group\">\n {icon && <NekoIcon icon={icon} width={iconSize} height={iconSize} style={{ marginRight: `${Math.max(iconSize - 11, 4)}px` }} />}\n {label}\n </div>\n <ProOnly show={showUpProOnly} />\n </div>\n </SelectOption>\n );\n\n return scrolldown ? selectOption : radioOption;\n};\n\n/**\n * The NekoSelect has 2 types, radio (default) or select.\n */\nconst NekoSelect = (props) => {\n return (<StyledNekoSelect {...props} />);\n}\n\nNekoSelect.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n description: PropTypes.string,\n scrolldown: PropTypes.bool,\n isPro: PropTypes.bool,\n onChange: PropTypes.func,\n isBusy: PropTypes.bool,\n chevronIconSize: PropTypes.number,\n textFiltering: PropTypes.bool,\n};\n\nNekoSelect.propTypes = {\n id: undefined,\n name: undefined,\n description: undefined,\n scrolldown: false,\n isPro: false,\n onChange: undefined,\n isBusy: false,\n chevronIconSize: 24,\n textFiltering: undefined,\n};\n\nconst NekoOption = (props) => {\n return (<StyledNekoOption {...props} />);\n}\n\nNekoOption.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.string,\n checked: PropTypes.bool,\n label: PropTypes.string,\n description: PropTypes.string,\n onClick: PropTypes.func,\n scrolldown: PropTypes.bool,\n isPro: PropTypes.bool,\n requirePro: PropTypes.bool,\n icon: PropTypes.string,\n iconSize: PropTypes.number,\n};\n\nNekoOption.defaultProps = {\n id: undefined,\n name: undefined,\n value: undefined,\n checked: false,\n label: undefined,\n description: undefined,\n onClick: undefined,\n scrolldown: false,\n isPro: false,\n requirePro: false,\n icon: undefined,\n iconSize: 20,\n};\n\nexport { NekoSelect, NekoOption };\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\n\nconst Form = Styled.div`\n label {\n display: block;\n margin-bottom: 3px;\n }\n\n .neko-input, .neko-textarea {\n margin-bottom: 5px;\n }\n`;\n\n/**\n * @param {string} id\n * @param {string} name\n * @param {string} value\n * @param {string} description\n * @param {string} placeholder\n */\nconst StyledNekoForm = (props) => {\n return (\n <Form>\n {props.children || null}\n </Form>\n );\n};\n\nconst NekoForm = (props) => {\n return (<StyledNekoForm {...props} />);\n};\n\nNekoForm.propTypes = {\n};\n\nNekoForm.defaultProps = {\n};\n\nexport { NekoForm };\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\n\n/**\n * @param {string} id\n * @param {string} name\n * @param {bool} checked\n * @param {string} label\n * @param {string} description\n */\nconst StyledNekoSwitch = Styled(props => {\n\n const { width = '100%', height = '20px', fontSize = Theme.fontSizeSmall, onValue,\n offValue, checked = false, onBackgroundColor, offBackgroundColor,\n onLabel, offLabel, onChange, disabled, ...rest } = props;\n\n const onToggle = useCallback((v) => {\n onChange(v.target.checked ? onValue : offValue);\n }, [onChange, onValue, offValue]);\n\n return (\n <label {...rest} data-is-disabled={disabled ? 'disabled' : ''}>\n <input type=\"checkbox\" onChange={onToggle} checked={checked} disabled={disabled} />\n <span className=\"nui-switch-slider\"></span>\n </label>\n );\n})`\n color: ${Theme.white};\n font-family: ${Theme.fontFamily};\n font-size: ${props => props.fontSize};\n position: relative;\n display: inline-block;\n width: ${props => props.width};\n height: ${props => props.height};\n\n &[data-is-disabled=disabled] {\n opacity: 0.4;\n\n .nui-switch-slider {\n cursor: auto;\n }\n }\n\n input {\n opacity: 0;\n width: 0;\n height: 0;\n border: 0;\n }\n\n .nui-switch-slider {\n background-color: ${props => props.offBackgroundColor};\n border-radius: ${props => props.height};\n align-items: center;\n cursor: pointer;\n display: inline-flex;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n transition: .4s;\n }\n\n .nui-switch-slider:before {\n border-radius: 50%;\n position: absolute;\n content: \"\";\n height: ${props => `calc(${props.height} - 8px)`};\n width: ${props => `calc(${props.height} - 8px)`};\n left: 4px;\n bottom: 4px;\n background-color: white;\n transition: .3s;\n }\n\n .nui-switch-slider:after {\n content: \"${props => props.offLabel}\";\n margin-left: auto;\n margin-right: ${props => `calc(${props.height} / 2)`};\n }\n\n input:checked + .nui-switch-slider {\n background-color: ${props => props.onBackgroundColor};\n }\n\n input:checked + .nui-switch-slider:before {\n transform: translateX(${props => `calc(${props.width} - ${props.height})` });\n }\n\n input:checked + .nui-switch-slider:after {\n content: \"${props => props.onLabel}\";\n margin-left: ${props => `calc(${props.height} / 2)`};\n margin-right: auto;\n }\n`;\n\nconst NekoSwitch = (props) => {\n return (<StyledNekoSwitch {...props} />);\n};\n\nNekoSwitch.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n fontSize : PropTypes.string,\n onValue: PropTypes.string,\n offValue: PropTypes.string,\n checked: PropTypes.bool,\n onBackgroundColor: PropTypes.string,\n offBackgroundColor: PropTypes.string,\n onLabel: PropTypes.string,\n offLabel: PropTypes.string\n};\n\nNekoSwitch.defaultProps = {\n width: '100%',\n height: '20px',\n fontSize: '${Theme.fontSizeSmall}',\n checked: false\n};\n\nexport { NekoSwitch };\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { Icon, IconifyIcon } from '@iconify/react';\nimport folderIcon from '@iconify/icons-mdi/folder';\nimport folderOpen from '@iconify/icons-mdi/folder-open';\nimport imageMultipleOutline from '@iconify/icons-mdi/image-multiple-outline';\nimport chevronRight from '@iconify/icons-mdi/chevron-right';\nimport chevronDown from '@iconify/icons-mdi/chevron-down';\nimport tagIcon from '@iconify/icons-mdi/tag';\n\nconst StyledNekoFinder = props => {\n\n const { chevron = true } = props;\n\n const children = React.Children.map(props.children, child => {\n return React.cloneElement(child, {\n chevron\n });\n });\n\n return (\n children\n );\n};\n\nconst FinderTitleContainer = Styled.div`\n align-items: center;\n display: flex;\n justify-content: space-between;\n margin-bottom: 5px;\n font-family: ${Theme.fontFamily};\n`;\n\nconst FinderTitle = Styled.div`\n align-items: center;\n display: flex;\n\n &.can-expand {\n cursor: pointer;\n }\n\n &.selected {\n color: #956DBE;\n }\n\n span {\n font-weight: normal;\n font-size: ${Theme.fontSizeText};\n margin: 0 0 0 8px;\n }\n`;\n\nconst ChevronSpace = Styled.div`\n height: 24px;\n width: 24px;\n`;\n\nconst FinderTitleIconDropZone = Styled.div`\n position: relative;\n width: 24px;\n height: 24px;\n`;\n\nconst FinderTitleIconDroppableArea = Styled.div`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 100;\n`;\n\nconst ItemContainer = Styled.div`\n border-left: 1px solid ${Theme.finderBorder};\n margin-left: 12px;\n padding-left: 6px;\n\n &.no-line {\n border-left: 0;\n padding-left: 12px;\n }\n\n &.no-chevron {\n border-left: 0;\n margin-left: 0;\n padding-left: 0;\n }\n`;\n\nconst StyledNekoFinderItem = props => {\n\n const defaultIcons = {\n gallery: imageMultipleOutline,\n tag: tagIcon\n }\n\n const { title, chevron, rightElement = null, rightElementStyle = { marginLeft: '5px' }, showRightElement = false, selected = false,\n draggable = false, onDragStart, onDragOver, onDragEnd, onDrop, isExpanded = false, dragging = false, rightAction = null,\n rightActionOnHover = null, onDragLeave, preventClose = false } = props;\n const isCustomizedIcon = !!props.icon;\n const hasChild = !!props.children;\n const [ expanded, setExpanded ] = useState(isExpanded);\n const [ icon, setIcon ] = useState(() => {\n if (typeof props.icon === 'string' && Object.keys(defaultIcons).includes(props.icon)) {\n return defaultIcons[props.icon];\n } else if (props.icon) {\n return props.icon;\n }\n return folderIcon\n });\n const isFolder = Boolean(icon);\n const [ showRightAction, setShowRightAction ] = useState(false);\n\n useEffect(() => {\n setExpanded(isExpanded);\n if (!isCustomizedIcon) {\n setIcon(isExpanded ? folderIcon : folderOpen);\n }\n }, [isExpanded]);\n\n const onClick = () => {\n if (props.onClick) {\n props.onClick();\n }\n }\n\n const onChevronClick = (e) => {\n e.stopPropagation();\n setExpanded(!expanded);\n }\n\n const children = React.Children.map(props.children, child => {\n return React.cloneElement(child, {\n chevron\n });\n });\n\n const iconColor = dragging || selected ? Theme.purple : (selected ? Theme.black : Theme.blue);\n\n return (\n <div>\n <FinderTitleContainer onMouseEnter={() => setShowRightAction(true)} onMouseLeave={() => setShowRightAction(false)}>\n <FinderTitle onClick={onClick} onMouseEnter={props.onMouseEnter} onMouseLeave={props.onMouseLeave} draggable={draggable} onDragStart={onDragStart} onDragOver={onDragOver} onDrop={onDrop} className={`${isFolder || children || props.onClick ? 'can-expand' : ''} ${selected ? 'selected' : ''}`} onDragLeave={onDragLeave} onDragEnd={onDragEnd}>\n {chevron\n ? (isFolder && hasChild)\n ? <Icon icon={expanded ? chevronDown : chevronRight} width=\"24\" height=\"24\" onClick={onChevronClick} />\n : <ChevronSpace></ChevronSpace>\n : null\n }\n <FinderTitleIconDropZone>\n <FinderTitleIconDroppableArea />\n <Icon icon={icon} color={iconColor} width=\"24\" height=\"24\" />\n </FinderTitleIconDropZone>\n <span>{title}</span>\n {showRightElement &&\n <div style={rightElementStyle}>{rightElement}</div>\n }\n </FinderTitle>\n {showRightAction ? (rightActionOnHover || rightAction) : rightAction}\n </FinderTitleContainer>\n {expanded && <ItemContainer className={`${isFolder ? '' : 'no-line'} ${chevron ? '' : 'no-chevron'}`}>{children}</ItemContainer>}\n </div>\n )\n}\n\nconst NekoFinder = (props) => {\n return (<StyledNekoFinder {...props} />);\n}\n\nNekoFinder.propTypes = {\n chevron: PropTypes.bool\n};\n\nNekoFinder.defaultProps = {\n chevron: true\n};\n\nconst NekoFinderItem = (props) => {\n return (<StyledNekoFinderItem {...props} />);\n}\n\nNekoFinderItem.propTypes = {\n icon: PropTypes.oneOfType([PropTypes.instanceOf(IconifyIcon), PropTypes.oneOf(['gallery'])]),\n title: PropTypes.string,\n isExpanded: PropTypes.bool\n};\n\nNekoFinderItem.defaultProps = {\n icon: folderIcon,\n title: undefined,\n isExpanded: false\n};\n\nexport { NekoFinder, NekoFinderItem };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\n\nconst Logo = Styled.div`\n display: flex;\n width: 100%;\n height: 100%;\n max-width: 128px;\n max-height: 128px;\n\n & > * {\n width: 100%;\n height: auto;\n object-fit: contain;\n }\n`;\n\nconst StyledNekoLogo = () => {\n return (\n <Logo>\n <svg width=\"54\" height=\"38\" viewBox=\"0 0 54 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.3663 9.40518C9.2981 -3.25522 -0.310763 2.76769 2.5163 9.40518C2.5163 9.40518 8.29338 29.9322 22.3059 26.3677C36.3184 22.8031 23.9038 19.1156 23.9038 19.1156C23.9038 19.1156 13.4345 22.0656 11.3663 9.40518Z\" fill=\"#724024\" stroke=\"black\" strokeWidth=\"2.1869\"/>\n <path d=\"M10.7517 8.0531C10.0142 10.7573 6.32673 12.1093 3.99131 11.2489C1.65589 10.3885 2.63923 13.8302 5.09756 14.9364C7.55589 16.0427 11.2434 14.1989 12.1038 12.4781C12.9642 10.7573 11.4892 5.34893 10.7517 8.0531Z\" fill=\"#B7782E\"/>\n <path d=\"M14.0705 17.2718C13.8246 19.2385 9.64547 19.976 7.55589 19.8531C5.46631 19.7302 9.76839 23.5406 11.3663 23.5406C12.9642 23.5406 17.3892 21.2052 17.1434 19.2385C16.8976 17.2718 14.3163 15.3052 14.0705 17.2718Z\" fill=\"#B7782E\"/>\n <path d=\"M17.5121 26.2448C18.6184 25.3843 20.9538 21.8198 19.8476 19.8531C18.7413 17.8864 22.4288 20.9593 22.4288 20.9593L21.6913 26.2448C21.6913 26.2448 16.4059 27.1052 17.5121 26.2448Z\" fill=\"#B7782E\"/>\n <path d=\"M10.7517 8.0531C10.0142 10.7573 6.32673 12.1093 3.99131 11.2489C1.65589 10.3885 2.63923 13.8302 5.09756 14.9364C7.55589 16.0427 11.2434 14.1989 12.1038 12.4781C12.9642 10.7573 11.4892 5.34893 10.7517 8.0531Z\" stroke=\"black\"/>\n <path d=\"M14.0705 17.2718C13.8246 19.2385 9.64547 19.976 7.55589 19.8531C5.46631 19.7302 9.76839 23.5406 11.3663 23.5406C12.9642 23.5406 17.3892 21.2052 17.1434 19.2385C16.8976 17.2718 14.3163 15.3052 14.0705 17.2718Z\" stroke=\"black\"/>\n <path d=\"M17.5121 26.2448C18.6184 25.3843 20.9538 21.8198 19.8476 19.8531C18.7413 17.8864 22.4288 20.9593 22.4288 20.9593L21.6913 26.2448C21.6913 26.2448 16.4059 27.1052 17.5121 26.2448Z\" stroke=\"black\"/>\n <path d=\"M11.3663 9.40518C9.2981 -3.25522 -0.310763 2.76769 2.5163 9.40518C2.5163 9.40518 8.29338 29.9322 22.3059 26.3677C36.3184 22.8031 23.658 19.4843 23.658 19.4843C23.658 19.4843 13.4345 22.0656 11.3663 9.40518Z\" stroke=\"black\" strokeWidth=\"2.1869\"/>\n <path d=\"M25.3788 9.89685C25.3788 9.89685 21.3225 35.0947 21.9371 35.7093C22.5517 36.3239 27.4684 36.3239 28.083 35.7093C28.6975 35.0947 29.6523 22.5858 30.2955 21.9427C30.9386 21.2995 35.7226 33.1281 36.81 33.1281C37.8975 33.1281 43.2303 21.3567 43.8163 21.9427C44.4023 22.5287 45.2913 35.0947 45.9059 35.7093C46.5204 36.3239 51.3142 36.3239 51.9288 35.7093C52.5434 35.0947 48.9788 9.89685 48.9788 9.89685H42.9559C42.9559 9.89685 37.7934 21.9427 36.81 21.9427C35.8267 21.9427 31.4017 9.89685 31.4017 9.89685H25.3788Z\" fill=\"white\" stroke=\"black\" strokeWidth=\"2.1869\"/>\n </svg>\n </Logo>\n );\n}\n\nconst NekoLogo = (props) => {\n return (<StyledNekoLogo {...props} />);\n}\n\nNekoLogo.propTypes = {\n};\n\nNekoLogo.defaultProps = {\n};\n\nexport { NekoLogo };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { lighten } from 'polished';\nimport { Icon, InlineIcon } from '@iconify/react';\nimport pauseIcon from '@iconify/icons-mdi/pause';\nimport stopIcon from '@iconify/icons-mdi/stop';\nimport playIcon from '@iconify/icons-mdi/play';\n\nimport Theme from '../common/NekoTheme';\n\n/**\n * @param {number} value Current progress\n * @param {number} max Max progress\n */\nconst StyledNekoProgress = Styled(props => {\n let { value = 0, max = 100, busy = false, status } = props;\n value = Math.min(value, max);\n let ratio = parseFloat(value) / parseFloat(max);\n\n return (\n <div className={props.className}>\n <ProgressCurrent ratio={ratio} busy={props.busy} status={status} />\n <div className=\"nui-progress-buttons\">\n {busy && props.onPauseClick && \n <div className='nui-progress-button pause' onClick={props.onPauseClick}>\n {props.paused ? <InlineIcon icon={playIcon} /> : <InlineIcon icon={pauseIcon} />}\n </div>\n }\n {busy && props.onStopClick && \n <div className='nui-progress-button stop' onClick={props.onStopClick}>\n <InlineIcon icon={stopIcon} />\n </div>\n }\n </div>\n </div>\n );\n})`\n position: relative;\n box-sizing: border-box;\n height: 30px;\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 0.06) 0%,\n rgba(0, 0, 0, 0.02) 50%,\n rgba(0, 0, 0, 0.10) 100%\n );\n border-radius: 12px;\n\n .nui-progress-buttons {\n position: absolute;\n height: 100%;\n right: 0px;\n display: flex;\n align-items: center;\n padding-right: 5px;\n\n .nui-progress-button {\n border: none;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-left: 2px;\n border-radius: 100%;\n color: white;\n padding: 2px;\n width: 18px;\n height: 18px;\n background-color: ${Theme.blue};\n\n &:hover {\n background-color: ${lighten(0.1, Theme.blue)};\n }\n\n &.stop {\n background: ${Theme.red};\n\n &:hover {\n background-color: ${lighten(0.1, Theme.red)};\n }\n }\n }\n }\n`;\n\n/**\n * @param {float} ratio Progress ratio (0.0 to 1.0)\n */\nconst ProgressCurrent = Styled(props => {\n const percent = !isNaN(props.ratio) ? parseInt(Math.round(props.ratio * 100)) : 0;\n const typeOfStatus = typeof props.status;\n let status = typeOfStatus !== 'undefined'\n ? (typeOfStatus === 'string') ? props.status : props.status(percent)\n : `${percent}%`;\n\n return (\n <div className={props.className} style={{ minWidth: 28, minWidth: percent + '%' }}>\n <div>{status}</div>\n </div>\n );\n})`\n position: absolute;\n overflow: hidden;\n top: 0; left: 0;\n height: 100%;\n background-color: ${Theme.progress};\n border-radius: 12px;\n text-align: center;\n padding: 0 10px;\n vertical-align: middle;\n color: white;\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n display: flex;\n justify-content: center;\n align-items: center;\n transition: min-width .2s ease-out;\n\n background-size: 30px 30px;\n background-image: linear-gradient(135deg, rgba(255, 255, 255, .15) 25%,\n transparent 25%,\n transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%,\n transparent 75%, transparent);\n animation: ${props => props.busy ? 'animate-stripes 1.6s linear infinite' : 'none'};\n\n @keyframes animate-stripes {\n 0% { background-position: 0 0; }\n 100% { background-position: 60px 0; }\n }\n`;\n\nconst NekoProgress = (props) => {\n return (<StyledNekoProgress {...props} />);\n}\n\nNekoProgress.propTypes = {\n value: PropTypes.number,\n max: PropTypes.number,\n busy: PropTypes.bool,\n paused: PropTypes.bool,\n onPauseClick: PropTypes.func,\n onStopClick: PropTypes.func,\n status: PropTypes.oneOf([PropTypes.string, PropTypes.func])\n};\n\nNekoProgress.defaultProps = {\n value: 0,\n max: 100,\n busy: false,\n paused: false,\n onPauseClick: undefined,\n onStopClick: undefined,\n status: undefined\n};\n\nexport { NekoProgress };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { NekoLogo } from './Logo';\nimport { NekoIcon } from './Icon';\nimport Theme from '../common/NekoTheme';\nimport contentSave from '@iconify/icons-mdi/content-save';\n\nconst HeaderBase = Styled.div`\n position: relative;\n color: white;\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n display: flex;\n height: 61px;\n overflow: hidden;\n align-items: center;\n padding: 15px 20px;\n background-color: ${Theme.header};\n display: flex;\n\n .nui-header-logo-container {\n width: 102px;\n height: 102px;\n padding: 20px;\n margin-right: 25px;\n background: rgba(${Theme.blackRGB}, 0.1);\n border-radius: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: rotate(-29.83deg);\n }\n\n .nui-header-title-container {\n flex-direction: column;\n display: flex;\n\n .nui-header-title {\n color: white;\n font-family: ${Theme.fontFamily};\n font-size: 23px;\n line-height: normal;\n margin: 0;\n }\n\n .nui-header-subtitle {\n color: white;\n font-family: ${Theme.fontFamily};\n line-height: normal;\n font-size: ${Theme.fontSizeText};\n }\n }\n\n .nui-header-extra-content {\n flex: 1;\n margin: 0 20px;\n }\n`;\n\nconst StyledNekoHeader = props => {\n\n const { title = 'NekoUI', subtitle = 'By Jordy Meow', children, saving = false } = props;\n\n return (\n <HeaderBase>\n <div className='nui-header-logo-container'>\n <NekoLogo />\n </div>\n <div className=\"nui-header-title-container\">\n <h1 className=\"nui-header-title\">{title}</h1>\n <small className=\"nui-header-subtitle\"><a target='_blank' href='https://meowapps.com' \n style={{ color: 'white', textDecoration: 'none' }}>{subtitle}</a></small>\n </div>\n <div className=\"nui-header-extra-content\">{children}</div>\n {saving && <NekoIcon icon={contentSave} width=\"36\" height=\"36\" />}\n </HeaderBase>\n );\n};\n\nconst NekoHeader = (props) => {\n return (<StyledNekoHeader {...props} />);\n}\n\nNekoHeader.propTypes = {\n title: PropTypes.string,\n subtitle: PropTypes.string,\n saving: PropTypes.bool\n};\n\nNekoHeader.defaultProps = {\n title: 'NekoUI',\n subtitle: 'By Jordy Meow',\n saving: false\n};\n\nexport { NekoHeader };\n","import React, { useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { Icon } from '@iconify/react';\nimport chevronDoubleLeft from '@iconify/icons-mdi/chevron-double-left';\nimport chevronLeft from '@iconify/icons-mdi/chevron-left';\nimport chevronDoubleRight from '@iconify/icons-mdi/chevron-double-right';\nimport chevronRight from '@iconify/icons-mdi/chevron-right';\nimport Theme from '../common/NekoTheme';\n\nconst PagingContainer = Styled.div`\n align-items: center;\n display: flex;\n user-select: none;\n\n .neko-paging-text {\n font-family: ${Theme.fontFamily};\n font-style: normal;\n font-weight: normal;\n font-size: 15px;\n line-height: 14px;\n margin-right: 15px;\n }\n\n .neko-paging-controller {\n box-sizing: border-box;\n height: 30px;\n align-items: center;\n background-color: rgba(${Theme.blueRGB}, 0.8);\n border-radius: 15px;\n display: flex;\n padding: 3px 5px;\n\n .nako-paging-controller-icon {\n background-color: ${Theme.white};\n border-radius: 100%;\n cursor: pointer;\n margin-right: 2px;\n height: 22px;\n width: 22px;\n box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.25);\n transition: transform 0.1s ease-in;\n box-sizing: border-box;\n\n :last-child {\n margin-right: 0;\n }\n\n &.disabled {\n color: ${Theme.darkGray};\n cursor: default;\n pointer-events: none;\n }\n\n &:hover {\n transform: scale(1.2) !important;\n z-index: 10;\n position: relative;\n }\n }\n\n .nako-paging-controller-text {\n color: ${Theme.white};\n font-family: ${Theme.fontFamily};\n font-style: normal;\n font-weight: normal;\n font-size: ${Theme.fontSizeText};\n margin: 0 40px;\n user-select: none;\n }\n\n span.neko-paging-current-page {\n cursor: pointer;\n text-decoration: underline;\n }\n\n input.neko-paging-current-page {\n width: 1.5rem;\n }\n }\n`;\n\n/**\n * @param {number} currentPage Current page\n * @param {number} limit Items per page\n */\nconst StyledNekoPaging = props => {\n const { currentPage, limit = 0, onClick, total = 0, onCurrentPageChanged, full, infinite = false, controllerText } = props;\n const isEditable = !!onCurrentPageChanged;\n const maxPage = useMemo(() => {\n if (infinite) return 0;\n return Math.ceil(total === 0 ? 1 : (limit > 0 ? (total / limit) : 1));\n }, [infinite, limit, total]);\n const prevIconClassName = `nako-paging-controller-icon ${!infinite && currentPage === 1 ? 'disabled' : ''}`;\n const nextIconClassName = `nako-paging-controller-icon ${!infinite && currentPage === maxPage ? 'disabled' : ''}`;\n const [ showCurrentPageInput, setShowCurrentPageInput ] = useState(false);\n\n const onClickHandle = (page) => {\n setShowCurrentPageInput(false);\n onClick(page);\n };\n\n const getValidPage = (page) => {\n if (infinite) return page;\n const numberPage = Number(page);\n return numberPage > maxPage ? maxPage : (numberPage < 1 ? 1 : numberPage);\n }\n\n const onBlur = (e) => {\n const page = e.target.value;\n\n if (!isNaN(page)) {\n onCurrentPageChanged(getValidPage(page));\n }\n setShowCurrentPageInput(false);\n }\n\n const onKeyPress = (e) => {\n if (event.key === 'Enter') {\n e.preventDefault();\n const page = e.target.value;\n if (!isNaN(page)) {\n onCurrentPageChanged(getValidPage(page));\n }\n setShowCurrentPageInput(false);\n }\n };\n\n const currentPageJsx = useMemo(() => {\n if (!showCurrentPageInput) {\n const onClick = () => {\n if (!isEditable) {\n return;\n }\n setShowCurrentPageInput(true);\n }\n return <span className={isEditable ? 'neko-paging-current-page' : ''} onClick={onClick}>{currentPage}</span>;\n }\n return <input autoFocus type=\"text\" className={isEditable ? 'neko-paging-current-page' : ''} \n defaultValue={currentPage} onBlur={onBlur} onKeyPress={onKeyPress} />;\n }, [currentPage, showCurrentPageInput, onCurrentPageChanged]);\n\n const onControllerClick = (e) => {\n if (!showCurrentPageInput || e.target !== e.currentTarget) return;\n\n setShowCurrentPageInput(false);\n }\n\n return (\n <PagingContainer>\n\n {!!total && <span className=\"neko-paging-text\">{total} result{total > 0 ? 's' : ''}</span>}\n\n <div className=\"neko-paging-controller\" onClick={onControllerClick}>\n {!infinite && <Icon icon={chevronDoubleLeft}\n className={prevIconClassName}\n onClick={() => onClickHandle(1)}\n />}\n <Icon icon={chevronLeft}\n className={prevIconClassName}\n onClick={() => onClickHandle(currentPage - 1)}\n />\n <p className=\"nako-paging-controller-text\" onClick={onControllerClick}>\n {!!controllerText\n ? controllerText\n : <>Page {currentPageJsx} of {maxPage}</>\n }\n </p>\n <Icon icon={chevronRight}\n className={nextIconClassName}\n onClick={() => onClickHandle(currentPage + 1)}\n />\n {!infinite && <Icon icon={chevronDoubleRight}\n className={nextIconClassName}\n onClick={() => onClickHandle(maxPage)}\n />}\n </div>\n\n </PagingContainer>\n );\n};\n\nconst NekoPaging = (props) => {\n return (<StyledNekoPaging {...props} />);\n};\n\nNekoPaging.propTypes = {\n currentPage: PropTypes.number,\n limit: PropTypes.number,\n total: PropTypes.number,\n onClick: PropTypes.func,\n lastPage: PropTypes.number,\n infinite: PropTypes.bool,\n controllerText: PropTypes.object\n};\n\nNekoPaging.defaultProps = {\n currentPage: undefined,\n limit: 0,\n total: 0,\n onClick: undefined,\n lastPage: undefined,\n infinite: false,\n controllerText: undefined\n};\n\nexport { NekoPaging };\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { NekoIcon } from '../misc/Icon';\n\nconst LinkContainer = Styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst Link = Styled.span`\n color: ${props => props.variant || Theme.blue};\n cursor: pointer;\n font-family: ${Theme.fontFamily};\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 17px;\n\n &.is-active {\n cursor: default;\n color: ${Theme.black};\n font-weight: bold;\n }\n\n &::after {\n content: \"|\";\n color: ${Theme.darkGray};\n padding: 0 4px;\n }\n\n &:last-child::after {\n content: none;\n }\n\n span {\n color: ${Theme.darkGray};\n font-weight: normal;\n margin-left: 4px;\n }\n`;\n\nconst StyledNekoQuickLinks = props => {\n const { id, value, onChange, busy = false, className } = props;\n\n const children = React.Children.map(props.children, (child, i) => {\n return React.cloneElement(child, {\n busy: busy,\n isActive: child.props.value === value,\n onClick: (newValue) => {\n if (newValue !== value) {\n onChange(newValue, id);\n }\n }\n });\n });\n\n return (\n <LinkContainer className={className}>{children}</LinkContainer>\n );\n};\n\nconst StyledNekoLink = props => {\n\n const { title, value = 0, count, onClick, busy, isActive, className, variant } = props;\n\n const variantValue = useMemo(() => {\n if (!variant) return undefined\n return Object.keys(Theme).includes(variant) ? Theme[variant] : variant\n }, [variant])\n\n return (\n <Link onClick={() => onClick(value)} className={`${isActive ? 'is-active' : ''} ${className}`} variant={variantValue}>\n {title}\n {count === null ? null :\n <span>(\n {busy ? \n <NekoIcon icon=\"replay\" spinning={true} width={12} containerStyle={{ display: 'inline' }} /> : \n count\n })\n </span>\n }\n </Link>\n );\n};\n\nconst NekoQuickLinks = (props) => {\n return (<StyledNekoQuickLinks {...props} />);\n};\n\nNekoQuickLinks.propTypes = {\n id: PropTypes.string,\n value: PropTypes.string,\n onChange: PropTypes.func\n};\n\nNekoQuickLinks.defaultProps = {\n id: undefined,\n value: undefined,\n onChange: undefined\n};\n\nconst NekoLink = (props) => {\n return (<StyledNekoLink {...props} />);\n};\n\nNekoLink.propTypes = {\n title: PropTypes.string,\n value: PropTypes.string,\n count: PropTypes.number,\n onClick: PropTypes.func,\n isActive: PropTypes.bool,\n variant: PropTypes.string,\n};\n\nNekoLink.defaultProps = {\n title: undefined,\n value: 'default',\n count: 0,\n onClick: undefined,\n isActive: false,\n variant: undefined,\n};\n\nexport { NekoQuickLinks, NekoLink };\n","import React, { useState, useCallback, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\n\nconst StyledSection = Styled.section`\n .mask {\n position: absolute;\n overflow: hidden;\n display: block;\n width: ${props => props.width}px;\n height: ${props => props.width / 2}px;\n }\n\n .semi-circle {\n position: relative;\n display: block;\n width: ${props => props.width}px;\n height: ${props => props.width / 2}px;\n background: linear-gradient(to right, #27b775 0%, #f3f32c 50%, #f71b1b 100%);\n border-radius: 50% 50% 50% 50% / 100% 100% 0% 0% ;\n\n &::before {\n content: \"\";\n position: absolute;\n bottom: 0;\n left: 50%;\n z-index: 2;\n display: block;\n width: 140px;\n height: 70px;\n margin-left: -70px;\n background: ${props => props.backgroundColor};\n border-radius: 50% 50% 50% 50% / 100% 100% 0% 0% ;\n } \n }\n\n .semi-circle--mask {\n position: absolute;\n top: 0;\n left: 0;\n width: ${props => props.width}px;\n height: ${props => props.width}px;\n background: transparent;\n transform-origin: center center;\n backface-visibility: hidden;\n transition: all .3s ease-in-out;\n\n &::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0%;\n z-index: 2;\n display: block;\n width: ${props => props.width + 2}px;\n height: ${props => props.width / 2 + 2}px;\n margin-top: -1px;\n margin-left: -1px;\n background: #5396c1d6;\n border-radius: 50% 50% 50% 50% / 100% 100% 0% 0% ;\n } \n }\n\n .gauge { \n width: ${props => props.width}px;\n height: ${props => props.width / 2}px;\n \n .semi-circle--mask {\n transform: rotate(${props => props.degrees}deg) translate3d(0,0,0);\n }\n }\n\n .child-container {\n position: absolute;\n font-size: 16px;\n display: flex;\n width: ${props => props.width + 2}px;\n height: ${props => props.width / 2}px;\n z-index: 10;\n\n .spacing {\n flex: auto;\n }\n\n .child {\n color: white;\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n }\n`;\n\nconst NekoGauge = ({ value = 1000, min = 0, max = 2500, width = 200, background = '#007cba', children }) => {\n const degrees = 180 * (value <= max ? value : max) / max;\n return (\n <StyledSection backgroundColor={background} degrees={degrees} width={width}>\n <div class=\"gauge\">\n <div class=\"mask\">\n <div class=\"semi-circle\"></div>\n <div class=\"semi-circle--mask\"></div>\n </div>\n <div class=\"child-container\">\n <div class=\"child\">\n <div class=\"spacing\" />\n {children}\n </div>\n </div>\n </div>\n </StyledSection>\n )\n};\n\nNekoGauge.propTypes = {\n value : PropTypes.number,\n min : PropTypes.number,\n max : PropTypes.number,\n width : PropTypes.number,\n background : PropTypes.string,\n};\n\nNekoGauge.defaultProps = {\n value : 1000,\n min : 0,\n max : 2500,\n width : 200,\n background : '#007cba',\n};\n\nexport { NekoGauge };\n","import Styled from 'styled-components';\n\nconst NekoMessageDanger = Styled.p`\n background: #ba341e;\n padding: 20px;\n color: white;\n border-radius: 10px;\n font-size: 15px;\n\n a {\n color: white;\n font-weight: bold;\n }\n`;\n\nconst NekoMessageSuccess = Styled.p`\n background: #1eba96;\n padding: 20px;\n color: white;\n border-radius: 10px;\n font-size: 15px;\n text-align: center;\n\n a {\n color: white;\n font-weight: bold;\n }\n`;\n\nexport { NekoMessageDanger, NekoMessageSuccess };","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { NekoIcon, postFetch } from '../../index';\n\nconst StyledUpload = Styled.div`\n box-sizing: border-box;\n background: #C4C4C4;\n color: rgb(0 0 0 / 60%);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n transition: all 0.25s ease;\n\n &[data-is-disabled=true] {\n svg {\n opacity: 0.7;\n }\n }\n\n div {\n transition: all 0.5s ease;\n transform: scale(1.5);\n pointer-events: none;\n max-width: 100%;\n }\n\n &:hover {\n cursor: pointer;\n }\n\n &.dropping {\n background: #a4d5ff;\n\n div {\n transform: scale(2);\n }\n }\n`;\n\nconst NekoUpload = (props) => {\n\n const { multiple, width = '100%', height = '100%', iconSize = 48, iconColor = '#A9A9A9', onSuccess = () => {}, \n onFailure = () => {}, style = {}, apiUrl, apiConfig, onClick, disabled, ...rest } = props;\n const [ inDropZone, setInDropZone ] = useState(false);\n const [ inputId, setInputId ] = useState(Math.floor(Math.random() * 100000000));\n const inputEl = useRef(null);\n const divEl = useRef(null);\n const [ busy, setBusy ] = useState(false);\n\n useEffect(() => {\n if (!divEl) return;\n\n divEl.current.style.pointerEvents = busy ? 'none' : 'auto';\n }, [divEl, busy])\n\n const uploadFile = async (files) => {\n setBusy(true);\n const upload = async (file) => {\n apiConfig.file = file;\n return await postFetch(apiUrl, apiConfig);\n }\n const response = await Promise.all(files.map(async (file) => {\n return await upload(file);\n }))\n const successResponses = response.filter(v => v.success);\n const failerResponses = response.filter(v => !v.success);\n if (successResponses.length) {\n onSuccess(multiple ? successResponses : successResponses[0]);\n }\n if (failerResponses.length) {\n onFailure(multiple ? failerResponses : failerResponses[0]);\n }\n setBusy(false);\n }\n\n const onDragOver = (e) => {\n e.preventDefault();\n e.stopPropagation();\n }\n\n const onDragEnter = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setInDropZone(true);\n }\n\n const onDragLeave = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setInDropZone(false);\n }\n\n const onDrop = (e) => {\n const files = [...e.dataTransfer.files];\n uploadFiles(files, e);\n }\n\n const onUploaderClick = () => {\n if (onClick) {\n onClick();\n return;\n }\n inputEl.current.click();\n }\n\n const onInputUpload = (e) => {\n const files = [...e.target.files];\n uploadFiles(files, e);\n }\n\n const uploadFiles = (files, e) => {\n e.preventDefault();\n e.stopPropagation();\n setInDropZone(false);\n console.log(files);\n uploadFile(files);\n }\n\n return (\n <div ref={divEl}>\n <input type=\"file\" id={inputId} accept=\"image/*\" ref={inputEl} onChange={onInputUpload} style={{ display: 'none' }} disabled={disabled} multiple={multiple} />\n <StyledUpload onClick={onUploaderClick} style={{ ...style, width, height }} className={inDropZone ? 'dropping' : ''} \n onDragOver={onDragOver} onDragEnter={onDragEnter} onDragLeave={onDragLeave} onDrop={onDrop} data-is-disabled={disabled} {...rest}>\n <NekoIcon width={iconSize} height={iconSize} icon='upload' spinning={busy} color={iconColor}\n onDragOver={onDragOver} onDragEnter={onDragEnter} />\n </StyledUpload>\n </div>\n );\n}\n\nNekoUpload.propTypes = {\n width : PropTypes.string,\n height : PropTypes.string,\n onSuccess : PropTypes.func,\n onFailure : PropTypes.func,\n style : PropTypes.object,\n apiUrl : PropTypes.string,\n apiConfig : PropTypes.object\n};\n\nNekoUpload.defaultProps = {\n width : '100%',\n height : '100%',\n onSuccess : () => {},\n onFailure : () => {},\n style : {}\n};\n\nexport { NekoUpload };\n","import React, { useState, forwardRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { NekoBusyOverlay, postFetch } from '../../index';\n\nconst StyledUploadDropArea = Styled.div`\n &.dropping {\n background: #a4d5ff;\n }\n`;\n\nconst NekoUploadDropArea = forwardRef((props, ref) => {\n\n const { onSuccess = () => {}, onFailure = () => {}, apiUrl, apiConfig, className, disabled = false, children, multiple, ...rest } = props;\n const [ inDropZone, setInDropZone ] = useState(false);\n const [ busy, setBusy ] = useState(false);\n\n const uploadFile = useCallback(async (files) => {\n setBusy(true);\n const upload = async (file) => {\n apiConfig.file = file;\n return await postFetch(apiUrl, apiConfig);\n }\n const response = await Promise.all(files.map(async (file) => {\n return await upload(file);\n }))\n const successResponses = response.filter(v => v.success);\n const failerResponses = response.filter(v => !v.success);\n if (successResponses.length) {\n onSuccess(multiple ? successResponses : successResponses[0]);\n }\n if (failerResponses.length) {\n onFailure(multiple ? failerResponses : failerResponses[0]);\n }\n setBusy(false);\n }, [apiConfig, onSuccess, onFailure]);\n\n const uploadFiles = useCallback((files, e) => {\n e.preventDefault();\n e.stopPropagation();\n setInDropZone(false);\n // console.log(files);\n uploadFile(files);\n }, [uploadFile]);\n\n const onDragOver = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n const onDragEnter = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n if (disabled) return;\n setInDropZone(true);\n }, [disabled]);\n\n const onDragLeave = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n if (disabled) return;\n setInDropZone(false);\n }, [disabled]);\n\n const onDrop = useCallback((e) => {\n if (disabled) return;\n const files = [...e.dataTransfer.files];\n uploadFiles(files, e);\n }, [disabled, uploadFiles]);\n\n const onInputUpload = useCallback((e) => {\n const files = [...e.target.files];\n uploadFiles(files, e);\n }, [uploadFiles]);\n\n return (\n <NekoBusyOverlay busy={busy}>\n <input type=\"file\" accept=\"image/*\" ref={ref} onChange={onInputUpload} style={{ display: 'none' }} multiple={multiple} />\n <StyledUploadDropArea className={`${className ? className : ''} ${inDropZone ? 'dropping' : ''}`}\n onDragOver={onDragOver} onDragEnter={onDragEnter} onDragLeave={onDragLeave} onDrop={onDrop} {...rest}>\n {children}\n </StyledUploadDropArea>\n </NekoBusyOverlay>\n );\n});\n\nNekoUploadDropArea.propTypes = {\n ref: PropTypes.ref,\n onSuccess : PropTypes.func,\n onFailure : PropTypes.func,\n apiUrl : PropTypes.string,\n apiConfig : PropTypes.object,\n disabled: PropTypes.bool\n};\n\nNekoUploadDropArea.defaultProps = {\n onSuccess : () => {},\n onFailure : () => {},\n disabled : false\n};\n\nexport { NekoUploadDropArea };\n","import { useState, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\n//import { Icon, InlineIcon, IconifyIcon } from '@iconify/react';\n//import folderIcon from '@iconify/icons-mdi/folder';\n\nconst Days = {\n Monday: 1,\n Tuesday: 2,\n Wednesday: 3,\n Thursday: 4,\n Friday: 5,\n Saturday: 6,\n Sunday: 7\n}\n\nconst StyledNekoCalendar = Styled.div`\n display: flex;\n flex-direction: column;\n border-radius: 5px;\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeSmall};\n`;\n\nconst CalendarHeaders = Styled.div`\n display: flex;\n width: 100%;\n padding: 10px 0px;\n color: white;\n background: ${Theme.primary};\n border-radius: 5px 5px 0px 0px;\n\n div {\n width: calc(100% / 7);\n text-align: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`;\n\nconst CalendarContent = Styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst WeekContainer = Styled.div`\n display: flex;\n`;\n\nconst DayContainer = Styled.div`\n background: purple;\n width: calc(100% / 7);\n background: ${Theme.white};;\n padding: 3px;\n border-bottom: 1px solid ${Theme.lightGray};\n border-right: 1px solid ${Theme.lightGray};\n position: relative;\n transition: background-color 150ms linear;\n box-sizing: border-box;\n\n &:first-child {\n border-left: 1px solid ${Theme.lightGray};\n }\n\n &:last-child {\n border-right: 1px solid ${Theme.lightGray};\n }\n\n .day {\n text-align: right;\n color: ${Theme.black};\n margin-bottom: 5px;\n }\n\n &.highlighted {\n background: #ffe8bc;\n }\n\n &.today .day {\n font-weight: bold;\n text-decoration: underline;\n }\n\n .gray-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: ${Theme.lightGray};\n opacity: 0.8;\n }\n\n .event {\n margin-bottom: 2px;\n }\n\n .event:last-child {\n margin-bottom: 0px;\n }\n`;\n\nfunction getFirstWeekDayForMonth(month, year, weekDay = Days.Monday) {\n const date = new Date(year, month);\n while (date.getDay() !== weekDay) {\n date.setDate(date.getDate() - 1);\n }\n return date;\n}\n\nfunction numberOfDaysBetween(startDate, endDate) {\n const start = new Date(startDate);\n const end = new Date(endDate);\n let count = 0;\n while (start <= end) {\n count++;\n start.setDate(start.getDate() + 1);\n }\n return count - 1;\n}\n\nfunction splitArrayInChunks(array, chunkSize) {\n const chunks = [];\n let i = 0;\n while (i < array.length) {\n chunks.push(array.slice(i, i += chunkSize));\n }\n return chunks;\n}\n\nconst NekoCalendar = (props) => {\n const { month = new Date().getMonth(), year = new Date().getFullYear(),\n onEventClicked = () => { console.log(\"[NekoCalendar] onEventClicked not handled.\"); },\n onEventMoved = () => { console.log(\"[NekoCalendar] onEventMoved not handled.\"); },\n eventBuilder = () => \"YOOO\", events, ...rest } = props;\n const [draggedEvent, setDraggedEvent] = useState();\n const [highlightedDay, setHighlightedDay] = useState();\n\n let { disableDaysBefore = null } = props;\n disableDaysBefore = disableDaysBefore ? disableDaysBefore :\n new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate());\n\n const weeks = useMemo(() => {\n const days = [];\n const currentDate = getFirstWeekDayForMonth(month, year, Days.Monday);\n const totalCalendarDays = numberOfDaysBetween(currentDate, new Date(year, month, 1)) < 5 ? 34 : 41;\n const lastDate = new Date(currentDate).setDate(currentDate.getDate() + totalCalendarDays)\n while (currentDate <= lastDate) {\n days.push(new Date(currentDate));\n currentDate.setDate(currentDate.getDate() + 1);\n }\n return splitArrayInChunks(days, 7);\n }, [month, year]);\n\n const isDayToday = (date) => {\n const today = new Date();\n return date.getFullYear() === today.getFullYear() &&\n date.getMonth() === today.getMonth() &&\n date.getDate() === today.getDate();\n }\n\n const isSameDay = (date1, date2) => {\n return date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate();\n }\n\n return (\n <StyledNekoCalendar {...rest}>\n\n <CalendarHeaders>\n {Object.keys(Days).map(day => (\n <div key={day}>{day}</div>\n ))}\n </CalendarHeaders>\n\n <CalendarContent>\n {weeks.map(week => \n <WeekContainer key={week}>\n {week.map(day => {\n const isCurrentMonth = day.getMonth() == month;\n const isDisabled = !isCurrentMonth || day < disableDaysBefore;\n const className = (isDisabled ? 'disabled ' : '') + (isDayToday(day) ? 'today' : '')\n + (day === highlightedDay ? 'highlighted' : '');\n const filterEvents = events.filter(event => isCurrentMonth && event.date.getDate() === day.getDate());\n return (\n <DayContainer className={className} key={day.getTime()}\n onDragOver={(e) => { \n if ( isDisabled || isSameDay(day, draggedEvent.date) ) { \n return false;\n };\n e.preventDefault();\n setHighlightedDay(day);\n return true;\n }}\n onDragLeave={() => setHighlightedDay(null)}\n onDrop={() => { onEventMoved(day, draggedEvent); setHighlightedDay(null) }}>\n <div className=\"day\">{day.getDate()}</div>\n {filterEvents.map(event => \n <div className=\"event\" key={event.key} draggable={event.draggable} \n onClick={() => onEventClicked(event)}\n onDragStart={(e) => setDraggedEvent(event)}>\n {eventBuilder({ ...event })}\n </div>)\n }\n {isDisabled && <div className=\"gray-overlay\" />}\n </DayContainer>\n );\n })}\n </WeekContainer>\n )}\n </CalendarContent>\n\n </StyledNekoCalendar>\n );\n}\n\nNekoCalendar.propTypes = {\n month: PropTypes.number,\n year: PropTypes.number,\n disableDaysBefore: PropTypes.instanceOf(Date),\n disableDaysAfter: PropTypes.instanceOf(Date),\n eventBuilder: PropTypes.func,\n events: PropTypes.array,\n onEventClicked: PropTypes.func,\n onEventMoved: PropTypes.func,\n};\n\nNekoCalendar.defaultProps = {\n month: (new Date).getMonth(),\n year: (new Date).getFullYear(),\n disableDaysBefore: null,\n disableDaysAfter: null,\n eventBuilder: () => \"UI for this event\",\n events: [{ key: 'A1', date: new Date() }, { key: 'A2', date: new Date() }],\n onEventClicked: (event) => { console.log(\"An event was clicked\", event); },\n onEventMoved: (day, event) => { console.log(\"An event was moved to another day\", event, day); },\n};\n\nexport { NekoCalendar };","import React, { useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport Modal from 'react-modal';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { NekoButton } from '../button/Button';\n\nconst NekoModalParent = Styled.div`\n\n .ReactModal__Overlay {\n z-index: 100;\n display: flex;\n justify-content: center;\n flex-direction: column;\n align-items: center;\n background: ${Theme.overlay} !important;\n }\n .ReactModal__Overlay {\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n .ReactModal__Overlay--after-open {\n opacity: 1;\n }\n .ReactModal__Overlay--before-close {\n opacity: 0;\n }\n .ReactModal__Overlay .neko-modal {\n opacity: 0;\n transform: scale(0.85);\n transition: all 200ms ease-in-out;\n }\n .ReactModal__Overlay--after-open .neko-modal {\n transform: scale(1);\n opacity: 1;\n }\n .ReactModal__Overlay--before-close .neko-modal {\n transform: scale(0.85);\n opacity: 0;\n }\n .neko-modal {\n background: ${Theme.white};\n position: relative;\n box-shadow: 2px 2px 15px 2px rgba(0, 0, 0, 0.8);\n outline: none;\n padding: 15px;\n max-width: 820px;\n }\n`;\n\nconst NekoModalContent = Styled.div`\n width: ${props => props.width ?? '518px'};\n\n p {\n margin: 0;\n }\n .title {\n font-family: ${Theme.fontFamily};\n font-style: normal;\n font-weight: normal;\n font-size: 18px;\n line-height: 22px;\n }\n .content-container {\n display: flex;\n margin-top: 15px;\n\n .thumbnail {\n margin-right: 15px;\n width: 240px;\n overflow: hidden;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n }\n .content {\n flex: auto;\n font-family: ${Theme.fontFamily};\n font-style: normal;\n font-weight: normal;\n font-size: ${Theme.fontSizeText};\n line-height: 14px;\n width: 100%;\n }\n }\n .button-group {\n align-items: center;\n display: flex;\n justify-content: flex-end;\n margin-top: 15px;\n font-size: inherit;\n white-space: normal;\n }\n`;\n\nconst StyledNekoModal = (props) => {\n\n const {\n id = 'neko-modal-parent',\n isOpen,\n children,\n className,\n style,\n ok = 'OK',\n cancel = 'Cancel',\n customButtons = null,\n customButtonsPosition = 'right',\n title = '',\n content = '',\n contentWidth,\n onOkClick,\n onCancelClick,\n okOnEnter = false,\n thumbnail,\n ...rest\n } = props;\n const customClassName = style ? 'custom-modal' : '';\n const showCustomButtons = customButtons !== null;\n\n const keyUpHandler = useCallback(({ key }) => {\n if (key === 'Enter') {\n onOkClick();\n }\n }, [onOkClick]);\n\n useEffect(() => {\n if (!okOnEnter || !isOpen) return;\n\n window.addEventListener(\"keyup\", keyUpHandler);\n return () => {\n window.removeEventListener(\"keyup\", keyUpHandler);\n };\n }, [isOpen, keyUpHandler]);\n\n const modalContent = children\n ? children\n : <NekoModalContent width={contentWidth}>\n {title && <p className=\"title\">{title}</p>}\n <div className=\"content-container\">\n {thumbnail && <div className=\"thumbnail\">{thumbnail}</div>}\n {content && <p className=\"content\">{content}</p>}\n </div>\n <div className=\"button-group\">\n {showCustomButtons && customButtonsPosition === 'left' && customButtons}\n {onCancelClick && <NekoButton className=\"danger\" onClick={onCancelClick}>{cancel}</NekoButton>}\n {onOkClick && <NekoButton onClick={onOkClick}>{ok}</NekoButton>}\n {showCustomButtons && customButtonsPosition === 'right' && customButtons}\n </div>\n </NekoModalContent>;\n\n return (\n <React.Fragment>\n <NekoModalParent id={id} />\n <Modal ariaHideApp={false}\n parentSelector={() => document.getElementById(id)}\n closeTimeoutMS={200}\n className={`neko-modal ${className || ''} ${customClassName}`}\n isOpen={isOpen}\n {...rest}\n >\n {modalContent}\n </Modal>\n </React.Fragment>\n );\n};\n\nconst NekoModal = (props) => {\n return (<StyledNekoModal {...props} />);\n};\n\nNekoModal.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n ok: PropTypes.string,\n cancel: PropTypes.string,\n title: PropTypes.string,\n content: PropTypes.string,\n contentWidth: PropTypes.string,\n onOkClick: PropTypes.func,\n onCancelClick: PropTypes.func,\n customButtons: PropTypes.object,\n okOnEnter: PropTypes.bool,\n thumbnail: PropTypes.element\n};\n\nNekoModal.defaultProps = {\n className: undefined,\n style: undefined,\n ok: 'OK',\n cancel: 'Cancel',\n title: '',\n content: '',\n contentWidth: undefined,\n onOkClick: undefined,\n onCancelClick: undefined,\n customButtons: null,\n okOnEnter: false,\n thumbnail: undefined\n};\n\nexport { NekoModal };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { Icon } from '@iconify/react';\nimport chevronDown from '@iconify/icons-mdi/chevron-down';\nimport chevronUp from '@iconify/icons-mdi/chevron-up';\nimport checkboxBlankOutline from '@iconify/icons-mdi/checkbox-blank-outline';\nimport checkboxMarked from '@iconify/icons-mdi/checkbox-marked';\nimport checkboxMultipleMarked from '@iconify/icons-mdi/checkbox-multiple-marked';\n\nimport Theme from '../common/NekoTheme';\nimport NekoBusyOverlay from '../common/NekoBusyOverlay';\n\nconst Table = Styled.table`\n font-family: ${Theme.fontFamily};\n border-spacing: 0;\n width: 100%;\n word-break: break-all;\n\n th, td {\n margin: 0;\n padding: 5px;\n border-bottom: 1px solid rgba(${Theme.blackRGB}, 0.1);\n border-right: 1px solid rgba(${Theme.blackRGB}, 0.1);\n\n a {\n text-decoration: none;\n }\n\n :last-child {\n border-right: 0;\n }\n }\n\n &.nekotable-raw {\n th, td {\n border: 0;\n }\n }\n\n th, tfoot td {\n height: 30px;\n background-color: ${Theme.blue};\n color: ${Theme.white};\n font-style: normal;\n font-weight: normal;\n font-size: ${Theme.fontSizeText};\n line-height: 16px;\n text-align: left;\n\n div {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n &.sortable {\n cursor: pointer;\n }\n }\n }\n\n thead tr th:first-child {\n border-top-left-radius: 10px;\n }\n\n thead tr th:last-child {\n border-top-right-radius: 10px;\n }\n\n tfoot tr th:first-child {\n border-bottom-left-radius: 10px;\n }\n\n tfoot tr th:last-child {\n border-bottom-right-radius: 10px;\n }\n\n &.nekotable-raw {\n th {\n font-weight: bold;\n }\n th, tfoot td {\n background-color: ${Theme.white};\n color: ${Theme.black};\n\n div {\n justify-content: normal;\n }\n }\n }\n\n tbody {\n background-color: ${Theme.white};\n \n tr {\n :nth-child(even) {\n background-color: ${Theme.tableGray};\n }\n &.selected {\n background-color: rgba(${Theme.blueRGB}, 0.8);\n color: ${Theme.white};\n\n a {\n color: #81e8ff;\n }\n }\n }\n img {\n vertical-align: bottom;\n }\n }\n\n &.nekotable-raw {\n tbody {\n tr {\n :nth-child(even) {\n background-color: ${Theme.white};\n }\n &.selected {\n background-color: ${Theme.white};\n color: ${Theme.black};\n }\n }\n }\n }\n\n tfoot tr:last-child {\n td {\n border-bottom: 0;\n }\n }\n\n .table-checkbox-cell {\n width: 35px;\n text-align: center;\n\n svg {\n padding: 5px;\n cursor: pointer;\n }\n }\n`;\n\nconst TableCheckBox = (props) => {\n const { checked, intermediate = false, onSelect = () => {}, onUnselect = () => {}, ...rest } = props;\n\n const onClick = (e) => { \n checked ? onUnselect(e) : onSelect(e);\n };\n\n return (\n <Icon icon={intermediate ? checkboxMultipleMarked : (checked ? checkboxMarked : checkboxBlankOutline)}\n width=\"24px\" height=\"24px\" onClick={onClick} />\n );\n};\n\nconst alignToJustifyContent = {\n left: 'start',\n center: 'center',\n right: 'end',\n};\n\n/**\n * @param {string} className\n * @param {string|object} icon\n * @param {bool} disabled\n * @param {function} onClick\n */\nconst StyledNekoTable = (props) => {\n const { columns, data, busy = false, onSelect, onUnselect, selectedItems, sort, onSortChange, variant = 'default', sortIconColor = undefined, emptyMessage = \"Empty.\" } = props;\n const columnsCount = columns.length + (onSelect ? 1 : 0);\n\n const getColumnStyle = (column) => {\n let style = {};\n if (column.align) {\n style = { textAlign: column.align, justifyContent: alignToJustifyContent[column.align] };\n }\n if (column.width) {\n style = { ...style, width: column.width };\n }\n if (column.style) {\n style = { ...style, ...column.style };\n }\n return style;\n }\n\n const rows = data.map(v => {\n const cells = columns.map(c => {\n return { value: v[c.accessor], style: getColumnStyle(c) }\n });\n return { id: v.id, cells };\n });\n\n const currentRowsIds = rows.map(x => x.id);\n const currentSelectedRows = currentRowsIds.filter(x => selectedItems.includes(x));\n const areAllRowsSelected = currentSelectedRows.length === currentRowsIds.length;\n const isIntermediate = !areAllRowsSelected && selectedItems.length > 0;\n\n const hiddenColumnIndexes = columns.reduce(function(a, e, i) {\n if (e.visible === false)\n a.push(i);\n return a;\n }, []);\n\n const headersFooters = <tr>\n {onSelect && \n <th className='table-checkbox-cell'>\n <TableCheckBox checked={areAllRowsSelected} intermediate={isIntermediate}\n onSelect={(e) => onSelect(currentRowsIds, e) } \n onUnselect={(e) => { \n // The unselect on selectedItems never happens, but I keep it here in case\n // we find an elegant UI solution to unselect all the invisible selected rows as well.\n isIntermediate ? onUnselect(selectedItems, e) : onUnselect(currentRowsIds, e);\n }}\n />\n </th>\n }\n {columns.filter((x, i) => !hiddenColumnIndexes.includes(i)).map(column => {\n let beingSorted = sort && sort.accessor === column.accessor;\n let beingSortedAsc = sort && sort.by === 'asc';\n let color = beingSorted ? Theme.white : `rgba(${Theme.blackRGB}, 0.1)`;\n if (sortIconColor) {\n color = beingSorted ? sortIconColor : Theme.gray;\n }\n const columnStyle = getColumnStyle(column);\n return (<th style={columnStyle} key={column.accessor}>\n <div className={column.sortable ? 'sortable' : ''} style={{...columnStyle, width: 'auto' }}\n onClick={column.sortable ? (e) => { \n onSortChange(column.accessor, beingSorted && beingSortedAsc ? 'desc' : 'asc', e)\n } : undefined}>\n <div>{column.title}</div>\n <div style={{ flex: 'auto' }} />\n <div>{column.sortable && \n <Icon icon={!beingSorted ? chevronDown : (beingSortedAsc ? chevronDown : chevronUp)} \n color={color} width=\"26px\" height=\"26px\" />}\n </div>\n </div>\n </th>)\n })}\n </tr>;\n\n return (\n <NekoBusyOverlay busy={busy} overlayStyle={{ top: '36px', height: 'calc(100% - 76px)' }}>\n <Table className={`nekotable-${variant}`}>\n <thead>{headersFooters}</thead>\n <tbody>\n {!rows.length && \n <tr><td colspan={columnsCount} style={{ textAlign: 'center', height: 40, color: 'gray' }}>\n {emptyMessage}\n </td></tr>\n }\n {rows.map(row => {\n return (\n <tr className={selectedItems.includes(row.id) ? 'selected' : ''}>\n {onSelect && \n <td className='table-checkbox-cell'>\n <TableCheckBox \n checked={selectedItems.includes(row.id)}\n onSelect={(e) => onSelect([ row.id ], e)}\n onUnselect={(e) => onUnselect([ row.id ], e)} \n />\n </td>\n }\n {row.cells.filter((x, i) => !hiddenColumnIndexes.includes(i)).map(cell => {\n return <td style={cell.style}>{cell.value}</td>;\n })}\n </tr>\n );\n })}\n </tbody>\n {variant === 'default' && <tfoot>{headersFooters}</tfoot>}\n </Table>\n </NekoBusyOverlay>\n );\n};\n\nconst NekoTable = (props) => {\n return (<StyledNekoTable {...props} />);\n};\n\nNekoTable.propTypes = {\n columns: PropTypes.arrayOf(PropTypes.any),\n data: PropTypes.arrayOf(PropTypes.any),\n busy: PropTypes.arrayOf(PropTypes.bool),\n onSelect: PropTypes.func,\n onUnselect: PropTypes.func,\n selectedItems: PropTypes.arrayOf(PropTypes.object),\n onSortChange: PropTypes.func,\n variant: PropTypes.string,\n sortIconColor: PropTypes.string,\n};\n\nNekoTable.defaultProps = {\n columns: undefined,\n data: undefined,\n busy: false,\n onSelect: undefined,\n onUnselect: undefined,\n selectedItems: undefined,\n onSortChange: undefined,\n variant: 'default',\n sortIconColor: undefined,\n};\n\nexport { NekoTable };\n","import React, { useMemo, useState, useRef, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Styled from \"styled-components\";\nimport Theme from '../common/NekoTheme';\nimport { NekoModal } from \"./Modal\";\nimport { NekoTypo } from \"./../misc/Typography\";\nimport { NekoInput } from \"./../form/Input\";\nimport { NekoButton } from \"../button/Button\";\nimport { NekoPaging } from \"../misc/Paging\";\nimport NekoBusyOverlay from \"../common/NekoBusyOverlay\";\nimport { NekoIcon } from \"../misc/Icon\";\nimport { NekoUploadDropArea } from \"../misc/UploadDropArea\";\nimport { NekoTable } from \"../table/Table\";\n\nconst StyledNekoModal = Styled(NekoModal)`\n width: 633px;\n\n &.custom-modal {\n padding: 0;\n }\n\n .neko-modal-wrapper {\n padding: 15px;\n }\n\n .neko-media-library-modal-content-header {\n align-items: center;\n display: flex;\n justify-content: space-between;\n\n h1 {\n font-size: 21px;\n font-weight: bold;\n margin: 0;\n }\n\n input {\n background-color: ${Theme.white};\n border: 1px solid ${Theme.black};\n border-radius: 3px;\n }\n }\n .neko-media-library-modal-content-body {\n margin-top: 33px;\n margin-bottom: 36px;\n\n .neko-media-library-modal-content-body-list {\n max-height: 406px;\n overflow-y: scroll;\n margin-bottom: 10px;\n width: 100%;\n }\n .neko-media-library-modal-content-body-gallery {\n display: grid;\n gap: 10px;\n grid-template-columns: repeat(6, 1fr);\n margin-bottom: 10px;\n\n .neko-media-library-modal-content-media-container {\n cursor: pointer;\n position: relative;\n\n img {\n box-sizing: border-box;\n }\n\n &.selected {\n img {\n border: 5px solid ${Theme.blue};\n }\n }\n\n &:hover {\n .zoom-button {\n display: block;\n }\n }\n\n .zoom-button {\n background-color: rgba(${Theme.blackRGB}, 0.4);\n border: 0;\n border-radius: 30px;\n cursor: pointer;\n display: none;\n position: absolute;\n top: 2px;\n left: 2px;\n width: 30px;\n height: 30px;\n }\n }\n }\n\n .neko-media-library-modal-content-body-selected-gallery {\n display: flex;\n\n .neko-media-library-modal-content-selected-media-container {\n overflow: hidden;\n position: relative;\n height: 50px;\n width: 50px;\n padding-right: 5px;\n\n &.dummy {\n width: 50px;\n\n &.drag-over {\n width: 50px;\n }\n }\n\n &.drag-over {\n width: 105px;\n\n .zoom-button {\n left: 56px;\n }\n }\n\n &.drag-over::before {\n content: '';\n display: inline-block;\n width: 50px;\n height: 50px;\n background-color: ${Theme.blue};\n }\n\n img {\n box-sizing: border-box;\n width: 100%;\n max-width: 50px;\n }\n\n &.drag-over {\n img {\n margin-left: 5px;\n }\n }\n\n &:hover {\n .remove-button,\n .zoom-button {\n display: block;\n }\n }\n\n .remove-button {\n background-color: rgba(${Theme.blackRGB}, 0.4);\n border: 0;\n border-radius: 20px;\n cursor: pointer;\n display: none;\n position: absolute;\n top: 1px;\n right: 1px;\n width: 20px;\n height: 20px;\n }\n\n .zoom-button {\n background-color: rgba(${Theme.blackRGB}, 0.4);\n border: 0;\n border-radius: 20px;\n cursor: pointer;\n display: none;\n position: absolute;\n top: 1px;\n left: 1px;\n width: 20px;\n height: 20px;\n }\n }\n }\n }\n .neko-media-library-modal-content-footer {\n display: flex;\n justify-content: space-between;\n }\n .neko-media-library-modal-search {\n position: relative;\n }\n`;\n\nconst selectedImageBaseWidth = 55;\nconst nextItemRange = 25;\nconst selectedImageIdPrefix = 'nmlm-selected-';\nconst dragOverClassName = 'drag-over';\nconst removeClass = (className) => {\n Array.prototype.forEach.call(document.getElementsByClassName(className), (ele) => {\n ele.classList.remove(className);\n });\n}\nconst displayModes = {\n grid: 'grid',\n list: 'list'\n};\nconst columns = [\n { accessor: 'thumbnail_url', title: 'Thumb', style: { width: '42px' } },\n { accessor: 'title', title: 'Title' },\n { accessor: 'size', title: 'Size', style: { width: '70px' } },\n { accessor: 'filename', title: 'Filename' },\n];\n\nconst StyledNekoMediaLibraryModal = (props) => {\n const { images, onNextPage, onPreviousPage, onRefresh, onClick, onRemoveClick, onZoomClick, onSearch, searchValue, busy,\n currentPage, limit, total, onPageChange, selected, multiSelect = false, showUploader = false, uploader, onSelectedOrderChanged,\n onUploadSuccess = () => {}, onUploadFailure = () => {}, uploadApiUrl, uploadApiConfig, uploadMultiple, onClose, onCancel, onSave, ...rest } = props;\n const [ search, setSerch ] = useState(searchValue);\n const [ dragImageIndex, setDragImageIndex ] = useState(null);\n const [ displayMode, setDisplayMode ] = useState(displayModes.grid);\n const ref = useRef(null);\n\n const onDragOver = (e, i) => {\n e.preventDefault();\n if (dragImageIndex === null) return;\n const { width, left, right } = e.currentTarget.getBoundingClientRect();\n let target = i;\n // Only tweak the index if the element dragged over is the right on the image dragged.\n if (dragImageIndex < i) {\n if (i > 0 && i < selected.length) {\n if (target + 1 === dragImageIndex && e.clientX >= right - nextItemRange) {\n target -= 1\n } else if (target - 1 === dragImageIndex && e.clientX >= left - nextItemRange) {\n target += 1;\n } else if (width !== selectedImageBaseWidth && e.clientX >= right - nextItemRange) {\n target += 1;\n }\n } else if (width !== selectedImageBaseWidth && e.clientX >= right - nextItemRange) {\n target += 1;\n }\n }\n removeClass(dragOverClassName);\n if (dragImageIndex === target || (dragImageIndex + 1) === target) return;\n document.getElementById(`${selectedImageIdPrefix}${target}`).classList.add(dragOverClassName);\n }\n\n const onDragEnd = (e) => {\n e.preventDefault();\n setDragImageIndex(null);\n removeClass(dragOverClassName);\n }\n\n const onDrop = (e, i) => {\n e.preventDefault();\n if (dragImageIndex === null || dragImageIndex === i || (dragImageIndex + 1) === i) return;\n onSelectedOrderChanged({ currentIndex: dragImageIndex, afterIndex: dragImageIndex > i ? i : i - 1});\n }\n\n const selectedMediaJsx = useMemo(() => {\n if ( !multiSelect ) return [];\n const dummyElementForDrop = <div id={`nmlm-selected-${selected.length}`} className=\"neko-media-library-modal-content-selected-media-container dummy\" draggable={false} onDragEnd={(e) => onDragEnd(e)} onDragOver={(e) => onDragOver(e, selected.length)} onDrop={(e) => onDrop(e, selected.length)} onDragLeave={() => removeClass(dragOverClassName)}></div>\n const selectedElement = selected.map( (image, i) => {\n return (\n <div id={`nmlm-selected-${i}`} key={image.id} className=\"neko-media-library-modal-content-selected-media-container\" draggable={true} onDragStart={() => setDragImageIndex(i)} onDragEnd={onDragEnd} onDragOver={(e) => onDragOver(e, i)} onDrop={(e) => onDrop(e, i)}>\n <img src={image.src} className=\"neko-media-library-modal-content-media\" />\n <button className=\"remove-button\" onClick={() => onRemoveClick({ id: image.id, src: image.src })}>\n <NekoIcon icon=\"close\" color={Theme.white} width={19} height={19} />\n </button>\n <button className=\"zoom-button\" onClick={() => onZoomClick({ id: image.id, src: image.zoom_src })}>\n <NekoIcon icon=\"zoom-in\" color={Theme.white} width={19} height={19} />\n </button>\n </div>\n );\n } );\n return [...selectedElement, dummyElementForDrop];\n }, [ selected, multiSelect, onRemoveClick, onZoomClick, onDragOver, onDragEnd, onDrop ] );\n\n const mediaGridJsx = useMemo(() => {\n return images.map((image) => {\n return (\n <div key={image.id} className={`neko-media-library-modal-content-media-container ${selected.some(v => v.id === image.id) ? 'selected' : ''}`}\n onClick={() => {\n onClick({ id: image.id, src: image.src, zoom_src: image.zoom_src })\n }}>\n <img src={image.src} className=\"neko-media-library-modal-content-media\" width=\"90\" height=\"90\" />\n <button className=\"zoom-button\" onClick={(e) => { e.stopPropagation(); onZoomClick({ id: image.id, src: image.zoom_src }); }}>\n <NekoIcon icon=\"zoom-in\" color={Theme.white} width={29} height={29} />\n </button>\n </div>\n );\n });\n }, [images, selected, onZoomClick, onClick]);\n\n const mediaRows = useMemo(() => {\n return images.map(x => ({\n id: x.id,\n thumbnail_url: <img src={x.src} style={{ width: 40, height: 40, objectFit: 'cover' }} />,\n title: x.title,\n size: x.size,\n filename: x.filename\n }));\n }, [images]);\n\n const onReset = useCallback(() => {\n setSerch(\"\");\n onRefresh();\n }, [onRefresh]);\n\n const mediaListJsx = useMemo(() => {\n const onSelect = (ids, e) => {\n const image = images.find(v => ids.includes(v.id));\n onClick({ id: image.id, src: image.src, zoom_src: image.zoom_src });\n }\n return <NekoTable\n data={mediaRows}\n columns={columns}\n onSelect={onSelect}\n onUnselect={onSelect}\n selectedItems={selected.map(v => v.id)}\n />\n }, [images, mediaRows, selected, onClick]);\n\n return (\n <StyledNekoModal style={true} {...rest}>\n <div className=\"neko-modal-wrapper\" draggable={true} onDragOver={() => removeClass(dragOverClassName)}>\n <NekoUploadDropArea ref={ref} onSuccess={onUploadSuccess} onFailure={onUploadFailure} apiUrl={uploadApiUrl} apiConfig={uploadApiConfig} disabled={!showUploader || dragImageIndex !== null} multiple={uploadMultiple}>\n <div className=\"neko-media-library-modal-content\">\n <div className=\"neko-media-library-modal-content-header\">\n <NekoTypo h1>Media Library</NekoTypo>\n <div style={{ display: 'flex' }}>\n <div className=\"neko-media-library-modal-search\">\n <NekoInput value={search} disabled={busy} onEnter={onSearch} onChange={(v) => setSerch(v)} placeholder=\"Search...\" />\n {search !== \"\" && <NekoIcon icon=\"close\" containerStyle={{ width: '20px', position: 'absolute', right: '5px', top: '5px', cursor: 'pointer' }} width={20} height={20} color={Theme.darkGray} onClick={onReset} />}\n </div>\n <NekoButton onClick={() => onSearch(search)} style={{ marginLeft: '4px', marginRight: '4px' }}>Search</NekoButton>\n <NekoIcon color={displayMode === displayModes.grid ? Theme.black : Theme.blue} icon='view-grid' onClick={() => setDisplayMode(displayModes.grid)} width=\"20\" height=\"20\" />\n <NekoIcon color={displayMode === displayModes.list ? Theme.black : Theme.blue} icon='format-list-bulleted' onClick={() => setDisplayMode(displayModes.list)} width=\"20\" height=\"20\" />\n </div>\n </div>\n <div>\n <div className=\"neko-media-library-modal-content-body\">\n <NekoBusyOverlay busy={busy}>\n <div className={`${displayMode === displayModes.grid ? 'neko-media-library-modal-content-body-gallery' : 'neko-media-library-modal-content-body-list'}`}>\n {displayMode === displayModes.grid && showUploader && uploader}\n {displayMode === displayModes.grid ? mediaGridJsx : mediaListJsx}\n </div>\n </NekoBusyOverlay>\n <div className=\"neko-media-library-modal-content-body-selected-gallery\">\n {selectedMediaJsx}\n </div>\n </div>\n </div>\n <div className=\"neko-media-library-modal-content-footer\">\n <NekoPaging limit={limit} currentPage={currentPage} total={total} onClick={onPageChange} />\n <div style={{ display: 'flex' }}>\n {!!onClose && <NekoButton onClick={() => onClose()}>\n Close\n </NekoButton>}\n {!!onCancel && <NekoButton className=\"danger\" onClick={() => onCancel()}>\n Cancel\n </NekoButton>}\n {!!onSave && <NekoButton onClick={() => onSave()}>\n Save\n </NekoButton>}\n </div>\n </div>\n </div>\n </NekoUploadDropArea>\n </div>\n </StyledNekoModal>\n );\n};\n\nconst NekoMediaLibraryModal = (props) => {\n return <StyledNekoMediaLibraryModal {...props} />;\n};\n\nNekoMediaLibraryModal.propTypes = {\n images: PropTypes.array,\n onNextPage: PropTypes.func,\n onPreviousPage: PropTypes.func,\n onRefresh: PropTypes.func,\n onClick: PropTypes.func,\n onSearch: PropTypes.func,\n searchValue: PropTypes.string,\n busy: PropTypes.bool,\n currentPage: PropTypes.number,\n limit: PropTypes.number,\n total: PropTypes.number,\n onPageChange: PropTypes.func,\n multiSelect: PropTypes.bool,\n selected: PropTypes.array,\n onClose: PropTypes.func,\n onCancel: PropTypes.func,\n onSave: PropTypes.func,\n};\n\nNekoMediaLibraryModal.defaultProps = {\n multiSelect: false\n};\n\nexport { NekoMediaLibraryModal };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { ProOnly } from '../label/ProOnly';\nimport { NekoIcon } from '../misc/Icon';\n\nconst TabContainer = Styled.div`\n`;\n\nconst TabGroup = Styled.div`\n display: flex;\n`;\n\nconst Tab = Styled.button`\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n border-radius: 8px 8px 0px 0px;\n border: 0;\n background-color: #459ad2;\n color: rgb(255 255 255 / 65%);\n display: flex;\n align-items: center;\n\n cursor: pointer;\n line-height: 17px;\n margin: 0 5px 0 0;\n text-align: left;\n padding: 10px 15px 10px 15px;\n\n &:focus {\n outline: none;\n }\n\n &.active {\n background-color: ${Theme.blue};\n color: ${Theme.white};\n }\n\n &.disabled {\n background-color: rgb(224 156 54);\n cursor: default;\n display: inline-flex;\n padding-bottom: 7px;\n }\n\n &.hidden {\n display: none;\n }\n`;\n\nconst TabContent = Styled.div`\n background-color: ${Theme.blue};\n display: none;\n padding: 10px;\n\n &.active {\n display: block;\n }\n`;\n\n/**\n * Need to use with NecoTab\n */\nconst StyledNekoTabs = props => {\n const [isActiveTabIndex, setIsActiveTabIndex] = React.useState(0);\n const childrenProp = props.children\n ? (\n props.children.length\n ? props.children.filter(x => !!x)\n : [props.children]\n )\n : [];\n\n React.useEffect(() => {\n if (props.keepTabOnReload) {\n const url = new URL(window.location.href);\n const title = url.searchParams.get('nekoTab');\n if (!title) {\n setIsActiveTabIndex(0);\n if (props.callOnTabChangeFirst) {\n onTabClick(0, tabAttributes[0]);\n }\n return;\n }\n const searchTitle = decodeURIComponent(title);\n const index = React.Children.toArray(childrenProp).map(c => c.props.title.replaceAll(' ', '')).indexOf(searchTitle);\n if (index === -1) {\n setIsActiveTabIndex(0);\n if (props.callOnTabChangeFirst) {\n onTabClick(0, tabAttributes[0]);\n }\n return;\n }\n setIsActiveTabIndex(index);\n if (props.callOnTabChangeFirst) {\n onTabClick(index, tabAttributes[index]);\n }\n return;\n }\n setIsActiveTabIndex(0);\n if (props.callOnTabChangeFirst) {\n onTabClick(0, tabAttributes[0]);\n }\n }, [])\n\n const tabAttributes = React.Children.map(childrenProp, (child, i) => {\n const title = child.props.title || (\"Untitled Tab \" + (i + 1));\n const key = child.props.key || 'neko-tab-' + title.toLowerCase();\n const onClick = child.props.onClick ? child.props.onClick : null;\n const requirePro = !props.isPro && (child.props.requirePro || false);\n const hidden = child.props.hidden || false;\n const icon = child.props.icon || false;\n return { key, title, onClick, requirePro, hidden, icon };\n });\n\n const children = React.Children.map(childrenProp, (child, i) => {\n const isActive = i === isActiveTabIndex;\n const hidden = child.props.hidden;\n if (isActive && hidden) {\n setIsActiveTabIndex(0);\n }\n return React.cloneElement(child, {\n isActive: isActive && !hidden\n });\n });\n\n const keepTab = (title) => {\n if (history.pushState && typeof title === 'string' ) {\n let searchParams = new URLSearchParams(window.location.search);\n const value = encodeURIComponent(title.replaceAll(' ', ''));\n searchParams.set('nekoTab', value);\n let newUrl = window.location.protocol + \"//\" + window.location.host + window.location.pathname + '?' + searchParams.toString();\n window.history.replaceState({ path: newUrl }, '', newUrl);\n }\n }\n\n const onTabClick = (tabIndex, tabAttr, ev) => {\n if (tabAttr.requirePro) return;\n setIsActiveTabIndex(tabIndex);\n if (props.onChange) {\n props.onChange(tabIndex, tabAttr, ev);\n }\n if (props.keepTabOnReload) {\n keepTab(tabAttr.title);\n }\n };\n\n return (\n <TabContainer>\n <TabGroup>\n {tabAttributes.map((attr, i) =>\n <Tab \n key={attr.key} \n className={`neko-tab-title ${i === isActiveTabIndex ? 'active' : ''} ${attr.requirePro ? 'disabled' : ''} ${attr.hidden ? `hidden` : ''}`} \n onClick={(ev) => { onTabClick(i, attr, ev) }}\n >\n {attr.icon && <NekoIcon icon={attr.icon} width={15} height={15} style={{ marginRight: '2px' }} raw />}\n {attr.title}<ProOnly className=\"inline\" style={{ marginLeft: 10, marginRight: -5, top: -1 }} show={attr.requirePro} />\n </Tab>\n )}\n </TabGroup>\n {children}\n </TabContainer>\n );\n};\n\n\n/**\n * @oaram {string} title\n * @param {bool} isActive\n */\nconst StyledNekoTab = props => {\n\n const { children, isActive } = props;\n\n return (\n <TabContent className={`${isActive ? 'active' : ''}`}>\n {!!isActive && children}\n </TabContent>\n );\n};\n\nconst NekoTabs = (props) => {\n return (<StyledNekoTabs {...props} />);\n};\n\nNekoTabs.propTypes = {\n isPro: PropTypes.bool,\n onChange: PropTypes.func\n};\n\nNekoTabs.defaultProps = {\n isPro: false,\n onChange: undefined\n};\n\nconst NekoTab = (props) => {\n return (<StyledNekoTab {...props} />);\n};\n\nNekoTab.propTypes = {\n isActive: PropTypes.bool,\n requirePro: PropTypes.bool,\n title: PropTypes.string,\n icon: PropTypes.string,\n};\n\nNekoTab.defaultProps = {\n isActive: false,\n requirePro: false,\n title: undefined,\n icon: undefined,\n};\n\nexport { NekoTab, NekoTabs };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { ProOnly } from '../label/ProOnly';\nimport { Icon, InlineIcon } from '@iconify/react';\nimport chevronDown from '@iconify/icons-mdi/chevron-down';\nimport chevronRight from '@iconify/icons-mdi/chevron-right';\n\nconst TabContainer = Styled.div`\n`;\n\nconst Tab = Styled.div`\n align-items: center;\n background-color: ${Theme.blue};\n border: 0;\n cursor: pointer;\n display: flex;\n padding: 2px 3px 2px 19px;\n\n &.disabled {\n background-color: rgba(${Theme.yellowRGB}, 0.25);\n cursor: default;\n }\n\n p {\n color: ${Theme.white};\n font-family: ${Theme.fontFamily};\n font-size: 14px;\n line-height: 17px;\n margin: 0;\n }\n\n .neko-side-tab-icon {\n color: ${Theme.white};\n margin-left: auto;\n height: 36px;\n width: 36px;\n }\n`;\n\nconst TabContent = Styled.div`\n background-color: ${Theme.white};\n display: none;\n\n &.active {\n display: block;\n }\n`;\n\n/**\n * Need to use with NecoTab\n */\nconst StyledNekoSideTabs = props => {\n\n const [activeTabIndex, setIsActiveTabIndex] = React.useState(props.activeTabIndex);\n\n const tabAttributes = React.Children.map(props.children, (child, i) => {\n const title = child.props.title || (\"Untitled Tab \" + (i + 1));\n const key = child.props.key || 'neko-tab-' + title.toLowerCase();\n const onClick = child.props.onClick ? child.props.onClick : null;\n const requirePro = !props.isPro && (child.props.requirePro || false);\n const onDragOver = child.props.onDragOver;\n const onDrop = child.props.onDrop;\n const rightActions = child.props.rightActions || null;\n return { key, title, onClick, requirePro, onDragOver, onDrop, rightActions };\n });\n\n const children = React.Children.map(props.children, (child, i) => {\n return React.cloneElement(child, {\n isActive: i === activeTabIndex\n });\n });\n\n const onTabClick = (tabIndex, tabAttr, ev) => {\n if (tabAttr.requirePro) return;\n const newTabIndex = tabIndex === activeTabIndex ? null : tabIndex;\n setIsActiveTabIndex(newTabIndex);\n if (props.onChange) {\n props.onChange(newTabIndex, tabAttr, ev);\n }\n };\n\n return (\n <TabContainer>\n {tabAttributes.map((attr, i) =>\n <React.Fragment>\n <Tab\n key={attr.key}\n className={`${i === activeTabIndex ? 'active' : ''} ${attr.requirePro ? 'disabled' : ''}`}\n onClick={(ev) => { onTabClick(i, attr, ev); }}\n onDragOver={attr.onDragOver}\n onDrop={attr.onDrop}\n >\n <p>\n <span style={{ fontSize: 15 }}>{attr.title}</span>\n <ProOnly className=\"inline\" show={attr.requirePro} />\n </p>\n {attr.rightActions === null\n ? <Icon icon={i === activeTabIndex ? chevronDown : chevronRight } className=\"neko-side-tab-icon\" />\n : (\n i === activeTabIndex\n ? <div style={{ marginLeft: 'auto' }}>{attr.rightActions}</div>\n : <Icon icon={chevronRight} className=\"neko-side-tab-icon\" />\n )\n }\n </Tab>\n { children[i] }\n </React.Fragment>\n )}\n </TabContainer>\n );\n};\n\n\n/**\n * @oaram {string} title\n * @param {bool} isActive\n */\nconst StyledNekoSideTab = props => {\n\n const { children, isActive } = props;\n\n return (\n <TabContent className={`${isActive ? 'active' : ''}`}>\n { children }\n </TabContent>\n );\n};\n\nconst NekoSideTabs = (props) => {\n return (<StyledNekoSideTabs {...props} />);\n};\n\nNekoSideTabs.propTypes = {\n isPro: PropTypes.bool,\n onChange: PropTypes.func,\n activeTabIndex: PropTypes.number\n};\n\nNekoSideTabs.defaultProps = {\n isPro: false,\n onChange: undefined,\n activeTabIndex: null\n};\n\nconst NekoSideTab = (props) => {\n return (<StyledNekoSideTab {...props} />);\n};\n\nNekoSideTab.propTypes = {\n isActive: PropTypes.bool,\n requirePro: PropTypes.bool,\n title: PropTypes.string,\n onDragOver: PropTypes.func,\n onDrop: PropTypes.func,\n rightActions: PropTypes.element\n};\n\nNekoSideTab.defaultProps = {\n isActive: false,\n requirePro: false,\n title: undefined,\n onDragOver: undefined,\n onDrop: undefined,\n rightActions: undefined\n};\n\nexport { NekoSideTab, NekoSideTabs };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Colors from '../common/NekoTheme';\n\nconst ToolbarBase = Styled.div`\n box-sizing: border-box;\n display: flex;\n width: 100%;\n padding: 10px 10px;\n background: ${Colors.white};\n border-radius: 10px;\n box-shadow: 0px 0px 10px rgba(${Colors.blackRGB}, 0.1);\n\n &.neko-align-left {\n justify-content: flex-start;\n }\n\n &.neko-align-right {\n justify-content: flex-end;\n }\n\n > *:not(:last-child) {\n margin-right: 5px;\n }\n`;\n\nconst StyledNekoToolbar = ({ align = 'left', ...props }) => {\n return (\n <ToolbarBase className={`neko-align-${align}`} {...props}>\n {props.children}\n </ToolbarBase>\n );\n};\n\nconst NekoToolbar = (props) => {\n return (<StyledNekoToolbar {...props} />);\n};\n\nNekoToolbar.propTypes = {\n align: PropTypes.oneOf(['left', 'right'])\n};\n\nNekoToolbar.defaultProps = {\n align: 'left'\n};\n\nexport { NekoToolbar };","const prefix = mgcl_gallery_custom_links.prefix;\nconst domain = mgcl_gallery_custom_links.domain;\nconst restUrl = mgcl_gallery_custom_links.rest_url.replace(/\\/+$/, \"\");\nconst apiUrl = mgcl_gallery_custom_links.api_url.replace(/\\/+$/, \"\");\nconst pluginUrl = mgcl_gallery_custom_links.plugin_url.replace(/\\/+$/, \"\");\nconst isPro = mgcl_gallery_custom_links.is_pro === '1';\nconst isRegistered = isPro && mgcl_gallery_custom_links.is_registered === '1';\nconst restNonce = mgcl_gallery_custom_links.rest_nonce;\n\nexport { prefix, domain, apiUrl, restUrl, pluginUrl, isPro, isRegistered, restNonce };\n","// React & Vendor Libs\nimport Styled from 'styled-components';\n\n// NekoUI\nimport { NekoBlock } from '@neko-ui';\n\nconst TabText = Styled.div`\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`;\n\nconst StyledPluginBlock = Styled(NekoBlock)`\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`;\n\nconst StyledPluginImage = Styled.img`\n width: 85px;\n height: 85px;\n padding-right: 10px;\n`;\n\nconst StyledPhpInfo = Styled.div`\n\n margin: 15px;\n\n .center {\n background: white;\n border-radius: 10px;\n padding: 10px;\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\nconst StyledPhpErrorLogs = Styled.ul`\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`;\n\nexport { TabText, StyledPluginBlock, StyledPluginImage, StyledPhpInfo, StyledPhpErrorLogs };","// React & Vendor Libs\nconst { useState, useEffect } = wp.element;\n\n// NekoUI\nimport { NekoButton, NekoTypo, NekoGauge } from '@neko-ui';\nimport { postFetch } from '@neko-ui';\n\n// From Main Plugin\nimport { restUrl, restNonce } from '@app/settings';\n\n// Common\nimport { TabText } from './Dashboard.styled';\nconst CommonApiUrl = `${restUrl}/meow-common/v1`;\n\nconst SpeedTester = ({ request, title, max }) => {\n const [ runRequests, setRunRequests ] = useState(false);\n const [ results, setResults ] = useState([]);\n const resultsTotal = results.length > 0 ? results.reduce(function(a, b) { return a + b; }) : 0;\n const resultsAverage = results.length > 0 ? Math.ceil(resultsTotal / results.length) : 0;\n const isInitializing = !results.length && runRequests;\n\n useEffect(() => {\n if (!runRequests) {\n return;\n }\n setTimeout(async () => {\n const start = new Date().getTime();\n await postFetch(`${CommonApiUrl}/${request}`, { nonce: restNonce });\n const end = new Date().getTime();\n const time = end - start;\n setResults(x => [ ...x, time ]);\n }, 1000);\n }, [results]);\n\n const toggleRequestsProcess = () => {\n if (!runRequests) {\n setResults([]);\n }\n setRunRequests(!runRequests);\n }\n\n return (\n <TabText style={{ width: 200, textAlign: 'center' }}>\n <NekoTypo h2 style={{ color: 'white' }}>{title}</NekoTypo>\n <NekoGauge size={200} value={isInitializing ? max : resultsAverage} max={max}>\n <span style={{ fontSize: 20 }}>{isInitializing ? 'START' : resultsAverage + ' ms'}</span>\n <span style={{ fontSize: 12 }}>{isInitializing ? 'YOUR ENGINE' : results.length + ' requests'}</span>\n </NekoGauge>\n <NekoButton style={{ width: '100%', marginTop: 10 }} color={runRequests ? '#cc3627' : '#ccb027'}\n onClick={toggleRequestsProcess}>\n {runRequests ? 'Stop' : 'Start'}\n </NekoButton>\n </TabText>\n );\n}\n\nexport { SpeedTester };","// React & Vendor Libs\nconst { useState, useEffect } = wp.element;\nimport useSWR from 'swr';\n\n// NekoUI\nimport { NekoTypo, NekoPage, NekoHeader, NekoWrapper, NekoTab, NekoTabs, NekoBlock, NekoButton,\n NekoColumn, NekoSettings, NekoCheckboxGroup, NekoCheckbox } from '@neko-ui';\nimport { postFetch, jsonFetcher } from '@neko-ui';\n\nimport { apiUrl, restUrl, pluginUrl, restNonce } from '@app/settings';\nimport { SpeedTester } from './SpeedTester';\nimport { TabText, StyledPluginBlock, StyledPluginImage, \n StyledPhpErrorLogs, StyledPhpInfo } from './Dashboard.styled';\n\nif ( !apiUrl || !restUrl || !pluginUrl ) {\n console.error(\"[@common/dashboard] apiUrl, restUrl and pluginUrl are mandatory.\");\n}\n\nconst CommonApiUrl = `${restUrl}/meow-common/v1`;\n\nconst jsxTextStory = \n <TabText>\n <NekoTypo p>\n Meow Apps is run by Jordy Meow, a photographer and software developer living in Japan (and taking <a target=\"_blank\" href=\"https://offbeatjapan.org\">a lot of photos</a>). 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 <a href=\"http://meowapps.com\" target=\"_blank\">Meow Apps</a>.\n </NekoTypo>\n </TabText>;\n\nconst jsxTextPerformance = \n <TabText>\n <NekoTypo p>\n The <b>Empty Request Time</b> 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, <a href=\"https://meowapps.com/clean-optimize-wordpress/#Optimize_your_Empty_Request_Time\" target=\"_blank\">click here</a>.\n </NekoTypo>\n <NekoTypo p>\n <b>File Operation Time</b> creates a temporary size of 10MB every time. <b>SQL Request Time</b> counts the number of posts. Those two should be very fast, and almost the same as the <b>Empty Request Time</b>.\n </NekoTypo>\n </TabText>;\n\nconst jsxTextRecommendations = \n <TabText>\n <NekoTypo p>\n 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.\n </NekoTypo>\n <NekoTypo p>\n 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. \n </NekoTypo>\n <NekoTypo p>\n On the Meow Apps website, you will find articles which are always updated with the latest recommendations.\n <ul>\n <li>☘️&nbsp;&nbsp;<a href=\"https://meowapps.com/how-to-debug-wordpress-errors/\" target=\"_blank\">How To Debug WordPress</a></li>\n <li>☘️&nbsp;&nbsp;<a href=\"https://meowapps.com/tutorial-improve-seo-wordpress/\" target=\"_blank\">SEO Checklist &amp; Optimization</a></li>\n <li>☘️&nbsp;&nbsp;<a href=\"https://meowapps.com/tutorial-faster-wordpress-optimize/\" target=\"_blank\">Optimize your WordPress Speed</a></li>\n <li>☘️&nbsp;&nbsp;<a href=\"https://meowapps.com/tutorial-optimize-images-wordpress/\" target=\"_blank\">Optimize Images (CDN, and so on)</a></li>\n <li>☘️&nbsp;&nbsp;<a href=\"https://meowapps.com/tutorial-hosting-service-wordpress/\" target=\"_blank\">Best Hosting Services for WordPress</a></li>\n </ul>\n </NekoTypo>\n </TabText>;\n\nconst swrAllSettingsKey = [`${CommonApiUrl}/all_settings/`, { headers: { 'X-WP-Nonce': restNonce } }];\n\nconst Dashboard = () => {\n const [ fatalError, setFatalError ] = useState(false);\n const { data: swrSettings, mutate: mutateSwrSettings, error: swrError } = useSWR(swrAllSettingsKey, jsonFetcher);\n const settings = swrSettings?.data;\n const hide_meowapps = settings?.meowapps_hide_meowapps;\n const force_sslverify = settings?.force_sslverify;\n const [ busy, setBusy ] = useState(false);\n const [ phpErrorLogs, setPhpErrorLogs ] = useState([]);\n const [ phpInfo, setPhpInfo ] = useState(\"\");\n\n // Handle SWR errors\n useEffect(() => {\n if (swrError && !fatalError) {\n setFatalError(true);\n console.error('Error from UseSWR', swrError.message);\n }\n }, [swrError]);\n\n useEffect(() => {\n let info = document.getElementById('meow-common-phpinfo');\n setPhpInfo(info.innerHTML);\n }, []);\n\n const updateOption = async (value, id) => {\n let newSettingsData = { ...swrSettings.data };\n newSettingsData[id] = value;\n mutateSwrSettings({ ...swrSettings, data: newSettingsData }, false);\n setBusy(true);\n const res = await postFetch(`${CommonApiUrl}/update_option`, { json: { name: id, value }, nonce: restNonce });\n setBusy(false);\n if (!res.success) {\n alert(res.message);\n }\n mutateSwrSettings();\n }\n\n const loadErrorLogs = async () => {\n setBusy(true);\n const res = await postFetch(`${CommonApiUrl}/error_logs`, { nonce: restNonce });\n let fresh = res && res.data ? res.data : [];\n setPhpErrorLogs(fresh.reverse());\n setBusy(false);\n }\n\n const jsxHideMeowApps = \n <NekoSettings title=\"Main Menu\">\n <NekoCheckboxGroup max=\"1\">\n <NekoCheckbox id=\"meowapps_hide_meowapps\" label=\"Hide (Not Recommended)\" description={<NekoTypo p>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 &rarr; General.</NekoTypo>} value=\"1\" disabled={busy} checked={hide_meowapps} onChange={updateOption} />\n </NekoCheckboxGroup>\n </NekoSettings>;\n\n\n const jsxForceSSLVerify = \n <NekoSettings title=\"SSL Verify\">\n <NekoCheckboxGroup max=\"1\">\n <NekoCheckbox id=\"force_sslverify\" label=\"Force (Not Recommended)\" description={<NekoTypo p>This will enforce the usage of SSL when checking the license or updating the plugin.</NekoTypo>} value=\"1\" disabled={busy} checked={force_sslverify} onChange={updateOption} />\n </NekoCheckboxGroup>\n </NekoSettings>;\n\n return (\n <NekoPage showRestError={fatalError}>\n\n <NekoHeader title='The Dashboard'>\n </NekoHeader>\n\n <NekoWrapper>\n\n <NekoColumn full>\n \n {/* TAB FOR ADVANCED SETTINGS */}\n <NekoTabs>\n <NekoTab title='Meow Apps'>\n\n {jsxTextStory}\n\n <NekoWrapper>\n <NekoColumn minimal>\n\n <StyledPluginBlock title=\"Media Cleaner\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/media-cleaner.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/media-cleaner/'>Media Cleaner</a></h2>\n <p>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 :)</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Database Cleaner\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/database-cleaner.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/database-cleaner/'>Database Cleaner</a></h2>\n <p>Clean your WordPress database. This plugin is simple, handles risk levels, and aims to work even on oversized databases on which other plugins fail to operate.</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Media File Renamer\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/media-file-renamer.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/media-file-renamer/'>Media File Renamer</a></h2>\n <p>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.</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Social Engine\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/social-engine.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/social-engine/'>Social Engine</a></h2>\n <p>Organize, schedule and automate the publishing of your content and photos on social accounts. Similar to Buffer, TweetDeck, etc, but without all the limitations, and in your WordPress.</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Meow Analytics\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/meow-analytics.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/meow-analytics/'>Meow Analytics</a></h2>\n <p>Are you tired of those heavy plugins, accessing your Google Analytics deliberately? Switch to Meow Analytics!</p>\n </div>\n </StyledPluginBlock>\n \n </NekoColumn>\n\n <NekoColumn minimal>\n\n <StyledPluginBlock title=\"Photo Engine\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/wplr-sync.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/wplr-sync/'>Photo Engine</a></h2>\n <p>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.</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Meow Gallery\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/meow-gallery.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/meow-gallery/'>Meow Gallery</a></h2>\n <p>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.</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Meow Lightbox\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/meow-lightbox.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/meow-lightbox/'>Meow Lightbox</a></h2>\n <p>A very sleek and performant Lightbox which will also display your EXIF data (camera, lens, aperture...). Photographers love it.</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Perfect Images (Retina)\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/wp-retina-2x.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/wp-retina-2x/'>Perfect Images + Retina</a></h2>\n <p>It handles Retina, help you managing the Image Sizes registered in your WP, and much more.</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Contact Form Block\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/contact-form-block.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/contact-form-block/'>Contact Form Block</a></h2>\n <p>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.</p>\n </div>\n </StyledPluginBlock>\n\n </NekoColumn>\n\n </NekoWrapper>\n </NekoTab>\n \n <NekoTab title=\"Performance\">\n {jsxTextPerformance}\n <div style={{ display: 'flex', justifyContent: 'space-around', marginBottom: 25 }}>\n <SpeedTester title=\"Empty Request Time\" request=\"empty_request\" max={2500} />\n <SpeedTester title=\"File Operation Time\" request=\"file_operation\" max={2600} />\n <SpeedTester title=\"SQL Request Time\" request=\"sql_request\" max={2800} />\n </div>\n </NekoTab>\n\n <NekoTab title=\"Recommendations\">\n {jsxTextRecommendations}\n </NekoTab>\n\n <NekoTab title=\"PHP Info\">\n <StyledPhpInfo dangerouslySetInnerHTML={{ __html: phpInfo }} />\n </NekoTab>\n\n <NekoTab title=\"PHP Error Logs\">\n <TabText>\n <NekoButton style={{ marginBottom: 10 }} color={'#ccb027'} onClick={loadErrorLogs}>\n Load PHP Error Logs\n </NekoButton>\n <StyledPhpErrorLogs>\n {phpErrorLogs.map(x => <li class={`log-${x.type}`}>\n <span class='log-type'>{x.type}</span>\n <span class='log-date'>{x.date}</span>\n <span class='log-content'>{x.content}</span>\n </li>)}\n </StyledPhpErrorLogs>\n </TabText>\n {/* {jsxPhpErrorLogs}\n <StyledPhpErrorLogs dangerouslySetInnerHTML={{ __html: phpErrorLogs }} />\n <StyledPhpInfo dangerouslySetInnerHTML={{ __html: phpInfo }} /> */}\n </NekoTab>\n\n <NekoTab title=\"Settings\">\n <NekoBlock title=\"Settings\" className=\"primary\">\n {jsxHideMeowApps}\n {jsxForceSSLVerify}\n </NekoBlock>\n </NekoTab>\n \n </NekoTabs>\n\n </NekoColumn>\n\n </NekoWrapper>\n </NekoPage>\n );\n};\n\nexport { Dashboard };","// React & Vendor Libs\nconst { useState, useEffect } = wp.element;\n\n// NekoUI\nimport { NekoButton, NekoTypo, NekoBlock, NekoSettings, NekoInput, \n NekoMessageDanger, NekoMessageSuccess, NekoModal } from '@neko-ui';\nimport { postFetch } from '@neko-ui';\n\n// From Main Plugin\nimport { restUrl, prefix, domain, isPro, isRegistered, restNonce } from '@app/settings';\n\nconst CommonApiUrl = `${restUrl}/meow-licenser/${prefix}/v1`;\n\nconst LicenseBlock = () => {\n const [ busy, setBusy ] = useState(false);\n const [ meowMode, setMeowMode ] = useState(false);\n const [ currentModal, setCurrentModal ] = useState(null);\n const [ license, setLicense ] = useState(null);\n const [ serialKey, setSerialKey ] = useState('');\n const isOverridenLicense = isRegistered && (!license || license.license !== 'valid');\n\n const checkLicense = async () => {\n if (!isPro) {\n return;\n }\n setBusy(true);\n const res = await postFetch(`${CommonApiUrl}/get_license`, { nonce: restNonce });\n setLicense(res.data);\n if (res.data.key) {\n setSerialKey(res.data.key);\n }\n setBusy(false);\n }\n\n const removeLicense = async () => {\n setBusy(true);\n const res = await postFetch(`${CommonApiUrl}/set_license`, { nonce: restNonce, json: { serialKey: null } });\n if (res.success) {\n setSerialKey('');\n setLicense(null);\n setCurrentModal('licenseRemoved');\n }\n setBusy(false);\n }\n\n const forceLicense = async () => {\n setBusy(true);\n const res = await postFetch(`${CommonApiUrl}/set_license`, { nonce: restNonce, json: { serialKey, override: true } });\n if (res.success) {\n setLicense(res.data);\n if (res.data && !res.data.issue) {\n setCurrentModal('licenseAdded');\n }\n }\n setBusy(false);\n }\n\n const validateLicense = async () => {\n if ( serialKey === 'MEOW_OVERRIDE' ) {\n setMeowMode(true);\n setLicense(null);\n setSerialKey(\"\");\n return;\n }\n setBusy(true);\n const res = await postFetch(`${CommonApiUrl}/set_license`, { nonce: restNonce, json: { serialKey } });\n if (res.success) {\n setLicense(res.data);\n if (res.data && !res.data.issue) {\n setCurrentModal('licenseAdded');\n }\n }\n setBusy(false);\n }\n\n useEffect(() => { checkLicense() }, []);\n\n const licenseTextStatus = isOverridenLicense ? 'Forced License' : isRegistered ? 'Enabled' : 'Disabled';\n\n const success = isOverridenLicense || (license && license.license === 'valid');\n let message = '\u001bYour license is active. Thanks a lot for your support :)';\n if ( isOverridenLicense && license && license.check_url ) {\n message = <><span>{message}</span><br /><small>This license was enabled manually. To check your license status, please click <a target=\"_blank\" href={license.check_url + '&cache=' + (Math.random() * (642000))}>here</a>.</small></>;\n }\n if (!success) {\n if (!license) {\n message = 'Unknown error :(';\n }\n else if (license.issue === 'no_activations_left') {\n message = <span>There are no activations left for this license. You can visit your account at the <a target='_blank' rel=\"noreferrer\" href='https://meowapps.com'>Meow Apps Store</a>, unregister a site, and click on <i>Retry to validate</i>.</span>;\n }\n else if (license.issue === 'expired') {\n message = <span>Your license has expired. You can get another license or renew the current one by visiting your account at the <a target='_blank' rel=\"noreferrer\" href='https://meowapps.com'>Meow Apps Store</a>.</span>;\n }\n else if (license.issue === 'missing') {\n message = 'This license does not exist.';\n }\n else if (license.issue === 'disabled') {\n message = 'This license has been disabled.';\n }\n else if (license.issue === 'item_name_mismatch') {\n message = 'This license seems to be for a different plugin... isn\\'t it? :)';\n }\n else if (license.issue === 'forced') {\n message = 'ABC';\n }\n else {\n message = <span>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 <a target='_blank' rel=\"noreferrer\" href='https://meowapps.com/contact/'>contact us</a>.</span>\n console.error({ license });\n }\n }\n\n const jsxNonPro = \n <NekoBlock title=\"Pro Version (Not Installed)\" className=\"primary\">\n You will find more information about the Pro Version <a target='_blank' rel=\"noreferrer\" href={`https://meowapps.com`}>here</a>. If you actually bought the Pro Version already, please remove the current plugin and download the Pro Version from your account at the <a target='_blank' rel=\"noreferrer\" href='https://meowapps.com/'>Meow Apps Store</a>.\n </NekoBlock>;\n\n const jsxProVersion = \n <NekoBlock title={`Pro Version (${licenseTextStatus})`} busy={busy} className=\"primary\">\n\n <NekoSettings title=\"Serial Key\" style={{ fontWeight: 'bold' }}><NekoInput id=\"mfrh_pro_serial\" \n name=\"mfrh_pro_serial\" disabled={busy} value={serialKey} onChange={(txt) => setSerialKey(txt)} placeholder=\"\" />\n </NekoSettings>\n\n {license && !success && <NekoMessageDanger>{message}</NekoMessageDanger>}\n {license && success && <NekoMessageSuccess>{message}</NekoMessageSuccess>}\n\n {!license && <NekoTypo p>\n Insert your serial key above. If you don&apos;t have one yet, you can get one <a href=\"https://meowapps.com\">here</a>. If there was an error during the validation, try the <i>Retry</i> to <i>validate</i> button.\n </NekoTypo>\n }\n\n <NekoSettings contentAlign=\"right\">\n {license && !success && <NekoButton className=\"secondary\" disabled={busy || !serialKey} \n onClick={validateLicense}>Retry to validate\n </NekoButton>}\n {license && license.key === serialKey && <NekoButton className=\"secondary\" disabled={busy || !serialKey} \n onClick={removeLicense}>Remove License\n </NekoButton>}\n <NekoButton disabled={busy || !serialKey || (license && license.key === serialKey)} \n onClick={validateLicense}>Validate License</NekoButton>\n {meowMode && !success && <NekoButton disabled={busy || !serialKey || (license && license.key === serialKey)} \n onClick={forceLicense} className=\"danger\">Force License</NekoButton>}\n </NekoSettings>\n\n <NekoModal\n isOpen={currentModal === 'licenseAdded'}\n title=\"Thank you :)\"\n content=\"The Pro features have been enabled. This page should be now reloaded.\"\n ok='Reload'\n onOkClick={() => location.reload()}\n />\n\n <NekoModal\n isOpen={currentModal === 'licenseRemoved'}\n title=\"Goodbye :(\"\n content=\"The Pro features have been disabled. This page should be now reloaded.\"\n ok='Reload'\n onOkClick={() => location.reload()}\n />\n\n </NekoBlock>;\n\n return (isPro ? jsxProVersion : jsxNonPro);\n};\n\nexport { LicenseBlock };\n","const { render } = wp.element;\nimport { Dashboard } from './dashboard/Dashboard';\n\n// Common Dashboard\nif (!document.meowDashboardLoaded) {\n\tdocument.meowDashboardLoaded = true;\n\tdocument.addEventListener('DOMContentLoaded', function(event) {\n\t\tconst commmonDash = document.getElementById('meow-common-dashboard');\n\t\tif (commmonDash) {\n\t\t\trender((<Dashboard />), commmonDash);\n\t\t}\n\t});\n}\n\nexport { LicenseBlock } from './components/LicenseBlock';\n","// React & Vendor Libs\nconst { useState, useMemo } = wp.element;\nimport useSWR from 'swr';\n\n// NekoUI\nimport { NekoInput, NekoTypo, NekoPage, NekoBlock, NekoHeader, NekoContainer, NekoSettings,\n NekoTabs, NekoTab, NekoCheckboxGroup, NekoCheckbox, NekoWrapper, NekoSelect, NekoOption,\n NekoColumn } from '@neko-ui';\nimport { jsonFetcher, postFetch, useHandleSWR } from '@neko-ui';\nimport { apiUrl, prefix, domain, isRegistered, isPro, restNonce } from '@app/settings';\nimport { LicenseBlock } from '@common';\n\nconst Settings = () => {\n\n const swrAllSettingsKey = useMemo(() => {\n return [`${apiUrl}/all_settings/`, { headers: { 'X-WP-Nonce': restNonce } }];\n }, [apiUrl, restNonce]);\n const { data: swrSettings, mutate: mutateSwrSettings } = useSWR(swrAllSettingsKey, jsonFetcher);\n const { busy: busySettings, data: settings, error: swrError } = useHandleSWR(swrSettings, {}, true);\n const [ busyAction, setBusyAction ] = useState(false);\n const busy = busySettings || busyAction;\n\n const obmode = settings?.mgcl_obmode;\n const parsingEngine = settings?.mgcl_parsing_engine;\n const log = settings?.mgcl_log;\n const buttonEnabled = settings?.mgcl_button_enabled;\n const buttonLabel = settings?.mgcl_button_label;\n\n const parsingEngineOptions = [\n { id: \"none\", value: \"None\", label: \"None (Not Supported Yet)\"},\n { id: \"htmldomparser\", value: \"HtmlDomParser\", label: \"HtmlDomParser\" },\n { id: \"didom\", value: \"DiDom\", label: \"DiDom\" }\n ]\n\n const updateOption = async (value, id) => {\n let newSettingsData = { ...swrSettings.data };\n newSettingsData[id] = value;\n mutateSwrSettings({ ...swrSettings, data: newSettingsData }, false);\n setBusyAction(true);\n try {\n await postFetch(`${apiUrl}/update_option`, { json: { name: id, value }, nonce: restNonce });\n }\n catch (err) {\n alert(err.message);\n }\n finally {\n setBusyAction(false);\n mutateSwrSettings();\n }\n }\n\n /**\n * Settings\n */\n\n const jsxOBMode =\n <NekoSettings title=\"OB Mode\">\n <NekoCheckboxGroup max=\"1\">\n <NekoCheckbox id=\"mgcl_obmode\" label=\"Enabled\" value=\"1\" checked={obmode} onChange={updateOption} description=\"If the linked images are outside of the main content (header, sidebar, etc), OB Mode is needed. This slows down the processing (cache recommended).\" />\n </NekoCheckboxGroup>\n </NekoSettings>;\n\n const jsxParsingEngine =\n <NekoSettings title=\"Parsing Engine\" description=\"Hello\">\n <NekoSelect id=\"mgcl_parsing_engine\" onChange={updateOption}>\n {parsingEngineOptions.map(option => <NekoOption id={`mgcl_parsing_engine_${option.id}`} value={option.value} label={option.label} checked={parsingEngine === option.value} /> )}\n </NekoSelect>\n </NekoSettings>;\n\n const jsxLog =\n <NekoSettings title=\"Logs\">\n <NekoCheckboxGroup max=\"1\">\n <NekoCheckbox id=\"mgcl_log\" label=\"Logs\" value=\"1\" checked={log} onChange={updateOption} description=\"Simple logging, written directly in the PHP Error Logs.\" />\n </NekoCheckboxGroup>\n </NekoSettings>;\n\n /**\n * CTA Buttons\n */\n const jsxUseButtons =\n <NekoSettings title=\"Use Buttons\">\n <NekoCheckboxGroup max=\"1\">\n <NekoCheckbox id=\"mgcl_button_enabled\" label=\"Enabled\" value=\"1\" description=\"A call-to-action button will be used of a clickable image.\" checked={buttonEnabled} onChange={updateOption} />\n </NekoCheckboxGroup>\n </NekoSettings>;\n\n const jsxButtonLabel =\n <NekoSettings title=\"Label\">\n <NekoInput id=\"mgcl_button_label\" name=\"mgcl_button_label\" value={buttonLabel} description=\"A call-to-action button will be used of a clickable image.\" onBlur={updateOption} />\n </NekoSettings>;\n\n return (\n <NekoPage nekoErrors={[ swrError ]}>\n\n <NekoHeader title='Gallery Custom Links | Settings' subtitle='By Jordy Meow' />\n\n <NekoWrapper>\n\n <NekoColumn full>\n <NekoContainer>\n <NekoTypo p>This plugin works out of the box, the default settings are the best for most installs. Don't hesitate to take a look at the <a target=\"_blank\" href=\"https://meowapps.com/plugin/gallery-custom-links/\">official page</a>. <b>If you are interested in the Pro Version, it's <a target=\"_blank\" href=\"https://meowapps.com/products/gallery-custom-links-pro/\">here!</a></b> 💕</NekoTypo>\n </NekoContainer>\n\n <NekoTabs>\n\n <NekoTab title='Settings'>\n <NekoWrapper>\n\n <NekoColumn minimal>\n <NekoBlock busy={busy} title=\"Settings\" className=\"primary\">\n {jsxParsingEngine}\n {jsxOBMode}\n {jsxLog}\n </NekoBlock>\n </NekoColumn>\n\n <NekoColumn minimal>\n <NekoBlock busy={busy} title=\"CTA Buttons\" className=\"primary\">\n <NekoTypo p><b>Currently works with the <a href=\"https://wordpress.org/plugins/meow-gallery/\">Meow Gallery</a> and Gutenberg Galleries.</b> In a future Pro version, support for additional galleries might be added (please contact <a href=\"https://meowapps.com/contact/\">Meow Apps</a> for this).</NekoTypo>\n {jsxUseButtons}\n {!buttonEnabled ? null : jsxButtonLabel}\n </NekoBlock>\n </NekoColumn>\n\n </NekoWrapper>\n </NekoTab>\n\n <NekoTab title='License'>\n <LicenseBlock domain={domain} prefix={prefix} isPro={isPro} isRegistered={isRegistered} />\n </NekoTab>\n\n </NekoTabs>\n\n </NekoColumn>\n\n </NekoWrapper>\n\n </NekoPage>\n );\n};\n\nexport default Settings;","const { __ } = wp.i18n;\n\nconst i18n = {};\n\ni18n.PENDING = __( 'Pending', 'gallery-custom-links' );\ni18n.RENAME = __( 'Rename', 'gallery-custom-links' );\ni18n.TITLE = __( 'Title', 'gallery-custom-links' );\ni18n.SAME_PAGE = __( 'Same page', 'gallery-custom-links' );\ni18n.NEW_PAGE = __( 'New page', 'gallery-custom-links' );\ni18n.LINK_URL = __( 'Link URL', 'gallery-custom-links' );\ni18n.LINK_TARGET = __( 'Link Target', 'gallery-custom-links' );\ni18n.LINK_REL = __( 'Link Rel', 'gallery-custom-links' );\ni18n.ARIAL_LABEL = __( 'Arial Label', 'gallery-custom-links' );\n\nexport default i18n;\n\n","// React & Vendor Libs\nconst { useState, useCallback } = wp.element;\nimport Styled from \"styled-components\";\n\n// Libs\nimport i18n from '@app/i18n';\nimport { apiUrl, restNonce } from '@app/settings';\n\n// NekoUI\nimport { NekoTypo, NekoIcon, NekoModal, NekoInput, NekoSelect, NekoOption } from '@neko-ui';\nimport { postFetch } from '@neko-ui';\n\nconst targets = [\n\t{ label: i18n.SAME_PAGE, value: '_self' },\n\t{ label: i18n.NEW_PAGE, value: '_blank' }\n];\n\nconst GroupContainer = Styled.div`\n\talign-items: center;\n\tdisplay: flex;\n\tmargin-bottom: 10px;\n\n\tp {\n\t\tmargin: 0 !important;\n\t\twidth: 20%;\n\t}\n\n\t> div {\n\t\tflex-grow: 1;\n\t}\n`;\n\nconst EditLinkField = ( props ) => {\n\n\tconst [ busyAction, setBusyAction ] = useState(false);\n\tconst busy = busyAction;\n\n\tconst { postId } = props;\n\tconst [ url, setUrl ] = useState( props.url );\n\tconst [ target, setTarget ] = useState( props.target ? props.target : '_self' );\n\tconst [ rel, setRel ] = useState( props.rel );\n\tconst [ aria, setAria ] = useState( props.aria );\n\tconst [ openModal, setOpenModal ] = useState( false );\n\n\tconst updateOption = async (postId, url, target, rel, aria) => {\n\t\tsetBusyAction( true );\n\t\tlet result = true;\n\t\ttry {\n\t\t\tconst res = await postFetch( `${apiUrl}/update_meta`, { json: {\n\t\t\t\tpost_id: postId,\n\t\t\t\t_gallery_link_url: url,\n\t\t\t\t_gallery_link_target: target,\n\t\t\t\t_gallery_link_rel: rel,\n\t\t\t\t_gallery_link_aria: aria,\n\t\t\t}, nonce: restNonce } );\n\t\t\tif ( !res.success ) {\n\t\t\t\tresult = false;\n\t\t\t\talert(res.message);\n\t\t\t}\n\t\t} catch ( err ) {\n\t\t\tresult = false;\n\t\t\talert( err.message );\n\t\t} finally {\n\t\t\tif ( result ) onCloseModal();\n\t\t\tsetBusyAction( false );\n\t\t}\n\t};\n\n\tconst onCloseModal = () => setOpenModal( false )\n\n\tconst onOkClick = useCallback(() => {\n\t\tupdateOption( postId, url, target, rel, aria );\n\t}, [postId, url, target, rel, aria, updateOption, onCloseModal]);\n\n const onKeyDown = useCallback((e) => {\n if (e.key === 'Enter' || e.keyCode === 13) {\n e.preventDefault();\n onOkClick();\n }\n }, [onOkClick]);\n\n\treturn (\n\t\t<>\n\t\t\t<span onClick={() => setOpenModal( true )} style={{ cursor: 'pointer' }}>\n\t\t\t\t<NekoIcon icon=\"link\" disabled={!url} />\n\t\t\t</span>\n\t\t\t<NekoModal\n\t\t\t\tisOpen={openModal}\n\t\t\t\tonRequestClose={onCloseModal}\n\t\t\t\ttitle=\"Edit the custom link\"\n\t\t\t\tcontent={\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<GroupContainer>\n\t\t\t\t\t\t\t<NekoTypo p>{i18n.LINK_URL}</NekoTypo>\n\t\t\t\t\t\t\t<NekoInput disabled={busy} onInput={(e) => setUrl(e.target.value)}\n onKeyDown={onKeyDown} value={url} autoFocus />\n\t\t\t\t\t\t</GroupContainer>\n\t\t\t\t\t\t<GroupContainer>\n\t\t\t\t\t\t\t<NekoTypo p>{i18n.LINK_TARGET}</NekoTypo>\n\t\t\t\t\t\t\t<NekoSelect scrolldown={true} value={target} onChange={(v) => setTarget(v)} disabled={busy}>\n\t\t\t\t\t\t\t\t{targets.map(target => <NekoOption value={target.value} label={target.label} />)}\n\t\t\t\t\t\t\t</NekoSelect>\n\t\t\t\t\t\t</GroupContainer>\n\t\t\t\t\t\t<GroupContainer>\n\t\t\t\t\t\t\t<NekoTypo p>{i18n.LINK_REL}</NekoTypo>\n\t\t\t\t\t\t\t<NekoInput disabled={busy} onInput={(e) => setRel(e.target.value)} value={rel} />\n\t\t\t\t\t\t</GroupContainer>\n\t\t\t\t\t\t<GroupContainer>\n\t\t\t\t\t\t\t<NekoTypo p>{i18n.ARIAL_LABEL}</NekoTypo>\n\t\t\t\t\t\t\t<NekoInput disabled={busy} onInput={(e) => setAria(e.target.value)} value={aria} />\n\t\t\t\t\t\t</GroupContainer>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\tonOkClick={onOkClick}\n\t\t\t\tonCancelClick={onCloseModal}\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nexport default EditLinkField;","// React & Vendor Libs\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\n// Gallery Custom Links\nimport Settings from '@app/components/Settings';\nimport EditLinkField from '@app/components/EditLinkField';\n\nlet isMediaLibrary = null;\n\nfunction init() {\n\tisMediaLibrary = document.getElementsByClassName('upload-php')[0];\n}\n\n// Gallery Custom Links Settings\nfunction addSettings() {\n\tconst container = document.getElementById('mgcl-admin-settings');\n\tif (container) {\n\t\tReactDOM.render((<Settings />), container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\ndocument.addEventListener('DOMContentLoaded', function(event) {\n\n\tinit();\n\n\tif (addSettings() || !isMediaLibrary) {\n\t\treturn;\n\t}\n\n\t// Edit Link Fields need to be added in the Media Library\n\tconst fields = Array.from(document.getElementsByClassName('mgcl-edit-link-field'));\n\tfields.forEach(field => {\n\t\tconst postId = field.getAttribute('data-post-id');\n\t\tconst url = field.getAttribute('data-url');\n\t\tconst target = field.getAttribute('data-target');\n\t\tconst rel = field.getAttribute('data-rel');\n\t\tconst aria = field.getAttribute('data-aria');\n\t\tReactDOM.render((<EditLinkField postId={postId} url={url} target={target} rel={rel} aria={aria} />), field);\n\t});\n\n});\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"React\"","webpack:///external \"ReactDOM\"","webpack:///../neko-ui/src/common/NekoBusyOverlay.js","webpack:///../neko-ui/src/common/NekoTheme.js","webpack:///../neko-ui/src/misc/Spinner.js","webpack:///../neko-ui/src/common/PresetIcons.js","webpack:///../neko-ui/src/errors.js","webpack:///../neko-ui/src/helpers.js","webpack:///../neko-ui/src/hooks.js","webpack:///../neko-ui/src/misc/Tooltip.js","webpack:///../neko-ui/src/misc/Icon.js","webpack:///../neko-ui/src/label/ProOnly.js","webpack:///../neko-ui/src/button/Button.js","webpack:///../neko-ui/src/button/MenuButton.js","webpack:///../neko-ui/src/container/Page.js","webpack:///../neko-ui/src/misc/Typography.js","webpack:///../neko-ui/src/container/Block.js","webpack:///../neko-ui/src/container/Container.js","webpack:///../neko-ui/src/container/Settings.js","webpack:///../neko-ui/src/container/Window.js","webpack:///../neko-ui/src/container/Wrapper.js","webpack:///../neko-ui/src/form/Checkbox.js","webpack:///../neko-ui/src/form/CheckboxGroup.js","webpack:///../neko-ui/src/form/Input.js","webpack:///../neko-ui/src/form/TextArea.js","webpack:///../neko-ui/src/form/Select.js","webpack:///../neko-ui/src/form/Form.js","webpack:///../neko-ui/src/form/Switch.js","webpack:///../neko-ui/src/misc/Finder.js","webpack:///../neko-ui/src/misc/Logo.js","webpack:///../neko-ui/src/misc/Progress.js","webpack:///../neko-ui/src/misc/Header.js","webpack:///../neko-ui/src/misc/Paging.js","webpack:///../neko-ui/src/misc/Links.js","webpack:///../neko-ui/src/misc/Gauge.js","webpack:///../neko-ui/src/misc/Message.js","webpack:///../neko-ui/src/misc/Upload.js","webpack:///../neko-ui/src/misc/UploadDropArea.js","webpack:///../neko-ui/src/misc/Calendar.js","webpack:///../neko-ui/src/modal/Modal.js","webpack:///../neko-ui/src/table/Table.js","webpack:///../neko-ui/src/modal/MediaLibraryModal.js","webpack:///../neko-ui/src/tabs/Tabs.js","webpack:///../neko-ui/src/tabs/SideTabs.js","webpack:///../neko-ui/src/toolbar/Toolbar.js","webpack:///./app/js/settings.js","webpack:///./common/js/dashboard/Dashboard.styled.js","webpack:///./common/js/dashboard/SpeedTester.js","webpack:///./common/js/dashboard/Dashboard.js","webpack:///./common/js/components/LicenseBlock.js","webpack:///./common/js/index.js","webpack:///./app/js/components/Settings.js","webpack:///./app/js/i18n.js","webpack:///./app/js/components/EditLinkField.js","webpack:///./app/js/index.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","React","ReactDOM","NekoBusyOverlay","props","spinner","busy","overlayStyle","useState","showLoader","setShowLoader","useEffect","timeout","setTimeout","clearTimeout","loader","Fragment","className","style","Boolean","jsx","propsForElement","undefined","position","children","propTypes","PropTypes","bool","isRequired","oneOfType","arrayOf","node","NekoColors","black","blackRGB","blue","blueRGB","blueDisabled","deepBlue","deepBlueDisabled","finderBorder","lightBlue","lightGray","lightGray2","lightPurple","gray","green","darkGray","disabledForm","orange","overlay","red","redHighlight","header","proGray","progress","purple","tableGray","yellow","yellowRGB","white","whiteRGB","NekoColorTheme","danger","primary","secondary","success","NekoTheme","fontFamily","fontSizeH1","fontSizeH2","fontSizeText","fontSizeSmall","fontSizeSmallButton","lightShadow","StyledCircleSpinner","Styled","div","size","color","CircleSpinner","StyledNekoSpinner","type","rest","NekoSpinner","string","defaultProps","presetIcons","lockCheck","lockOpenVariant","fileUndo","chevronDoubleLeft","chevronDoubleRight","chevronLeft","chevronRight","chevronDown","chevronUp","pauseIcon","playIcon","replayIcon","checkIcon","checkCircle","stopIcon","deleteIcon","undoIcon","alertCircle","databaseIcon","toolsIcon","cogIcon","closeIcon","catIcon","arrowUpBoldCircleOutline","trashCan","leadPencil","viewDashboard","databaseSearch","folderIcon","folderOpen","imageMultipleOutline","plusIcon","folderPlus","imagePlus","viewGrid","formatListBulleted","twitterIcon","instagramIcon","facebookIcon","starIcon","timerOutline","linkVariant","linkedin","pinterest","zoomIn","infoOutline","arrowUp","arrowDown","sort","eye","rocketLaunch","calendarMonth","NekoError","message","code","url","body","debug","this","consolidateJsonResult","json","meta","x","JSON","parse","err","console","error","jsonFetcher","options","nekoError","rawBody","headers","fetch","text","status","postFetch","config","signal","file","nonce","formData","FormData","append","entries","method","stringify","useComponentSize","ref","useRef","setSize","current","observer","ResizeObserver","element","contentRect","width","left","right","height","top","bottom","observe","unobserve","useOutsideClick","onOutsideClick","componentRef","handleOutsideClick","e","contains","target","document","addEventListener","removeEventListener","PQueue","concurrency","autoStart","TooltipContainer","Tooltip","Theme","prop","visible","StyledNekoTooltip","show","setShow","tooltipRef","tooltipWidth","tooltipHeight","childRef","childWidth","childHeight","transformStyle","useMemo","transY","transX","transform","onMouseEnter","onMouseLeave","NekoTooltip","oneOf","StyledIconContainer","StyledIcon","Icon","hoverColor","lighten","StyledNekoIcon","icon","spinning","title","tooltip","containerStyle","disabled","raw","isBusy","getIcon","PresetIcons","iconClassName","onClick","NekoIcon","instanceOf","IconifyIcon","Tag","a","Colors","StyledProOnly","href","ProOnly","StyledButton","small","disabledColor","rounded","busyText","hideBusyIcon","busyIconSize","requirePro","isPro","hasIcon","iconWidth","base","spinnerSize","needsProUser","classNames","marginLeft","marginRight","margin","additionalColor","additionalDisabledColor","NekoButton","func","MenuButtonWrapper","MenuButton","button","MenuItemContainer","StyledMenuButton","hideChevron","titleStyle","isOpen","setIsOpen","wrapperRef","buttonRef","buttonWidth","Children","map","child","cloneElement","MenuItem","StyledNekoMenuItem","separator","NekoMenuButton","NekoMenuItem","Page","StyledNekoPage","nekoErrors","fatalError","setFatalError","showBody","setShowBody","dangerouslySetInnerHTML","__html","open","NekoPage","NekoH1","h1","NekoH2","h2","NekoP","NekoSpan","span","NekoLabel","label","StyledNekoTypo","NekoTypo","any","Block","StyledNekoBlock","contentStyle","action","NekoBlock","Container","Bar","StyledNekoContainer","headerAlign","footer","footerAlign","NekoContainer","StyledNekoSettings","contentAlign","NekoSettings","WindowBase","TitleBar","StyledNekoWindow","NekoWindow","Wrapper","Column","StyledNekoWrapper","StyledNekoColumn","full","minimal","NekoWrapper","NekoColumn","StyledNekoCheckbox","id","checked","onChange","description","showUpProOnly","isDisabled","disabledClass","join","stopPropagation","defaultChecked","htmlFor","log","checkboxBlankOutline","checkboxMarked","NekoCheckbox","StyledNekoCheckboxGroup","max","NekoCheckboxGroup","mas","number","StyledNekoInput","placeholder","onEnter","readOnly","step","min","maxLength","defaultMaxLength","natural","inputStyle","onCustomChange","onCustomBlur","onBlur","onReset","newValue","setNewValue","isControlled","onKeyPress","event","preventDefault","autoComplete","spellCheck","NekoInput","StyledNekoTextArea","avoidOnEnterWithShift","textAreaStyle","countable","count","setCount","pressShift","setPressShift","keydownFunction","useCallback","shiftKey","keyupFunction","substr","rows","NekoTextArea","Select","SelectedOption","Description","Options","OptionsContainer","StyledNekoSelect","scrolldown","chevronIconSize","textFiltering","currentOption","toArray","find","iconSize","showOptions","toggleOptions","filterText","setFilterText","onOptionClick","filteredChildren","filtered","forEach","includes","childrenLength","data-is-disabled","Math","v","background","borderRadius","autoFocus","RadioOption","SelectOption","StyledNekoOption","radioOption","recordCircle","checkboxBlankCircleOutline","selectOption","NekoSelect","NekoOption","Form","StyledNekoForm","NekoForm","StyledNekoSwitch","fontSize","onValue","offValue","onBackgroundColor","offBackgroundColor","onLabel","offLabel","onToggle","NekoSwitch","StyledNekoFinder","chevron","FinderTitleContainer","FinderTitle","ChevronSpace","FinderTitleIconDropZone","FinderTitleIconDroppableArea","ItemContainer","StyledNekoFinderItem","defaultIcons","gallery","tag","tagIcon","rightElement","rightElementStyle","showRightElement","selected","draggable","onDragStart","onDragOver","onDragEnd","onDrop","isExpanded","dragging","rightAction","rightActionOnHover","onDragLeave","isCustomizedIcon","preventClose","hasChild","expanded","setExpanded","keys","setIcon","isFolder","showRightAction","setShowRightAction","iconColor","NekoFinder","NekoFinderItem","Logo","StyledNekoLogo","viewBox","fill","xmlns","stroke","strokeWidth","NekoLogo","StyledNekoProgress","ratio","parseFloat","ProgressCurrent","onPauseClick","paused","onStopClick","percent","isNaN","parseInt","round","typeOfStatus","minWidth","NekoProgress","HeaderBase","StyledNekoHeader","subtitle","saving","textDecoration","contentSave","NekoHeader","PagingContainer","StyledNekoPaging","currentPage","limit","total","onCurrentPageChanged","infinite","controllerText","isEditable","maxPage","ceil","prevIconClassName","nextIconClassName","showCurrentPageInput","setShowCurrentPageInput","onClickHandle","page","getValidPage","numberPage","Number","currentPageJsx","defaultValue","onControllerClick","currentTarget","NekoPaging","lastPage","LinkContainer","Link","variant","StyledNekoQuickLinks","isActive","StyledNekoLink","variantValue","display","NekoQuickLinks","NekoLink","StyledSection","section","backgroundColor","degrees","NekoGauge","class","NekoMessageDanger","NekoMessageSuccess","StyledUpload","NekoUpload","multiple","onSuccess","onFailure","apiUrl","apiConfig","inDropZone","setInDropZone","floor","random","inputId","inputEl","divEl","setBusy","pointerEvents","uploadFile","files","upload","Promise","all","response","successResponses","filter","failerResponses","onDragEnter","uploadFiles","accept","click","dataTransfer","StyledUploadDropArea","NekoUploadDropArea","forwardRef","onInputUpload","Days","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday","StyledNekoCalendar","CalendarHeaders","CalendarContent","WeekContainer","DayContainer","NekoCalendar","month","Date","getMonth","year","getFullYear","onEventClicked","onEventMoved","eventBuilder","events","draggedEvent","setDraggedEvent","highlightedDay","setHighlightedDay","disableDaysBefore","getDate","weeks","days","currentDate","weekDay","date","getDay","setDate","getFirstWeekDayForMonth","totalCalendarDays","startDate","endDate","start","end","numberOfDaysBetween","lastDate","array","chunkSize","chunks","splitArrayInChunks","day","week","today","isCurrentMonth","filterEvents","getTime","date1","date2","disableDaysAfter","NekoModalParent","NekoModalContent","StyledNekoModal","ok","cancel","customButtons","customButtonsPosition","content","contentWidth","onOkClick","onCancelClick","okOnEnter","thumbnail","customClassName","showCustomButtons","keyUpHandler","modalContent","ariaHideApp","parentSelector","getElementById","closeTimeoutMS","NekoModal","Table","table","TableCheckBox","intermediate","onSelect","onUnselect","checkboxMultipleMarked","alignToJustifyContent","center","StyledNekoTable","columns","selectedItems","onSortChange","sortIconColor","emptyMessage","columnsCount","getColumnStyle","column","align","textAlign","justifyContent","cells","accessor","currentRowsIds","areAllRowsSelected","isIntermediate","hiddenColumnIndexes","reduce","headersFooters","beingSorted","beingSortedAsc","by","columnStyle","sortable","flex","colspan","row","cell","NekoTable","removeClass","Array","getElementsByClassName","ele","classList","remove","displayModes","StyledNekoMediaLibraryModal","images","onRefresh","onNextPage","onPreviousPage","onRemoveClick","onZoomClick","onSearch","searchValue","onPageChange","multiSelect","showUploader","uploader","onSelectedOrderChanged","onUploadSuccess","onUploadFailure","uploadApiUrl","uploadApiConfig","uploadMultiple","onClose","onCancel","onSave","search","setSerch","dragImageIndex","setDragImageIndex","displayMode","setDisplayMode","getBoundingClientRect","clientX","add","currentIndex","afterIndex","selectedMediaJsx","dummyElementForDrop","selectedElement","image","src","mediaGridJsx","some","zoom_src","mediaRows","thumbnail_url","objectFit","filename","mediaListJsx","ids","cursor","NekoMediaLibraryModal","TabContainer","TabGroup","Tab","TabContent","StyledNekoTabs","isActiveTabIndex","setIsActiveTabIndex","childrenProp","keepTabOnReload","URL","location","searchParams","callOnTabChangeFirst","onTabClick","tabAttributes","searchTitle","decodeURIComponent","index","replaceAll","indexOf","toLowerCase","hidden","tabIndex","tabAttr","ev","history","pushState","URLSearchParams","encodeURIComponent","set","newUrl","protocol","host","pathname","toString","replaceState","path","keepTab","attr","StyledNekoTab","NekoTabs","NekoTab","StyledNekoSideTabs","activeTabIndex","rightActions","newTabIndex","StyledNekoSideTab","NekoSideTabs","NekoSideTab","ToolbarBase","StyledNekoToolbar","NekoToolbar","prefix","mgcl_gallery_custom_links","domain","restUrl","rest_url","replace","api_url","pluginUrl","plugin_url","is_pro","isRegistered","is_registered","restNonce","rest_nonce","TabText","StyledPluginBlock","StyledPluginImage","img","StyledPhpInfo","StyledPhpErrorLogs","ul","wp","CommonApiUrl","SpeedTester","request","runRequests","setRunRequests","results","setResults","resultsTotal","b","resultsAverage","isInitializing","time","marginTop","jsxTextStory","jsxTextPerformance","jsxTextRecommendations","swrAllSettingsKey","Dashboard","useSWR","swrSettings","mutateSwrSettings","mutate","swrError","settings","hide_meowapps","meowapps_hide_meowapps","force_sslverify","phpErrorLogs","setPhpErrorLogs","phpInfo","setPhpInfo","info","innerHTML","updateOption","newSettingsData","res","alert","loadErrorLogs","fresh","reverse","jsxHideMeowApps","jsxForceSSLVerify","showRestError","marginBottom","LicenseBlock","meowMode","setMeowMode","currentModal","setCurrentModal","license","setLicense","serialKey","setSerialKey","isOverridenLicense","checkLicense","removeLicense","forceLicense","override","issue","validateLicense","licenseTextStatus","check_url","rel","jsxNonPro","jsxProVersion","fontWeight","txt","reload","render","meowDashboardLoaded","commmonDash","Settings","swrData","defaultData","defaultBusy","setData","setError","setTotal","useHandleSWR","busySettings","busyAction","setBusyAction","obmode","mgcl_obmode","parsingEngine","mgcl_parsing_engine","mgcl_log","buttonEnabled","mgcl_button_enabled","buttonLabel","mgcl_button_label","jsxOBMode","jsxParsingEngine","option","jsxLog","jsxUseButtons","jsxButtonLabel","__","i18n","PENDING","RENAME","TITLE","SAME_PAGE","NEW_PAGE","LINK_URL","LINK_TARGET","LINK_REL","ARIAL_LABEL","targets","GroupContainer","EditLinkField","postId","setUrl","setTarget","setRel","aria","setAria","openModal","setOpenModal","post_id","_gallery_link_url","_gallery_link_target","_gallery_link_rel","_gallery_link_aria","onCloseModal","onKeyDown","keyCode","onRequestClose","onInput","isMediaLibrary","container","from","field","getAttribute"],"mappings":"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","file":"index.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"wpJsonMgcl\"] = window[\"wpJsonMgcl\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([101,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = React;","module.exports = ReactDOM;","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nconst NekoBusyOverlay = (props) => {\n const { spinner = true, busy = false, overlayStyle } = props;\n const [ showLoader, setShowLoader ] = useState(true);\n\n useEffect(() => {\n let timeout;\n\n // Show the loader\n if (!busy) { \n timeout = setTimeout(() => { \n setShowLoader(false); \n timeout = null; \n }, 250);\n }\n else { \n setShowLoader(true);\n }\n\n // Cleanup\n return (() => {\n if (timeout) {\n clearTimeout(timeout);\n }\n });\n }, [busy]);\n\n const loader = !showLoader ? null : (\n <React.Fragment>\n <div className={'overlay' + ' ' + (!busy ? 'overlayHidden' : '')} style={overlayStyle}>\n {Boolean(spinner) && \n <div className={'lds-ellipsis ' + (!busy ? 'spinnerHidden' : '')}>\n <div></div><div></div><div></div><div></div>\n </div>\n }\n </div>\n <style jsx>{`\n .overlay {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n background: rgb(30 124 186 / 85%);\n transition: opacity 1s ease-out;\n z-index: 10;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n }\n\n .overlayHidden {\n opacity: 0;\n transition: opacity 0.25s ease-out;\n }\n .spinnerHidden {\n opacity: 0;\n transition: opacity 0.25s ease-out;\n }\n .lds-ellipsis {\n position: relative;\n width: 80px;\n height: 80px;\n display: flex;\n justify-items: center;\n align-items: center;\n }\n .lds-ellipsis div {\n position: absolute;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: white;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n }\n .lds-ellipsis div:nth-child(1) {\n left: 8px;\n animation: lds-ellipsis1 0.6s infinite;\n }\n .lds-ellipsis div:nth-child(2) {\n left: 8px;\n animation: lds-ellipsis2 0.6s infinite;\n }\n .lds-ellipsis div:nth-child(3) {\n left: 32px;\n animation: lds-ellipsis2 0.6s infinite;\n }\n .lds-ellipsis div:nth-child(4) {\n left: 56px;\n animation: lds-ellipsis3 0.6s infinite;\n }\n @keyframes lds-ellipsis1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n }\n @keyframes lds-ellipsis3 {\n 0% {\n transform: scale(1);\n }\n 100% {\n transform: scale(0);\n }\n }\n @keyframes lds-ellipsis2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n } \n `}</style>\n </React.Fragment>\n );\n\n // I am removing the busy because I like it as a boolean...\n // ... but React doesn't like pure boolean value here.\n const propsForElement = { ...props, busy: undefined, spinner: undefined };\n return (\n <div style={{ position: 'relative' }} {...propsForElement}> \n {loader}\n {props.children}\n </div>\n );\n};\n\nNekoBusyOverlay.propTypes = {\n busy: PropTypes.bool.isRequired,\n spinner: PropTypes.bool,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired\n};\n\nexport default NekoBusyOverlay;","export const NekoColors = {\n black: '#000000',\n blackRGB: '0, 0, 0',\n blue: '#007cba',\n blueRGB: '0, 124, 186',\n blueDisabled: '#459ad2',\n deepBlue: '#134575',\n deepBlueDisabled: '#446687',\n finderBorder: '#DEDEDE',\n lightBlue: '#EBF3FF',\n lightGray: '#cacaca',\n lightGray2: '#F5F5F5',\n lightPurple: '#D8B1FF',\n gray: '#E8E8E8',\n green: '#0EA480',\n darkGray: '#A0A0A0',\n disabledForm: '#828282',\n orange: '#daa827',\n overlay: 'rgba(16, 16, 16, 0.92)',\n red: '#ba4300',\n redHighlight: '#de5307',\n header: '#007cba',\n proGray: '#7F8EA0',\n progress: '#8414a8',\n purple: '#956DBE',\n tableGray: '#FAFAFA',\n yellow: '#e4b42b',\n yellowRGB: '224, 156, 54',\n white: '#ffffff',\n whiteRGB: '255, 255, 255',\n}\n\nexport const NekoColorTheme = {\n danger: NekoColors.red,\n primary: NekoColors.blue,\n secondary: NekoColors.lightBlue,\n success: NekoColors.green,\n}\n\nconst NekoTheme = {\n\n // COLORS\n ...NekoColors,\n ...NekoColorTheme,\n\n // FONT\n\n fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell,\"Helvetica Neue\", sans-serif',\n fontSizeH1: '24px',\n fontSizeH2: '18px',\n fontSizeText: '13px',\n fontSizeSmall: '12px',\n fontSizeSmallButton: '10px',\n\n // SHADOW\n\n lightShadow: '0px 0px 10px rgba(0,0,0,0.1)',\n};\n\nexport default NekoTheme;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Styled from \"styled-components\";\n\nconst StyledCircleSpinner = Styled.div`\n width: ${props => props.size || '50%'};\n padding-top: ${props => props.size || '50%'};\n position: relative;\n margin: 0 auto;\n\n .double-bounce1, .double-bounce2 {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: ${props => props.color || '#333'};\n opacity: 0.6;\n position: absolute;\n top: 0;\n left: 0;\n\n -webkit-animation: sk-bounce 2.0s infinite ease-in-out;\n animation: sk-bounce 2.0s infinite ease-in-out;\n }\n\n .double-bounce2 {\n -webkit-animation-delay: -1.0s;\n animation-delay: -1.0s;\n }\n\n @-webkit-keyframes sk-bounce {\n 0%, 100% { -webkit-transform: scale(0.0) }\n 50% { -webkit-transform: scale(1.0) }\n }\n\n @keyframes sk-bounce {\n 0%, 100% {\n transform: scale(0.0);\n -webkit-transform: scale(0.0);\n } 50% {\n transform: scale(1.0);\n -webkit-transform: scale(1.0);\n }\n }\n`;\n\nconst CircleSpinner = (props) => {\n return (\n <StyledCircleSpinner {...props}>\n <div className=\"double-bounce1\"></div>\n <div className=\"double-bounce2\"></div>\n </StyledCircleSpinner>\n );\n};\n\n/**\n * @param {string} (variant) Tag Name\n */\nconst StyledNekoSpinner = (props) => {\n const { type = 'circle', ...rest } = props;\n\n switch (type) {\n case 'circle':\n return <CircleSpinner {...rest} />\n\n default:\n return null;\n }\n};\n\nconst NekoSpinner = (props) => {\n return <StyledNekoSpinner {...props} />;\n};\n\nNekoSpinner.propTypes = {\n type: PropTypes.string,\n};\n\nNekoSpinner.defaultProps = {\n type: 'circle',\n};\n\nexport { NekoSpinner };\n","import lockCheck from '@iconify/icons-mdi/lock-check';\nimport lockOpenVariant from '@iconify/icons-mdi/lock-open-variant';\nimport fileUndo from '@iconify/icons-mdi/file-undo';\nimport chevronDoubleLeft from '@iconify/icons-mdi/chevron-double-left';\nimport chevronDoubleRight from '@iconify/icons-mdi/chevron-double-right';\nimport chevronLeft from '@iconify/icons-mdi/chevron-left';\nimport chevronRight from '@iconify/icons-mdi/chevron-right';\nimport chevronDown from '@iconify/icons-mdi/chevron-down';\nimport chevronUp from '@iconify/icons-mdi/chevron-up';\nimport pauseIcon from '@iconify/icons-mdi/pause';\nimport playIcon from '@iconify/icons-mdi/play';\nimport replayIcon from '@iconify/icons-mdi/replay';\nimport checkIcon from '@iconify/icons-mdi/check';\nimport checkCircle from '@iconify/icons-mdi/check-circle';\nimport stopIcon from '@iconify/icons-mdi/stop';\nimport deleteIcon from '@iconify/icons-mdi/delete';\nimport undoIcon from '@iconify/icons-mdi/undo';\n//import alertIcon from '@iconify/icons-mdi/alert';\nimport alertCircle from '@iconify/icons-mdi/alert-circle';\nimport databaseIcon from '@iconify/icons-mdi/database';\nimport pencilIcon from '@iconify/icons-mdi/pencil';\nimport toolsIcon from '@iconify/icons-mdi/tools';\nimport cogIcon from '@iconify/icons-mdi/cog';\nimport closeIcon from '@iconify/icons-mdi/close';\nimport catIcon from '@iconify/icons-mdi/cat';\nimport trashCan from '@iconify/icons-mdi/trash-can';\nimport leadPencil from '@iconify/icons-mdi/lead-pencil';\nimport viewDashboard from '@iconify/icons-mdi/view-dashboard';\nimport databaseSearch from '@iconify/icons-mdi/database-search';\nimport folderIcon from '@iconify/icons-mdi/folder';\nimport folderOpen from '@iconify/icons-mdi/folder-open';\nimport imageMultipleOutline from '@iconify/icons-mdi/image-multiple-outline';\nimport plusIcon from '@iconify/icons-mdi/plus';\nimport folderPlus from '@iconify/icons-mdi/folder-plus';\nimport imagePlus from '@iconify/icons-mdi/image-plus';\nimport viewGrid from '@iconify/icons-mdi/view-grid';\nimport formatListBulleted from '@iconify/icons-mdi/format-list-bulleted';\nimport twitterIcon from '@iconify/icons-mdi/twitter';\nimport instagramIcon from '@iconify/icons-mdi/instagram';\nimport facebookIcon from '@iconify/icons-mdi/facebook';\nimport starIcon from '@iconify/icons-mdi/star';\nimport timerOutline from '@iconify/icons-mdi/timer-outline';\nimport arrowUpBoldCircleOutline from '@iconify/icons-mdi/arrow-up-bold-circle-outline';\nimport linkVariant from '@iconify/icons-mdi/link-variant';\nimport linkedin from '@iconify/icons-mdi/linkedin';\nimport pinterest from '@iconify/icons-mdi/pinterest';\nimport zoomIn from '@iconify/icons-mdi/zoom-in'\nimport infoOutline from '@iconify/icons-mdi/info-outline'\nimport arrowUp from '@iconify/icons-mdi/arrow-up'\nimport arrowDown from '@iconify/icons-mdi/arrow-down'\nimport sort from '@iconify/icons-mdi/sort'\nimport eye from '@iconify/icons-mdi/eye'\nimport rocketLaunch from '@iconify/icons-mdi/rocket-launch'\nimport calendarMonth from '@iconify/icons-mdi/calendar-month'\n\nconst presetIcons = {\n 'lock': lockCheck,\n 'lock-open': lockOpenVariant,\n 'file-undo': fileUndo,\n 'chevron-double-left': chevronDoubleLeft,\n 'chevron-double-right': chevronDoubleRight,\n 'chevron-left': chevronLeft,\n 'chevron-right': chevronRight,\n 'chevron-down': chevronDown,\n 'chevron-up': chevronUp,\n 'pause': pauseIcon,\n 'play': playIcon,\n 'replay': replayIcon,\n 'check': checkIcon,\n 'check-circle': checkCircle,\n 'stop': stopIcon,\n 'delete': deleteIcon,\n 'undo': undoIcon,\n 'alert': alertCircle,\n 'database': databaseIcon,\n 'tools': toolsIcon,\n 'cog': cogIcon,\n 'close': closeIcon,\n 'cat': catIcon,\n 'upload': arrowUpBoldCircleOutline,\n 'trash': trashCan,\n 'pencil': leadPencil,\n 'dashboard': viewDashboard,\n 'search': databaseSearch,\n 'folder': folderIcon,\n 'folder-open': folderOpen,\n 'image-multiple-outline': imageMultipleOutline,\n 'plus': plusIcon,\n 'folder-plus': folderPlus,\n 'image-plus': imagePlus,\n 'view-grid': viewGrid,\n 'format-list-bulleted': formatListBulleted,\n 'twitter': twitterIcon,\n 'instagram': instagramIcon,\n 'facebook': facebookIcon,\n 'star': starIcon,\n 'timer-outline': timerOutline,\n 'link': linkVariant,\n 'linkedin': linkedin,\n 'pinterest': pinterest,\n 'zoom-in': zoomIn,\n 'info-outline': infoOutline,\n 'arrow-up': arrowUp,\n 'arrow-down': arrowDown,\n 'sort': sort,\n 'eye': eye,\n 'rocket-launch': rocketLaunch,\n 'calendar-month': calendarMonth,\n};\n\nexport default presetIcons;","class NekoError {\n\n constructor(message, code = '', url = null, body = null, debug = {}, ) {\n this.url = url;\n this.message = message;\n this.code = code;\n this.body = body;\n this.debug = debug;\n }\n}\n\nexport { NekoError };","import { cache, mutate } from 'swr';\nimport { NekoError } from './errors';\n\n// This function allows to invalidate a SWR key which might\n// have been use for paging, for example: swrInvalidateMany('/api/items')\n// will reset everything which happens around this key.\n\nfunction swrInvalidateMany(select) {\n const keys = cache.keys();\n const mutations = [];\n let regexp = new RegExp(`(.*)${select}(.*)`);\n for (let key of keys) {\n if (regexp.test(key)) {\n mutations.push(mutate(key, null, true));\n }\n }\n return Promise.all(mutations);\n}\n\nfunction chunkArrayInGroups(arr, size) {\n let result = [];\n for (let i = 0; i < arr.length; i += size)\n result.push(arr.slice(i, i + size));\n return result;\n}\n\nconst consolidateJsonResult = (json) => {\n if (!json.data) {\n return json;\n }\n if (json.data.length > 0 && json.data[0].meta) {\n for (let x of json.data) {\n try { x.meta = JSON.parse(x.meta); }\n catch (err) { console.error('[JsonFetcher]', 'Could not decode meta.', x.meta); }\n }\n }\n else if (json.data.meta) {\n try { json.data.meta = JSON.parse(json.data.meta); }\n catch (err) { console.error('[JsonFetcher]', 'Could not decode meta.', x.meta); }\n }\n return json;\n}\n\nconst jsonFetcher = async (url, options = {}) => {\n let body = null;\n let json = {};\n let nekoError = null;\n let rawBody = null;\n\n try {\n options = options ? options : {};\n options.headers = options.headers ? options.headers : {};\n options.headers['Pragma'] = 'no-cache';\n options.headers['Cache-Control'] = 'no-cache';\n rawBody = await fetch(`${url}`, options);\n body = await rawBody.text();\n json = JSON.parse(body);\n if (!json.success) {\n let code = json.success === false ? 'NOT-SUCCESS' : 'N/A';\n let message = json.message ? json.message : 'Unknown error. Check your Console Logs.';\n if (json.code === 'rest_no_route') {\n message = \"The API can't be accessed. Is Rest API enabled?\";\n code = 'NO-ROUTE';\n }\n else if (json.code === 'internal_server_error') {\n message = \"Server error. Please check your PHP Error Logs.\";\n code = 'SERVER-ERROR';\n }\n nekoError = new NekoError(message, code, url, body ? body : rawBody);\n }\n }\n catch (error) {\n let code = 'BROKEN-REPLY';\n let message = \"The reply sent by the server is broken.\";\n if (rawBody && rawBody.status) {\n if (rawBody.status === 408) {\n code = \"REQUEST-TIMEOUT\";\n message = \"The request generated a timeout.\";\n }\n }\n nekoError = new NekoError(message, code, url, body ? body : rawBody, error);\n }\n\n // Rewrite the Json if there is an error\n if (nekoError) {\n console.error('[NekoError] JsonFetcher', nekoError.url, { code: nekoError.code, \n error: nekoError.error, body: nekoError.body });\n json.success = false;\n json.error = nekoError;\n }\n return consolidateJsonResult(json);\n}\n\nconst getFetch = async (url, json, signal, nonce) => {\n const nonceHeader = nonce ? { 'X-WP-Nonce': nonce } : {};\n return jsonFetcher(url, { \n method: 'GET', \n headers: { 'Content-Type': 'application/json', ...nonceHeader },\n signal: signal\n });\n}\n\nconst postFetch = async (url, config = {}) => {\n const { json = {}, signal, file, nonce } = config;\n let formData = file ? new FormData() : null;\n if (file) {\n formData.append('file', file);\n for (const [key, value] of Object.entries(json)) {\n formData.append(key, value);\n }\n }\n\n const headers = nonce ? { 'X-WP-Nonce': nonce } : {};\n if (!formData) {\n headers['Content-Type'] = 'application/json';\n }\n\n return jsonFetcher(url, { \n method: 'POST',\n headers: headers,\n body: formData ? formData :JSON.stringify(json) ,\n signal: signal\n });\n}\n\nconst buildUrlWithParams = (apiUrl, params) => {\n const isPlainPermalink = apiUrl.includes('index.php?rest_route');\n const urlParams = new URLSearchParams(params);\n const finalUrl = apiUrl + (isPlainPermalink ? '&' : '?') + urlParams.toString();\n return finalUrl;\n}\n\nconst formatBytes = (bytes, decimals = 2) => {\n //if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n let i = bytes > 0 ? Math.floor(Math.log(bytes) / Math.log(k)) : 0;\n if ( sizes[i] === 'Bytes' ) {\n i = 1;\n }\n bytes = parseFloat((bytes / Math.pow(k, i)).toFixed(dm));\n var str = bytes.toFixed(Math.max(dm, (bytes.toString().split('.')[1] || []).length));\n return str + ' ' + sizes[i];\n}\n\nfunction sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport { getFetch, postFetch, jsonFetcher, swrInvalidateMany, chunkArrayInGroups,\n buildUrlWithParams, formatBytes, sleep };","import { useState, useRef, useEffect, useCallback } from 'react';\nimport PQueue from 'p-queue';\nimport { sleep } from './helpers';\n\nconst useHandleSWR = (swrData = undefined, defaultData = null, defaultBusy = false) => {\n const [ data, setData ] = useState(defaultData);\n const [ error, setError ] = useState(null);\n const [ busy, setBusy ] = useState(defaultBusy);\n const [ total, setTotal ] = useState(0);\n\n useEffect(() => {\n if (swrData !== undefined) { \n if (swrData.success) {\n setError(null);\n setData(swrData.data);\n setTotal(swrData.total ? swrData.total : 0);\n }\n else {\n setError(swrData.error);\n }\n }\n setBusy(swrData === undefined);\n }, [ swrData ]);\n\n return { busy, data, total, error };\n}\n\n// Sometimes, we need to align or place elements depending on other dynamic elements.\n// This hook returns a ref (which should be assign to a component), and the size of\n// this element every time it changes.\n\nconst useComponentSize = () => {\n const ref = useRef();\n const [ size, setSize ] = useState({});\n\n useEffect(() => {\n if (ref && ref.current) {\n const observer = new ResizeObserver(entries => {\n let element = entries[0];\n if (element.contentRect) {\n setSize({ \n width: element.contentRect.left + element.contentRect.right, \n height: element.contentRect.top + element.contentRect.bottom \n });\n }\n });\n observer.observe(ref.current);\n return () => { observer.unobserve(ref.current); };\n }\n }, []);\n return { ref, width: size.width ? size.width : 0, height: size.height ? size.height : 0 };\n};\n\n// If a click is made outside the component, then the function onOutsideClick is called.\n// This function returns a ref which needs to be assigned to the component.\n\nconst useOutsideClick = (onOutsideClick) => {\n const componentRef = useRef();\n const handleOutsideClick = (e) => {\n if (!onOutsideClick || componentRef.current.contains(e.target)) {\n return;\n }\n onOutsideClick();\n };\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleOutsideClick);\n return () => { document.removeEventListener(\"mousedown\", handleOutsideClick); };\n });\n return componentRef;\n};\n\n\n// This hook allows calling many requests without having too many of them\n// running concurrently.\n\nlet GlobalQueue = null;\n\nconst useNekoGlobalQueue = (params = {}) => {\n\n if (!GlobalQueue) {\n let { concurrency = 2 } = params;\n GlobalQueue = new PQueue({ concurrency, autoStart: true });\n }\n\n const runTask = async (func) => {\n return await GlobalQueue.add(func);\n }\n\n return { runTask };\n};\n\n// This hook handles batch of asynchronous requests, and provide everything\n// the NekoProgress might need.\n\nconst isDebug = true;\nconst UploadQueue = new PQueue({ concurrency: 1, autoStart: false });\n\nconst useNekoTasks = () => {\n\n // We should be able to kill fetch requests using this\n // Interesting article: https://davidwalsh.name/cancel-fetch\n const [ controller, setController ] = useState(new AbortController());\n const refSkip = useRef(false);\n const refErrors = useRef(0);\n const refCurrentTask = useRef(null);\n const refRetries = useRef(0);\n const refRetriesLeft = useRef(0);\n const [ isSleeping, setIsSleeping ] = useState(false);\n const [ busy, setBusy ] = useState(null);\n const [ paused, setPaused ] = useState(false);\n const [ max, setMax ] = useState(0);\n const [ error, setError ] = useState(false);\n const [ success, setSuccess ] = useState(false);\n const [ value, setValue ] = useState(0);\n\n const reset = async () => {\n let newController = new AbortController();\n setController(newController);\n setError(false);\n refErrors.current = 0;\n refSkip.current = false;\n setPaused(false);\n setSuccess(false);\n setValue(0);\n setMax(0);\n };\n\n const start = async (tasks) => {\n const runnerPromise = new Promise((resolve, reject) => {\n setError(false);\n refRetries.current = 0;\n refRetriesLeft.current = 0;\n refErrors.current = 0;\n refSkip.current = false;\n setPaused(false);\n setSuccess(false);\n setTasks(tasks);\n setBusy(true);\n if (isDebug) { console.log('[useNekoTasks] Start.'); }\n UploadQueue.start();\n UploadQueue.onIdle().then(() => {\n onIdle();\n resolve();\n }); \n });\n return runnerPromise;\n };\n\n const pause = async () => {\n if (isDebug) { console.log('[useNekoTasks] Pause.'); }\n UploadQueue.pause();\n setPaused(true);\n };\n\n const resume = async () => {\n if (isDebug) { console.log('[useNekoTasks] Resume.'); }\n setError(false);\n setPaused(false);\n UploadQueue.start();\n };\n\n const autoRetry = async (maxRetries = 5) => {\n refRetries.current = maxRetries;\n refRetriesLeft.current = maxRetries;\n retry();\n }\n\n const retry = async () => {\n if (isDebug) { console.log('[useNekoTasks] Retrying.'); }\n setError(false);\n setPaused(false);\n if (refRetriesLeft.current > 0) {\n if (refRetriesLeft.current < refRetries.current) {\n let retries = refRetries.current - refRetriesLeft.current;\n setIsSleeping(true);\n let sleepFor = retries * 5000;\n if (isDebug) {\n console.log(`[useNekoTasks] Sleep for ${sleepFor}ms.`);\n }\n await sleep(sleepFor);\n setIsSleeping(false);\n }\n refRetriesLeft.current--;\n }\n if (refCurrentTask.current) {\n await executeTask(refCurrentTask.current, true);\n }\n //UploadQueue.start();\n };\n\n const stop = async () => {\n if (isDebug) { console.log('[useNekoTasks] Cancel.'); }\n UploadQueue.pause();\n controller.abort();\n setBusy(false);\n setError(false);\n setSuccess(false);\n };\n\n const onIdle = async () => {\n if (isDebug) { console.log('[useNekoTasks] onIdle.'); }\n setSuccess(true);\n setBusy(false);\n };\n\n const executeTask = async(task, isRetry = false) => {\n try {\n if (isRetry) {\n refErrors.current--;\n setValue(value => value - 1);\n }\n refCurrentTask.current = task;\n let res = await task(controller.signal);\n if (!res || !res.success) {\n console.error('[useNekoTasks] The function for that task did not return anything.', res);\n }\n if (!res.success) {\n refErrors.current++;\n\n // Otherwise, if \"auto-skip\" is not set, we set an error and break.\n if (!refSkip.current) {\n pause();\n // If there are retries left, let's retry.\n if (refRetriesLeft.current > 0) {\n retry();\n return;\n }\n else {\n setError(res.error);\n }\n }\n }\n // If we are retrying a task and it is successful, we should restart PQueue\n else if (isRetry) {\n refRetriesLeft.current = refRetries.current;\n UploadQueue.start();\n }\n }\n catch (err) {\n if (err.name === 'AbortError') {\n console.log('[useNekoTasks] Aborted');\n return;\n }\n else {\n refErrors.current++;\n if (!refSkip.current) {\n setError(\"[useNekoTasks] An error was caught (more information in the console).\");\n pause();\n }\n }\n }\n finally {\n setValue(value => value + 1);\n }\n }\n\n const addTask = async (task) => {\n UploadQueue.add(async () => executeTask(task));\n setMax(max => max + 1);\n }\n\n const setTasks = async (tasks) => {\n UploadQueue.clear();\n for (let task of tasks) {\n addTask(task);\n }\n setValue(0);\n };\n\n const setAlwaysSkip = useCallback((value = true) => {\n refSkip.current = true;\n }, []);\n\n const getErrorCount = useCallback(() => {\n return refErrors.current;\n }, []);\n\n return { start, stop, pause, resume, reset, retry, autoRetry, isSleeping,\n addTask, setAlwaysSkip, getErrorCount,\n error, success, busy, paused, value, max };\n};\n\nconst useKeyboardEvent = () => {\n\tconst [ pressShift, setPressShift ] = useState(false);\n const [ pressControl, setPressControl ] = useState(false);\n\n\tconst keydownFunction = useCallback((e) => {\n\t\tsetPressShift(e.shiftKey);\n setPressControl(e.ctrlKey || e.metaKey);\n\t}, []);\n\tconst keyupFunction = useCallback(() => {\n\t\tsetPressShift(false);\n setPressControl(false);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tdocument.addEventListener(\"keydown\", keydownFunction, false);\n\t\tdocument.addEventListener(\"keyup\", keyupFunction, false);\n\n\t\treturn () => {\n\t\tdocument.removeEventListener(\"keydown\", keydownFunction, false);\n\t\tdocument.removeEventListener(\"keyup\", keyupFunction, false);\n\t\t}\n\t}, []);\n\n\treturn { pressShift, pressControl };\n}\n\nexport { useHandleSWR, useOutsideClick, useNekoGlobalQueue, useNekoTasks, useComponentSize, useKeyboardEvent };","import React, { useState, useCallback, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\n\nimport { useComponentSize } from '../hooks';\nimport Theme from '../common/NekoTheme';\n\nconst TooltipContainer = Styled.div`\n\tdisplay: flex;\n`;\n\nconst Tooltip = Styled.div`\n\tbackground-color: rgba(${Theme.blackRGB}, 0.8);\n\tborder-radius: 4px;\n\tcolor: ${Theme.white};\n\tfont-family: ${Theme.fontFamily};\n\tfont-weight: normal;\n\tmin-width: 180px;\n\tmax-width: 280px;\n\tfont-size: ${Theme.fontSizeText};\n\tpadding: 8px 12px;\n\tposition: absolute;\n \tmax-width: 280px;\n\tword-break: break-word;\n\tdisplay: ${prop => prop.visible ? 'inline-block' : 'none'};\n\tz-index: 100;\n\n\t&:before {\n\t\tcontent: \"\";\n\t\tposition: absolute;\n\t\tborder: 4px solid transparent;\n\t}\n\n\t&.top {\n\t\t&:before {\n\t\t\tmargin-left: -4px;\n\t\t\ttop: 100%;\n\t\t\tleft: 50%;\n\t\t\tborder-top: 4px solid rgba(${Theme.blackRGB}, 0.8);\n\t\t}\n\t}\n\n\t&.left {\n\t\t&:before {\n\t\t\tmargin-top: -4px;\n\t\t\ttop: 50%;\n\t\t\tright: -8px;\n\t\t\tborder-left: 4px solid rgba(${Theme.blackRGB}, 0.8);\n\t\t}\n\t}\n\n\t&.right {\n\t\t&:before {\n\t\t\tmargin-top: -4px;\n\t\t\ttop: 50%;\n\t\t\tleft: -8px;\n\t\t\tborder-right: 4px solid rgba(${Theme.blackRGB}, 0.8);\n\t\t}\n\t}\n\n\t&.bottom {\n\t\t&:before {\n\t\t\tmargin-left: -4px;\n\t\t\ttop: -8px;\n\t\t\tleft: 50%;\n\t\t\tborder-bottom: 4px solid rgba(${Theme.blackRGB}, 0.8);\n\t\t}\n\t}\n\n\t${prop => prop.style}\n`;\n\n/**\n * @param {string} (variant) Tag Name\n */\nconst StyledNekoTooltip = props => {\n\tconst { text = 'Hello world!', position = 'top' } = props;\n\tconst [ show, setShow ] = useState(false);\n\tconst { ref: tooltipRef, width: tooltipWidth, height: tooltipHeight } = useComponentSize();\n\tconst { ref: childRef, width: childWidth, height: childHeight } = useComponentSize();\n\n\tconst transformStyle = useMemo(() => {\n\t\tconst pointerSize = 5;\n\t\tlet transY = 0;\n\t\tlet transX = 0;\n\n\t\tif (position === 'top') {\n\t\t\ttransY = -1 * tooltipHeight - pointerSize;\n\t\t\ttransX = -1 * (tooltipWidth / 2) + (childWidth / 2);\n\t\t}\n\t\telse if (position === 'bottom') {\n\t\t\ttransY = childHeight + pointerSize;\n\t\t\ttransX = -1 * (tooltipWidth / 2) + (childWidth / 2);\n\t\t}\n\t\telse if (position === 'left') {\n\t\t\tconst diff = tooltipHeight - childHeight;\n\t\t\ttransY = -1 * (diff / 2);\n\t\t\ttransX = -1 * tooltipWidth - pointerSize;\n\t\t}\n\t\telse if (position === 'right') {\n\t\t\tconst diff = tooltipHeight - childHeight;\n\t\t\ttransY = -1 * (diff / 2);\n\t\t\ttransX = childWidth + pointerSize;\n\t\t}\n\t\t\n\t\treturn { \n\t\t\ttransform: `translateX(${transX}px) translateY(${transY}px)`\n\t\t};\n\n\t}, [position, tooltipWidth, tooltipHeight, childWidth, childHeight])\n\n\treturn (\n\t\t<TooltipContainer>\n\t\t\t<Tooltip ref={tooltipRef} visible={show} className={position} style={transformStyle}>\n\t\t\t\t{text}\n\t\t\t</Tooltip>\n\t\t\t<div ref={childRef} onMouseEnter={() => text && setShow(true)} onMouseLeave={() => setShow(false)}>\n\t\t\t\t{props.children}\n\t\t\t</div>\n\t\t</TooltipContainer>\n\t);\n};\n\nconst NekoTooltip = (props) => {\n return (<StyledNekoTooltip {...props} />);\n}\n\nNekoTooltip.propTypes = {\n\ttext: PropTypes.string,\n\tposition: PropTypes.oneOf(['top', 'right', 'bottom', 'left'])\n};\n\nNekoTooltip.defaultProps = {\n\ttext: 'Hello world!',\n\tposition: 'top'\n};\n\nexport { NekoTooltip };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { lighten } from 'polished';\nimport { Icon, IconifyIcon } from '@iconify/react';\n\nimport PresetIcons from '../common/PresetIcons';\nimport { NekoTooltip } from './Tooltip';\n\nconst StyledIconContainer = Styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst hoverColor = (color, hoverColor) => {\n if (hoverColor) {\n return `\n &:hover {\n path {\n fill: ${hoverColor};\n }\n }\n `;\n }\n if (color) {\n return `\n &:hover {\n path {\n fill: ${lighten(0.1, color)};\n }\n }\n `;\n }\n};\n\nconst StyledIcon = Styled(Icon)`\n\n path {\n fill: ${props => props.color};\n }\n\n ${props => hoverColor(props.color, props.hoverColor)}\n\n &.nui-clickable {\n cursor: pointer;\n }\n\n &.spin {\n animation-name: spin;\n animation-duration: 700ms;\n animation-iteration-count: infinite;\n animation-timing-function: linear;\n\n @keyframes spin {\n 0% {\n transform: rotate(360deg);\n }\n 100% {\n transform: rotate(0deg);\n }\n }\n }\n\n &.busy {\n animation: crescendo 0.4s alternate infinite;\n @keyframes crescendo {\n 0% {transform: scale(.65);}\n 100% {transform: scale(1);}\n }\n }\n\n &.disabled {\n pointer-events: none;\n opacity: 0.35;\n cursor: default;\n }\n`;\n\nconst StyledNekoIcon = props => {\n\n let { icon, spinning = false, className = '', title, tooltip, containerStyle, color, hoverColor,\n disabled = false, raw, isBusy = false, ...rest } = props;\n\n if (!rest.width && !rest.height) {\n rest.width = rest.height = 30;\n }\n\n const getIcon = () => {\n if (typeof icon === 'string') {\n return PresetIcons[icon] || null;\n }\n return icon;\n };\n\n const iconClassName = `nui-icon ${className}${rest.onClick ? ' nui-clickable' : ''}${spinning ? ' spin' : ''}${disabled ? ' disabled' : ''}${isBusy ? ' busy' : ''}`;\n\n if (tooltip) {\n return (\n <NekoTooltip text={tooltip.text} position={tooltip.position || 'top'}>\n <StyledIconContainer style={containerStyle}>\n <StyledIcon icon={getIcon()} className={iconClassName} color={color} hoverColor={hoverColor} {...rest}/>\n </StyledIconContainer>\n </NekoTooltip>\n );\n }\n\n if (raw) {\n return <StyledIcon icon={getIcon()} className={iconClassName} color={color} hoverColor={hoverColor} {...rest} />\n }\n\n return (\n <StyledIconContainer style={containerStyle} title={title}>\n <StyledIcon icon={getIcon()} className={iconClassName} color={color} hoverColor={hoverColor} {...rest} />\n {!tooltip ? null : <NekoTooltip>{tooltip}</NekoTooltip>}\n </StyledIconContainer>\n );\n};\n\nconst NekoIcon = (props) => {\n return (<StyledNekoIcon {...props} />);\n};\n\nNekoIcon.propTypes = {\n icon: PropTypes.oneOfType([PropTypes.instanceOf(IconifyIcon), PropTypes.oneOf(['lock' ,'lock-open' ,'file-undo' ,'chevron-double-left' ,'chevron-double-right' ,'chevron-left' ,'chevron-right' ,'chevron-down' ,'chevron-up' ,'pause' ,'play' ,'replay' ,'check' ,'stop' ,'delete' ,'undo' ,'alert' ,'database' ,'pencil' ,'tools' ,'cog' ,'close' ,'cat' ,'upload'])]),\n color: PropTypes.string,\n spinning: PropTypes.bool,\n className: PropTypes.string,\n tooltip: PropTypes.string,\n raw: PropTypes.bool,\n isBusy: PropTypes.bool,\n};\n\nNekoIcon.defaultProps = {\n icon: undefined,\n color: undefined,\n spinning: false,\n className: '',\n tooltip: undefined,\n raw: undefined,\n isBusy: false,\n};\n\nexport { NekoIcon };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Colors from '../common/NekoTheme';\nimport Theme from '../common/NekoTheme';\n\nconst Tag = Styled.a`\n background-color: ${Colors.yellow};\n position: relative;\n border-radius: 10px;\n color: ${Colors.white};\n font-family: ${Theme.fontFamily};\n font-size: 9px;\n line-height: 10px;\n padding: 5px 8px;\n text-transform: uppercase;\n text-decoration: none;\n\n &:hover {\n color: ${Colors.white};\n background-color: #f78c1f;\n }\n\n &.inline {\n display: inline;\n margin-left: 5px;\n vertical-align: middle;\n }\n`;\n\n/**\n * @param {string} className\n * @param {string|object} icon\n * @param {bool} disabled\n * @param {function} onClick\n */\nconst StyledProOnly = (props) => {\n\n const { show = true, className, ...rest } = props;\n\n if (!show) {\n return null;\n }\n\n return (\n <Tag href='https://store.meowapps.com' target='_blank' className={`${className || ''}`} {...rest}>\n Pro Only\n </Tag>\n );\n};\n\nconst ProOnly = (props) => {\n return (<StyledProOnly {...props} />);\n}\n\nProOnly.propTypes = {\n show: PropTypes.bool,\n className: PropTypes.string\n};\n\nProOnly.defaultProps = {\n show: true,\n className: undefined\n};\n\nexport { ProOnly };\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { lighten } from 'polished';\nimport Theme from '../common/NekoTheme';\nimport { IconifyIcon } from '@iconify/react';\nimport { NekoSpinner } from '../misc/Spinner';\nimport { NekoIcon } from '../misc/Icon';\nimport { ProOnly } from '../label/ProOnly';\n\nconst StyledButton = Styled(props => {\n\n const { className, icon = null, onClick, disabled = false, color = null, disabledColor = null, small, isBusy = false, width, height,\n children, rounded, busyText, spinning = false, hideBusyIcon = false, busyIconSize, requirePro = false, isPro = false, ...rest } = props;\n const hasIcon = !!icon;\n const iconWidth = useMemo(() => {\n const base = width ?? 30;\n return rounded ? base - 10 : base - 6;\n }, [width, rounded]);\n const spinnerSize = useMemo(() => {\n if (busyIconSize) return busyIconSize;\n return rounded ? '82%' : '35%';\n }, [rounded, busyIconSize]);\n const needsProUser = requirePro && !isPro;\n\n const classNames = `nui-button ${className || ''}${hasIcon ? ' has-icon' : ''}${color ? ' custom-color' : ''}${small ? ' small' : ''}${rounded ? ' rounded' : ''}${isBusy ? ' busy' : ''}${needsProUser ? ' is-pro' : ''}`;\n\n return (\n <button type=\"button\" className={classNames} onClick={onClick} disabled={disabled || needsProUser} {...rest}>\n {isBusy && !hideBusyIcon && <NekoSpinner type=\"circle\" color=\"#fff\" size={spinnerSize} />}\n {isBusy && !!busyText && <span style={{ marginLeft: hideBusyIcon ? 0 : '4px', marginRight: '2xp' }}>{busyText}</span>}\n {hasIcon && !isBusy && <NekoIcon icon={icon} width={iconWidth} height={iconWidth} spinning={spinning} raw style={ rounded ? { margin: '0 auto' } : {}} />}\n {!!children && !isBusy && <span style={{ marginLeft: hasIcon ? '4px' : 0, marginRight: hasIcon ? '2xp' : 0 }}>{children}</span>}\n {needsProUser && <ProOnly style={{ marginLeft: '8px' }} />}\n </button>\n );\n})`\n display: inline-block;\n box-sizing: border-box;\n height: 30px;\n min-height: 30px;\n min-width: 6em;\n border: none;\n border-radius: 4px;\n text-align: center;\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n padding: 0 15px;\n\n background-color: ${Theme.blue};\n color: white;\n transition: background-color .10s, opacity .25s;\n\n :not([disabled]):hover {\n cursor: pointer;\n background-color: ${lighten(0.1, Theme.blue)};\n }\n\n :disabled {\n opacity: 0.35;\n }\n\n :focus {\n outline: none;\n }\n\n &.is-pro {\n background-color: ${Theme.blueDisabled};\n rgb(255 255 255 / 65%);\n display: inline-flex;\n align-items: center;\n opacity: 1;\n }\n\n &.has-icon {\n align-items: center;\n display: inline-flex;\n padding: 2.5px 8px;\n }\n\n &.secondary {\n background-color: ${Theme.lightBlue};\n border: 1px solid ${Theme.blue};\n color: ${Theme.blue};\n\n &:hover {\n background-color: ${lighten(0.1, Theme.lightBlue)};\n }\n\n &.is-pro {\n color: ${Theme.blueDisabled};\n border-color: ${Theme.blueDisabled};\n\n &:hover {\n background-color: ${Theme.lightBlue};\n }\n }\n }\n\n &.danger {\n background-color: ${Theme.red};\n border-color: ${Theme.red};\n\n\t &:hover {\n\t\t background-color: ${lighten(0.1, Theme.red)};\n\t }\n\n &.is-pro {\n background-color: ${Theme.red};\n\n &:hover {\n background-color: ${Theme.red};\n }\n }\n }\n\n &.success {\n background-color: ${Theme.green};\n border-color: ${Theme.green};\n\n\t &:hover {\n\t\t background-color: ${lighten(0.1, Theme.green)};\n\t }\n\n &.is-pro {\n background-color: ${Theme.green};\n\n &:hover {\n background-color: ${Theme.green};\n }\n }\n }\n\n & + button {\n margin-left: .25rem;\n }\n\n &.small {\n font-size: ${Theme.fontSizeSmallButton};\n height: 24px;\n }\n\n &.header {\n background-color: ${Theme.deepBlue};\n border-color: ${Theme.deepBlue};\n height: 40px;\n padding: 0 20px;\n\n\t &:hover {\n\t\t background-color: ${lighten(0.1, Theme.deepBlue)};\n\t }\n\n &.is-pro {\n background-color: ${Theme.deepBlueDisabled};\n\n &:hover {\n background-color: ${Theme.deepBlueDisabled};\n }\n }\n }\n\n &.rounded {\n border-radius: 100%;\n min-width: 30px;\n height: ${props => props.height ?? (props.width ?? 30)}px;\n width: ${props => props.width ?? 30}px;\n padding: 3px;\n }\n\n &.busy {\n pointer-events: none;\n }\n\n ${props => additionalColor(props.color)}\n ${props => additionalDisabledColor(props.disabledColor)}\n`;\n\nconst additionalColor = (color) => {\n if (color) {\n return `\n &.custom-color {\n background-color: ${color};\n border: 1px solid ${color};\n\n &:hover {\n background-color: ${lighten(0.1, color)};\n }\n }\n `;\n }\n};\n\nconst additionalDisabledColor = (disabledColor) => {\n if (disabledColor) {\n return `\n &.custom-color {\n &.is-pro {\n background-color: ${disabledColor};\n\n &:hover {\n background-color: ${disabledColor};\n }\n }\n }\n `;\n }\n};\n\n/**\n * The NekoButton works out of the box without specific attributes.\n */\nconst NekoButton = (props) => {\n return (<StyledButton {...props} />);\n};\n\nNekoButton.propTypes = {\n className: PropTypes.oneOf(['primary', 'secondary', 'danger', 'success', 'header']),\n disabled: PropTypes.bool,\n icon: PropTypes.oneOfType([PropTypes.instanceOf(IconifyIcon), PropTypes.oneOf(['setting', 'edit', 'trash'])]),\n color: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n rounded: PropTypes.bool,\n isBusy: PropTypes.bool,\n spinning: PropTypes.bool,\n busyText: PropTypes.string,\n hideBusyIcon: PropTypes.bool,\n busyIconSize: PropTypes.string,\n requirePro: PropTypes.bool,\n isPro: PropTypes.bool,\n disabledColor: PropTypes.string,\n};\n\nNekoButton.defaultProps = {\n className: 'primary',\n disabled: false,\n icon: null,\n color: null,\n onClick: () => {},\n rounded: undefined,\n isBusy: false,\n spinning: false,\n busyText: undefined,\n hideBusyIcon: false,\n busyIconSize: undefined,\n requirePro: false,\n isPro: false,\n disabledColor: null,\n};\n\nexport { NekoButton };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { lighten } from 'polished';\nimport Theme from '../common/NekoTheme';\nimport { ProOnly } from '../label/ProOnly';\nimport { Icon } from '@iconify/react';\nimport chevronDown from '@iconify/icons-mdi/chevron-down';\nimport { useOutsideClick, useComponentSize } from '../hooks';\n\nconst MenuButtonWrapper = Styled.div`\n display: inline-block;\n`;\n\nconst MenuButton = Styled.button`\n align-items: center;\n background-color: ${Theme.blue};\n border: none;\n border-radius: 4px;\n box-sizing: border-box;\n color: white;\n display: inline-flex;\n justify-content: space-between;\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n height: 30px;\n min-width: 6em;\n padding: 0px 10px;\n text-align: center;\n transition: background-color .10s, opacity .25s;\n\n :not([disabled]):hover {\n cursor: pointer;\n background-color: ${lighten(0.1, Theme.blue)};\n }\n\n :disabled {\n opacity: 0.35;\n }\n\n :focus {\n outline: none;\n }\n\n & + button {\n margin-left: .25rem;\n }\n`;\n\nconst MenuItemContainer = Styled.div`\n position: relative;\n display: block;\n margin-top: 18px;\n background-color: ${Theme.blue};\n position: absolute;\n z-index: 10;\n box-shadow: ${Theme.lightShadow};\n\n &:before {\n content: \"\";\n position: absolute;\n top: -18px;\n left: 50%;\n margin-left: -8px;\n border: 8px solid transparent;\n border-bottom: 10px solid ${Theme.blue};\n }\n`;\n\nconst StyledMenuButton = props => {\n\n const { title, disabled = false, isPro = false, style = {}, hideChevron, titleStyle = {} } = props;\n const [ isOpen, setIsOpen ] = React.useState(false);\n const wrapperRef = useOutsideClick(() => { setIsOpen(false) });\n const { ref: buttonRef, width: buttonWidth } = useComponentSize();\n\n const onClick = () => {\n setIsOpen(!isOpen);\n }\n\n const children = React.Children.map(props.children, child => {\n return React.cloneElement(child, {\n isPro,\n disabled: child.props.disabled || disabled,\n onClick: () => {\n if (child.props.onClick) {\n child.props.onClick();\n }\n onClick();\n }\n });\n });\n\n return (\n <MenuButtonWrapper ref={wrapperRef}>\n <MenuButton ref={buttonRef} type=\"button\" disabled={disabled} onClick={onClick} style={style}>\n <span style={titleStyle}>{title}</span>\n {!hideChevron && <Icon icon={chevronDown} width=\"24\" height=\"24\" style={{ marginLeft: '4px' }} />}\n </MenuButton>\n {isOpen &&\n <MenuItemContainer style={{ transform: `translateX(calc(-50% + ${buttonWidth / 2}px))` }}>\n {children}\n </MenuItemContainer>\n }\n </MenuButtonWrapper>\n );\n};\n\nconst MenuItem = Styled.button`\n align-items: center;\n background-color: ${Theme.blue};\n border: none;\n box-sizing: border-box;\n color: white;\n display: flex;\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n width: 100%;\n padding: 8px 15px 8px 15px;\n text-align: center;\n transition: background-color .10s, opacity .25s;\n\n :not([disabled]):hover {\n cursor: pointer;\n background-color: ${lighten(0.1, Theme.blue)};\n }\n\n :disabled:not(.is-pro) {\n opacity: 0.35;\n }\n\n :focus {\n outline: none;\n }\n\n &.is-pro {\n background-color: ${Theme.proGray};\n justify-content: space-between;\n }\n\n &.separator {\n border-top: 1px solid ${Theme.white};\n font-size: 10px;\n padding: 5px;\n }\n`;\n\nconst StyledNekoMenuItem = props => {\n\n const { onClick, children, isPro, requirePro = false, disabled, separator } = props;\n const needsProUser = requirePro && !isPro;\n\n return (\n <MenuItem type=\"button\" className={`${needsProUser? 'is-pro' : ''} ${separator ? 'separator' : ''}`} onClick={onClick} disabled={disabled || needsProUser}>\n <span>{children}</span>\n {needsProUser && !isPro && <ProOnly />}\n </MenuItem>\n );\n};\n\n/**\n * The NekoMenuButton works out of the box without specific attributes.\n */\nconst NekoMenuButton = (props) => {\n return (<StyledMenuButton {...props} />);\n}\nconst NekoMenuItem = (props) => {\n return (<StyledNekoMenuItem {...props} />);\n}\n\nNekoMenuButton.propTypes = {\n title: PropTypes.string,\n disabled: PropTypes.bool,\n isPro: PropTypes.bool,\n hideChevron: PropTypes.bool,\n style: PropTypes.object,\n titleStyle: PropTypes.object,\n};\n\nNekoMenuButton.defaultProps = {\n title: undefined,\n disabled: false,\n isPro: false,\n hideChevron: undefined,\n style: {},\n titleStyle: {},\n};\n\nNekoMenuItem.propTypes = {\n onClick: PropTypes.func.isRequired,\n requirePro: PropTypes.bool,\n separator: PropTypes.bool,\n};\n\nNekoMenuItem.defaultProps = {\n onClick: () => {},\n requirePro: false,\n separator: undefined,\n};\n\nexport { NekoMenuButton, NekoMenuItem };\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { NekoButton } from '../button/Button';\n\nconst Page = Styled.div`\n position: relative;\n background: #f1f1f1;\n margin-left: -20px;\n background-color: rgb(30 124 186 / 10%);\n padding-bottom: 50px;\n margin-bottom: -26px;\n\n .neko-rest-error {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: #1e232deb;\n z-index: 100;\n\n .container {\n color: white;\n padding: 5px 20px 15px 20px;\n min-width: 480px;\n max-width: 600px;\n border-radius: 20px;\n background: #883131;\n margin-left: 50%;\n transform: translateX(-50%);\n margin-top: 100px;\n\n h3 {\n color: white;\n }\n\n .neko-debug {\n padding: 5px 10px;\n background: #692426;\n border-radius: 10px;\n\n * {\n margin: 0px;\n padding: 0px;\n } \n }\n }\n }\n`;\n\n/**\n * @oaram {string} className\n */\nconst StyledNekoPage = props => {\n\n const { className, children, nekoErrors = [], style = {} } = props;\n const [ fatalError, setFatalError ] = useState(false);\n const [ showBody, setShowBody ] = useState(false);\n\n if (nekoErrors && !fatalError) {\n for (let error of nekoErrors) {\n if (error) {\n setFatalError(error);\n break\n }\n }\n }\n\n return (\n <Page className={className || ''} style={style}>\n {fatalError && \n <div className='neko-rest-error'>\n <div className='container'>\n {!showBody &&\n <>\n <h3>The Rest API is disabled or broken 😢</h3>\n <p>The Rest API is required for this plugin to work. It is enabled in WordPress by default since December 2016 and used by the Gutenberg Editor since 2019. In short, it allows more robustness and a much cleaner infrastructure. Soon, Wordpress will entirely depends on it, so it is important to keep it enabled.</p>\n <p><i>Last but not least: check your PHP Error Logs and your Debugging Console.</i></p>\n <p className='neko-debug'>\n <small>\n URL: {fatalError.url}<br />\n CODE: {fatalError.code}<br />\n MESSAGE: {fatalError.message}<br />\n </small>\n </p>\n </>\n }\n {fatalError.body && showBody &&\n <p className='neko-debug'>\n <div dangerouslySetInnerHTML={{ __html: fatalError.body }}></div>\n </p>\n }\n {fatalError.body &&\n <NekoButton color=\"#a94242\" onClick={() => setShowBody(!showBody)}>\n {showBody ? 'Hide' : 'Display'} response from server\n </NekoButton>\n }\n <NekoButton color=\"#a94242\" onClick={() => { window.open('https://meowapps.com/fix-wordpress-rest-api/', '_blank') }}>\n Learn about WordPress Debugging\n </NekoButton>\n </div>\n </div>}\n {children}\n </Page>\n );\n};\n\nconst NekoPage = (props) => {\n return (<StyledNekoPage {...props} />);\n};\n\nNekoPage.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n nekoErrors: PropTypes.bool\n};\n\nNekoPage.defaultProps = {\n className: undefined,\n style: {},\n nekoErrors: false\n};\n\nexport { NekoPage };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\n\nimport Theme from '../common/NekoTheme';\n\nconst NekoH1 = Styled.h1`\n font-family: ${Theme.fontFamily};\n font-weight: normal;\n font-size: ${Theme.fontSizeH1};\n line-height: normal;\n margin-top: 0;\n margin-bottom: 16px;\n padding: 0;\n`;\n\nconst NekoH2 = Styled.h2`\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeH2};\n font-weight: normal;\n line-height: normal;\n margin-top: 0;\n margin-bottom: 16px;\n padding: 0;\n`;\n\nconst NekoP = Styled.p`\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n line-height: normal;\n margin: 16px 0 24px;\n padding: 0;\n`;\n\nconst NekoSpan = Styled.span`\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n line-height: normal;\n margin: 0;\n padding: 0;\n`;\n\nconst NekoLabel = Styled.label`\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n line-height: normal;\n margin: 0;\n padding: 0;\n`;\n\n/**\n * @param {string} (variant) Tag Name\n */\nconst StyledNekoTypo = props => {\n const { children, ...rest } = props;\n\n return (\n props.h1 ? <NekoH1 {...rest}>{children}</NekoH1>\n : props.h2 ? <NekoH2 {...rest}>{children}</NekoH2>\n : props.p ? <NekoP {...rest}>{children}</NekoP>\n : props.label ? <NekoLabel {...rest}>{children}</NekoLabel>\n : <NekoSpan {...rest}>{children}</NekoSpan>\n );\n};\n\nconst NekoTypo = (props) => {\n return (<StyledNekoTypo {...props} />);\n}\n\nNekoTypo.propTypes = {\n h1: PropTypes.any,\n h2: PropTypes.any,\n p: PropTypes.any\n};\n\nNekoTypo.defaultProps = {\n h1: undefined,\n h2: undefined,\n p: undefined\n};\n\nexport { NekoTypo };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { NekoTypo } from '../misc/Typography';\nimport NekoBusyOverlay from '../common/NekoBusyOverlay';\n\nconst Block = Styled.div`\n font-size: ${Theme.fontSizeText};\n margin-bottom: 15px;\n\n .nui-block-header {\n display: flex;\n justify-content: space-between;\n }\n\n .nui-block-title {\n color: ${Theme.blue};\n padding: 5px 10px;\n margin-bottom: 5px;\n }\n\n .nui-block-content {\n background-color: #f1f1f1;\n padding: 26px;\n box-shadow: 0px 2px 5px 0px #0000004a;\n border-radius: 10px;\n\n p:first-child {\n margin-top: 0;\n }\n\n p:last-child {\n margin-bottom: 0;\n }\n }\n\n &.primary {\n padding: 8px;\n background-color: ${Theme.blue};\n\n .nui-block-title {\n color: ${Theme.white};\n }\n\n .nui-block-content {\n background-color: ${Theme.white};\n }\n }\n`;\n\n/**\n * @oaram {string} className\n */\nconst StyledNekoBlock = props => {\n\n const { title, children, className, busy = false, style = {}, contentStyle = {}, action } = props;\n\n return (\n <Block className={'nui-block ' + (className || '')} style={style}>\n <NekoBusyOverlay busy={busy}>\n <div className=\"nui-block-header\">\n <NekoTypo h2 className=\"nui-block-title\">{title}</NekoTypo>\n {!!action && action}\n </div>\n <div className=\"nui-block-content\" style={contentStyle}>\n {children}\n </div>\n </NekoBusyOverlay>\n </Block>\n );\n};\n\nconst NekoBlock = (props) => {\n return (<StyledNekoBlock {...props} />);\n}\n\nNekoBlock.propTypes = {\n title: PropTypes.string,\n className: PropTypes.oneOf(['', 'primary']),\n style: PropTypes.object,\n action: PropTypes.element,\n};\n\nNekoBlock.defaultProps = {\n title: undefined,\n className: '',\n style: {},\n action: undefined,\n};\n\nexport { NekoBlock };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\n\nconst Container = Styled.div`\n font-size: ${Theme.fontSizeText};\n font-family: ${Theme.fontFamily};\n background-color: ${Theme.white};\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n margin-bottom: 25px;\n\n &.primary {\n background-color: ${Theme.blue};\n }\n\n p:first-child {\n margin-top: 0px;\n }\n\n p:last-child {\n margin-bottom: 0px;\n }\n\n .content {\n padding: 20px 20px;\n }\n`;\n\nconst Bar = Styled.div`\n justify-content: flex-start;\n background-color: ${Theme.lightGray2};\n display: flex;\n align-items: center;\n padding: 8px 10px;\n\n &.align-right {\n justify-content: flex-end;\n }\n`;\n\n/**\n * @oaram {string} className\n */\nconst StyledNekoContainer = props => {\n\n const { children, header, headerAlign = 'left', footer, footerAlign = 'right', className, style = {} } = props;\n\n return (\n <Container className={className || ''} style={style}>\n {header && <Bar className={`align-${headerAlign}`}>{ header }</Bar>}\n <div className=\"content\">\n { children }\n </div>\n {footer && <Bar className={`align-${footerAlign}`}>{ footer }</Bar>}\n </Container>\n );\n};\n\nconst NekoContainer = (props) => {\n return (<StyledNekoContainer {...props} />);\n}\n\nNekoContainer.propTypes = {\n header: PropTypes.element,\n headerAlign: PropTypes.oneOf(['left', 'right']),\n footer: PropTypes.element,\n footerAlign: PropTypes.oneOf(['left', 'right']),\n className: PropTypes.string,\n style: PropTypes.object\n};\nNekoContainer.defaultProps = {\n header: undefined,\n headerAlign: 'left',\n footer: undefined,\n footerAlign: 'right',\n className: undefined,\n style: {}\n};\n\nexport { NekoContainer };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\n\n/**\n * @param {string} title=''\n */\nconst StyledNekoSettings = Styled(props => {\n const { title = '', contentAlign = 'left' } = props;\n return (\n <div className={props.className || ''}>\n {title ? <div className=\"nui-settings-head\">{title}</div> : null}\n <div className={`nui-settings-content nui-settings-content-align-${contentAlign}`}>\n {props.children}\n </div>\n </div>\n );\n})`\n display: flex;\n font-family: ${Theme.fontFamily};\n\n > .nui-settings-head {\n font-family: ${Theme.fontFamily};\n font-size: 14px;\n line-height: 17px;\n width: 120px;\n margin-right: 16px;\n }\n\n /* Select, Checkbox, Input need to be a bit higher to be in front of the settings title */\n\n .nui-settings-content > .nui-select:first-child {\n position: relative;\n margin-top: -5px;\n }\n \n .nui-settings-content > .nui-checkbox:first-child {\n position: relative;\n margin-top: -5px;\n }\n\n .nui-settings-content > .nui-checkbox:first-child {\n position: relative;\n margin-top: -5px;\n }\n\n .nui-settings-content > .nui-button:first-child {\n position: relative;\n margin-top: -5px;\n }\n\n .nui-settings-content > div:first-child > .neko-input {\n position: relative;\n margin-top: -5px;\n }\n\n > .nui-settings-content {\n flex: 1;\n\n &.nui-settings-content-align-right {\n flex: none;\n margin-left: auto;\n }\n\n input[type=text] {\n width: 100%;\n }\n\n\n }\n\n & + div {\n margin-top: 15px;\n }\n`;\n\nconst NekoSettings = (props) => {\n return (<StyledNekoSettings {...props} />);\n}\n\nNekoSettings.propTypes = {\n title: PropTypes.string,\n className: PropTypes.string,\n contentAlign: PropTypes.string\n};\n\nNekoSettings.defaultProps = {\n title: '',\n className: undefined,\n contentAlign: 'left'\n};\n\nexport { NekoSettings };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\n\nconst WindowBase = Styled.div`\n margin: 20px;\n padding: 14px;\n background-color: white;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n\n > * + * {\n /* Base margin between child elements */\n margin-top: 14px;\n }\n`;\n\nconst TitleBar = Styled(props => (\n props.children ? (\n <div className={props.className}>\n {props.children}\n </div>\n ) : null\n))`\n background-color: ${Theme.blue};\n color: white;\n`;\n\nconst StyledNekoWindow = props => (\n <WindowBase className='window'>\n <TitleBar>{props.title}</TitleBar>\n {props.children}\n </WindowBase>\n);\n\nconst NekoWindow = (props) => {\n return (<StyledNekoWindow {...props} />);\n}\n\nNekoWindow.propTypes = {\n title: PropTypes.string\n};\nNekoWindow.defaultProps = {\n title: undefined\n};\n\nexport { NekoWindow };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\n\nconst Wrapper = Styled.div`\n display: flex;\n flex-wrap: wrap;\n`;\n\nconst Column = Styled.div`\n flex: 1;\n padding: 32px 30px;\n\n .nui-block:not(:first-child) {\n margin-top: -20px;\n }\n\n .nui-block:last-child {\n margin-bottom: 0px;\n }\n\n &.minimal {\n padding: 0;\n }\n\n &.full {\n flex-basis: 100%;\n padding-bottom: 0;\n }\n\n & + .full {\n padding-bottom: 32px;\n padding-top: 0;\n }\n\n &:not(.full) + div:not(.full) {\n padding-left: 0;\n }\n`;\n\n/**\n * @oaram {string} className\n */\nconst StyledNekoWrapper = props => {\n return (\n <Wrapper>\n { props.children }\n </Wrapper>\n );\n};\n\nconst StyledNekoColumn = props => {\n const { full, minimal, ...rest } = props;\n let className = full ? 'full' : '';\n className += minimal ? ' minimal' : '';\n return (\n <Column className={className} {...rest}>{props.children}</Column>\n );\n};\n\nconst NekoWrapper = (props) => {\n return (<StyledNekoWrapper {...props} />);\n};\n\nconst NekoColumn = (props) => {\n return (<StyledNekoColumn {...props} />);\n};\n\nNekoWrapper.propTypes = {\n};\nNekoWrapper.defaultProps = {\n};\n\nNekoColumn.propTypes = {\n full: PropTypes.any\n};\nNekoColumn.defaultProps = {\n full: undefined\n};\n\nexport { NekoWrapper, NekoColumn };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { ProOnly } from '../label/ProOnly';\nimport { NekoSpinner } from '../misc/Spinner';\n\nimport { Icon } from '@iconify/react';\nimport checkboxBlankOutline from '@iconify/icons-mdi/checkbox-blank-outline';\nimport checkboxMarked from '@iconify/icons-mdi/checkbox-marked';\n\n/**\n * @param {string} id\n * @param {string} name\n * @param {bool} checked\n * @param {string} label\n * @param {string} description\n */\nconst StyledNekoCheckbox = Styled(props => {\n const { id, name, checked = false, onChange, label, description, isPro, disabled, requirePro = false, isBusy = false } = props;\n\n const showUpProOnly = requirePro && !isPro;\n const isDisabled = disabled || showUpProOnly;\n const disabledClass = isDisabled ? 'disabled' : '';\n\n const onClick = () => {\n if (isDisabled) {\n return;\n }\n if (!onChange) {\n console.log(`The onChange handler it not set for the NekoCheckbox.`, props);\n return;\n }\n onChange(!checked, id);\n };\n\n return (\n <div className={['nui-checkbox', props.className, disabledClass].join(' ')}\n onClick={(e) => e.stopPropagation() }>\n <input id={id} name={name} type=\"checkbox\" defaultChecked={false} disabled={isDisabled || isBusy} />\n <label htmlFor={id} onClick={onClick}>\n <div className=\"nui-checkbox-check-container\">\n {isBusy\n ? <div className='nui-checkbox-busy-container'><Icon icon={checkboxBlankOutline} width=\"30px\" height=\"30px\" \n color={Theme.blue} /><NekoSpinner type=\"circle\" size=\"16px\" style={{ position: 'absolute', top: '7px', left: '7px' }} /></div>\n : <Icon icon={checked ? checkboxMarked : checkboxBlankOutline} width=\"30px\" height=\"30px\" \n color={isDisabled ? Theme.disabledForm : Theme.blue} />\n }\n </div>\n <div className=\"nui-checkbox-inner-container\">\n <span className=\"label\">{label}<ProOnly className=\"inline\" show={showUpProOnly} /></span>\n {description ? <small className=\"description\">{description}</small> : null}\n </div>\n </label>\n </div>\n );\n})`\n font-family: ${Theme.fontFamily};\n user-select: none;\n\n &.disabled {\n color: ${Theme.disabledForm};\n\n label {\n cursor: default;\n }\n }\n\n input {\n display: none;\n }\n\n label {\n cursor: pointer;\n display: flex;\n }\n .nui-checkbox-check-container {\n display: flex;\n align-content: center;\n flex-basis: 30px;\n\n .nui-checkbox-busy-container {\n position: relative\n }\n }\n .nui-checkbox-inner-container {\n margin-left: 4px;\n\n .label {\n display: block;\n font-size: 14px;\n line-height: 28px;\n }\n \n .description {\n display: block;\n font-size: ${Theme.fontSizeSmall};\n line-height: 14px;\n color: ${Theme.darkGray};\n\n * {\n font-size: ${Theme.fontSizeSmall};\n line-height: inherit;\n margin: 0;\n }\n }\n }\n`;\n\nconst NekoCheckbox = (props) => {\n return (<StyledNekoCheckbox {...props} />);\n};\n\nNekoCheckbox.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n checked: PropTypes.bool,\n label: PropTypes.string,\n description: PropTypes.string,\n isPro: PropTypes.bool,\n requirePro: PropTypes.bool,\n isBusy: PropTypes.bool,\n};\n\nNekoCheckbox.defaultProps = {\n id: undefined,\n name: undefined,\n checked: false,\n label: undefined,\n description: undefined,\n isPro: false,\n requirePro: false,\n isBusy: false,\n};\n\nexport { NekoCheckbox };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\n\n/**\n * @param {string} name\n * @param {int} max=-1 Max number of checkboxes to be checked. Negative number means unlimited\n */\nconst StyledNekoCheckboxGroup = Styled(props => {\n const { name, max = -1, isPro = false } = props;\n\n // React.Children.toArray(props.children)\n\n // Modify child components (Checkboxes)\n const children = React.Children.map(props.children, child => {\n if (child.props.name) return child; // Do not modify if the child has its own name\n return React.cloneElement(child, {\n name: name, // Apply the group's name\n isPro\n });\n });\n\n return children;\n})`\n`;\n\nconst NekoCheckboxGroup = (props) => {\n return (<StyledNekoCheckboxGroup {...props} />);\n}\n\nNekoCheckboxGroup.propTypes = {\n name: PropTypes.string,\n mas: PropTypes.number,\n isPro: PropTypes.bool\n};\n\nNekoCheckboxGroup.defaultProps = {\n name: undefined,\n mas: -1,\n isPro: false\n}\n\nexport { NekoCheckboxGroup };\n","import React, { useState, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { NekoIcon } from '../misc/Icon';\n\n/**\n * @param {string} id\n * @param {string} name\n * @param {string} value\n * @param {string} description\n * @param {string} placeholder\n */\nconst StyledNekoInput = Styled(props => {\n const { id, name, value = '', description, placeholder = '', onEnter = null,\n readOnly = false, type = 'text', step = 1, min = 1, max = 999, maxLength : defaultMaxLength = undefined,\n className, style, natural = false, inputStyle, onChange: onCustomChange, onBlur: onCustomBlur, onReset, ...rest } = props;\n\n const [ newValue, setNewValue ] = useState(value);\n const isControlled = !!onCustomChange;\n const maxLength = defaultMaxLength ? defaultMaxLength : (type === 'number' ? 3 : undefined);\n\n useEffect(() => {\n if (!isControlled) {\n setNewValue(value);\n }\n }, [ value ]);\n\n const onChange = (e) => {\n if (isControlled) { \n onCustomChange(e.target.value, id);\n }\n else {\n setNewValue(e.target.value);\n }\n };\n\n const onKeyPress = (e) => {\n if (onEnter && event.key === 'Enter') {\n e.preventDefault();\n onEnter(e.target.value, id);\n }\n };\n\n const onBlur = (e) => {\n if (onCustomBlur && value !== e.target.value) {\n onCustomBlur(e.target.value, id);\n }\n };\n\n const classNames = `neko-input ${natural ? ' natural' : ''}`;\n\n return (\n <div className={[className].join(' ')} style={style}>\n <div style={{ position: 'relative' }}>\n {type === 'number'\n ? <input className={[classNames].join(' ')} id={id} name={name} value={isControlled ? value : newValue} type={type} \n step={step} min={min} max={max} maxLength={maxLength}\n autoComplete=\"off\"\n placeholder={placeholder} style={inputStyle}\n onChange={onChange} onKeyPress={onKeyPress} onBlur={onBlur} readOnly={readOnly} {...rest} />\n : <input className={[classNames].join(' ')} {...rest} id={id} name={name} value={isControlled ? value : newValue} type={type} \n spellCheck=\"false\"\n autoComplete=\"off\"\n placeholder={placeholder} style={inputStyle} maxLength={maxLength}\n onChange={onChange} onKeyPress={onKeyPress} onBlur={onBlur} readOnly={readOnly} {...rest} />\n }\n {!!value && !!onReset && <NekoIcon icon='close' width={24} style={{ position: 'absolute', top: '3px', right: '3px' }} color={Theme.blue} onClick={onReset} />}\n </div>\n {description && <p className=\"neko-input-description\">{description}</p>}\n </div>\n );\n})`\n .neko-input {\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n border: 2px solid ${Theme.blue};\n box-sizing: border-box;\n height: 30px;\n background: rgb(0 124 186 / 10%);\n padding: 0 10px;\n width: 100%;\n\n &.natural {\n border-color: gray;\n border-width: 1px;\n }\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.25);\n }\n\n :focus {\n background-color: white;\n }\n\n :read-only {\n background-color: ${Theme.gray};\n }\n }\n\n .neko-input-description {\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeSmall};\n color: ${Theme.darkGray};\n line-height: 14px;\n margin-top: 8px;\n margin-bottom: 0;\n }\n`;\n\nconst NekoInput = (props) => {\n return (<StyledNekoInput {...props} />);\n};\n\nNekoInput.propTypes = {\n id: PropTypes.string,\n type: PropTypes.oneOf(['number', 'text']),\n name: PropTypes.string,\n value: PropTypes.string,\n description: PropTypes.string,\n placeholder: PropTypes.string,\n onChange: PropTypes.func,\n onEnter: PropTypes.func,\n onBlur: PropTypes.func,\n readOnly: PropTypes.bool,\n step: PropTypes.number,\n min: PropTypes.number,\n max: PropTypes.number,\n maxLength: PropTypes.number,\n natural: PropTypes.bool,\n onReset: PropTypes.func,\n};\n\nNekoInput.defaultProps = {\n id: undefined,\n type: 'text',\n name: undefined,\n value: '',\n description: undefined,\n placeholder: '',\n onChange: undefined,\n onEnter: undefined,\n onBlur: undefined,\n readOnly: false,\n step: 1,\n min: 1,\n max: 999,\n maxLength: undefined,\n natural: false,\n onReset: undefined,\n};\n\nexport { NekoInput };\n","import React, { useState, useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\n\n/**\n * @param {string} id\n * @param {string} name\n * @param {string} value\n * @param {string} description\n * @param {string} placeholder\n */\nconst StyledNekoTextArea = Styled(props => {\n const { id, name, value = '', description, placeholder = '', avoidOnEnterWithShift = false, onEnter = null, readOnly = false, \n maxLength = null, className, style, textAreaStyle = {}, countable = false, ...rest } = props;\n\n const [ newValue, setNewValue ] = useState(value);\n const [ count, setCount ] = useState(0);\n const [ pressShift, setPressShift ] = useState(false);\n const isControlled = !!props.onChange;\n\n const keydownFunction = useCallback((e) => {\n setPressShift(e.shiftKey);\n }, []);\n const keyupFunction = useCallback(() => {\n setPressShift(false);\n }, []);\n\n useEffect(() => {\n document.addEventListener(\"keydown\", keydownFunction, false);\n document.addEventListener(\"keyup\", keyupFunction, false);\n\n return () => {\n document.removeEventListener(\"keydown\", keydownFunction, false);\n document.removeEventListener(\"keyup\", keyupFunction, false);\n }\n }, []);\n\n useEffect(() => {\n if (!isControlled) {\n setNewValue(value);\n }\n if (countable) {\n setCount(value.length);\n }\n }, [ value, countable ]);\n\n const onChange = useCallback((e) => {\n const newValue = maxLength ? e.target.value.substr(0, maxLength): e.target.value;\n if (isControlled) { \n props.onChange(newValue, id);\n }\n else {\n setNewValue(newValue, id);\n }\n }, [maxLength, props.onChange]);\n\n const onKeyPress = (e) => {\n if (onEnter && !e.shiftKey && e.key === 'Enter') {\n if (avoidOnEnterWithShift && pressShift) return;\n\n e.preventDefault();\n props.onEnter(e.target.value, id);\n }\n };\n\n const onBlur = (e) => {\n if (props.onBlur && value !== e.target.value) {\n props.onBlur(e.target.value, id);\n }\n };\n\n return (\n <div className={[className].join(' ')} style={style}>\n <div className=\"neko-textarea-container\">\n <textarea className=\"neko-textarea\" rows={6} {...rest} id={id} name={name} spellCheck=\"false\" placeholder={placeholder} \n onChange={onChange} onKeyPress={onKeyPress} onBlur={onBlur} readOnly={readOnly} style={textAreaStyle}\n value={isControlled ? value : newValue} />\n {countable && <p className=\"neko-textarea-count\">{count} / {maxLength} characters</p>}\n </div>\n {description && <p className=\"neko-input-description\">{description}</p>}\n </div>\n );\n})`\n .neko-textarea-container {\n position: relative;\n }\n .neko-textarea {\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n border: 2px solid ${Theme.blue};\n box-sizing: border-box;\n background: rgb(0 124 186 / 10%);\n padding: 5px 10px;\n width: 100%;\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.25);\n }\n\n :focus {\n background-color: white;\n }\n\n :read-only {\n background-color: ${Theme.gray};\n }\n }\n .neko-textarea-count {\n color: rgba(${Theme.blackRGB}, 0.4);\n font-size: 11px;\n margin: 0;\n position: absolute;\n right: 13px;\n bottom: 10px;\n }\n\n .neko-input-description {\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeSmall};\n line-height: 14px;\n margin-top: 8px;\n margin-bottom: 0;\n }\n`;\n\nconst NekoTextArea = (props) => {\n return (<StyledNekoTextArea {...props} />);\n};\n\nNekoTextArea.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.string,\n description: PropTypes.string,\n placeholder: PropTypes.string,\n onChange: PropTypes.func,\n onEnter: PropTypes.func,\n onBlur: PropTypes.func,\n readOnly: PropTypes.bool,\n avoidOnEnterWithShift: PropTypes.bool\n};\n\nNekoTextArea.defaultProps = {\n id: undefined,\n name: undefined,\n value: '',\n description: undefined,\n placeholder: '',\n onChange: undefined,\n onEnter: undefined,\n onBlur: undefined,\n readOnly: false,\n avoidOnEnterWithShift: false\n};\n\nexport { NekoTextArea };\n","import React, { useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { ProOnly } from '../label/ProOnly';\nimport { useOutsideClick } from '../hooks';\nimport { NekoSpinner } from '../misc/Spinner';\n\nimport { Icon } from '@iconify/react';\nimport checkboxBlankCircleOutline from '@iconify/icons-mdi/checkbox-blank-circle-outline';\nimport recordCircle from '@iconify/icons-mdi/record-circle';\nimport chevronDown from '@iconify/icons-mdi/chevron-down';\nimport chevronUp from '@iconify/icons-mdi/chevron-up';\nimport { NekoIcon } from '../misc/Icon';\nimport { NekoInput } from './Input';\n\nconst Select = Styled.div`\n border-radius: 8px;\n position: relative;\n user-select: none;\n cursor: pointer;\n\n &.show-options {\n background-color: ${Theme.blue};\n border-radius: 8px 8px 0 0;\n }\n\n &[data-is-disabled=true] {\n cursor: none;\n pointer-events: none;\n\n .nui-select-option {\n pointer-events: none;\n background: ${Theme.gray};\n border-color: ${Theme.gray};\n padding-right: 10px;\n }\n }\n`;\n\nconst SelectedOption = Styled.div`\n align-items: center;\n background-color: ${Theme.white};\n border: 2px solid ${Theme.blue};\n border-radius: 8px;\n display: flex;\n font-family: ${Theme.fontFamily};\n font-size: 14px;\n padding: 0 5px 0 10px;\n box-sizing: border-box;\n height: 30px;\n\n &.isBusy {\n padding-left: 5px;\n }\n\n .rightContent {\n align-items: center;\n display: flex;\n margin-left: auto;\n }\n`;\n\nconst Description = Styled.div`\n display: block;\n margin-top: 5px;\n font-size: ${Theme.fontSizeSmall};\n line-height: 14px;\n color: ${Theme.darkGray};\n\n * {\n font-size: ${Theme.fontSizeSmall};\n line-height: inherit;\n margin: 0;\n }\n`;\n\nconst Options = Styled.div`\n border-radius: 8px;\n overflow: hidden;\n padding-top: 28px;\n position: absolute;\n top: 0;\n z-index: 10;\n width: 100%;\n transition: all 0.2s ease-in;\n\n &.hidden {\n opacity: 0;\n }\n`;\n\nconst OptionsContainer = Styled.div`\n background-color: ${Theme.white};\n overflow-y: auto;\n max-height: 300px;\n\n &.nui-select-filter-container {\n background-color: ${Theme.blue};\n background: rgb(38 155 214);\n padding: 6px;\n margin-top: 2px;\n overflow: hidden;\n\n div {\n overflow: hidden;\n }\n }\n`;\n\n/**\n * @param {string} name\n */\nconst StyledNekoSelect = props => {\n const { id, name, value, scrolldown = false, isPro = false, onChange, className, disabled, isBusy = false,\n chevronIconSize = 24, textFiltering, ...rest } = props;\n\n const currentOption = React.Children.toArray(props.children)\n .find(child => child.props.value === value || child.props.checked)?.props;\n\n const label = currentOption?.label || 'Select';\n const description = currentOption?.description || props.description;\n const requirePro = currentOption?.requirePro || false;\n const icon = currentOption?.icon;\n const iconSize = currentOption?.iconSize;\n //const id = scrolldown ? props.id : currentOption?.id;\n\n const [ showOptions, toggleOptions ] = useState(false);\n const [ filterText, setFilterText ] = useState('');\n const componentRef = scrolldown ? useOutsideClick(() => { toggleOptions(false) }) : null;\n const showUpProOnly = requirePro && !isPro;\n\n const onOptionClick = (newValue) => {\n if (newValue !== value) {\n if (!onChange) {\n console.log(`The onChange handler it not set for this checkbox.`, props);\n return;\n }\n onChange(newValue, id);\n }\n if (scrolldown) {\n toggleOptions(false);\n }\n }\n\n const children = React.Children.map(props.children, child => {\n return React.cloneElement(child, {\n name: child.props.name || name,\n checked: child.props.value === value || child.props.checked,\n onClick: onOptionClick,\n scrolldown,\n isPro,\n disabled\n });\n });\n\n const filteredChildren = useMemo(() => {\n if (!filterText || !children.length) return children;\n\n const filtered = [];\n React.Children.forEach(children, child => {\n if (child.props.label.includes(filterText) || child.props.value.includes(filterText)) {\n filtered.push(child);\n }\n });\n return filtered;\n }, [children, filterText]);\n\n return scrolldown\n ? <Select id={id} ref={componentRef} {...rest}\n onClick={() => toggleOptions(!showOptions)}\n className={[ 'nui-select', className, showOptions ? 'show-options' : '']}\n childrenLength={children.length} data-is-disabled={disabled || isBusy}\n >\n <SelectedOption className={`nui-select-option ${isBusy ? 'isBusy' : ''}`}>\n {isBusy\n ? <>\n <NekoSpinner type=\"circle\" size=\"20px\" />\n </>\n : <>\n {icon && <NekoIcon icon={icon} width={iconSize} height={iconSize} style={{ marginRight: `${Math.max(iconSize - 15, 4)}px` }} />}\n <span className='nui-select-option-label'>{label}</span>\n <div className=\"rightContent\">\n {showUpProOnly && <ProOnly />}\n {!disabled && <Icon icon={showOptions ? chevronUp : chevronDown} width={chevronIconSize} />}\n </div>\n </>}\n </SelectedOption>\n {description && <Description>{description}</Description>}\n {showOptions &&\n <Options className={`nui-option ${showOptions ? '' : 'hidden'}`}>\n {textFiltering && \n <OptionsContainer className='nui-select-filter-container'>\n <NekoInput id=\"nui-select-filter\" value={filterText} placeholder=\"Search...\" onChange={(v) => setFilterText(v)}\n onClick={(e) => e.stopPropagation()} style={{ background: Theme.white }} inputStyle={{ margin: 0, borderRadius: 0 }} autoFocus />\n </OptionsContainer>\n }\n <OptionsContainer>{[filteredChildren]}</OptionsContainer>\n </Options>\n }\n </Select>\n : children;\n};\n\nconst RadioOption = Styled.div`\n font-family: ${Theme.fontFamily};\n margin-bottom: 6px;\n\n input {\n display: none;\n }\n\n label {\n cursor: pointer;\n display: flex;\n }\n\n .inner-container {\n margin-left: 4px;\n\n .label {\n display: block;\n font-size: 14px;\n line-height: 17px;\n padding-top: 4.5px;\n padding-bottom: 4px;\n }\n .description {\n display: block;\n font-size: ${Theme.fontSizeSmall};\n }\n }\n\n &.disabled {\n color: ${Theme.disabledForm};\n\n label {\n cursor: default;\n }\n }\n`;\n\nconst SelectOption = Styled.div`\n background-color: ${Theme.blue};\n cursor: pointer;\n font-family: ${Theme.fontFamily};\n\n &:hover {\n filter: brightness(80%);\n }\n\n input {\n display: none;\n }\n\n .option {\n align-items: center;\n color: ${Theme.white};\n display: flex;\n justify-content: space-between;\n font-family: ${Theme.fontFamily};\n font-size: 14px;\n line-height: 17px;\n padding: 8px 12px;\n\n .option-group {\n align-items: center;\n display: flex;\n }\n }\n\n &.disabled {\n background-color: rgb(224 156 54);\n pointer-events: none;\n\n .option {\n color: rgb(255 255 255 / 35%);\n }\n }\n`;\n\n/**\n * @param {string} id\n * @param {string} name\n * @param {string} value\n * @param {bool} checked\n * @param {string} label\n * @param {string} description\n * @param {function} onClick\n */\nconst StyledNekoOption = props => {\n const { id, name, value, checked, icon, label, description, onClick, scrolldown, isPro = false,\n requirePro = false, disabled, iconSize = 20 } = props;\n\n const showUpProOnly = requirePro && !isPro;\n const disabledClass = showUpProOnly || disabled ? 'disabled' : '';\n\n const radioOption = (\n <RadioOption className={`nui-select ${props.className || ''} ${disabledClass}`}>\n <input id={id} name={name} type=\"radio\" value={value} defaultChecked={checked} onClick={(e) => onClick(e.target.value)} disabled={showUpProOnly || disabled} />\n <label htmlFor={id}>\n <Icon icon={checked ? recordCircle : checkboxBlankCircleOutline} width=\"24px\" color={showUpProOnly ? Theme.disabledForm : Theme.blue}/>\n <div className=\"inner-container\">\n <span className=\"label\">{label}<ProOnly className=\"inline\" style={{ top: -1 }} show={showUpProOnly} /></span>\n {description ? <small className=\"description\">{description}</small> : null}\n </div>\n </label>\n </RadioOption>\n );\n\n const selectOption = (\n <SelectOption className={`nui-select ${props.className || ''} ${disabledClass}`}>\n <input id={id} name={name} type=\"radio\" value={value} defaultChecked={checked} disabled={showUpProOnly || disabled} />\n <div className=\"option\" onClick={() => onClick(value)}>\n <div className=\"option-group\">\n {icon && <NekoIcon icon={icon} width={iconSize} height={iconSize} style={{ marginRight: `${Math.max(iconSize - 11, 4)}px` }} />}\n {label}\n </div>\n <ProOnly show={showUpProOnly} />\n </div>\n </SelectOption>\n );\n\n return scrolldown ? selectOption : radioOption;\n};\n\n/**\n * The NekoSelect has 2 types, radio (default) or select.\n */\nconst NekoSelect = (props) => {\n return (<StyledNekoSelect {...props} />);\n}\n\nNekoSelect.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n description: PropTypes.string,\n scrolldown: PropTypes.bool,\n isPro: PropTypes.bool,\n onChange: PropTypes.func,\n isBusy: PropTypes.bool,\n chevronIconSize: PropTypes.number,\n textFiltering: PropTypes.bool,\n};\n\nNekoSelect.propTypes = {\n id: undefined,\n name: undefined,\n description: undefined,\n scrolldown: false,\n isPro: false,\n onChange: undefined,\n isBusy: false,\n chevronIconSize: 24,\n textFiltering: undefined,\n};\n\nconst NekoOption = (props) => {\n return (<StyledNekoOption {...props} />);\n}\n\nNekoOption.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.string,\n checked: PropTypes.bool,\n label: PropTypes.string,\n description: PropTypes.string,\n onClick: PropTypes.func,\n scrolldown: PropTypes.bool,\n isPro: PropTypes.bool,\n requirePro: PropTypes.bool,\n icon: PropTypes.string,\n iconSize: PropTypes.number,\n};\n\nNekoOption.defaultProps = {\n id: undefined,\n name: undefined,\n value: undefined,\n checked: false,\n label: undefined,\n description: undefined,\n onClick: undefined,\n scrolldown: false,\n isPro: false,\n requirePro: false,\n icon: undefined,\n iconSize: 20,\n};\n\nexport { NekoSelect, NekoOption };\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\n\nconst Form = Styled.div`\n label {\n display: block;\n margin-bottom: 3px;\n }\n\n .neko-input, .neko-textarea {\n margin-bottom: 5px;\n }\n`;\n\n/**\n * @param {string} id\n * @param {string} name\n * @param {string} value\n * @param {string} description\n * @param {string} placeholder\n */\nconst StyledNekoForm = (props) => {\n return (\n <Form>\n {props.children || null}\n </Form>\n );\n};\n\nconst NekoForm = (props) => {\n return (<StyledNekoForm {...props} />);\n};\n\nNekoForm.propTypes = {\n};\n\nNekoForm.defaultProps = {\n};\n\nexport { NekoForm };\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\n\n/**\n * @param {string} id\n * @param {string} name\n * @param {bool} checked\n * @param {string} label\n * @param {string} description\n */\nconst StyledNekoSwitch = Styled(props => {\n\n const { width = '100%', height = '20px', fontSize = Theme.fontSizeSmall, onValue,\n offValue, checked = false, onBackgroundColor, offBackgroundColor,\n onLabel, offLabel, onChange, disabled, ...rest } = props;\n\n const onToggle = useCallback((v) => {\n onChange(v.target.checked ? onValue : offValue);\n }, [onChange, onValue, offValue]);\n\n return (\n <label {...rest} data-is-disabled={disabled ? 'disabled' : ''}>\n <input type=\"checkbox\" onChange={onToggle} checked={checked} disabled={disabled} />\n <span className=\"nui-switch-slider\"></span>\n </label>\n );\n})`\n color: ${Theme.white};\n font-family: ${Theme.fontFamily};\n font-size: ${props => props.fontSize};\n position: relative;\n display: inline-block;\n width: ${props => props.width};\n height: ${props => props.height};\n\n &[data-is-disabled=disabled] {\n opacity: 0.4;\n\n .nui-switch-slider {\n cursor: auto;\n }\n }\n\n input {\n opacity: 0;\n width: 0;\n height: 0;\n border: 0;\n }\n\n .nui-switch-slider {\n background-color: ${props => props.offBackgroundColor};\n border-radius: ${props => props.height};\n align-items: center;\n cursor: pointer;\n display: inline-flex;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n transition: .4s;\n }\n\n .nui-switch-slider:before {\n border-radius: 50%;\n position: absolute;\n content: \"\";\n height: ${props => `calc(${props.height} - 8px)`};\n width: ${props => `calc(${props.height} - 8px)`};\n left: 4px;\n bottom: 4px;\n background-color: white;\n transition: .3s;\n }\n\n .nui-switch-slider:after {\n content: \"${props => props.offLabel}\";\n margin-left: auto;\n margin-right: ${props => `calc(${props.height} / 2)`};\n }\n\n input:checked + .nui-switch-slider {\n background-color: ${props => props.onBackgroundColor};\n }\n\n input:checked + .nui-switch-slider:before {\n transform: translateX(${props => `calc(${props.width} - ${props.height})` });\n }\n\n input:checked + .nui-switch-slider:after {\n content: \"${props => props.onLabel}\";\n margin-left: ${props => `calc(${props.height} / 2)`};\n margin-right: auto;\n }\n`;\n\nconst NekoSwitch = (props) => {\n return (<StyledNekoSwitch {...props} />);\n};\n\nNekoSwitch.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n fontSize : PropTypes.string,\n onValue: PropTypes.string,\n offValue: PropTypes.string,\n checked: PropTypes.bool,\n onBackgroundColor: PropTypes.string,\n offBackgroundColor: PropTypes.string,\n onLabel: PropTypes.string,\n offLabel: PropTypes.string\n};\n\nNekoSwitch.defaultProps = {\n width: '100%',\n height: '20px',\n fontSize: '${Theme.fontSizeSmall}',\n checked: false\n};\n\nexport { NekoSwitch };\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { Icon, IconifyIcon } from '@iconify/react';\nimport folderIcon from '@iconify/icons-mdi/folder';\nimport folderOpen from '@iconify/icons-mdi/folder-open';\nimport imageMultipleOutline from '@iconify/icons-mdi/image-multiple-outline';\nimport chevronRight from '@iconify/icons-mdi/chevron-right';\nimport chevronDown from '@iconify/icons-mdi/chevron-down';\nimport tagIcon from '@iconify/icons-mdi/tag';\n\nconst StyledNekoFinder = props => {\n\n const { chevron = true } = props;\n\n const children = React.Children.map(props.children, child => {\n return React.cloneElement(child, {\n chevron\n });\n });\n\n return (\n children\n );\n};\n\nconst FinderTitleContainer = Styled.div`\n align-items: center;\n display: flex;\n justify-content: space-between;\n margin-bottom: 5px;\n font-family: ${Theme.fontFamily};\n`;\n\nconst FinderTitle = Styled.div`\n align-items: center;\n display: flex;\n\n &.can-expand {\n cursor: pointer;\n }\n\n &.selected {\n color: #956DBE;\n }\n\n span {\n font-weight: normal;\n font-size: ${Theme.fontSizeText};\n margin: 0 0 0 8px;\n }\n`;\n\nconst ChevronSpace = Styled.div`\n height: 24px;\n width: 24px;\n`;\n\nconst FinderTitleIconDropZone = Styled.div`\n position: relative;\n width: 24px;\n height: 24px;\n`;\n\nconst FinderTitleIconDroppableArea = Styled.div`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 100;\n`;\n\nconst ItemContainer = Styled.div`\n border-left: 1px solid ${Theme.finderBorder};\n margin-left: 12px;\n padding-left: 6px;\n\n &.no-line {\n border-left: 0;\n padding-left: 12px;\n }\n\n &.no-chevron {\n border-left: 0;\n margin-left: 0;\n padding-left: 0;\n }\n`;\n\nconst StyledNekoFinderItem = props => {\n\n const defaultIcons = {\n gallery: imageMultipleOutline,\n tag: tagIcon\n }\n\n const { title, chevron, rightElement = null, rightElementStyle = { marginLeft: '5px' }, showRightElement = false, selected = false,\n draggable = false, onDragStart, onDragOver, onDragEnd, onDrop, isExpanded = false, dragging = false, rightAction = null,\n rightActionOnHover = null, onDragLeave, preventClose = false } = props;\n const isCustomizedIcon = !!props.icon;\n const hasChild = !!props.children;\n const [ expanded, setExpanded ] = useState(isExpanded);\n const [ icon, setIcon ] = useState(() => {\n if (typeof props.icon === 'string' && Object.keys(defaultIcons).includes(props.icon)) {\n return defaultIcons[props.icon];\n } else if (props.icon) {\n return props.icon;\n }\n return folderIcon\n });\n const isFolder = Boolean(icon);\n const [ showRightAction, setShowRightAction ] = useState(false);\n\n useEffect(() => {\n setExpanded(isExpanded);\n if (!isCustomizedIcon) {\n setIcon(isExpanded ? folderIcon : folderOpen);\n }\n }, [isExpanded]);\n\n const onClick = () => {\n if (props.onClick) {\n props.onClick();\n }\n }\n\n const onChevronClick = (e) => {\n e.stopPropagation();\n setExpanded(!expanded);\n }\n\n const children = React.Children.map(props.children, child => {\n return React.cloneElement(child, {\n chevron\n });\n });\n\n const iconColor = dragging || selected ? Theme.purple : (selected ? Theme.black : Theme.blue);\n\n return (\n <div>\n <FinderTitleContainer onMouseEnter={() => setShowRightAction(true)} onMouseLeave={() => setShowRightAction(false)}>\n <FinderTitle onClick={onClick} onMouseEnter={props.onMouseEnter} onMouseLeave={props.onMouseLeave} draggable={draggable} onDragStart={onDragStart} onDragOver={onDragOver} onDrop={onDrop} className={`${isFolder || children || props.onClick ? 'can-expand' : ''} ${selected ? 'selected' : ''}`} onDragLeave={onDragLeave} onDragEnd={onDragEnd}>\n {chevron\n ? (isFolder && hasChild)\n ? <Icon icon={expanded ? chevronDown : chevronRight} width=\"24\" height=\"24\" onClick={onChevronClick} />\n : <ChevronSpace></ChevronSpace>\n : null\n }\n <FinderTitleIconDropZone>\n <FinderTitleIconDroppableArea />\n <Icon icon={icon} color={iconColor} width=\"24\" height=\"24\" />\n </FinderTitleIconDropZone>\n <span>{title}</span>\n {showRightElement &&\n <div style={rightElementStyle}>{rightElement}</div>\n }\n </FinderTitle>\n {showRightAction ? (rightActionOnHover || rightAction) : rightAction}\n </FinderTitleContainer>\n {expanded && <ItemContainer className={`${isFolder ? '' : 'no-line'} ${chevron ? '' : 'no-chevron'}`}>{children}</ItemContainer>}\n </div>\n )\n}\n\nconst NekoFinder = (props) => {\n return (<StyledNekoFinder {...props} />);\n}\n\nNekoFinder.propTypes = {\n chevron: PropTypes.bool\n};\n\nNekoFinder.defaultProps = {\n chevron: true\n};\n\nconst NekoFinderItem = (props) => {\n return (<StyledNekoFinderItem {...props} />);\n}\n\nNekoFinderItem.propTypes = {\n icon: PropTypes.oneOfType([PropTypes.instanceOf(IconifyIcon), PropTypes.oneOf(['gallery'])]),\n title: PropTypes.string,\n isExpanded: PropTypes.bool\n};\n\nNekoFinderItem.defaultProps = {\n icon: folderIcon,\n title: undefined,\n isExpanded: false\n};\n\nexport { NekoFinder, NekoFinderItem };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\n\nconst Logo = Styled.div`\n display: flex;\n width: 100%;\n height: 100%;\n max-width: 128px;\n max-height: 128px;\n\n & > * {\n width: 100%;\n height: auto;\n object-fit: contain;\n }\n`;\n\nconst StyledNekoLogo = () => {\n return (\n <Logo>\n <svg width=\"54\" height=\"38\" viewBox=\"0 0 54 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.3663 9.40518C9.2981 -3.25522 -0.310763 2.76769 2.5163 9.40518C2.5163 9.40518 8.29338 29.9322 22.3059 26.3677C36.3184 22.8031 23.9038 19.1156 23.9038 19.1156C23.9038 19.1156 13.4345 22.0656 11.3663 9.40518Z\" fill=\"#724024\" stroke=\"black\" strokeWidth=\"2.1869\"/>\n <path d=\"M10.7517 8.0531C10.0142 10.7573 6.32673 12.1093 3.99131 11.2489C1.65589 10.3885 2.63923 13.8302 5.09756 14.9364C7.55589 16.0427 11.2434 14.1989 12.1038 12.4781C12.9642 10.7573 11.4892 5.34893 10.7517 8.0531Z\" fill=\"#B7782E\"/>\n <path d=\"M14.0705 17.2718C13.8246 19.2385 9.64547 19.976 7.55589 19.8531C5.46631 19.7302 9.76839 23.5406 11.3663 23.5406C12.9642 23.5406 17.3892 21.2052 17.1434 19.2385C16.8976 17.2718 14.3163 15.3052 14.0705 17.2718Z\" fill=\"#B7782E\"/>\n <path d=\"M17.5121 26.2448C18.6184 25.3843 20.9538 21.8198 19.8476 19.8531C18.7413 17.8864 22.4288 20.9593 22.4288 20.9593L21.6913 26.2448C21.6913 26.2448 16.4059 27.1052 17.5121 26.2448Z\" fill=\"#B7782E\"/>\n <path d=\"M10.7517 8.0531C10.0142 10.7573 6.32673 12.1093 3.99131 11.2489C1.65589 10.3885 2.63923 13.8302 5.09756 14.9364C7.55589 16.0427 11.2434 14.1989 12.1038 12.4781C12.9642 10.7573 11.4892 5.34893 10.7517 8.0531Z\" stroke=\"black\"/>\n <path d=\"M14.0705 17.2718C13.8246 19.2385 9.64547 19.976 7.55589 19.8531C5.46631 19.7302 9.76839 23.5406 11.3663 23.5406C12.9642 23.5406 17.3892 21.2052 17.1434 19.2385C16.8976 17.2718 14.3163 15.3052 14.0705 17.2718Z\" stroke=\"black\"/>\n <path d=\"M17.5121 26.2448C18.6184 25.3843 20.9538 21.8198 19.8476 19.8531C18.7413 17.8864 22.4288 20.9593 22.4288 20.9593L21.6913 26.2448C21.6913 26.2448 16.4059 27.1052 17.5121 26.2448Z\" stroke=\"black\"/>\n <path d=\"M11.3663 9.40518C9.2981 -3.25522 -0.310763 2.76769 2.5163 9.40518C2.5163 9.40518 8.29338 29.9322 22.3059 26.3677C36.3184 22.8031 23.658 19.4843 23.658 19.4843C23.658 19.4843 13.4345 22.0656 11.3663 9.40518Z\" stroke=\"black\" strokeWidth=\"2.1869\"/>\n <path d=\"M25.3788 9.89685C25.3788 9.89685 21.3225 35.0947 21.9371 35.7093C22.5517 36.3239 27.4684 36.3239 28.083 35.7093C28.6975 35.0947 29.6523 22.5858 30.2955 21.9427C30.9386 21.2995 35.7226 33.1281 36.81 33.1281C37.8975 33.1281 43.2303 21.3567 43.8163 21.9427C44.4023 22.5287 45.2913 35.0947 45.9059 35.7093C46.5204 36.3239 51.3142 36.3239 51.9288 35.7093C52.5434 35.0947 48.9788 9.89685 48.9788 9.89685H42.9559C42.9559 9.89685 37.7934 21.9427 36.81 21.9427C35.8267 21.9427 31.4017 9.89685 31.4017 9.89685H25.3788Z\" fill=\"white\" stroke=\"black\" strokeWidth=\"2.1869\"/>\n </svg>\n </Logo>\n );\n}\n\nconst NekoLogo = (props) => {\n return (<StyledNekoLogo {...props} />);\n}\n\nNekoLogo.propTypes = {\n};\n\nNekoLogo.defaultProps = {\n};\n\nexport { NekoLogo };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { lighten } from 'polished';\nimport { Icon, InlineIcon } from '@iconify/react';\nimport pauseIcon from '@iconify/icons-mdi/pause';\nimport stopIcon from '@iconify/icons-mdi/stop';\nimport playIcon from '@iconify/icons-mdi/play';\n\nimport Theme from '../common/NekoTheme';\n\n/**\n * @param {number} value Current progress\n * @param {number} max Max progress\n */\nconst StyledNekoProgress = Styled(props => {\n let { value = 0, max = 100, busy = false, status } = props;\n value = Math.min(value, max);\n let ratio = parseFloat(value) / parseFloat(max);\n\n return (\n <div className={props.className}>\n <ProgressCurrent ratio={ratio} busy={props.busy} status={status} />\n <div className=\"nui-progress-buttons\">\n {busy && props.onPauseClick && \n <div className='nui-progress-button pause' onClick={props.onPauseClick}>\n {props.paused ? <InlineIcon icon={playIcon} /> : <InlineIcon icon={pauseIcon} />}\n </div>\n }\n {busy && props.onStopClick && \n <div className='nui-progress-button stop' onClick={props.onStopClick}>\n <InlineIcon icon={stopIcon} />\n </div>\n }\n </div>\n </div>\n );\n})`\n position: relative;\n box-sizing: border-box;\n height: 30px;\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 0.06) 0%,\n rgba(0, 0, 0, 0.02) 50%,\n rgba(0, 0, 0, 0.10) 100%\n );\n border-radius: 12px;\n\n .nui-progress-buttons {\n position: absolute;\n height: 100%;\n right: 0px;\n display: flex;\n align-items: center;\n padding-right: 5px;\n\n .nui-progress-button {\n border: none;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-left: 2px;\n border-radius: 100%;\n color: white;\n padding: 2px;\n width: 18px;\n height: 18px;\n background-color: ${Theme.blue};\n\n &:hover {\n background-color: ${lighten(0.1, Theme.blue)};\n }\n\n &.stop {\n background: ${Theme.red};\n\n &:hover {\n background-color: ${lighten(0.1, Theme.red)};\n }\n }\n }\n }\n`;\n\n/**\n * @param {float} ratio Progress ratio (0.0 to 1.0)\n */\nconst ProgressCurrent = Styled(props => {\n const percent = !isNaN(props.ratio) ? parseInt(Math.round(props.ratio * 100)) : 0;\n const typeOfStatus = typeof props.status;\n let status = typeOfStatus !== 'undefined'\n ? (typeOfStatus === 'string') ? props.status : props.status(percent)\n : `${percent}%`;\n\n return (\n <div className={props.className} style={{ minWidth: 28, minWidth: percent + '%' }}>\n <div>{status}</div>\n </div>\n );\n})`\n box-sizing: border-box;\n position: absolute;\n overflow: hidden;\n top: 0; left: 0;\n height: 100%;\n background-color: ${Theme.progress};\n border-radius: 12px;\n text-align: center;\n padding: 0 10px;\n vertical-align: middle;\n color: white;\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n display: flex;\n justify-content: center;\n align-items: center;\n transition: min-width .2s ease-out;\n\n background-size: 30px 30px;\n background-image: linear-gradient(135deg, rgba(255, 255, 255, .15) 25%,\n transparent 25%,\n transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%,\n transparent 75%, transparent);\n animation: ${props => props.busy ? 'animate-stripes 1.6s linear infinite' : 'none'};\n\n @keyframes animate-stripes {\n 0% { background-position: 0 0; }\n 100% { background-position: 60px 0; }\n }\n`;\n\nconst NekoProgress = (props) => {\n return (<StyledNekoProgress {...props} />);\n}\n\nNekoProgress.propTypes = {\n value: PropTypes.number,\n max: PropTypes.number,\n busy: PropTypes.bool,\n paused: PropTypes.bool,\n onPauseClick: PropTypes.func,\n onStopClick: PropTypes.func,\n status: PropTypes.oneOf([PropTypes.string, PropTypes.func])\n};\n\nNekoProgress.defaultProps = {\n value: 0,\n max: 100,\n busy: false,\n paused: false,\n onPauseClick: undefined,\n onStopClick: undefined,\n status: undefined\n};\n\nexport { NekoProgress };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { NekoLogo } from './Logo';\nimport { NekoIcon } from './Icon';\nimport Theme from '../common/NekoTheme';\nimport contentSave from '@iconify/icons-mdi/content-save';\n\nconst HeaderBase = Styled.div`\n position: relative;\n color: white;\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n display: flex;\n height: 61px;\n overflow: hidden;\n align-items: center;\n padding: 15px 20px;\n background-color: ${Theme.header};\n display: flex;\n\n .nui-header-logo-container {\n width: 102px;\n height: 102px;\n padding: 20px;\n margin-right: 25px;\n background: rgba(${Theme.blackRGB}, 0.1);\n border-radius: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: rotate(-29.83deg);\n }\n\n .nui-header-title-container {\n flex-direction: column;\n display: flex;\n\n .nui-header-title {\n color: white;\n font-family: ${Theme.fontFamily};\n font-size: 23px;\n line-height: normal;\n margin: 0;\n }\n\n .nui-header-subtitle {\n color: white;\n font-family: ${Theme.fontFamily};\n line-height: normal;\n font-size: ${Theme.fontSizeText};\n }\n }\n\n .nui-header-extra-content {\n flex: 1;\n margin: 0 20px;\n }\n`;\n\nconst StyledNekoHeader = props => {\n\n const { title = 'NekoUI', subtitle = 'By Jordy Meow', children, saving = false } = props;\n\n return (\n <HeaderBase>\n <div className='nui-header-logo-container'>\n <NekoLogo />\n </div>\n <div className=\"nui-header-title-container\">\n <h1 className=\"nui-header-title\">{title}</h1>\n <small className=\"nui-header-subtitle\"><a target='_blank' href='https://meowapps.com' \n style={{ color: 'white', textDecoration: 'none' }}>{subtitle}</a></small>\n </div>\n <div className=\"nui-header-extra-content\">{children}</div>\n {saving && <NekoIcon icon={contentSave} width=\"36\" height=\"36\" />}\n </HeaderBase>\n );\n};\n\nconst NekoHeader = (props) => {\n return (<StyledNekoHeader {...props} />);\n}\n\nNekoHeader.propTypes = {\n title: PropTypes.string,\n subtitle: PropTypes.string,\n saving: PropTypes.bool\n};\n\nNekoHeader.defaultProps = {\n title: 'NekoUI',\n subtitle: 'By Jordy Meow',\n saving: false\n};\n\nexport { NekoHeader };\n","import React, { useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { Icon } from '@iconify/react';\nimport chevronDoubleLeft from '@iconify/icons-mdi/chevron-double-left';\nimport chevronLeft from '@iconify/icons-mdi/chevron-left';\nimport chevronDoubleRight from '@iconify/icons-mdi/chevron-double-right';\nimport chevronRight from '@iconify/icons-mdi/chevron-right';\nimport Theme from '../common/NekoTheme';\n\nconst PagingContainer = Styled.div`\n align-items: center;\n display: flex;\n user-select: none;\n\n .neko-paging-text {\n font-family: ${Theme.fontFamily};\n font-style: normal;\n font-weight: normal;\n font-size: 15px;\n line-height: 14px;\n margin-right: 15px;\n }\n\n .neko-paging-controller {\n box-sizing: border-box;\n height: 30px;\n align-items: center;\n background-color: rgba(${Theme.blueRGB}, 0.8);\n border-radius: 15px;\n display: flex;\n padding: 3px 5px;\n\n .nako-paging-controller-icon {\n background-color: ${Theme.white};\n border-radius: 100%;\n cursor: pointer;\n margin-right: 2px;\n height: 22px;\n width: 22px;\n box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.25);\n transition: transform 0.1s ease-in;\n box-sizing: border-box;\n\n :last-child {\n margin-right: 0;\n }\n\n &.disabled {\n color: ${Theme.darkGray};\n cursor: default;\n pointer-events: none;\n }\n\n &:hover {\n transform: scale(1.2) !important;\n z-index: 10;\n position: relative;\n }\n }\n\n .nako-paging-controller-text {\n color: ${Theme.white};\n font-family: ${Theme.fontFamily};\n font-style: normal;\n font-weight: normal;\n font-size: ${Theme.fontSizeText};\n margin: 0 40px;\n user-select: none;\n }\n\n span.neko-paging-current-page {\n cursor: pointer;\n text-decoration: underline;\n }\n\n input.neko-paging-current-page {\n width: 1.5rem;\n }\n }\n`;\n\n/**\n * @param {number} currentPage Current page\n * @param {number} limit Items per page\n */\nconst StyledNekoPaging = props => {\n const { currentPage, limit = 0, onClick, total = 0, onCurrentPageChanged, full, infinite = false, controllerText } = props;\n const isEditable = !!onCurrentPageChanged;\n const maxPage = useMemo(() => {\n if (infinite) return 0;\n return Math.ceil(total === 0 ? 1 : (limit > 0 ? (total / limit) : 1));\n }, [infinite, limit, total]);\n const prevIconClassName = `nako-paging-controller-icon ${!infinite && currentPage === 1 ? 'disabled' : ''}`;\n const nextIconClassName = `nako-paging-controller-icon ${!infinite && currentPage === maxPage ? 'disabled' : ''}`;\n const [ showCurrentPageInput, setShowCurrentPageInput ] = useState(false);\n\n const onClickHandle = (page) => {\n setShowCurrentPageInput(false);\n onClick(page);\n };\n\n const getValidPage = (page) => {\n if (infinite) return page;\n const numberPage = Number(page);\n return numberPage > maxPage ? maxPage : (numberPage < 1 ? 1 : numberPage);\n }\n\n const onBlur = (e) => {\n const page = e.target.value;\n\n if (!isNaN(page)) {\n onCurrentPageChanged(getValidPage(page));\n }\n setShowCurrentPageInput(false);\n }\n\n const onKeyPress = (e) => {\n if (event.key === 'Enter') {\n e.preventDefault();\n const page = e.target.value;\n if (!isNaN(page)) {\n onCurrentPageChanged(getValidPage(page));\n }\n setShowCurrentPageInput(false);\n }\n };\n\n const currentPageJsx = useMemo(() => {\n if (!showCurrentPageInput) {\n const onClick = () => {\n if (!isEditable) {\n return;\n }\n setShowCurrentPageInput(true);\n }\n return <span className={isEditable ? 'neko-paging-current-page' : ''} onClick={onClick}>{currentPage}</span>;\n }\n return <input autoFocus type=\"text\" className={isEditable ? 'neko-paging-current-page' : ''} \n defaultValue={currentPage} onBlur={onBlur} onKeyPress={onKeyPress} />;\n }, [currentPage, showCurrentPageInput, onCurrentPageChanged]);\n\n const onControllerClick = (e) => {\n if (!showCurrentPageInput || e.target !== e.currentTarget) return;\n\n setShowCurrentPageInput(false);\n }\n\n return (\n <PagingContainer>\n\n {!!total && <span className=\"neko-paging-text\">{total} result{total > 0 ? 's' : ''}</span>}\n\n <div className=\"neko-paging-controller\" onClick={onControllerClick}>\n {!infinite && <Icon icon={chevronDoubleLeft}\n className={prevIconClassName}\n onClick={() => onClickHandle(1)}\n />}\n <Icon icon={chevronLeft}\n className={prevIconClassName}\n onClick={() => onClickHandle(currentPage - 1)}\n />\n <p className=\"nako-paging-controller-text\" onClick={onControllerClick}>\n {!!controllerText\n ? controllerText\n : <>Page {currentPageJsx} of {maxPage}</>\n }\n </p>\n <Icon icon={chevronRight}\n className={nextIconClassName}\n onClick={() => onClickHandle(currentPage + 1)}\n />\n {!infinite && <Icon icon={chevronDoubleRight}\n className={nextIconClassName}\n onClick={() => onClickHandle(maxPage)}\n />}\n </div>\n\n </PagingContainer>\n );\n};\n\nconst NekoPaging = (props) => {\n return (<StyledNekoPaging {...props} />);\n};\n\nNekoPaging.propTypes = {\n currentPage: PropTypes.number,\n limit: PropTypes.number,\n total: PropTypes.number,\n onClick: PropTypes.func,\n lastPage: PropTypes.number,\n infinite: PropTypes.bool,\n controllerText: PropTypes.object\n};\n\nNekoPaging.defaultProps = {\n currentPage: undefined,\n limit: 0,\n total: 0,\n onClick: undefined,\n lastPage: undefined,\n infinite: false,\n controllerText: undefined\n};\n\nexport { NekoPaging };\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { NekoIcon } from '../misc/Icon';\n\nconst LinkContainer = Styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst Link = Styled.span`\n color: ${props => props.variant || Theme.blue};\n cursor: pointer;\n font-family: ${Theme.fontFamily};\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 17px;\n\n &.is-active {\n cursor: default;\n color: ${Theme.black};\n font-weight: bold;\n }\n\n &::after {\n content: \"|\";\n color: ${Theme.darkGray};\n padding: 0 4px;\n }\n\n &:last-child::after {\n content: none;\n }\n\n span {\n color: ${Theme.darkGray};\n font-weight: normal;\n margin-left: 4px;\n }\n`;\n\nconst StyledNekoQuickLinks = props => {\n const { id, value, onChange, busy = false, className } = props;\n\n const children = React.Children.map(props.children, (child, i) => {\n return React.cloneElement(child, {\n busy: busy,\n isActive: child.props.value === value,\n onClick: (newValue) => {\n if (newValue !== value) {\n onChange(newValue, id);\n }\n }\n });\n });\n\n return (\n <LinkContainer className={className}>{children}</LinkContainer>\n );\n};\n\nconst StyledNekoLink = props => {\n\n const { title, value = 0, count, onClick, busy, isActive, className, variant } = props;\n\n const variantValue = useMemo(() => {\n if (!variant) return undefined\n return Object.keys(Theme).includes(variant) ? Theme[variant] : variant\n }, [variant])\n\n return (\n <Link onClick={() => onClick(value)} className={`${isActive ? 'is-active' : ''} ${className}`} variant={variantValue}>\n {title}\n {count === null ? null :\n <span>(\n {busy ? \n <NekoIcon icon=\"replay\" spinning={true} width={12} containerStyle={{ display: 'inline' }} /> : \n count\n })\n </span>\n }\n </Link>\n );\n};\n\nconst NekoQuickLinks = (props) => {\n return (<StyledNekoQuickLinks {...props} />);\n};\n\nNekoQuickLinks.propTypes = {\n id: PropTypes.string,\n value: PropTypes.string,\n onChange: PropTypes.func\n};\n\nNekoQuickLinks.defaultProps = {\n id: undefined,\n value: undefined,\n onChange: undefined\n};\n\nconst NekoLink = (props) => {\n return (<StyledNekoLink {...props} />);\n};\n\nNekoLink.propTypes = {\n title: PropTypes.string,\n value: PropTypes.string,\n count: PropTypes.number,\n onClick: PropTypes.func,\n isActive: PropTypes.bool,\n variant: PropTypes.string,\n};\n\nNekoLink.defaultProps = {\n title: undefined,\n value: 'default',\n count: 0,\n onClick: undefined,\n isActive: false,\n variant: undefined,\n};\n\nexport { NekoQuickLinks, NekoLink };\n","import React, { useState, useCallback, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\n\nconst StyledSection = Styled.section`\n .mask {\n position: absolute;\n overflow: hidden;\n display: block;\n width: ${props => props.width}px;\n height: ${props => props.width / 2}px;\n }\n\n .semi-circle {\n position: relative;\n display: block;\n width: ${props => props.width}px;\n height: ${props => props.width / 2}px;\n background: linear-gradient(to right, #27b775 0%, #f3f32c 50%, #f71b1b 100%);\n border-radius: 50% 50% 50% 50% / 100% 100% 0% 0% ;\n\n &::before {\n content: \"\";\n position: absolute;\n bottom: 0;\n left: 50%;\n z-index: 2;\n display: block;\n width: 140px;\n height: 70px;\n margin-left: -70px;\n background: ${props => props.backgroundColor};\n border-radius: 50% 50% 50% 50% / 100% 100% 0% 0% ;\n } \n }\n\n .semi-circle--mask {\n position: absolute;\n top: 0;\n left: 0;\n width: ${props => props.width}px;\n height: ${props => props.width}px;\n background: transparent;\n transform-origin: center center;\n backface-visibility: hidden;\n transition: all .3s ease-in-out;\n\n &::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0%;\n z-index: 2;\n display: block;\n width: ${props => props.width + 2}px;\n height: ${props => props.width / 2 + 2}px;\n margin-top: -1px;\n margin-left: -1px;\n background: #5396c1d6;\n border-radius: 50% 50% 50% 50% / 100% 100% 0% 0% ;\n } \n }\n\n .gauge { \n width: ${props => props.width}px;\n height: ${props => props.width / 2}px;\n \n .semi-circle--mask {\n transform: rotate(${props => props.degrees}deg) translate3d(0,0,0);\n }\n }\n\n .child-container {\n position: absolute;\n font-size: 16px;\n display: flex;\n width: ${props => props.width + 2}px;\n height: ${props => props.width / 2}px;\n z-index: 10;\n\n .spacing {\n flex: auto;\n }\n\n .child {\n color: white;\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n }\n`;\n\nconst NekoGauge = ({ value = 1000, min = 0, max = 2500, width = 200, background = '#007cba', children }) => {\n const degrees = 180 * (value <= max ? value : max) / max;\n return (\n <StyledSection backgroundColor={background} degrees={degrees} width={width}>\n <div class=\"gauge\">\n <div class=\"mask\">\n <div class=\"semi-circle\"></div>\n <div class=\"semi-circle--mask\"></div>\n </div>\n <div class=\"child-container\">\n <div class=\"child\">\n <div class=\"spacing\" />\n {children}\n </div>\n </div>\n </div>\n </StyledSection>\n )\n};\n\nNekoGauge.propTypes = {\n value : PropTypes.number,\n min : PropTypes.number,\n max : PropTypes.number,\n width : PropTypes.number,\n background : PropTypes.string,\n};\n\nNekoGauge.defaultProps = {\n value : 1000,\n min : 0,\n max : 2500,\n width : 200,\n background : '#007cba',\n};\n\nexport { NekoGauge };\n","import Styled from 'styled-components';\n\nconst NekoMessageDanger = Styled.p`\n background: #ba341e;\n padding: 20px;\n color: white;\n border-radius: 10px;\n font-size: 15px;\n\n a {\n color: white;\n font-weight: bold;\n }\n`;\n\nconst NekoMessageSuccess = Styled.p`\n background: #1eba96;\n padding: 20px;\n color: white;\n border-radius: 10px;\n font-size: 15px;\n text-align: center;\n\n a {\n color: white;\n font-weight: bold;\n }\n`;\n\nexport { NekoMessageDanger, NekoMessageSuccess };","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { NekoIcon, postFetch } from '../../index';\n\nconst StyledUpload = Styled.div`\n box-sizing: border-box;\n background: #C4C4C4;\n color: rgb(0 0 0 / 60%);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n transition: all 0.25s ease;\n\n &[data-is-disabled=true] {\n svg {\n opacity: 0.7;\n }\n }\n\n div {\n transition: all 0.5s ease;\n transform: scale(1.5);\n pointer-events: none;\n max-width: 100%;\n }\n\n &:hover {\n cursor: pointer;\n }\n\n &.dropping {\n background: #a4d5ff;\n\n div {\n transform: scale(2);\n }\n }\n`;\n\nconst NekoUpload = (props) => {\n\n const { multiple, width = '100%', height = '100%', iconSize = 48, iconColor = '#A9A9A9', onSuccess = () => {}, \n onFailure = () => {}, style = {}, apiUrl, apiConfig, onClick, disabled, ...rest } = props;\n const [ inDropZone, setInDropZone ] = useState(false);\n const [ inputId, setInputId ] = useState(Math.floor(Math.random() * 100000000));\n const inputEl = useRef(null);\n const divEl = useRef(null);\n const [ busy, setBusy ] = useState(false);\n\n useEffect(() => {\n if (!divEl) return;\n\n divEl.current.style.pointerEvents = busy ? 'none' : 'auto';\n }, [divEl, busy])\n\n const uploadFile = async (files) => {\n setBusy(true);\n const upload = async (file) => {\n apiConfig.file = file;\n return await postFetch(apiUrl, apiConfig);\n }\n const response = await Promise.all(files.map(async (file) => {\n return await upload(file);\n }))\n const successResponses = response.filter(v => v.success);\n const failerResponses = response.filter(v => !v.success);\n if (successResponses.length) {\n onSuccess(multiple ? successResponses : successResponses[0]);\n }\n if (failerResponses.length) {\n onFailure(multiple ? failerResponses : failerResponses[0]);\n }\n setBusy(false);\n }\n\n const onDragOver = (e) => {\n e.preventDefault();\n e.stopPropagation();\n }\n\n const onDragEnter = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setInDropZone(true);\n }\n\n const onDragLeave = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setInDropZone(false);\n }\n\n const onDrop = (e) => {\n const files = [...e.dataTransfer.files];\n uploadFiles(files, e);\n }\n\n const onUploaderClick = () => {\n if (onClick) {\n onClick();\n return;\n }\n inputEl.current.click();\n }\n\n const onInputUpload = (e) => {\n const files = [...e.target.files];\n uploadFiles(files, e);\n }\n\n const uploadFiles = (files, e) => {\n e.preventDefault();\n e.stopPropagation();\n setInDropZone(false);\n console.log(files);\n uploadFile(files);\n }\n\n return (\n <div ref={divEl}>\n <input type=\"file\" id={inputId} accept=\"image/*\" ref={inputEl} onChange={onInputUpload} style={{ display: 'none' }} disabled={disabled} multiple={multiple} />\n <StyledUpload onClick={onUploaderClick} style={{ ...style, width, height }} className={inDropZone ? 'dropping' : ''} \n onDragOver={onDragOver} onDragEnter={onDragEnter} onDragLeave={onDragLeave} onDrop={onDrop} data-is-disabled={disabled} {...rest}>\n <NekoIcon width={iconSize} height={iconSize} icon='upload' spinning={busy} color={iconColor}\n onDragOver={onDragOver} onDragEnter={onDragEnter} />\n </StyledUpload>\n </div>\n );\n}\n\nNekoUpload.propTypes = {\n width : PropTypes.string,\n height : PropTypes.string,\n onSuccess : PropTypes.func,\n onFailure : PropTypes.func,\n style : PropTypes.object,\n apiUrl : PropTypes.string,\n apiConfig : PropTypes.object\n};\n\nNekoUpload.defaultProps = {\n width : '100%',\n height : '100%',\n onSuccess : () => {},\n onFailure : () => {},\n style : {}\n};\n\nexport { NekoUpload };\n","import React, { useState, forwardRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { NekoBusyOverlay, postFetch } from '../../index';\n\nconst StyledUploadDropArea = Styled.div`\n &.dropping {\n background: #a4d5ff;\n }\n`;\n\nconst NekoUploadDropArea = forwardRef((props, ref) => {\n\n const { onSuccess = () => {}, onFailure = () => {}, apiUrl, apiConfig, className, disabled = false, children, multiple, ...rest } = props;\n const [ inDropZone, setInDropZone ] = useState(false);\n const [ busy, setBusy ] = useState(false);\n\n const uploadFile = useCallback(async (files) => {\n setBusy(true);\n const upload = async (file) => {\n apiConfig.file = file;\n return await postFetch(apiUrl, apiConfig);\n }\n const response = await Promise.all(files.map(async (file) => {\n return await upload(file);\n }))\n const successResponses = response.filter(v => v.success);\n const failerResponses = response.filter(v => !v.success);\n if (successResponses.length) {\n onSuccess(multiple ? successResponses : successResponses[0]);\n }\n if (failerResponses.length) {\n onFailure(multiple ? failerResponses : failerResponses[0]);\n }\n setBusy(false);\n }, [apiConfig, onSuccess, onFailure]);\n\n const uploadFiles = useCallback((files, e) => {\n e.preventDefault();\n e.stopPropagation();\n setInDropZone(false);\n // console.log(files);\n uploadFile(files);\n }, [uploadFile]);\n\n const onDragOver = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n const onDragEnter = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n if (disabled) return;\n setInDropZone(true);\n }, [disabled]);\n\n const onDragLeave = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n if (disabled) return;\n setInDropZone(false);\n }, [disabled]);\n\n const onDrop = useCallback((e) => {\n if (disabled) return;\n const files = [...e.dataTransfer.files];\n uploadFiles(files, e);\n }, [disabled, uploadFiles]);\n\n const onInputUpload = useCallback((e) => {\n const files = [...e.target.files];\n uploadFiles(files, e);\n }, [uploadFiles]);\n\n return (\n <NekoBusyOverlay busy={busy}>\n <input type=\"file\" accept=\"image/*\" ref={ref} onChange={onInputUpload} style={{ display: 'none' }} multiple={multiple} />\n <StyledUploadDropArea className={`${className ? className : ''} ${inDropZone ? 'dropping' : ''}`}\n onDragOver={onDragOver} onDragEnter={onDragEnter} onDragLeave={onDragLeave} onDrop={onDrop} {...rest}>\n {children}\n </StyledUploadDropArea>\n </NekoBusyOverlay>\n );\n});\n\nNekoUploadDropArea.propTypes = {\n ref: PropTypes.ref,\n onSuccess : PropTypes.func,\n onFailure : PropTypes.func,\n apiUrl : PropTypes.string,\n apiConfig : PropTypes.object,\n disabled: PropTypes.bool\n};\n\nNekoUploadDropArea.defaultProps = {\n onSuccess : () => {},\n onFailure : () => {},\n disabled : false\n};\n\nexport { NekoUploadDropArea };\n","import { useState, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\n//import { Icon, InlineIcon, IconifyIcon } from '@iconify/react';\n//import folderIcon from '@iconify/icons-mdi/folder';\n\nconst Days = {\n Monday: 1,\n Tuesday: 2,\n Wednesday: 3,\n Thursday: 4,\n Friday: 5,\n Saturday: 6,\n Sunday: 7\n}\n\nconst StyledNekoCalendar = Styled.div`\n display: flex;\n flex-direction: column;\n border-radius: 5px;\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeSmall};\n`;\n\nconst CalendarHeaders = Styled.div`\n display: flex;\n width: 100%;\n padding: 10px 0px;\n color: white;\n background: ${Theme.primary};\n border-radius: 5px 5px 0px 0px;\n\n div {\n width: calc(100% / 7);\n text-align: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`;\n\nconst CalendarContent = Styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst WeekContainer = Styled.div`\n display: flex;\n`;\n\nconst DayContainer = Styled.div`\n background: purple;\n width: calc(100% / 7);\n background: ${Theme.white};;\n padding: 3px;\n border-bottom: 1px solid ${Theme.lightGray};\n border-right: 1px solid ${Theme.lightGray};\n position: relative;\n transition: background-color 150ms linear;\n box-sizing: border-box;\n\n &:first-child {\n border-left: 1px solid ${Theme.lightGray};\n }\n\n &:last-child {\n border-right: 1px solid ${Theme.lightGray};\n }\n\n .day {\n text-align: right;\n color: ${Theme.black};\n margin-bottom: 5px;\n }\n\n &.highlighted {\n background: #ffe8bc;\n }\n\n &.today .day {\n font-weight: bold;\n text-decoration: underline;\n }\n\n .gray-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: ${Theme.lightGray};\n opacity: 0.8;\n }\n\n .event {\n margin-bottom: 2px;\n }\n\n .event:last-child {\n margin-bottom: 0px;\n }\n`;\n\nfunction getFirstWeekDayForMonth(month, year, weekDay = Days.Monday) {\n const date = new Date(year, month);\n while (date.getDay() !== weekDay) {\n date.setDate(date.getDate() - 1);\n }\n return date;\n}\n\nfunction numberOfDaysBetween(startDate, endDate) {\n const start = new Date(startDate);\n const end = new Date(endDate);\n let count = 0;\n while (start <= end) {\n count++;\n start.setDate(start.getDate() + 1);\n }\n return count - 1;\n}\n\nfunction splitArrayInChunks(array, chunkSize) {\n const chunks = [];\n let i = 0;\n while (i < array.length) {\n chunks.push(array.slice(i, i += chunkSize));\n }\n return chunks;\n}\n\nconst NekoCalendar = (props) => {\n const { month = new Date().getMonth(), year = new Date().getFullYear(),\n onEventClicked = () => { console.log(\"[NekoCalendar] onEventClicked not handled.\"); },\n onEventMoved = () => { console.log(\"[NekoCalendar] onEventMoved not handled.\"); },\n eventBuilder = () => \"YOOO\", events, ...rest } = props;\n const [draggedEvent, setDraggedEvent] = useState();\n const [highlightedDay, setHighlightedDay] = useState();\n\n let { disableDaysBefore = null } = props;\n disableDaysBefore = disableDaysBefore ? disableDaysBefore :\n new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate());\n\n const weeks = useMemo(() => {\n const days = [];\n const currentDate = getFirstWeekDayForMonth(month, year, Days.Monday);\n const totalCalendarDays = numberOfDaysBetween(currentDate, new Date(year, month, 1)) < 5 ? 34 : 41;\n const lastDate = new Date(currentDate).setDate(currentDate.getDate() + totalCalendarDays)\n while (currentDate <= lastDate) {\n days.push(new Date(currentDate));\n currentDate.setDate(currentDate.getDate() + 1);\n }\n return splitArrayInChunks(days, 7);\n }, [month, year]);\n\n const isDayToday = (date) => {\n const today = new Date();\n return date.getFullYear() === today.getFullYear() &&\n date.getMonth() === today.getMonth() &&\n date.getDate() === today.getDate();\n }\n\n const isSameDay = (date1, date2) => {\n return date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate();\n }\n\n return (\n <StyledNekoCalendar {...rest}>\n\n <CalendarHeaders>\n {Object.keys(Days).map(day => (\n <div key={day}>{day}</div>\n ))}\n </CalendarHeaders>\n\n <CalendarContent>\n {weeks.map(week => \n <WeekContainer key={week}>\n {week.map(day => {\n const isCurrentMonth = day.getMonth() == month;\n const isDisabled = !isCurrentMonth || day < disableDaysBefore;\n const className = (isDisabled ? 'disabled ' : '') + (isDayToday(day) ? 'today' : '')\n + (day === highlightedDay ? 'highlighted' : '');\n const filterEvents = events.filter(event => isCurrentMonth && event.date.getDate() === day.getDate());\n return (\n <DayContainer className={className} key={day.getTime()}\n onDragOver={(e) => { \n if ( isDisabled || isSameDay(day, draggedEvent.date) ) { \n return false;\n };\n e.preventDefault();\n setHighlightedDay(day);\n return true;\n }}\n onDragLeave={() => setHighlightedDay(null)}\n onDrop={() => { onEventMoved(day, draggedEvent); setHighlightedDay(null) }}>\n <div className=\"day\">{day.getDate()}</div>\n {filterEvents.map(event => \n <div className=\"event\" key={event.key} draggable={event.draggable} \n onClick={() => onEventClicked(event)}\n onDragStart={(e) => setDraggedEvent(event)}>\n {eventBuilder({ ...event })}\n </div>)\n }\n {isDisabled && <div className=\"gray-overlay\" />}\n </DayContainer>\n );\n })}\n </WeekContainer>\n )}\n </CalendarContent>\n\n </StyledNekoCalendar>\n );\n}\n\nNekoCalendar.propTypes = {\n month: PropTypes.number,\n year: PropTypes.number,\n disableDaysBefore: PropTypes.instanceOf(Date),\n disableDaysAfter: PropTypes.instanceOf(Date),\n eventBuilder: PropTypes.func,\n events: PropTypes.array,\n onEventClicked: PropTypes.func,\n onEventMoved: PropTypes.func,\n};\n\nNekoCalendar.defaultProps = {\n month: (new Date).getMonth(),\n year: (new Date).getFullYear(),\n disableDaysBefore: null,\n disableDaysAfter: null,\n eventBuilder: () => \"UI for this event\",\n events: [{ key: 'A1', date: new Date() }, { key: 'A2', date: new Date() }],\n onEventClicked: (event) => { console.log(\"An event was clicked\", event); },\n onEventMoved: (day, event) => { console.log(\"An event was moved to another day\", event, day); },\n};\n\nexport { NekoCalendar };","import React, { useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport Modal from 'react-modal';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { NekoButton } from '../button/Button';\n\nconst NekoModalParent = Styled.div`\n\n .ReactModal__Overlay {\n z-index: 100;\n display: flex;\n justify-content: center;\n flex-direction: column;\n align-items: center;\n background: ${Theme.overlay} !important;\n }\n .ReactModal__Overlay {\n opacity: 0;\n transition: opacity 200ms ease-in-out;\n }\n .ReactModal__Overlay--after-open {\n opacity: 1;\n }\n .ReactModal__Overlay--before-close {\n opacity: 0;\n }\n .ReactModal__Overlay .neko-modal {\n opacity: 0;\n transform: scale(0.85);\n transition: all 200ms ease-in-out;\n }\n .ReactModal__Overlay--after-open .neko-modal {\n transform: scale(1);\n opacity: 1;\n }\n .ReactModal__Overlay--before-close .neko-modal {\n transform: scale(0.85);\n opacity: 0;\n }\n .neko-modal {\n background: ${Theme.white};\n position: relative;\n box-shadow: 2px 2px 15px 2px rgba(0, 0, 0, 0.8);\n outline: none;\n padding: 15px;\n max-width: 820px;\n }\n`;\n\nconst NekoModalContent = Styled.div`\n width: ${props => props.width ?? '518px'};\n\n p {\n margin: 0;\n }\n .title {\n font-family: ${Theme.fontFamily};\n font-style: normal;\n font-weight: normal;\n font-size: 18px;\n line-height: 22px;\n }\n .content-container {\n display: flex;\n margin-top: 15px;\n\n .thumbnail {\n margin-right: 15px;\n width: 240px;\n overflow: hidden;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n }\n .content {\n flex: auto;\n font-family: ${Theme.fontFamily};\n font-style: normal;\n font-weight: normal;\n font-size: ${Theme.fontSizeText};\n line-height: 14px;\n width: 100%;\n }\n }\n .button-group {\n align-items: center;\n display: flex;\n justify-content: flex-end;\n margin-top: 15px;\n font-size: inherit;\n white-space: normal;\n }\n`;\n\nconst StyledNekoModal = (props) => {\n\n const {\n id = 'neko-modal-parent',\n isOpen,\n children,\n className,\n style,\n ok = 'OK',\n cancel = 'Cancel',\n customButtons = null,\n customButtonsPosition = 'right',\n title = '',\n content = '',\n contentWidth,\n onOkClick,\n onCancelClick,\n okOnEnter = false,\n thumbnail,\n ...rest\n } = props;\n const customClassName = style ? 'custom-modal' : '';\n const showCustomButtons = customButtons !== null;\n\n const keyUpHandler = useCallback(({ key }) => {\n if (key === 'Enter') {\n onOkClick();\n }\n }, [onOkClick]);\n\n useEffect(() => {\n if (!okOnEnter || !isOpen) return;\n\n window.addEventListener(\"keyup\", keyUpHandler);\n return () => {\n window.removeEventListener(\"keyup\", keyUpHandler);\n };\n }, [isOpen, keyUpHandler]);\n\n const modalContent = children\n ? children\n : <NekoModalContent width={contentWidth}>\n {title && <p className=\"title\">{title}</p>}\n <div className=\"content-container\">\n {thumbnail && <div className=\"thumbnail\">{thumbnail}</div>}\n {content && <p className=\"content\">{content}</p>}\n </div>\n <div className=\"button-group\">\n {showCustomButtons && customButtonsPosition === 'left' && customButtons}\n {onCancelClick && <NekoButton className=\"danger\" onClick={onCancelClick}>{cancel}</NekoButton>}\n {onOkClick && <NekoButton onClick={onOkClick}>{ok}</NekoButton>}\n {showCustomButtons && customButtonsPosition === 'right' && customButtons}\n </div>\n </NekoModalContent>;\n\n return (\n <React.Fragment>\n <NekoModalParent id={id} />\n <Modal ariaHideApp={false}\n parentSelector={() => document.getElementById(id)}\n closeTimeoutMS={200}\n className={`neko-modal ${className || ''} ${customClassName}`}\n isOpen={isOpen}\n {...rest}\n >\n {modalContent}\n </Modal>\n </React.Fragment>\n );\n};\n\nconst NekoModal = (props) => {\n return (<StyledNekoModal {...props} />);\n};\n\nNekoModal.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n ok: PropTypes.string,\n cancel: PropTypes.string,\n title: PropTypes.string,\n content: PropTypes.string,\n contentWidth: PropTypes.string,\n onOkClick: PropTypes.func,\n onCancelClick: PropTypes.func,\n customButtons: PropTypes.object,\n okOnEnter: PropTypes.bool,\n thumbnail: PropTypes.element\n};\n\nNekoModal.defaultProps = {\n className: undefined,\n style: undefined,\n ok: 'OK',\n cancel: 'Cancel',\n title: '',\n content: '',\n contentWidth: undefined,\n onOkClick: undefined,\n onCancelClick: undefined,\n customButtons: null,\n okOnEnter: false,\n thumbnail: undefined\n};\n\nexport { NekoModal };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport { Icon } from '@iconify/react';\nimport chevronDown from '@iconify/icons-mdi/chevron-down';\nimport chevronUp from '@iconify/icons-mdi/chevron-up';\nimport checkboxBlankOutline from '@iconify/icons-mdi/checkbox-blank-outline';\nimport checkboxMarked from '@iconify/icons-mdi/checkbox-marked';\nimport checkboxMultipleMarked from '@iconify/icons-mdi/checkbox-multiple-marked';\n\nimport Theme from '../common/NekoTheme';\nimport NekoBusyOverlay from '../common/NekoBusyOverlay';\n\nconst Table = Styled.table`\n font-family: ${Theme.fontFamily};\n border-spacing: 0;\n width: 100%;\n word-break: break-all;\n\n th, td {\n margin: 0;\n padding: 5px;\n border-bottom: 1px solid rgba(${Theme.blackRGB}, 0.1);\n border-right: 1px solid rgba(${Theme.blackRGB}, 0.1);\n\n a {\n text-decoration: none;\n }\n\n :last-child {\n border-right: 0;\n }\n }\n\n &.nekotable-raw {\n th, td {\n border: 0;\n }\n }\n\n th, tfoot td {\n height: 30px;\n background-color: ${Theme.blue};\n color: ${Theme.white};\n font-style: normal;\n font-weight: normal;\n font-size: ${Theme.fontSizeText};\n line-height: 16px;\n text-align: left;\n\n div {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n &.sortable {\n cursor: pointer;\n }\n }\n }\n\n thead tr th:first-child {\n border-top-left-radius: 10px;\n }\n\n thead tr th:last-child {\n border-top-right-radius: 10px;\n }\n\n tfoot tr th:first-child {\n border-bottom-left-radius: 10px;\n }\n\n tfoot tr th:last-child {\n border-bottom-right-radius: 10px;\n }\n\n &.nekotable-raw {\n th {\n font-weight: bold;\n }\n th, tfoot td {\n background-color: ${Theme.white};\n color: ${Theme.black};\n\n div {\n justify-content: normal;\n }\n }\n }\n\n tbody {\n background-color: ${Theme.white};\n \n tr {\n :nth-child(even) {\n background-color: ${Theme.tableGray};\n }\n &.selected {\n background-color: rgba(${Theme.blueRGB}, 0.8);\n color: ${Theme.white};\n\n a {\n color: #81e8ff;\n }\n }\n }\n img {\n vertical-align: bottom;\n }\n }\n\n &.nekotable-raw {\n tbody {\n tr {\n :nth-child(even) {\n background-color: ${Theme.white};\n }\n &.selected {\n background-color: ${Theme.white};\n color: ${Theme.black};\n }\n }\n }\n }\n\n tfoot tr:last-child {\n td {\n border-bottom: 0;\n }\n }\n\n .table-checkbox-cell {\n width: 35px;\n text-align: center;\n\n svg {\n padding: 5px;\n cursor: pointer;\n }\n }\n`;\n\nconst TableCheckBox = (props) => {\n const { checked, intermediate = false, onSelect = () => {}, onUnselect = () => {}, ...rest } = props;\n\n const onClick = (e) => { \n checked ? onUnselect(e) : onSelect(e);\n };\n\n return (\n <Icon icon={intermediate ? checkboxMultipleMarked : (checked ? checkboxMarked : checkboxBlankOutline)}\n width=\"24px\" height=\"24px\" onClick={onClick} />\n );\n};\n\nconst alignToJustifyContent = {\n left: 'start',\n center: 'center',\n right: 'end',\n};\n\n/**\n * @param {string} className\n * @param {string|object} icon\n * @param {bool} disabled\n * @param {function} onClick\n */\nconst StyledNekoTable = (props) => {\n const { columns, data, busy = false, onSelect, onUnselect, selectedItems, sort, onSortChange, variant = 'default', sortIconColor = undefined, emptyMessage = \"Empty.\" } = props;\n const columnsCount = columns.length + (onSelect ? 1 : 0);\n\n const getColumnStyle = (column) => {\n let style = {};\n if (column.align) {\n style = { textAlign: column.align, justifyContent: alignToJustifyContent[column.align] };\n }\n if (column.width) {\n style = { ...style, width: column.width };\n }\n if (column.style) {\n style = { ...style, ...column.style };\n }\n return style;\n }\n\n const rows = data.map(v => {\n const cells = columns.map(c => {\n return { value: v[c.accessor], style: getColumnStyle(c) }\n });\n return { id: v.id, cells };\n });\n\n const currentRowsIds = rows.map(x => x.id);\n const currentSelectedRows = currentRowsIds.filter(x => selectedItems.includes(x));\n const areAllRowsSelected = currentSelectedRows.length === currentRowsIds.length;\n const isIntermediate = !areAllRowsSelected && selectedItems.length > 0;\n\n const hiddenColumnIndexes = columns.reduce(function(a, e, i) {\n if (e.visible === false)\n a.push(i);\n return a;\n }, []);\n\n const headersFooters = <tr>\n {onSelect && \n <th className='table-checkbox-cell'>\n <TableCheckBox checked={areAllRowsSelected} intermediate={isIntermediate}\n onSelect={(e) => onSelect(currentRowsIds, e) } \n onUnselect={(e) => { \n // The unselect on selectedItems never happens, but I keep it here in case\n // we find an elegant UI solution to unselect all the invisible selected rows as well.\n isIntermediate ? onUnselect(selectedItems, e) : onUnselect(currentRowsIds, e);\n }}\n />\n </th>\n }\n {columns.filter((x, i) => !hiddenColumnIndexes.includes(i)).map(column => {\n let beingSorted = sort && sort.accessor === column.accessor;\n let beingSortedAsc = sort && sort.by === 'asc';\n let color = beingSorted ? Theme.white : `rgba(${Theme.blackRGB}, 0.1)`;\n if (sortIconColor) {\n color = beingSorted ? sortIconColor : Theme.gray;\n }\n const columnStyle = getColumnStyle(column);\n return (<th style={columnStyle} key={column.accessor}>\n <div className={column.sortable ? 'sortable' : ''} style={{...columnStyle, width: 'auto' }}\n onClick={column.sortable ? (e) => { \n onSortChange(column.accessor, beingSorted && beingSortedAsc ? 'desc' : 'asc', e)\n } : undefined}>\n <div>{column.title}</div>\n <div style={{ flex: 'auto' }} />\n <div>{column.sortable && \n <Icon icon={!beingSorted ? chevronDown : (beingSortedAsc ? chevronDown : chevronUp)} \n color={color} width=\"26px\" height=\"26px\" />}\n </div>\n </div>\n </th>)\n })}\n </tr>;\n\n return (\n <NekoBusyOverlay busy={busy} overlayStyle={{ top: '36px', height: 'calc(100% - 76px)' }}>\n <Table className={`nekotable-${variant}`}>\n <thead>{headersFooters}</thead>\n <tbody>\n {!rows.length && \n <tr><td colspan={columnsCount} style={{ textAlign: 'center', height: 40, color: 'gray' }}>\n {emptyMessage}\n </td></tr>\n }\n {rows.map(row => {\n return (\n <tr className={selectedItems.includes(row.id) ? 'selected' : ''}>\n {onSelect && \n <td className='table-checkbox-cell'>\n <TableCheckBox \n checked={selectedItems.includes(row.id)}\n onSelect={(e) => onSelect([ row.id ], e)}\n onUnselect={(e) => onUnselect([ row.id ], e)} \n />\n </td>\n }\n {row.cells.filter((x, i) => !hiddenColumnIndexes.includes(i)).map(cell => {\n return <td style={cell.style}>{cell.value}</td>;\n })}\n </tr>\n );\n })}\n </tbody>\n {variant === 'default' && <tfoot>{headersFooters}</tfoot>}\n </Table>\n </NekoBusyOverlay>\n );\n};\n\nconst NekoTable = (props) => {\n return (<StyledNekoTable {...props} />);\n};\n\nNekoTable.propTypes = {\n columns: PropTypes.arrayOf(PropTypes.any),\n data: PropTypes.arrayOf(PropTypes.any),\n busy: PropTypes.arrayOf(PropTypes.bool),\n onSelect: PropTypes.func,\n onUnselect: PropTypes.func,\n selectedItems: PropTypes.arrayOf(PropTypes.object),\n onSortChange: PropTypes.func,\n variant: PropTypes.string,\n sortIconColor: PropTypes.string,\n};\n\nNekoTable.defaultProps = {\n columns: undefined,\n data: undefined,\n busy: false,\n onSelect: undefined,\n onUnselect: undefined,\n selectedItems: undefined,\n onSortChange: undefined,\n variant: 'default',\n sortIconColor: undefined,\n};\n\nexport { NekoTable };\n","import React, { useMemo, useState, useRef, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Styled from \"styled-components\";\nimport Theme from '../common/NekoTheme';\nimport { NekoModal } from \"./Modal\";\nimport { NekoTypo } from \"./../misc/Typography\";\nimport { NekoInput } from \"./../form/Input\";\nimport { NekoButton } from \"../button/Button\";\nimport { NekoPaging } from \"../misc/Paging\";\nimport NekoBusyOverlay from \"../common/NekoBusyOverlay\";\nimport { NekoIcon } from \"../misc/Icon\";\nimport { NekoUploadDropArea } from \"../misc/UploadDropArea\";\nimport { NekoTable } from \"../table/Table\";\n\nconst StyledNekoModal = Styled(NekoModal)`\n width: 633px;\n\n &.custom-modal {\n padding: 0;\n }\n\n .neko-modal-wrapper {\n padding: 15px;\n }\n\n .neko-media-library-modal-content-header {\n align-items: center;\n display: flex;\n justify-content: space-between;\n\n h1 {\n font-size: 21px;\n font-weight: bold;\n margin: 0;\n }\n\n input {\n background-color: ${Theme.white};\n border: 1px solid ${Theme.black};\n border-radius: 3px;\n }\n }\n .neko-media-library-modal-content-body {\n margin-top: 33px;\n margin-bottom: 36px;\n\n .neko-media-library-modal-content-body-list {\n max-height: 406px;\n overflow-y: scroll;\n margin-bottom: 10px;\n width: 100%;\n }\n .neko-media-library-modal-content-body-gallery {\n display: grid;\n gap: 10px;\n grid-template-columns: repeat(6, 1fr);\n margin-bottom: 10px;\n\n .neko-media-library-modal-content-media-container {\n cursor: pointer;\n position: relative;\n\n img {\n box-sizing: border-box;\n }\n\n &.selected {\n img {\n border: 5px solid ${Theme.blue};\n }\n }\n\n &:hover {\n .zoom-button {\n display: block;\n }\n }\n\n .zoom-button {\n background-color: rgba(${Theme.blackRGB}, 0.4);\n border: 0;\n border-radius: 30px;\n cursor: pointer;\n display: none;\n position: absolute;\n top: 2px;\n left: 2px;\n width: 30px;\n height: 30px;\n }\n }\n }\n\n .neko-media-library-modal-content-body-selected-gallery {\n display: flex;\n\n .neko-media-library-modal-content-selected-media-container {\n overflow: hidden;\n position: relative;\n height: 50px;\n width: 50px;\n padding-right: 5px;\n\n &.dummy {\n width: 50px;\n\n &.drag-over {\n width: 50px;\n }\n }\n\n &.drag-over {\n width: 105px;\n\n .zoom-button {\n left: 56px;\n }\n }\n\n &.drag-over::before {\n content: '';\n display: inline-block;\n width: 50px;\n height: 50px;\n background-color: ${Theme.blue};\n }\n\n img {\n box-sizing: border-box;\n width: 100%;\n max-width: 50px;\n }\n\n &.drag-over {\n img {\n margin-left: 5px;\n }\n }\n\n &:hover {\n .remove-button,\n .zoom-button {\n display: block;\n }\n }\n\n .remove-button {\n background-color: rgba(${Theme.blackRGB}, 0.4);\n border: 0;\n border-radius: 20px;\n cursor: pointer;\n display: none;\n position: absolute;\n top: 1px;\n right: 1px;\n width: 20px;\n height: 20px;\n }\n\n .zoom-button {\n background-color: rgba(${Theme.blackRGB}, 0.4);\n border: 0;\n border-radius: 20px;\n cursor: pointer;\n display: none;\n position: absolute;\n top: 1px;\n left: 1px;\n width: 20px;\n height: 20px;\n }\n }\n }\n }\n .neko-media-library-modal-content-footer {\n display: flex;\n justify-content: space-between;\n }\n .neko-media-library-modal-search {\n position: relative;\n }\n`;\n\nconst selectedImageBaseWidth = 55;\nconst nextItemRange = 25;\nconst selectedImageIdPrefix = 'nmlm-selected-';\nconst dragOverClassName = 'drag-over';\nconst removeClass = (className) => {\n Array.prototype.forEach.call(document.getElementsByClassName(className), (ele) => {\n ele.classList.remove(className);\n });\n}\nconst displayModes = {\n grid: 'grid',\n list: 'list'\n};\nconst columns = [\n { accessor: 'thumbnail_url', title: 'Thumb', style: { width: '42px' } },\n { accessor: 'title', title: 'Title' },\n { accessor: 'size', title: 'Size', style: { width: '70px' } },\n { accessor: 'filename', title: 'Filename' },\n];\n\nconst StyledNekoMediaLibraryModal = (props) => {\n const { images, onNextPage, onPreviousPage, onRefresh, onClick, onRemoveClick, onZoomClick, onSearch, searchValue, busy,\n currentPage, limit, total, onPageChange, selected, multiSelect = false, showUploader = false, uploader, onSelectedOrderChanged,\n onUploadSuccess = () => {}, onUploadFailure = () => {}, uploadApiUrl, uploadApiConfig, uploadMultiple, onClose, onCancel, onSave, ...rest } = props;\n const [ search, setSerch ] = useState(searchValue);\n const [ dragImageIndex, setDragImageIndex ] = useState(null);\n const [ displayMode, setDisplayMode ] = useState(displayModes.grid);\n const ref = useRef(null);\n\n const onDragOver = useMemo((e, i) => {\n e?.preventDefault();\n if (dragImageIndex === null) return;\n const { width, left, right } = e.currentTarget.getBoundingClientRect();\n let target = i;\n // Only tweak the index if the element dragged over is the right on the image dragged.\n if (dragImageIndex < i) {\n if (i > 0 && i < selected.length) {\n if (target + 1 === dragImageIndex && e.clientX >= right - nextItemRange) {\n target -= 1\n } else if (target - 1 === dragImageIndex && e.clientX >= left - nextItemRange) {\n target += 1;\n } else if (width !== selectedImageBaseWidth && e.clientX >= right - nextItemRange) {\n target += 1;\n }\n } else if (width !== selectedImageBaseWidth && e.clientX >= right - nextItemRange) {\n target += 1;\n }\n }\n removeClass(dragOverClassName);\n if (dragImageIndex === target || (dragImageIndex + 1) === target) return;\n document.getElementById(`${selectedImageIdPrefix}${target}`).classList.add(dragOverClassName);\n }, [dragImageIndex, selected.length]);\n\n const onDragEnd = useMemo((e) => {\n e?.preventDefault();\n setDragImageIndex(null);\n removeClass(dragOverClassName);\n }, []);\n\n const onDrop = useMemo((e, i) => {\n e?.preventDefault();\n if (dragImageIndex === null || dragImageIndex === i || (dragImageIndex + 1) === i) return;\n onSelectedOrderChanged({ currentIndex: dragImageIndex, afterIndex: dragImageIndex > i ? i : i - 1});\n }, [dragImageIndex, onSelectedOrderChanged]);\n\n const selectedMediaJsx = useMemo(() => {\n if ( !multiSelect ) return [];\n const dummyElementForDrop = <div id={`nmlm-selected-${selected.length}`} className=\"neko-media-library-modal-content-selected-media-container dummy\" draggable={false} onDragEnd={(e) => onDragEnd(e)} onDragOver={(e) => onDragOver(e, selected.length)} onDrop={(e) => onDrop(e, selected.length)} onDragLeave={() => removeClass(dragOverClassName)}></div>\n const selectedElement = selected.map( (image, i) => {\n return (\n <div id={`nmlm-selected-${i}`} key={image.id} className=\"neko-media-library-modal-content-selected-media-container\" draggable={true} onDragStart={() => setDragImageIndex(i)} onDragEnd={onDragEnd} onDragOver={(e) => onDragOver(e, i)} onDrop={(e) => onDrop(e, i)}>\n <img src={image.src} className=\"neko-media-library-modal-content-media\" />\n <button className=\"remove-button\" onClick={() => onRemoveClick({ id: image.id, src: image.src })}>\n <NekoIcon icon=\"close\" color={Theme.white} width={19} height={19} />\n </button>\n <button className=\"zoom-button\" onClick={() => onZoomClick(image)}>\n <NekoIcon icon=\"zoom-in\" color={Theme.white} width={19} height={19} />\n </button>\n </div>\n );\n } );\n return [...selectedElement, dummyElementForDrop];\n }, [ selected, multiSelect, onRemoveClick, onZoomClick, onDragOver, onDragEnd, onDrop ] );\n\n const mediaGridJsx = useMemo(() => {\n return images.map((image) => {\n return (\n <div key={image.id} className={`neko-media-library-modal-content-media-container ${selected.some(v => v.id === image.id) ? 'selected' : ''}`}\n onClick={() => {\n onClick({ id: image.id, src: image.src, zoom_src: image.zoom_src })\n }}>\n <img src={image.src} className=\"neko-media-library-modal-content-media\" width=\"90\" height=\"90\" />\n <button className=\"zoom-button\" onClick={(e) => { e.stopPropagation(); onZoomClick(image); }}>\n <NekoIcon icon=\"zoom-in\" color={Theme.white} width={29} height={29} />\n </button>\n </div>\n );\n });\n }, [images, selected, onZoomClick, onClick]);\n\n const mediaRows = useMemo(() => {\n return images.map(x => ({\n id: x.id,\n thumbnail_url: <img src={x.src} style={{ width: 40, height: 40, objectFit: 'cover' }} />,\n title: x.title,\n size: x.size,\n filename: x.filename\n }));\n }, [images]);\n\n const onReset = useCallback(() => {\n setSerch(\"\");\n onRefresh();\n }, [onRefresh]);\n\n const mediaListJsx = useMemo(() => {\n const onSelect = (ids, e) => {\n const image = images.find(v => ids.includes(v.id));\n onClick({ id: image.id, src: image.src, zoom_src: image.zoom_src });\n }\n return <NekoTable\n data={mediaRows}\n columns={columns}\n onSelect={onSelect}\n onUnselect={onSelect}\n selectedItems={selected.map(v => v.id)}\n />\n }, [images, mediaRows, selected, onClick]);\n\n return (\n <StyledNekoModal style={true} {...rest}>\n <div className=\"neko-modal-wrapper\" draggable={true} onDragOver={() => removeClass(dragOverClassName)}>\n <NekoUploadDropArea ref={ref} onSuccess={onUploadSuccess} onFailure={onUploadFailure} apiUrl={uploadApiUrl} apiConfig={uploadApiConfig} disabled={!showUploader || dragImageIndex !== null} multiple={uploadMultiple}>\n <div className=\"neko-media-library-modal-content\">\n <div className=\"neko-media-library-modal-content-header\">\n <NekoTypo h1>Media Library</NekoTypo>\n <div style={{ display: 'flex' }}>\n <div className=\"neko-media-library-modal-search\">\n <NekoInput value={search} disabled={busy} onEnter={onSearch} onChange={(v) => setSerch(v)} placeholder=\"Search...\" />\n {search !== \"\" && <NekoIcon icon=\"close\" containerStyle={{ width: '20px', position: 'absolute', right: '5px', top: '5px', cursor: 'pointer' }} width={20} height={20} color={Theme.darkGray} onClick={onReset} />}\n </div>\n <NekoButton onClick={() => onSearch(search)} style={{ marginLeft: '4px', marginRight: '4px' }}>Search</NekoButton>\n <NekoIcon color={displayMode === displayModes.grid ? Theme.black : Theme.blue} icon='view-grid' onClick={() => setDisplayMode(displayModes.grid)} width=\"20\" height=\"20\" />\n <NekoIcon color={displayMode === displayModes.list ? Theme.black : Theme.blue} icon='format-list-bulleted' onClick={() => setDisplayMode(displayModes.list)} width=\"20\" height=\"20\" />\n </div>\n </div>\n <div>\n <div className=\"neko-media-library-modal-content-body\">\n <NekoBusyOverlay busy={busy}>\n <div className={`${displayMode === displayModes.grid ? 'neko-media-library-modal-content-body-gallery' : 'neko-media-library-modal-content-body-list'}`}>\n {displayMode === displayModes.grid && showUploader && uploader}\n {displayMode === displayModes.grid ? mediaGridJsx : mediaListJsx}\n </div>\n </NekoBusyOverlay>\n <div className=\"neko-media-library-modal-content-body-selected-gallery\">\n {selectedMediaJsx}\n </div>\n </div>\n </div>\n <div className=\"neko-media-library-modal-content-footer\">\n <NekoPaging limit={limit} currentPage={currentPage} total={total} onClick={onPageChange} />\n <div style={{ display: 'flex' }}>\n {!!onClose && <NekoButton onClick={() => onClose()}>\n Close\n </NekoButton>}\n {!!onCancel && <NekoButton className=\"danger\" onClick={() => onCancel()}>\n Cancel\n </NekoButton>}\n {!!onSave && <NekoButton onClick={() => onSave()}>\n Save\n </NekoButton>}\n </div>\n </div>\n </div>\n </NekoUploadDropArea>\n </div>\n </StyledNekoModal>\n );\n};\n\nconst NekoMediaLibraryModal = (props) => {\n return <StyledNekoMediaLibraryModal {...props} />;\n};\n\nNekoMediaLibraryModal.propTypes = {\n images: PropTypes.array,\n onNextPage: PropTypes.func,\n onPreviousPage: PropTypes.func,\n onRefresh: PropTypes.func,\n onClick: PropTypes.func,\n onSearch: PropTypes.func,\n searchValue: PropTypes.string,\n busy: PropTypes.bool,\n currentPage: PropTypes.number,\n limit: PropTypes.number,\n total: PropTypes.number,\n onPageChange: PropTypes.func,\n multiSelect: PropTypes.bool,\n selected: PropTypes.array,\n onClose: PropTypes.func,\n onCancel: PropTypes.func,\n onSave: PropTypes.func,\n};\n\nNekoMediaLibraryModal.defaultProps = {\n multiSelect: false\n};\n\nexport { NekoMediaLibraryModal };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { ProOnly } from '../label/ProOnly';\nimport { NekoIcon } from '../misc/Icon';\n\nconst TabContainer = Styled.div`\n`;\n\nconst TabGroup = Styled.div`\n display: flex;\n`;\n\nconst Tab = Styled.button`\n font-family: ${Theme.fontFamily};\n font-size: ${Theme.fontSizeText};\n border-radius: 8px 8px 0px 0px;\n border: 0;\n background-color: #459ad2;\n color: rgb(255 255 255 / 65%);\n display: flex;\n align-items: center;\n\n cursor: pointer;\n line-height: 17px;\n margin: 0 5px 0 0;\n text-align: left;\n padding: 10px 15px 10px 15px;\n\n &:focus {\n outline: none;\n }\n\n &.active {\n background-color: ${Theme.blue};\n color: ${Theme.white};\n }\n\n &.disabled {\n background-color: rgb(224 156 54);\n cursor: default;\n display: inline-flex;\n padding-bottom: 7px;\n }\n\n &.hidden {\n display: none;\n }\n`;\n\nconst TabContent = Styled.div`\n background-color: ${Theme.blue};\n display: none;\n padding: 10px;\n\n &.active {\n display: block;\n }\n`;\n\n/**\n * Need to use with NecoTab\n */\nconst StyledNekoTabs = props => {\n const [isActiveTabIndex, setIsActiveTabIndex] = React.useState(0);\n const childrenProp = props.children\n ? (\n props.children.length\n ? props.children.filter(x => !!x)\n : [props.children]\n )\n : [];\n\n React.useEffect(() => {\n if (props.keepTabOnReload) {\n const url = new URL(window.location.href);\n const title = url.searchParams.get('nekoTab');\n if (!title) {\n setIsActiveTabIndex(0);\n if (props.callOnTabChangeFirst) {\n onTabClick(0, tabAttributes[0]);\n }\n return;\n }\n const searchTitle = decodeURIComponent(title);\n const index = React.Children.toArray(childrenProp).map(c => c.props.title.replaceAll(' ', '')).indexOf(searchTitle);\n if (index === -1) {\n setIsActiveTabIndex(0);\n if (props.callOnTabChangeFirst) {\n onTabClick(0, tabAttributes[0]);\n }\n return;\n }\n setIsActiveTabIndex(index);\n if (props.callOnTabChangeFirst) {\n onTabClick(index, tabAttributes[index]);\n }\n return;\n }\n setIsActiveTabIndex(0);\n if (props.callOnTabChangeFirst) {\n onTabClick(0, tabAttributes[0]);\n }\n }, [])\n\n const tabAttributes = React.Children.map(childrenProp, (child, i) => {\n const title = child.props.title || (\"Untitled Tab \" + (i + 1));\n const key = child.props.key || 'neko-tab-' + title.toLowerCase();\n const onClick = child.props.onClick ? child.props.onClick : null;\n const requirePro = !props.isPro && (child.props.requirePro || false);\n const hidden = child.props.hidden || false;\n const icon = child.props.icon || false;\n return { key, title, onClick, requirePro, hidden, icon };\n });\n\n const children = React.Children.map(childrenProp, (child, i) => {\n const isActive = i === isActiveTabIndex;\n const hidden = child.props.hidden;\n if (isActive && hidden) {\n setIsActiveTabIndex(0);\n }\n return React.cloneElement(child, {\n isActive: isActive && !hidden\n });\n });\n\n const keepTab = (title) => {\n if (history.pushState && typeof title === 'string' ) {\n let searchParams = new URLSearchParams(window.location.search);\n const value = encodeURIComponent(title.replaceAll(' ', ''));\n searchParams.set('nekoTab', value);\n let newUrl = window.location.protocol + \"//\" + window.location.host + window.location.pathname + '?' + searchParams.toString();\n window.history.replaceState({ path: newUrl }, '', newUrl);\n }\n }\n\n const onTabClick = (tabIndex, tabAttr, ev) => {\n if (tabAttr.requirePro) return;\n setIsActiveTabIndex(tabIndex);\n if (props.onChange) {\n props.onChange(tabIndex, tabAttr, ev);\n }\n if (props.keepTabOnReload) {\n keepTab(tabAttr.title);\n }\n };\n\n return (\n <TabContainer>\n <TabGroup>\n {tabAttributes.map((attr, i) =>\n <Tab \n key={attr.key} \n className={`neko-tab-title ${i === isActiveTabIndex ? 'active' : ''} ${attr.requirePro ? 'disabled' : ''} ${attr.hidden ? `hidden` : ''}`} \n onClick={(ev) => { onTabClick(i, attr, ev) }}\n >\n {attr.icon && <NekoIcon icon={attr.icon} width={15} height={15} style={{ marginRight: '2px' }} raw />}\n {attr.title}<ProOnly className=\"inline\" style={{ marginLeft: 10, marginRight: -5, top: -1 }} show={attr.requirePro} />\n </Tab>\n )}\n </TabGroup>\n {children}\n </TabContainer>\n );\n};\n\n\n/**\n * @oaram {string} title\n * @param {bool} isActive\n */\nconst StyledNekoTab = props => {\n\n const { children, isActive } = props;\n\n return (\n <TabContent className={`${isActive ? 'active' : ''}`}>\n {!!isActive && children}\n </TabContent>\n );\n};\n\nconst NekoTabs = (props) => {\n return (<StyledNekoTabs {...props} />);\n};\n\nNekoTabs.propTypes = {\n isPro: PropTypes.bool,\n onChange: PropTypes.func\n};\n\nNekoTabs.defaultProps = {\n isPro: false,\n onChange: undefined\n};\n\nconst NekoTab = (props) => {\n return (<StyledNekoTab {...props} />);\n};\n\nNekoTab.propTypes = {\n isActive: PropTypes.bool,\n requirePro: PropTypes.bool,\n title: PropTypes.string,\n icon: PropTypes.string,\n};\n\nNekoTab.defaultProps = {\n isActive: false,\n requirePro: false,\n title: undefined,\n icon: undefined,\n};\n\nexport { NekoTab, NekoTabs };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Theme from '../common/NekoTheme';\nimport { ProOnly } from '../label/ProOnly';\nimport { Icon, InlineIcon } from '@iconify/react';\nimport chevronDown from '@iconify/icons-mdi/chevron-down';\nimport chevronRight from '@iconify/icons-mdi/chevron-right';\n\nconst TabContainer = Styled.div`\n`;\n\nconst Tab = Styled.div`\n align-items: center;\n background-color: ${Theme.blue};\n border: 0;\n cursor: pointer;\n display: flex;\n padding: 2px 3px 2px 19px;\n\n &.disabled {\n background-color: rgba(${Theme.yellowRGB}, 0.25);\n cursor: default;\n }\n\n p {\n color: ${Theme.white};\n font-family: ${Theme.fontFamily};\n font-size: 14px;\n line-height: 17px;\n margin: 0;\n }\n\n .neko-side-tab-icon {\n color: ${Theme.white};\n margin-left: auto;\n height: 36px;\n width: 36px;\n }\n`;\n\nconst TabContent = Styled.div`\n background-color: ${Theme.white};\n display: none;\n\n &.active {\n display: block;\n }\n`;\n\n/**\n * Need to use with NecoTab\n */\nconst StyledNekoSideTabs = props => {\n\n const [activeTabIndex, setIsActiveTabIndex] = React.useState(props.activeTabIndex);\n\n const tabAttributes = React.Children.map(props.children, (child, i) => {\n const title = child.props.title || (\"Untitled Tab \" + (i + 1));\n const key = child.props.key || 'neko-tab-' + title.toLowerCase();\n const onClick = child.props.onClick ? child.props.onClick : null;\n const requirePro = !props.isPro && (child.props.requirePro || false);\n const onDragOver = child.props.onDragOver;\n const onDrop = child.props.onDrop;\n const rightActions = child.props.rightActions || null;\n return { key, title, onClick, requirePro, onDragOver, onDrop, rightActions };\n });\n\n const children = React.Children.map(props.children, (child, i) => {\n return React.cloneElement(child, {\n isActive: i === activeTabIndex\n });\n });\n\n const onTabClick = (tabIndex, tabAttr, ev) => {\n if (tabAttr.requirePro) return;\n const newTabIndex = tabIndex === activeTabIndex ? null : tabIndex;\n setIsActiveTabIndex(newTabIndex);\n if (props.onChange) {\n props.onChange(newTabIndex, tabAttr, ev);\n }\n };\n\n return (\n <TabContainer>\n {tabAttributes.map((attr, i) =>\n <React.Fragment>\n <Tab\n key={attr.key}\n className={`${i === activeTabIndex ? 'active' : ''} ${attr.requirePro ? 'disabled' : ''}`}\n onClick={(ev) => { onTabClick(i, attr, ev); }}\n onDragOver={attr.onDragOver}\n onDrop={attr.onDrop}\n >\n <p>\n <span style={{ fontSize: 15 }}>{attr.title}</span>\n <ProOnly className=\"inline\" show={attr.requirePro} />\n </p>\n {attr.rightActions === null\n ? <Icon icon={i === activeTabIndex ? chevronDown : chevronRight } className=\"neko-side-tab-icon\" />\n : (\n i === activeTabIndex\n ? <div style={{ marginLeft: 'auto' }}>{attr.rightActions}</div>\n : <Icon icon={chevronRight} className=\"neko-side-tab-icon\" />\n )\n }\n </Tab>\n { children[i] }\n </React.Fragment>\n )}\n </TabContainer>\n );\n};\n\n\n/**\n * @oaram {string} title\n * @param {bool} isActive\n */\nconst StyledNekoSideTab = props => {\n\n const { children, isActive } = props;\n\n return (\n <TabContent className={`${isActive ? 'active' : ''}`}>\n { children }\n </TabContent>\n );\n};\n\nconst NekoSideTabs = (props) => {\n return (<StyledNekoSideTabs {...props} />);\n};\n\nNekoSideTabs.propTypes = {\n isPro: PropTypes.bool,\n onChange: PropTypes.func,\n activeTabIndex: PropTypes.number\n};\n\nNekoSideTabs.defaultProps = {\n isPro: false,\n onChange: undefined,\n activeTabIndex: null\n};\n\nconst NekoSideTab = (props) => {\n return (<StyledNekoSideTab {...props} />);\n};\n\nNekoSideTab.propTypes = {\n isActive: PropTypes.bool,\n requirePro: PropTypes.bool,\n title: PropTypes.string,\n onDragOver: PropTypes.func,\n onDrop: PropTypes.func,\n rightActions: PropTypes.element\n};\n\nNekoSideTab.defaultProps = {\n isActive: false,\n requirePro: false,\n title: undefined,\n onDragOver: undefined,\n onDrop: undefined,\n rightActions: undefined\n};\n\nexport { NekoSideTab, NekoSideTabs };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Styled from 'styled-components';\nimport Colors from '../common/NekoTheme';\n\nconst ToolbarBase = Styled.div`\n box-sizing: border-box;\n display: flex;\n width: 100%;\n padding: 10px 10px;\n background: ${Colors.white};\n border-radius: 10px;\n box-shadow: 0px 0px 10px rgba(${Colors.blackRGB}, 0.1);\n\n &.neko-align-left {\n justify-content: flex-start;\n }\n\n &.neko-align-right {\n justify-content: flex-end;\n }\n\n > *:not(:last-child) {\n margin-right: 5px;\n }\n`;\n\nconst StyledNekoToolbar = ({ align = 'left', ...props }) => {\n return (\n <ToolbarBase className={`neko-align-${align}`} {...props}>\n {props.children}\n </ToolbarBase>\n );\n};\n\nconst NekoToolbar = (props) => {\n return (<StyledNekoToolbar {...props} />);\n};\n\nNekoToolbar.propTypes = {\n align: PropTypes.oneOf(['left', 'right'])\n};\n\nNekoToolbar.defaultProps = {\n align: 'left'\n};\n\nexport { NekoToolbar };","const prefix = mgcl_gallery_custom_links.prefix;\nconst domain = mgcl_gallery_custom_links.domain;\nconst restUrl = mgcl_gallery_custom_links.rest_url.replace(/\\/+$/, \"\");\nconst apiUrl = mgcl_gallery_custom_links.api_url.replace(/\\/+$/, \"\");\nconst pluginUrl = mgcl_gallery_custom_links.plugin_url.replace(/\\/+$/, \"\");\nconst isPro = mgcl_gallery_custom_links.is_pro === '1';\nconst isRegistered = isPro && mgcl_gallery_custom_links.is_registered === '1';\nconst restNonce = mgcl_gallery_custom_links.rest_nonce;\n\nexport { prefix, domain, apiUrl, restUrl, pluginUrl, isPro, isRegistered, restNonce };\n","// React & Vendor Libs\nimport Styled from 'styled-components';\n\n// NekoUI\nimport { NekoBlock } from '@neko-ui';\n\nconst TabText = Styled.div`\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`;\n\nconst StyledPluginBlock = Styled(NekoBlock)`\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`;\n\nconst StyledPluginImage = Styled.img`\n width: 85px;\n height: 85px;\n padding-right: 10px;\n`;\n\nconst StyledPhpInfo = Styled.div`\n\n margin: 15px;\n\n .center {\n background: white;\n border-radius: 10px;\n padding: 10px;\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\nconst StyledPhpErrorLogs = Styled.ul`\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`;\n\nexport { TabText, StyledPluginBlock, StyledPluginImage, StyledPhpInfo, StyledPhpErrorLogs };","// React & Vendor Libs\nconst { useState, useEffect } = wp.element;\n\n// NekoUI\nimport { NekoButton, NekoTypo, NekoGauge } from '@neko-ui';\nimport { postFetch } from '@neko-ui';\n\n// From Main Plugin\nimport { restUrl, restNonce } from '@app/settings';\n\n// Common\nimport { TabText } from './Dashboard.styled';\nconst CommonApiUrl = `${restUrl}/meow-common/v1`;\n\nconst SpeedTester = ({ request, title, max }) => {\n const [ runRequests, setRunRequests ] = useState(false);\n const [ results, setResults ] = useState([]);\n const resultsTotal = results.length > 0 ? results.reduce(function(a, b) { return a + b; }) : 0;\n const resultsAverage = results.length > 0 ? Math.ceil(resultsTotal / results.length) : 0;\n const isInitializing = !results.length && runRequests;\n\n useEffect(() => {\n if (!runRequests) {\n return;\n }\n setTimeout(async () => {\n const start = new Date().getTime();\n await postFetch(`${CommonApiUrl}/${request}`, { nonce: restNonce });\n const end = new Date().getTime();\n const time = end - start;\n setResults(x => [ ...x, time ]);\n }, 1000);\n }, [results]);\n\n const toggleRequestsProcess = () => {\n if (!runRequests) {\n setResults([]);\n }\n setRunRequests(!runRequests);\n }\n\n return (\n <TabText style={{ width: 200, textAlign: 'center' }}>\n <NekoTypo h2 style={{ color: 'white' }}>{title}</NekoTypo>\n <NekoGauge size={200} value={isInitializing ? max : resultsAverage} max={max}>\n <span style={{ fontSize: 20 }}>{isInitializing ? 'START' : resultsAverage + ' ms'}</span>\n <span style={{ fontSize: 12 }}>{isInitializing ? 'YOUR ENGINE' : results.length + ' requests'}</span>\n </NekoGauge>\n <NekoButton style={{ width: '100%', marginTop: 10 }} color={runRequests ? '#cc3627' : '#ccb027'}\n onClick={toggleRequestsProcess}>\n {runRequests ? 'Stop' : 'Start'}\n </NekoButton>\n </TabText>\n );\n}\n\nexport { SpeedTester };","// React & Vendor Libs\nconst { useState, useEffect } = wp.element;\nimport useSWR from 'swr';\n\n// NekoUI\nimport { NekoTypo, NekoPage, NekoHeader, NekoWrapper, NekoTab, NekoTabs, NekoBlock, NekoButton,\n NekoColumn, NekoSettings, NekoCheckboxGroup, NekoCheckbox } from '@neko-ui';\nimport { postFetch, jsonFetcher } from '@neko-ui';\n\nimport { apiUrl, restUrl, pluginUrl, restNonce } from '@app/settings';\nimport { SpeedTester } from './SpeedTester';\nimport { TabText, StyledPluginBlock, StyledPluginImage, \n StyledPhpErrorLogs, StyledPhpInfo } from './Dashboard.styled';\n\nif ( !apiUrl || !restUrl || !pluginUrl ) {\n console.error(\"[@common/dashboard] apiUrl, restUrl and pluginUrl are mandatory.\");\n}\n\nconst CommonApiUrl = `${restUrl}/meow-common/v1`;\n\nconst jsxTextStory = \n <TabText>\n <NekoTypo p>\n Meow Apps is run by Jordy Meow, a photographer and software developer living in Japan (and taking <a target=\"_blank\" href=\"https://offbeatjapan.org\">a lot of photos</a>). 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 <a href=\"http://meowapps.com\" target=\"_blank\">Meow Apps</a>.\n </NekoTypo>\n </TabText>;\n\nconst jsxTextPerformance = \n <TabText>\n <NekoTypo p>\n The <b>Empty Request Time</b> 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, <a href=\"https://meowapps.com/clean-optimize-wordpress/#Optimize_your_Empty_Request_Time\" target=\"_blank\">click here</a>.\n </NekoTypo>\n <NekoTypo p>\n <b>File Operation Time</b> creates a temporary size of 10MB every time. <b>SQL Request Time</b> counts the number of posts. Those two should be very fast, and almost the same as the <b>Empty Request Time</b>.\n </NekoTypo>\n </TabText>;\n\nconst jsxTextRecommendations = \n <TabText>\n <NekoTypo p>\n 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.\n </NekoTypo>\n <NekoTypo p>\n 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. \n </NekoTypo>\n <NekoTypo p>\n On the Meow Apps website, you will find articles which are always updated with the latest recommendations.\n <ul>\n <li>☘️&nbsp;&nbsp;<a href=\"https://meowapps.com/how-to-debug-wordpress-errors/\" target=\"_blank\">How To Debug WordPress</a></li>\n <li>☘️&nbsp;&nbsp;<a href=\"https://meowapps.com/tutorial-improve-seo-wordpress/\" target=\"_blank\">SEO Checklist &amp; Optimization</a></li>\n <li>☘️&nbsp;&nbsp;<a href=\"https://meowapps.com/tutorial-faster-wordpress-optimize/\" target=\"_blank\">Optimize your WordPress Speed</a></li>\n <li>☘️&nbsp;&nbsp;<a href=\"https://meowapps.com/tutorial-optimize-images-wordpress/\" target=\"_blank\">Optimize Images (CDN, and so on)</a></li>\n <li>☘️&nbsp;&nbsp;<a href=\"https://meowapps.com/tutorial-hosting-service-wordpress/\" target=\"_blank\">Best Hosting Services for WordPress</a></li>\n </ul>\n </NekoTypo>\n </TabText>;\n\nconst swrAllSettingsKey = [`${CommonApiUrl}/all_settings/`, { headers: { 'X-WP-Nonce': restNonce } }];\n\nconst Dashboard = () => {\n const [ fatalError, setFatalError ] = useState(false);\n const { data: swrSettings, mutate: mutateSwrSettings, error: swrError } = useSWR(swrAllSettingsKey, jsonFetcher);\n const settings = swrSettings?.data;\n const hide_meowapps = settings?.meowapps_hide_meowapps;\n const force_sslverify = settings?.force_sslverify;\n const [ busy, setBusy ] = useState(false);\n const [ phpErrorLogs, setPhpErrorLogs ] = useState([]);\n const [ phpInfo, setPhpInfo ] = useState(\"\");\n\n // Handle SWR errors\n useEffect(() => {\n if (swrError && !fatalError) {\n setFatalError(true);\n console.error('Error from UseSWR', swrError.message);\n }\n }, [swrError]);\n\n useEffect(() => {\n let info = document.getElementById('meow-common-phpinfo');\n setPhpInfo(info.innerHTML);\n }, []);\n\n const updateOption = async (value, id) => {\n let newSettingsData = { ...swrSettings.data };\n newSettingsData[id] = value;\n mutateSwrSettings({ ...swrSettings, data: newSettingsData }, false);\n setBusy(true);\n const res = await postFetch(`${CommonApiUrl}/update_option`, { json: { name: id, value }, nonce: restNonce });\n setBusy(false);\n if (!res.success) {\n alert(res.message);\n }\n mutateSwrSettings();\n }\n\n const loadErrorLogs = async () => {\n setBusy(true);\n const res = await postFetch(`${CommonApiUrl}/error_logs`, { nonce: restNonce });\n let fresh = res && res.data ? res.data : [];\n setPhpErrorLogs(fresh.reverse());\n setBusy(false);\n }\n\n const jsxHideMeowApps = \n <NekoSettings title=\"Main Menu\">\n <NekoCheckboxGroup max=\"1\">\n <NekoCheckbox id=\"meowapps_hide_meowapps\" label=\"Hide (Not Recommended)\" description={<NekoTypo p>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 &rarr; General.</NekoTypo>} value=\"1\" disabled={busy} checked={hide_meowapps} onChange={updateOption} />\n </NekoCheckboxGroup>\n </NekoSettings>;\n\n\n const jsxForceSSLVerify = \n <NekoSettings title=\"SSL Verify\">\n <NekoCheckboxGroup max=\"1\">\n <NekoCheckbox id=\"force_sslverify\" label=\"Force (Not Recommended)\" description={<NekoTypo p>This will enforce the usage of SSL when checking the license or updating the plugin.</NekoTypo>} value=\"1\" disabled={busy} checked={force_sslverify} onChange={updateOption} />\n </NekoCheckboxGroup>\n </NekoSettings>;\n\n return (\n <NekoPage showRestError={fatalError}>\n\n <NekoHeader title='The Dashboard'>\n </NekoHeader>\n\n <NekoWrapper>\n\n <NekoColumn full>\n \n {/* TAB FOR ADVANCED SETTINGS */}\n <NekoTabs>\n <NekoTab title='Meow Apps'>\n\n {jsxTextStory}\n\n <NekoWrapper>\n <NekoColumn minimal>\n\n <StyledPluginBlock title=\"Media Cleaner\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/media-cleaner.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/media-cleaner/'>Media Cleaner</a></h2>\n <p>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 :)</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Database Cleaner\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/database-cleaner.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/database-cleaner/'>Database Cleaner</a></h2>\n <p>Clean your WordPress database. This plugin is simple, handles risk levels, and aims to work even on oversized databases on which other plugins fail to operate.</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Media File Renamer\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/media-file-renamer.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/media-file-renamer/'>Media File Renamer</a></h2>\n <p>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.</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Social Engine\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/social-engine.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/social-engine/'>Social Engine</a></h2>\n <p>Organize, schedule and automate the publishing of your content and photos on social accounts. Similar to Buffer, TweetDeck, etc, but without all the limitations, and in your WordPress.</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Meow Analytics\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/meow-analytics.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/meow-analytics/'>Meow Analytics</a></h2>\n <p>Are you tired of those heavy plugins, accessing your Google Analytics deliberately? Switch to Meow Analytics!</p>\n </div>\n </StyledPluginBlock>\n \n </NekoColumn>\n\n <NekoColumn minimal>\n\n <StyledPluginBlock title=\"Photo Engine\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/wplr-sync.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/wplr-sync/'>Photo Engine</a></h2>\n <p>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.</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Meow Gallery\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/meow-gallery.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/meow-gallery/'>Meow Gallery</a></h2>\n <p>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.</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Meow Lightbox\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/meow-lightbox.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/meow-lightbox/'>Meow Lightbox</a></h2>\n <p>A very sleek and performant Lightbox which will also display your EXIF data (camera, lens, aperture...). Photographers love it.</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Perfect Images (Retina)\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/wp-retina-2x.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/wp-retina-2x/'>Perfect Images + Retina</a></h2>\n <p>It handles Retina, help you managing the Image Sizes registered in your WP, and much more.</p>\n </div>\n </StyledPluginBlock>\n\n <StyledPluginBlock title=\"Contact Form Block\" className=\"primary\">\n <StyledPluginImage src={`${pluginUrl}/common/img/contact-form-block.png`} />\n <div>\n <h2><a target='_blank' href='https://wordpress.org/plugins/contact-form-block/'>Contact Form Block</a></h2>\n <p>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.</p>\n </div>\n </StyledPluginBlock>\n\n </NekoColumn>\n\n </NekoWrapper>\n </NekoTab>\n \n <NekoTab title=\"Performance\">\n {jsxTextPerformance}\n <div style={{ display: 'flex', justifyContent: 'space-around', marginBottom: 25 }}>\n <SpeedTester title=\"Empty Request Time\" request=\"empty_request\" max={2500} />\n <SpeedTester title=\"File Operation Time\" request=\"file_operation\" max={2600} />\n <SpeedTester title=\"SQL Request Time\" request=\"sql_request\" max={2800} />\n </div>\n </NekoTab>\n\n <NekoTab title=\"Recommendations\">\n {jsxTextRecommendations}\n </NekoTab>\n\n <NekoTab title=\"PHP Info\">\n <StyledPhpInfo dangerouslySetInnerHTML={{ __html: phpInfo }} />\n </NekoTab>\n\n <NekoTab title=\"PHP Error Logs\">\n <TabText>\n <NekoButton style={{ marginBottom: 10 }} color={'#ccb027'} onClick={loadErrorLogs}>\n Load PHP Error Logs\n </NekoButton>\n <StyledPhpErrorLogs>\n {phpErrorLogs.map(x => <li class={`log-${x.type}`}>\n <span class='log-type'>{x.type}</span>\n <span class='log-date'>{x.date}</span>\n <span class='log-content'>{x.content}</span>\n </li>)}\n </StyledPhpErrorLogs>\n </TabText>\n {/* {jsxPhpErrorLogs}\n <StyledPhpErrorLogs dangerouslySetInnerHTML={{ __html: phpErrorLogs }} />\n <StyledPhpInfo dangerouslySetInnerHTML={{ __html: phpInfo }} /> */}\n </NekoTab>\n\n <NekoTab title=\"Settings\">\n <NekoBlock title=\"Settings\" className=\"primary\">\n {jsxHideMeowApps}\n {jsxForceSSLVerify}\n </NekoBlock>\n </NekoTab>\n \n </NekoTabs>\n\n </NekoColumn>\n\n </NekoWrapper>\n </NekoPage>\n );\n};\n\nexport { Dashboard };","// React & Vendor Libs\nconst { useState, useEffect } = wp.element;\n\n// NekoUI\nimport { NekoButton, NekoTypo, NekoBlock, NekoSettings, NekoInput, \n NekoMessageDanger, NekoMessageSuccess, NekoModal } from '@neko-ui';\nimport { postFetch } from '@neko-ui';\n\n// From Main Plugin\nimport { restUrl, prefix, domain, isPro, isRegistered, restNonce } from '@app/settings';\n\nconst CommonApiUrl = `${restUrl}/meow-licenser/${prefix}/v1`;\n\nconst LicenseBlock = () => {\n const [ busy, setBusy ] = useState(false);\n const [ meowMode, setMeowMode ] = useState(false);\n const [ currentModal, setCurrentModal ] = useState(null);\n const [ license, setLicense ] = useState(null);\n const [ serialKey, setSerialKey ] = useState('');\n const isOverridenLicense = isRegistered && (!license || license.license !== 'valid');\n\n const checkLicense = async () => {\n if (!isPro) {\n return;\n }\n setBusy(true);\n const res = await postFetch(`${CommonApiUrl}/get_license`, { nonce: restNonce });\n setLicense(res.data);\n if (res.data.key) {\n setSerialKey(res.data.key);\n }\n setBusy(false);\n }\n\n const removeLicense = async () => {\n setBusy(true);\n const res = await postFetch(`${CommonApiUrl}/set_license`, { nonce: restNonce, json: { serialKey: null } });\n if (res.success) {\n setSerialKey('');\n setLicense(null);\n setCurrentModal('licenseRemoved');\n }\n setBusy(false);\n }\n\n const forceLicense = async () => {\n setBusy(true);\n const res = await postFetch(`${CommonApiUrl}/set_license`, { nonce: restNonce, json: { serialKey, override: true } });\n if (res.success) {\n setLicense(res.data);\n if (res.data && !res.data.issue) {\n setCurrentModal('licenseAdded');\n }\n }\n setBusy(false);\n }\n\n const validateLicense = async () => {\n if ( serialKey === 'MEOW_OVERRIDE' ) {\n setMeowMode(true);\n setLicense(null);\n setSerialKey(\"\");\n return;\n }\n setBusy(true);\n const res = await postFetch(`${CommonApiUrl}/set_license`, { nonce: restNonce, json: { serialKey } });\n if (res.success) {\n setLicense(res.data);\n if (res.data && !res.data.issue) {\n setCurrentModal('licenseAdded');\n }\n }\n setBusy(false);\n }\n\n useEffect(() => { checkLicense() }, []);\n\n const licenseTextStatus = isOverridenLicense ? 'Forced License' : isRegistered ? 'Enabled' : 'Disabled';\n\n const success = isOverridenLicense || (license && license.license === 'valid');\n let message = 'Your license is active. Thanks a lot for your support :)';\n if ( isOverridenLicense && license && license.check_url ) {\n message = <><span>{message}</span><br /><small>This license was enabled manually. To check your license status, please click <a target=\"_blank\" href={license.check_url + '&cache=' + (Math.random() * (642000))}>here</a>.</small></>;\n }\n if (!success) {\n if (!license) {\n message = 'Unknown error :(';\n }\n else if (license.issue === 'no_activations_left') {\n message = <span>There are no activations left for this license. You can visit your account at the <a target='_blank' rel=\"noreferrer\" href='https://meowapps.com'>Meow Apps Store</a>, unregister a site, and click on <i>Retry to validate</i>.</span>;\n }\n else if (license.issue === 'expired') {\n message = <span>Your license has expired. You can get another license or renew the current one by visiting your account at the <a target='_blank' rel=\"noreferrer\" href='https://meowapps.com'>Meow Apps Store</a>.</span>;\n }\n else if (license.issue === 'missing') {\n message = 'This license does not exist.';\n }\n else if (license.issue === 'disabled') {\n message = 'This license has been disabled.';\n }\n else if (license.issue === 'item_name_mismatch') {\n message = 'This license seems to be for a different plugin... isn\\'t it? :)';\n }\n else if (license.issue === 'forced') {\n message = 'ABC';\n }\n else {\n message = <span>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 <a target='_blank' rel=\"noreferrer\" href='https://meowapps.com/contact/'>contact us</a>.</span>\n console.error({ license });\n }\n }\n\n const jsxNonPro = \n <NekoBlock title=\"Pro Version (Not Installed)\" className=\"primary\">\n You will find more information about the Pro Version <a target='_blank' rel=\"noreferrer\" href={`https://meowapps.com`}>here</a>. If you actually bought the Pro Version already, please remove the current plugin and download the Pro Version from your account at the <a target='_blank' rel=\"noreferrer\" href='https://meowapps.com/'>Meow Apps Store</a>.\n </NekoBlock>;\n\n const jsxProVersion = \n <NekoBlock title={`Pro Version (${licenseTextStatus})`} busy={busy} className=\"primary\">\n\n <NekoSettings title=\"Serial Key\" style={{ fontWeight: 'bold' }}><NekoInput id=\"mfrh_pro_serial\" \n name=\"mfrh_pro_serial\" disabled={busy} value={serialKey} onChange={(txt) => setSerialKey(txt)} placeholder=\"\" />\n </NekoSettings>\n\n {license && !success && <NekoMessageDanger>{message}</NekoMessageDanger>}\n {license && success && <NekoMessageSuccess>{message}</NekoMessageSuccess>}\n\n {!license && <NekoTypo p>\n Insert your serial key above. If you don&apos;t have one yet, you can get one <a href=\"https://meowapps.com\">here</a>. If there was an error during the validation, try the <i>Retry</i> to <i>validate</i> button.\n </NekoTypo>\n }\n\n <NekoSettings contentAlign=\"right\">\n {license && !success && <NekoButton className=\"secondary\" disabled={busy || !serialKey} \n onClick={validateLicense}>Retry to validate\n </NekoButton>}\n {license && license.key === serialKey && <NekoButton className=\"secondary\" disabled={busy || !serialKey} \n onClick={removeLicense}>Remove License\n </NekoButton>}\n <NekoButton disabled={busy || !serialKey || (license && license.key === serialKey)} \n onClick={validateLicense}>Validate License</NekoButton>\n {meowMode && !success && <NekoButton disabled={busy || !serialKey || (license && license.key === serialKey)} \n onClick={forceLicense} className=\"danger\">Force License</NekoButton>}\n </NekoSettings>\n\n <NekoModal\n isOpen={currentModal === 'licenseAdded'}\n title=\"Thank you :)\"\n content=\"The Pro features have been enabled. This page should be now reloaded.\"\n ok='Reload'\n onOkClick={() => location.reload()}\n />\n\n <NekoModal\n isOpen={currentModal === 'licenseRemoved'}\n title=\"Goodbye :(\"\n content=\"The Pro features have been disabled. This page should be now reloaded.\"\n ok='Reload'\n onOkClick={() => location.reload()}\n />\n\n </NekoBlock>;\n\n return (isPro ? jsxProVersion : jsxNonPro);\n};\n\nexport { LicenseBlock };\n","const { render } = wp.element;\nimport { Dashboard } from './dashboard/Dashboard';\n\n// Common Dashboard\nif (!document.meowDashboardLoaded) {\n\tdocument.meowDashboardLoaded = true;\n\tdocument.addEventListener('DOMContentLoaded', function(event) {\n\t\tconst commmonDash = document.getElementById('meow-common-dashboard');\n\t\tif (commmonDash) {\n\t\t\trender((<Dashboard />), commmonDash);\n\t\t}\n\t});\n}\n\nexport { LicenseBlock } from './components/LicenseBlock';\n","// React & Vendor Libs\nconst { useState, useMemo } = wp.element;\nimport useSWR from 'swr';\n\n// NekoUI\nimport { NekoInput, NekoTypo, NekoPage, NekoBlock, NekoHeader, NekoContainer, NekoSettings,\n NekoTabs, NekoTab, NekoCheckboxGroup, NekoCheckbox, NekoWrapper, NekoSelect, NekoOption,\n NekoColumn } from '@neko-ui';\nimport { jsonFetcher, postFetch, useHandleSWR } from '@neko-ui';\nimport { apiUrl, prefix, domain, isRegistered, isPro, restNonce } from '@app/settings';\nimport { LicenseBlock } from '@common';\n\nconst Settings = () => {\n\n const swrAllSettingsKey = useMemo(() => {\n return [`${apiUrl}/all_settings/`, { headers: { 'X-WP-Nonce': restNonce } }];\n }, [apiUrl, restNonce]);\n const { data: swrSettings, mutate: mutateSwrSettings } = useSWR(swrAllSettingsKey, jsonFetcher);\n const { busy: busySettings, data: settings, error: swrError } = useHandleSWR(swrSettings, {}, true);\n const [ busyAction, setBusyAction ] = useState(false);\n const busy = busySettings || busyAction;\n\n const obmode = settings?.mgcl_obmode;\n const parsingEngine = settings?.mgcl_parsing_engine;\n const log = settings?.mgcl_log;\n const buttonEnabled = settings?.mgcl_button_enabled;\n const buttonLabel = settings?.mgcl_button_label;\n\n const parsingEngineOptions = [\n { id: \"none\", value: \"None\", label: \"None (Not Supported Yet)\"},\n { id: \"htmldomparser\", value: \"HtmlDomParser\", label: \"HtmlDomParser\" },\n { id: \"didom\", value: \"DiDom\", label: \"DiDom\" }\n ]\n\n const updateOption = async (value, id) => {\n let newSettingsData = { ...swrSettings.data };\n newSettingsData[id] = value;\n mutateSwrSettings({ ...swrSettings, data: newSettingsData }, false);\n setBusyAction(true);\n try {\n await postFetch(`${apiUrl}/update_option`, { json: { name: id, value }, nonce: restNonce });\n }\n catch (err) {\n alert(err.message);\n }\n finally {\n setBusyAction(false);\n mutateSwrSettings();\n }\n }\n\n /**\n * Settings\n */\n\n const jsxOBMode =\n <NekoSettings title=\"OB Mode\">\n <NekoCheckboxGroup max=\"1\">\n <NekoCheckbox id=\"mgcl_obmode\" label=\"Enabled\" value=\"1\" checked={obmode} onChange={updateOption} description=\"If the linked images are outside of the main content (header, sidebar, etc), OB Mode is needed. This slows down the processing (cache recommended).\" />\n </NekoCheckboxGroup>\n </NekoSettings>;\n\n const jsxParsingEngine =\n <NekoSettings title=\"Parsing Engine\" description=\"Hello\">\n <NekoSelect id=\"mgcl_parsing_engine\" onChange={updateOption}>\n {parsingEngineOptions.map(option => <NekoOption id={`mgcl_parsing_engine_${option.id}`} value={option.value} label={option.label} checked={parsingEngine === option.value} /> )}\n </NekoSelect>\n </NekoSettings>;\n\n const jsxLog =\n <NekoSettings title=\"Logs\">\n <NekoCheckboxGroup max=\"1\">\n <NekoCheckbox id=\"mgcl_log\" label=\"Logs\" value=\"1\" checked={log} onChange={updateOption} description=\"Simple logging, written directly in the PHP Error Logs.\" />\n </NekoCheckboxGroup>\n </NekoSettings>;\n\n /**\n * CTA Buttons\n */\n const jsxUseButtons =\n <NekoSettings title=\"Use Buttons\">\n <NekoCheckboxGroup max=\"1\">\n <NekoCheckbox id=\"mgcl_button_enabled\" label=\"Enabled\" value=\"1\" description=\"A call-to-action button will be used of a clickable image.\" checked={buttonEnabled} onChange={updateOption} />\n </NekoCheckboxGroup>\n </NekoSettings>;\n\n const jsxButtonLabel =\n <NekoSettings title=\"Label\">\n <NekoInput id=\"mgcl_button_label\" name=\"mgcl_button_label\" value={buttonLabel} description=\"A call-to-action button will be used of a clickable image.\" onBlur={updateOption} />\n </NekoSettings>;\n\n return (\n <NekoPage nekoErrors={[ swrError ]}>\n\n <NekoHeader title='Gallery Custom Links | Settings' subtitle='By Jordy Meow' />\n\n <NekoWrapper>\n\n <NekoColumn full>\n <NekoContainer>\n <NekoTypo p>This plugin works out of the box, the default settings are the best for most installs. Don't hesitate to take a look at the <a target=\"_blank\" href=\"https://meowapps.com/plugin/gallery-custom-links/\">official page</a>. <b>If you are interested in the Pro Version, it's <a target=\"_blank\" href=\"https://meowapps.com/products/gallery-custom-links-pro/\">here!</a></b> 💕</NekoTypo>\n </NekoContainer>\n\n <NekoTabs>\n\n <NekoTab title='Settings'>\n <NekoWrapper>\n\n <NekoColumn minimal>\n <NekoBlock busy={busy} title=\"Settings\" className=\"primary\">\n {jsxParsingEngine}\n {jsxOBMode}\n {jsxLog}\n </NekoBlock>\n </NekoColumn>\n\n <NekoColumn minimal>\n <NekoBlock busy={busy} title=\"CTA Buttons\" className=\"primary\">\n <NekoTypo p><b>Currently works with the <a href=\"https://wordpress.org/plugins/meow-gallery/\">Meow Gallery</a> and Gutenberg Galleries.</b> In a future Pro version, support for additional galleries might be added (please contact <a href=\"https://meowapps.com/contact/\">Meow Apps</a> for this).</NekoTypo>\n {jsxUseButtons}\n {!buttonEnabled ? null : jsxButtonLabel}\n </NekoBlock>\n </NekoColumn>\n\n </NekoWrapper>\n </NekoTab>\n\n <NekoTab title='License'>\n <LicenseBlock domain={domain} prefix={prefix} isPro={isPro} isRegistered={isRegistered} />\n </NekoTab>\n\n </NekoTabs>\n\n </NekoColumn>\n\n </NekoWrapper>\n\n </NekoPage>\n );\n};\n\nexport default Settings;","const { __ } = wp.i18n;\n\nconst i18n = {};\n\ni18n.PENDING = __( 'Pending', 'gallery-custom-links' );\ni18n.RENAME = __( 'Rename', 'gallery-custom-links' );\ni18n.TITLE = __( 'Title', 'gallery-custom-links' );\ni18n.SAME_PAGE = __( 'Same page', 'gallery-custom-links' );\ni18n.NEW_PAGE = __( 'New page', 'gallery-custom-links' );\ni18n.LINK_URL = __( 'Link URL', 'gallery-custom-links' );\ni18n.LINK_TARGET = __( 'Link Target', 'gallery-custom-links' );\ni18n.LINK_REL = __( 'Link Rel', 'gallery-custom-links' );\ni18n.ARIAL_LABEL = __( 'Arial Label', 'gallery-custom-links' );\n\nexport default i18n;\n\n","// React & Vendor Libs\nconst { useState, useCallback } = wp.element;\nimport Styled from \"styled-components\";\n\n// Libs\nimport i18n from '@app/i18n';\nimport { apiUrl, restNonce } from '@app/settings';\n\n// NekoUI\nimport { NekoTypo, NekoIcon, NekoModal, NekoInput, NekoSelect, NekoOption } from '@neko-ui';\nimport { postFetch } from '@neko-ui';\n\nconst targets = [\n\t{ label: i18n.SAME_PAGE, value: '_self' },\n\t{ label: i18n.NEW_PAGE, value: '_blank' }\n];\n\nconst GroupContainer = Styled.div`\n\talign-items: center;\n\tdisplay: flex;\n\tmargin-bottom: 10px;\n\n\tp {\n\t\tmargin: 0 !important;\n\t\twidth: 20%;\n\t}\n\n\t> div {\n\t\tflex-grow: 1;\n\t}\n`;\n\nconst EditLinkField = ( props ) => {\n\n\tconst [ busyAction, setBusyAction ] = useState(false);\n\tconst busy = busyAction;\n\n\tconst { postId } = props;\n\tconst [ url, setUrl ] = useState( props.url );\n\tconst [ target, setTarget ] = useState( props.target ? props.target : '_self' );\n\tconst [ rel, setRel ] = useState( props.rel );\n\tconst [ aria, setAria ] = useState( props.aria );\n\tconst [ openModal, setOpenModal ] = useState( false );\n\n\tconst updateOption = async (postId, url, target, rel, aria) => {\n\t\tsetBusyAction( true );\n\t\tlet result = true;\n\t\ttry {\n\t\t\tconst res = await postFetch( `${apiUrl}/update_meta`, { json: {\n\t\t\t\tpost_id: postId,\n\t\t\t\t_gallery_link_url: url,\n\t\t\t\t_gallery_link_target: target,\n\t\t\t\t_gallery_link_rel: rel,\n\t\t\t\t_gallery_link_aria: aria,\n\t\t\t}, nonce: restNonce } );\n\t\t\tif ( !res.success ) {\n\t\t\t\tresult = false;\n\t\t\t\talert(res.message);\n\t\t\t}\n\t\t} catch ( err ) {\n\t\t\tresult = false;\n\t\t\talert( err.message );\n\t\t} finally {\n\t\t\tif ( result ) onCloseModal();\n\t\t\tsetBusyAction( false );\n\t\t}\n\t};\n\n\tconst onCloseModal = () => setOpenModal( false )\n\n\tconst onOkClick = useCallback(() => {\n\t\tupdateOption( postId, url, target, rel, aria );\n\t}, [postId, url, target, rel, aria, updateOption, onCloseModal]);\n\n const onKeyDown = useCallback((e) => {\n if (e.key === 'Enter' || e.keyCode === 13) {\n e.preventDefault();\n onOkClick();\n }\n }, [onOkClick]);\n\n\treturn (\n\t\t<>\n\t\t\t<span onClick={() => setOpenModal( true )} style={{ cursor: 'pointer' }}>\n\t\t\t\t<NekoIcon icon=\"link\" disabled={!url} />\n\t\t\t</span>\n\t\t\t<NekoModal\n\t\t\t\tisOpen={openModal}\n\t\t\t\tonRequestClose={onCloseModal}\n\t\t\t\ttitle=\"Edit the custom link\"\n\t\t\t\tcontent={\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<GroupContainer>\n\t\t\t\t\t\t\t<NekoTypo p>{i18n.LINK_URL}</NekoTypo>\n\t\t\t\t\t\t\t<NekoInput disabled={busy} onInput={(e) => setUrl(e.target.value)}\n onKeyDown={onKeyDown} value={url} autoFocus />\n\t\t\t\t\t\t</GroupContainer>\n\t\t\t\t\t\t<GroupContainer>\n\t\t\t\t\t\t\t<NekoTypo p>{i18n.LINK_TARGET}</NekoTypo>\n\t\t\t\t\t\t\t<NekoSelect scrolldown={true} value={target} onChange={(v) => setTarget(v)} disabled={busy}>\n\t\t\t\t\t\t\t\t{targets.map(target => <NekoOption value={target.value} label={target.label} />)}\n\t\t\t\t\t\t\t</NekoSelect>\n\t\t\t\t\t\t</GroupContainer>\n\t\t\t\t\t\t<GroupContainer>\n\t\t\t\t\t\t\t<NekoTypo p>{i18n.LINK_REL}</NekoTypo>\n\t\t\t\t\t\t\t<NekoInput disabled={busy} onInput={(e) => setRel(e.target.value)} value={rel} />\n\t\t\t\t\t\t</GroupContainer>\n\t\t\t\t\t\t<GroupContainer>\n\t\t\t\t\t\t\t<NekoTypo p>{i18n.ARIAL_LABEL}</NekoTypo>\n\t\t\t\t\t\t\t<NekoInput disabled={busy} onInput={(e) => setAria(e.target.value)} value={aria} />\n\t\t\t\t\t\t</GroupContainer>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\tonOkClick={onOkClick}\n\t\t\t\tonCancelClick={onCloseModal}\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nexport default EditLinkField;","// React & Vendor Libs\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\n// Gallery Custom Links\nimport Settings from '@app/components/Settings';\nimport EditLinkField from '@app/components/EditLinkField';\n\nlet isMediaLibrary = null;\n\nfunction init() {\n\tisMediaLibrary = document.getElementsByClassName('upload-php')[0];\n}\n\n// Gallery Custom Links Settings\nfunction addSettings() {\n\tconst container = document.getElementById('mgcl-admin-settings');\n\tif (container) {\n\t\tReactDOM.render((<Settings />), container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\ndocument.addEventListener('DOMContentLoaded', function(event) {\n\n\tinit();\n\n\tif (addSettings() || !isMediaLibrary) {\n\t\treturn;\n\t}\n\n\t// Edit Link Fields need to be added in the Media Library\n\tconst fields = Array.from(document.getElementsByClassName('mgcl-edit-link-field'));\n\tfields.forEach(field => {\n\t\tconst postId = field.getAttribute('data-post-id');\n\t\tconst url = field.getAttribute('data-url');\n\t\tconst target = field.getAttribute('data-target');\n\t\tconst rel = field.getAttribute('data-rel');\n\t\tconst aria = field.getAttribute('data-aria');\n\t\tReactDOM.render((<EditLinkField postId={postId} url={url} target={target} rel={rel} aria={aria} />), field);\n\t});\n\n});\n"],"sourceRoot":""}
classes/core.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require MGCL_PATH . '/vendor/autoload.php';
4
 
5
  class Meow_MGCL_Core
6
  {
1
  <?php
2
 
3
+ require trailingslashit( MGCL_PATH ) . 'vendor/autoload.php';
4
 
5
  class Meow_MGCL_Core
6
  {
gallery-custom-links.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Gallery Custom Links
4
  Plugin URI: https://meowapps.com
5
  Description: Gallery Custom Links allows you to link images from galleries to a specified URL. Tested with WordPress Gallery, Gutenberg, the Meow Gallery and others.
6
- Version: 2.1.3
7
  Author: Jordy Meow
8
  Author URI: https://meowapps.com
9
  Text Domain: gallery-custom-links
@@ -15,7 +15,7 @@ http://www.gnu.org/licenses/gpl.html
15
  */
16
 
17
  if ( !defined( 'MGCL_VERSION' ) ) {
18
- define( 'MGCL_VERSION', '2.1.3' );
19
  define( 'MGCL_PREFIX', 'mgcl' );
20
  define( 'MGCL_DOMAIN', 'gallery-custom-links' );
21
  define( 'MGCL_ENTRY', __FILE__ );
@@ -26,38 +26,6 @@ if ( !defined( 'MGCL_VERSION' ) ) {
26
 
27
  require_once( 'classes/init.php' );
28
 
29
- // Temporary
30
- // TODO: Let's delete the 'mgcl_hide_new_version' later
31
-
32
- if ( is_admin() && !get_option( 'mgcl_hide_new_version' ) ) {
33
-
34
- // Delete notice
35
- if ( isset( $_POST['mgcl_hide_new_version'] ) || isset( $_GET['mgcl_hide_new_version'] ) ) {
36
- update_option( 'mgcl_hide_new_version', 1 );
37
- return;
38
- }
39
-
40
- // Show notice
41
- function mgcl_new_plugin_notice() {
42
- $url = 'https://meowapps.com/products/gallery-custom-links-pro/';
43
- echo '<div class="notice notice-success">';
44
- echo '<h2>Announcement for Gallery Custom Links 🎵</h2>';
45
- echo '<p>I want to make it better, easier to use, with a better support. In order to do this, <b>I am launching a Pro Version!</b><br />If you want to support Gallery Custom Links and/or take advantage of the currently very low price of the Pro Version, please check it out. Thanks a lot! 😊</p>';
46
- echo '<div style="display: flex; justify-content: space-between; margin-top: 15px; margin-bottom: 15px;">
47
- <a target="_blank" href="' . $url . '" class="wp-core-ui button button-primary" style="margin-right: 10px;">
48
- Check the new Pro Version
49
- </a>
50
- <div>
51
- <form method="post" action="">
52
- <input type="hidden" name="mgcl_hide_new_version" value="true">
53
- <input type="submit" name="submit" id="submit" class="button" value="Hide this!">
54
- </form>
55
- </div>
56
- </div>
57
- ';
58
- echo '</div>';
59
- }
60
- add_action( 'admin_notices', 'mgcl_new_plugin_notice' );
61
- }
62
 
63
  ?>
3
  Plugin Name: Gallery Custom Links
4
  Plugin URI: https://meowapps.com
5
  Description: Gallery Custom Links allows you to link images from galleries to a specified URL. Tested with WordPress Gallery, Gutenberg, the Meow Gallery and others.
6
+ Version: 2.1.4
7
  Author: Jordy Meow
8
  Author URI: https://meowapps.com
9
  Text Domain: gallery-custom-links
15
  */
16
 
17
  if ( !defined( 'MGCL_VERSION' ) ) {
18
+ define( 'MGCL_VERSION', '2.1.4' );
19
  define( 'MGCL_PREFIX', 'mgcl' );
20
  define( 'MGCL_DOMAIN', 'gallery-custom-links' );
21
  define( 'MGCL_ENTRY', __FILE__ );
26
 
27
  require_once( 'classes/init.php' );
28
 
29
+ delete_option( 'mgcl_hide_new_version' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
 
31
  ?>
readme.txt CHANGED
@@ -5,7 +5,7 @@ Donate link: https://meowapps.com/donation/
5
  Requires at least: 5.0
6
  Tested up to: 6.0.1
7
  Requires PHP: 7.0
8
- Stable tag: 2.1.3
9
 
10
  Gallery Custom Links allows you to link images from galleries to a specified URL. Tested with WordPress Gallery, Gutenberg, the Meow Gallery and others.
11
 
@@ -42,6 +42,10 @@ Replace all the files. Nothing else to do.
42
 
43
  == Changelog ==
44
 
 
 
 
 
45
  = 2.1.3 (2022/09/06) =
46
  * Add: Added column in the Media Library (to edit faster).
47
 
@@ -51,7 +55,6 @@ Replace all the files. Nothing else to do.
51
 
52
  = 2.1.0 (2022/05/17) =
53
  * Fix: Avoid useless logs.
54
- * Info: If you like the plugin, your reviews are welcome [here](https://wordpress.org/support/plugin/gallery-custom-links/reviews/?rate=5#new-post). Thank you :)
55
 
56
  = 2.0.9 (2022/03/18) =
57
  * Fix: Compatibility with the latest version of Gutenberg Gallery.
5
  Requires at least: 5.0
6
  Tested up to: 6.0.1
7
  Requires PHP: 7.0
8
+ Stable tag: 2.1.4
9
 
10
  Gallery Custom Links allows you to link images from galleries to a specified URL. Tested with WordPress Gallery, Gutenberg, the Meow Gallery and others.
11
 
42
 
43
  == Changelog ==
44
 
45
+ = 2.1.4 (2022/10/05) =
46
+ * Add: Some files were missing for the libraries autoload.
47
+ * Info: If you like the plugin, your reviews are welcome [here](https://wordpress.org/support/plugin/gallery-custom-links/reviews/?rate=5#new-post). Thank you :)
48
+
49
  = 2.1.3 (2022/09/06) =
50
  * Add: Added column in the Media Library (to edit faster).
51
 
55
 
56
  = 2.1.0 (2022/05/17) =
57
  * Fix: Avoid useless logs.
 
58
 
59
  = 2.0.9 (2022/03/18) =
60
  * Fix: Compatibility with the latest version of Gutenberg Gallery.