Site Reviews - Version 5.9.0

Version Description

(2021-04-24) =

  • Added a "Compatibility Issues" section to the Help page to document incompatible plugins along with possible workarounds.
  • Added a "terms" option to the shortcodes which allow you to only display reviews where the terms field was accepted in the form. All reviews that were submitted before this update will have their terms set as accepted.
  • Fixed database foreign table constraints
  • Fixed settings tabs on touch devices
  • Improved the Tools page
Download this release

Release Info

Developer geminilabs
Plugin Icon 128x128 Site Reviews
Version 5.9.0
Comparing to
See all releases

Code changes from version 5.8.5 to 5.9.0

Files changed (70) hide show
  1. assets/scripts/site-reviews-admin.js +1 -1
  2. assets/scripts/site-reviews-blocks.js +1 -1
  3. assets/scripts/site-reviews.js +1 -1
  4. assets/styles/admin/admin.css +1 -1
  5. config/forms/metabox-fields.php +5 -0
  6. languages/site-reviews-en_US.mo +0 -0
  7. languages/site-reviews-en_US.po +303 -298
  8. languages/site-reviews.pot +269 -264
  9. migration.php +19 -0
  10. plugin/Application.php +2 -0
  11. plugin/Blocks/SiteReviewsBlock.php +4 -0
  12. plugin/Blocks/SiteReviewsSummaryBlock.php +4 -0
  13. plugin/Commands/CreateReview.php +2 -0
  14. plugin/Controllers/ReviewController.php +1 -0
  15. plugin/Database.php +12 -0
  16. plugin/Database/NormalizeQueryArgs.php +1 -0
  17. plugin/Database/Sql.php +72 -60
  18. plugin/Database/SqlSchema.php +37 -12
  19. plugin/Defaults/CreateReviewDefaults.php +17 -1
  20. plugin/Defaults/RatingDefaults.php +2 -0
  21. plugin/Defaults/ReviewDefaults.php +2 -0
  22. plugin/Defaults/ReviewsDefaults.php +1 -0
  23. plugin/Defaults/SiteReviewsDefaults.php +1 -0
  24. plugin/Defaults/SiteReviewsSummaryDefaults.php +1 -0
  25. plugin/Helper.php +3 -0
  26. plugin/Install.php +14 -11
  27. plugin/Modules/Html/Tags/FormFieldsTag.php +2 -0
  28. plugin/Modules/Migrate.php +7 -4
  29. plugin/Modules/Migrations/Migrate_3_0_0.php +3 -2
  30. plugin/Modules/Migrations/Migrate_4_0_2.php +2 -1
  31. plugin/Modules/Migrations/Migrate_4_4_0.php +2 -1
  32. plugin/Modules/Migrations/Migrate_4_5_0.php +2 -1
  33. plugin/Modules/Migrations/Migrate_5_0_0.php +2 -1
  34. plugin/Modules/Migrations/Migrate_5_1_0.php +0 -21
  35. plugin/Modules/Migrations/Migrate_5_2_0.php +2 -1
  36. plugin/Modules/Migrations/Migrate_5_3_0.php +21 -12
  37. plugin/Modules/Migrations/Migrate_5_6_0.php +0 -16
  38. plugin/Modules/Migrations/Migrate_5_9_0.php +88 -0
  39. plugin/Modules/Sanitizer.php +12 -0
  40. plugin/Review.php +1 -0
  41. readme.txt +27 -17
  42. site-reviews.php +2 -1
  43. views/pages/addons/index.php +4 -1
  44. views/pages/documentation/faq/ipaddress-incorrectly-detected.php +1 -1
  45. views/pages/documentation/functions/glsr_create_review.php +1 -0
  46. views/pages/documentation/shortcodes/site_reviews.php +1 -0
  47. views/pages/documentation/shortcodes/site_reviews/terms.php +7 -0
  48. views/pages/documentation/shortcodes/site_reviews_summary.php +1 -0
  49. views/pages/documentation/shortcodes/site_reviews_summary/terms.php +7 -0
  50. views/pages/documentation/support.php +1 -0
  51. views/pages/documentation/support/common-problems-and-solutions.php +1 -1
  52. views/pages/documentation/support/compatibility-issues.php +24 -0
  53. views/pages/settings/index.php +4 -1
  54. views/pages/tools/console.php +5 -3
  55. views/pages/tools/general.php +17 -192
  56. views/pages/tools/general/export-plugin-settings.php +27 -0
  57. views/pages/tools/general/import-plugin-settings.php +30 -0
  58. views/pages/tools/general/import-reviews.php +45 -0
  59. views/pages/tools/general/migrate-plugin.php +24 -0
  60. views/pages/tools/general/optimise-db-tables.php +53 -0
  61. views/pages/tools/general/reset-assigned-meta.php +20 -0
  62. views/pages/tools/general/reset-permissions.php +25 -0
  63. views/pages/tools/general/test-ip-detection.php +19 -0
  64. views/pages/tools/index.php +4 -1
  65. views/pages/tools/system-info.php +3 -1
  66. views/pages/welcome/getting-started.php +1 -1
  67. views/pages/welcome/whatsnew.php +1 -0
  68. views/pages/welcome/whatsnew/v58.php +2 -2
  69. views/pages/welcome/whatsnew/v59.php +25 -0
  70. views/partials/notices/migrate.php +1 -1
assets/scripts/site-reviews-admin.js CHANGED
@@ -1,2 +1,2 @@
1
  /*! For license information please see site-reviews-admin.js.LICENSE.txt */
2
- !function(){var t={8:function(t){function n(e){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?t.exports=n=function(t){return typeof t}:t.exports=n=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(e)}t.exports=n},9367:function(t,n){var e,i,r;i=[t,n],void 0===(r="function"==typeof(e=function(t,n){"use strict";var e,i,r="function"==typeof Map?new Map:(e=[],i=[],{has:function(t){return e.indexOf(t)>-1},get:function(t){return i[e.indexOf(t)]},set:function(t,n){-1===e.indexOf(t)&&(e.push(t),i.push(n))},delete:function(t){var n=e.indexOf(t);n>-1&&(e.splice(n,1),i.splice(n,1))}}),o=function(t){return new Event(t,{bubbles:!0})};try{new Event("test")}catch(t){o=function(t){var n=document.createEvent("Event");return n.initEvent(t,!0,!1),n}}function s(t){if(t&&t.nodeName&&"TEXTAREA"===t.nodeName&&!r.has(t)){var n=null,e=null,i=null,s=function(){t.clientWidth!==e&&d()},a=function(n){window.removeEventListener("resize",s,!1),t.removeEventListener("input",d,!1),t.removeEventListener("keyup",d,!1),t.removeEventListener("autosize:destroy",a,!1),t.removeEventListener("autosize:update",d,!1),Object.keys(n).forEach((function(e){t.style[e]=n[e]})),r.delete(t)}.bind(t,{height:t.style.height,resize:t.style.resize,overflowY:t.style.overflowY,overflowX:t.style.overflowX,wordWrap:t.style.wordWrap});t.addEventListener("autosize:destroy",a,!1),"onpropertychange"in t&&"oninput"in t&&t.addEventListener("keyup",d,!1),window.addEventListener("resize",s,!1),t.addEventListener("input",d,!1),t.addEventListener("autosize:update",d,!1),t.style.overflowX="hidden",t.style.wordWrap="break-word",r.set(t,{destroy:a,update:d}),u()}function u(){var e=window.getComputedStyle(t,null);"vertical"===e.resize?t.style.resize="none":"both"===e.resize&&(t.style.resize="horizontal"),n="content-box"===e.boxSizing?-(parseFloat(e.paddingTop)+parseFloat(e.paddingBottom)):parseFloat(e.borderTopWidth)+parseFloat(e.borderBottomWidth),isNaN(n)&&(n=0),d()}function c(n){var e=t.style.width;t.style.width="0px",t.offsetWidth,t.style.width=e,t.style.overflowY=n}function l(t){for(var n=[];t&&t.parentNode&&t.parentNode instanceof Element;)t.parentNode.scrollTop&&n.push({node:t.parentNode,scrollTop:t.parentNode.scrollTop}),t=t.parentNode;return n}function f(){if(0!==t.scrollHeight){var i=l(t),r=document.documentElement&&document.documentElement.scrollTop;t.style.height="",t.style.height=t.scrollHeight+n+"px",e=t.clientWidth,i.forEach((function(t){t.node.scrollTop=t.scrollTop})),r&&(document.documentElement.scrollTop=r)}}function d(){f();var n=Math.round(parseFloat(t.style.height)),e=window.getComputedStyle(t,null),r="content-box"===e.boxSizing?Math.round(parseFloat(e.height)):t.offsetHeight;if(r<n?"hidden"===e.overflowY&&(c("scroll"),f(),r="content-box"===e.boxSizing?Math.round(parseFloat(window.getComputedStyle(t,null).height)):t.offsetHeight):"hidden"!==e.overflowY&&(c("hidden"),f(),r="content-box"===e.boxSizing?Math.round(parseFloat(window.getComputedStyle(t,null).height)):t.offsetHeight),i!==r){i=r;var s=o("autosize:resized");try{t.dispatchEvent(s)}catch(t){}}}}function a(t){var n=r.get(t);n&&n.destroy()}function u(t){var n=r.get(t);n&&n.update()}var c=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?((c=function(t){return t}).destroy=function(t){return t},c.update=function(t){return t}):((c=function(t,n){return t&&Array.prototype.forEach.call(t.length?t:[t],(function(t){return s(t,n)})),t}).destroy=function(t){return t&&Array.prototype.forEach.call(t.length?t:[t],a),t},c.update=function(t){return t&&Array.prototype.forEach.call(t.length?t:[t],u),t}),n.default=c,t.exports=n.default})?e.apply(n,i):e)||(t.exports=r)},5433:function(){Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}},8325:function(t,n,e){var i=function(t){var n=/\blang(?:uage)?-([\w-]+)\b/i,e=0,i={manual:t.Prism&&t.Prism.manual,disableWorkerMessageHandler:t.Prism&&t.Prism.disableWorkerMessageHandler,util:{encode:function t(n){return n instanceof r?new r(n.type,t(n.content),n.alias):Array.isArray(n)?n.map(t):n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(t){return Object.prototype.toString.call(t).slice(8,-1)},objId:function(t){return t.__id||Object.defineProperty(t,"__id",{value:++e}),t.__id},clone:function t(n,e){var r,o;switch(e=e||{},i.util.type(n)){case"Object":if(o=i.util.objId(n),e[o])return e[o];for(var s in r={},e[o]=r,n)n.hasOwnProperty(s)&&(r[s]=t(n[s],e));return r;case"Array":return o=i.util.objId(n),e[o]?e[o]:(r=[],e[o]=r,n.forEach((function(n,i){r[i]=t(n,e)})),r);default:return n}},getLanguage:function(t){for(;t&&!n.test(t.className);)t=t.parentElement;return t?(t.className.match(n)||[,"none"])[1].toLowerCase():"none"},currentScript:function(){if("undefined"==typeof document)return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(i){var t=(/at [^(\r\n]*\((.*):.+:.+\)$/i.exec(i.stack)||[])[1];if(t){var n=document.getElementsByTagName("script");for(var e in n)if(n[e].src==t)return n[e]}return null}},isActive:function(t,n,e){for(var i="no-"+n;t;){var r=t.classList;if(r.contains(n))return!0;if(r.contains(i))return!1;t=t.parentElement}return!!e}},languages:{extend:function(t,n){var e=i.util.clone(i.languages[t]);for(var r in n)e[r]=n[r];return e},insertBefore:function(t,n,e,r){var o=(r=r||i.languages)[t],s={};for(var a in o)if(o.hasOwnProperty(a)){if(a==n)for(var u in e)e.hasOwnProperty(u)&&(s[u]=e[u]);e.hasOwnProperty(a)||(s[a]=o[a])}var c=r[t];return r[t]=s,i.languages.DFS(i.languages,(function(n,e){e===c&&n!=t&&(this[n]=s)})),s},DFS:function t(n,e,r,o){o=o||{};var s=i.util.objId;for(var a in n)if(n.hasOwnProperty(a)){e.call(n,a,n[a],r||a);var u=n[a],c=i.util.type(u);"Object"!==c||o[s(u)]?"Array"!==c||o[s(u)]||(o[s(u)]=!0,t(u,e,a,o)):(o[s(u)]=!0,t(u,e,null,o))}}},plugins:{},highlightAll:function(t,n){i.highlightAllUnder(document,t,n)},highlightAllUnder:function(t,n,e){var r={callback:e,container:t,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};i.hooks.run("before-highlightall",r),r.elements=Array.prototype.slice.apply(r.container.querySelectorAll(r.selector)),i.hooks.run("before-all-elements-highlight",r);for(var o,s=0;o=r.elements[s++];)i.highlightElement(o,!0===n,r.callback)},highlightElement:function(e,r,o){var s=i.util.getLanguage(e),a=i.languages[s];e.className=e.className.replace(n,"").replace(/\s+/g," ")+" language-"+s;var u=e.parentElement;u&&"pre"===u.nodeName.toLowerCase()&&(u.className=u.className.replace(n,"").replace(/\s+/g," ")+" language-"+s);var c={element:e,language:s,grammar:a,code:e.textContent};function l(t){c.highlightedCode=t,i.hooks.run("before-insert",c),c.element.innerHTML=c.highlightedCode,i.hooks.run("after-highlight",c),i.hooks.run("complete",c),o&&o.call(c.element)}if(i.hooks.run("before-sanity-check",c),!c.code)return i.hooks.run("complete",c),void(o&&o.call(c.element));if(i.hooks.run("before-highlight",c),c.grammar)if(r&&t.Worker){var f=new Worker(i.filename);f.onmessage=function(t){l(t.data)},f.postMessage(JSON.stringify({language:c.language,code:c.code,immediateClose:!0}))}else l(i.highlight(c.code,c.grammar,c.language));else l(i.util.encode(c.code))},highlight:function(t,n,e){var o={code:t,grammar:n,language:e};return i.hooks.run("before-tokenize",o),o.tokens=i.tokenize(o.code,o.grammar),i.hooks.run("after-tokenize",o),r.stringify(i.util.encode(o.tokens),o.language)},tokenize:function(t,n){var e=n.rest;if(e){for(var i in e)n[i]=e[i];delete n.rest}var r=new a;return u(r,r.head,t),s(t,r,n,r.head,0),function(t){var n=[],e=t.head.next;for(;e!==t.tail;)n.push(e.value),e=e.next;return n}(r)},hooks:{all:{},add:function(t,n){var e=i.hooks.all;e[t]=e[t]||[],e[t].push(n)},run:function(t,n){var e=i.hooks.all[t];if(e&&e.length)for(var r,o=0;r=e[o++];)r(n)}},Token:r};function r(t,n,e,i){this.type=t,this.content=n,this.alias=e,this.length=0|(i||"").length}function o(t,n,e,i){t.lastIndex=n;var r=t.exec(e);if(r&&i&&r[1]){var o=r[1].length;r.index+=o,r[0]=r[0].slice(o)}return r}function s(t,n,e,a,l,f){for(var d in e)if(e.hasOwnProperty(d)&&e[d]){var h=e[d];h=Array.isArray(h)?h:[h];for(var p=0;p<h.length;++p){if(f&&f.cause==d+","+p)return;var v=h[p],m=v.inside,y=!!v.lookbehind,b=!!v.greedy,g=v.alias;if(b&&!v.pattern.global){var w=v.pattern.toString().match(/[imsuy]*$/)[0];v.pattern=RegExp(v.pattern.source,w+"g")}for(var _=v.pattern||v,k=a.next,j=l;k!==n.tail&&!(f&&j>=f.reach);j+=k.value.length,k=k.next){var x=k.value;if(n.length>t.length)return;if(!(x instanceof r)){var S,F=1;if(b){if(!(S=o(_,j,t,y)))break;var Q=S.index,O=S.index+S[0].length,A=j;for(A+=k.value.length;Q>=A;)A+=(k=k.next).value.length;if(j=A-=k.value.length,k.value instanceof r)continue;for(var R=k;R!==n.tail&&(A<O||"string"==typeof R.value);R=R.next)F++,A+=R.value.length;F--,x=t.slice(j,A),S.index-=j}else if(!(S=o(_,0,x,y)))continue;Q=S.index;var z=S[0],P=x.slice(0,Q),$=x.slice(Q+z.length),C=j+x.length;f&&C>f.reach&&(f.reach=C);var L=k.prev;P&&(L=u(n,L,P),j+=P.length),c(n,L,F),k=u(n,L,new r(d,m?i.tokenize(z,m):z,g,z)),$&&u(n,k,$),F>1&&s(t,n,e,k.prev,j,{cause:d+","+p,reach:C})}}}}}function a(){var t={value:null,prev:null,next:null},n={value:null,prev:t,next:null};t.next=n,this.head=t,this.tail=n,this.length=0}function u(t,n,e){var i=n.next,r={value:e,prev:n,next:i};return n.next=r,i.prev=r,t.length++,r}function c(t,n,e){for(var i=n.next,r=0;r<e&&i!==t.tail;r++)i=i.next;n.next=i,i.prev=n,t.length-=r}if(t.Prism=i,r.stringify=function t(n,e){if("string"==typeof n)return n;if(Array.isArray(n)){var r="";return n.forEach((function(n){r+=t(n,e)})),r}var o={type:n.type,content:t(n.content,e),tag:"span",classes:["token",n.type],attributes:{},language:e},s=n.alias;s&&(Array.isArray(s)?Array.prototype.push.apply(o.classes,s):o.classes.push(s)),i.hooks.run("wrap",o);var a="";for(var u in o.attributes)a+=" "+u+'="'+(o.attributes[u]||"").replace(/"/g,"&quot;")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+a+">"+o.content+"</"+o.tag+">"},!t.document)return t.addEventListener?(i.disableWorkerMessageHandler||t.addEventListener("message",(function(n){var e=JSON.parse(n.data),r=e.language,o=e.code,s=e.immediateClose;t.postMessage(i.highlight(o,i.languages[r],r)),s&&t.close()}),!1),i):i;var l=i.util.currentScript();function f(){i.manual||i.highlightAll()}if(l&&(i.filename=l.src,l.hasAttribute("data-manual")&&(i.manual=!0)),!i.manual){var d=document.readyState;"loading"===d||"interactive"===d&&l&&l.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return i}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});t.exports&&(t.exports=i),void 0!==e.g&&(e.g.Prism=i)},5251:function(){!function(t){var n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;t.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:RegExp("[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+n.source+")*(?=\\s*\\{)"),string:{pattern:n,greedy:!0},property:/(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},t.languages.css.atrule.inside.rest=t.languages.css;var e=t.languages.markup;e&&(e.tag.addInlined("style","css"),t.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/(^|["'\s])style\s*=\s*(?:"[^"]*"|'[^']*')/i,lookbehind:!0,inside:{"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{style:{pattern:/(["'])[\s\S]+(?=["']$)/,lookbehind:!0,alias:"language-css",inside:t.languages.css},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},"attr-name":/^style/i}}},e.tag))}(Prism)},9980:function(){Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|(?:get|set)(?=\s*[\[$\w\xA0-\uFFFF])|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-flags":/[a-z]+$/,"regex-delimiter":/^\/|\/$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.js=Prism.languages.javascript},6854:function(){!function(t){function n(t,n){return"___"+t.toUpperCase()+n+"___"}Object.defineProperties(t.languages["markup-templating"]={},{buildPlaceholders:{value:function(e,i,r,o){if(e.language===i){var s=e.tokenStack=[];e.code=e.code.replace(r,(function(t){if("function"==typeof o&&!o(t))return t;for(var r,a=s.length;-1!==e.code.indexOf(r=n(i,a));)++a;return s[a]=t,r})),e.grammar=t.languages.markup}}},tokenizePlaceholders:{value:function(e,i){if(e.language===i&&e.tokenStack){e.grammar=t.languages[i];var r=0,o=Object.keys(e.tokenStack);!function s(a){for(var u=0;u<a.length&&!(r>=o.length);u++){var c=a[u];if("string"==typeof c||c.content&&"string"==typeof c.content){var l=o[r],f=e.tokenStack[l],d="string"==typeof c?c:c.content,h=n(i,l),p=d.indexOf(h);if(p>-1){++r;var v=d.substring(0,p),m=new t.Token(i,t.tokenize(f,e.grammar),"language-"+i,f),y=d.substring(p+h.length),b=[];v&&b.push.apply(b,s([v])),b.push(m),y&&b.push.apply(b,s([y])),"string"==typeof c?a.splice.apply(a,[u,1].concat(b)):c.content=b}}else c.content&&s(c.content)}return a}(e.tokens)}}}})}(Prism)},4335:function(){Prism.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/,name:/[^\s<>'"]+/}},cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",(function(t){"entity"===t.type&&(t.attributes.title=t.content.replace(/&amp;/,"&"))})),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(t,n){var e={};e["language-"+n]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[n]},e.cdata=/^<!\[CDATA\[|\]\]>$/i;var i={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:e}};i["language-"+n]={pattern:/[\s\S]+/,inside:Prism.languages[n]};var r={};r[t]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return t})),"i"),lookbehind:!0,greedy:!0,inside:i},Prism.languages.insertBefore("markup","cdata",r)}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml},9945:function(){!function(t){var n=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,e=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/,/\b(?:null)\b/i],i=/\b0b[01]+\b|\b0x[\da-f]+\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+)(?:e[+-]?\d+)?/i,r=/<?=>|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,o=/[{}\[\](),:;]/;t.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:n,variable:/\$+(?:\w+\b|(?={))/i,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},keyword:[{pattern:/(\(\s*)\b(?:bool|boolean|int|integer|float|string|object|array)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:bool|int|float|string|object|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*[a-z0-9_|]\|\s*)(?:null|false)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?[a-z0-9_|]\|\s*)(?:null|false)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:null|false)\b/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},/\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|finally|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|match|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i],"argument-name":/\b[a-z_]\w*(?=\s*:(?!:))/i,"class-name":[{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:e,function:/\w+\s*(?=\()/,property:{pattern:/(->)[\w]+/,lookbehind:!0},number:i,operator:r,punctuation:o};var s={pattern:/{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)*)/,lookbehind:!0,inside:t.languages.php},a=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:s}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:s}}];t.languages.insertBefore("php","variable",{string:a}),t.languages.insertBefore("php","variable",{attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=]$)/,lookbehind:!0,inside:{comment:n,string:a,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:e,number:i,operator:r,punctuation:o}},delimiter:{pattern:/^#\[|]$/,alias:"punctuation"}}}}),t.hooks.add("before-tokenize",(function(n){if(/<\?/.test(n.code)){t.languages["markup-templating"].buildPlaceholders(n,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/gi)}})),t.hooks.add("after-tokenize",(function(n){t.languages["markup-templating"].tokenizePlaceholders(n,"php")}))}(Prism)},8759:function(){!function(){if("undefined"!=typeof self&&self.Prism&&self.document){var t="line-numbers",n=/\n(?!$)/g,e=Prism.plugins.lineNumbers={getLine:function(n,e){if("PRE"===n.tagName&&n.classList.contains(t)){var i=n.querySelector(".line-numbers-rows");if(i){var r=parseInt(n.getAttribute("data-start"),10)||1,o=r+(i.children.length-1);e<r&&(e=r),e>o&&(e=o);var s=e-r;return i.children[s]}}},resize:function(t){o([t])},assumeViewportIndependence:!0},i=function(t){return t?window.getComputedStyle?getComputedStyle(t):t.currentStyle||null:null},r=void 0;window.addEventListener("resize",(function(){e.assumeViewportIndependence&&r===window.innerWidth||(r=window.innerWidth,o(Array.prototype.slice.call(document.querySelectorAll("pre.line-numbers"))))})),Prism.hooks.add("complete",(function(e){if(e.code){var i=e.element,r=i.parentNode;if(r&&/pre/i.test(r.nodeName)&&!i.querySelector(".line-numbers-rows")&&Prism.util.isActive(i,t)){i.classList.remove(t),r.classList.add(t);var s,a=e.code.match(n),u=a?a.length+1:1,c=new Array(u+1).join("<span></span>");(s=document.createElement("span")).setAttribute("aria-hidden","true"),s.className="line-numbers-rows",s.innerHTML=c,r.hasAttribute("data-start")&&(r.style.counterReset="linenumber "+(parseInt(r.getAttribute("data-start"),10)-1)),e.element.appendChild(s),o([r]),Prism.hooks.run("line-numbers",e)}}})),Prism.hooks.add("line-numbers",(function(t){t.plugins=t.plugins||{},t.plugins.lineNumbers=!0}))}function o(t){if(0!=(t=t.filter((function(t){var n=i(t)["white-space"];return"pre-wrap"===n||"pre-line"===n}))).length){var e=t.map((function(t){var e=t.querySelector("code"),i=t.querySelector(".line-numbers-rows");if(e&&i){var r=t.querySelector(".line-numbers-sizer"),o=e.textContent.split(n);r||((r=document.createElement("span")).className="line-numbers-sizer",e.appendChild(r)),r.innerHTML="0",r.style.display="block";var s=r.getBoundingClientRect().height;return r.innerHTML="",{element:t,lines:o,lineHeights:[],oneLinerHeight:s,sizer:r}}})).filter(Boolean);e.forEach((function(t){var n=t.sizer,e=t.lines,i=t.lineHeights,r=t.oneLinerHeight;i[e.length-1]=void 0,e.forEach((function(t,e){if(t&&t.length>1){var o=n.appendChild(document.createElement("span"));o.style.display="block",o.textContent=t}else i[e]=r}))})),e.forEach((function(t){for(var n=t.sizer,e=t.lineHeights,i=0,r=0;r<e.length;r++)void 0===e[r]&&(e[r]=n.children[i++].getBoundingClientRect().height)})),e.forEach((function(t){var n=t.sizer,e=t.element.querySelector(".line-numbers-rows");n.style.display="none",n.innerHTML="",t.lineHeights.forEach((function(t,n){e.children[n].style.height=t+"px"}))}))}}}()},9449:function(t){"use strict";function n(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function e(t,n){for(var e=0;e<n.length;e++){var i=n[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function i(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}var r={classNames:{active:"gl-active",base:"gl-star-rating",selected:"gl-selected"},clearable:!0,maxStars:10,prebuilt:!1,stars:null,tooltip:"Select a Rating"},o=function(t,n,e){t.classList[n?"add":"remove"](e)},s=function(t){var n=document.createElement("span");for(var e in t=t||{})n.setAttribute(e,t[e]);return n},a=function(t,n,e){var i=s(e);return t.parentNode.insertBefore(i,n?t.nextSibling:t),i},u=function t(){for(var n=arguments.length,e=new Array(n),i=0;i<n;i++)e[i]=arguments[i];var r={};return e.forEach((function(n){Object.keys(n||{}).forEach((function(i){if(void 0!==e[0][i]){var o=n[i];"Object"!==c(o)||"Object"!==c(r[i])?r[i]=o:r[i]=t(r[i],o)}}))})),r},c=function(t){return{}.toString.call(t).slice(8,-1)},l=function(){function t(e,i){var r,o;n(this,t),this.direction=window.getComputedStyle(e,null).getPropertyValue("direction"),this.el=e,this.events={change:this.onChange.bind(this),keydown:this.onKeyDown.bind(this),mousedown:this.onPointerDown.bind(this),mouseleave:this.onPointerLeave.bind(this),mousemove:this.onPointerMove.bind(this),reset:this.onReset.bind(this),touchend:this.onPointerDown.bind(this),touchmove:this.onPointerMove.bind(this)},this.indexActive=null,this.indexSelected=null,this.props=i,this.tick=null,this.ticking=!1,this.values=function(t){var n=[];return[].forEach.call(t.options,(function(t){var e=parseInt(t.value,10)||0;e>0&&n.push({index:t.index,text:t.text,value:e})})),n.sort((function(t,n){return t.value-n.value}))}(e),this.widgetEl=null,this.el.widget&&this.el.widget.destroy(),r=this.values.length,o=this.props.maxStars,/^\d+$/.test(r)&&1<=r&&r<=o?this.build():this.destroy()}return i(t,[{key:"build",value:function(){this.destroy(),this.buildWidget(),this.selectValue(this.indexSelected=this.selected(),!1),this.handleEvents("add"),this.el.widget=this}},{key:"buildWidget",value:function(){var t,n,e=this;this.props.prebuilt?(t=this.el.parentNode,n=t.querySelector("."+this.props.classNames.base+"--stars")):((t=a(this.el,!1,{class:this.props.classNames.base})).appendChild(this.el),n=a(this.el,!0,{class:this.props.classNames.base+"--stars"}),this.values.forEach((function(t,i){var r=s({"data-index":i,"data-value":t.value});"function"==typeof e.props.stars&&e.props.stars.call(e,r,t,i),[].forEach.call(r.children,(function(t){return t.style.pointerEvents="none"})),n.innerHTML+=r.outerHTML}))),t.dataset.starRating="",t.classList.add(this.props.classNames.base+"--"+this.direction),this.props.tooltip&&n.setAttribute("role","tooltip"),this.widgetEl=n}},{key:"changeIndexTo",value:function(t,n){var e=this;if(this.indexActive!==t||n){if([].forEach.call(this.widgetEl.children,(function(n,i){o(n,i<=t,e.props.classNames.active),o(n,i===e.indexSelected,e.props.classNames.selected)})),"function"==typeof this.props.stars||this.props.prebuilt||(this.widgetEl.classList.remove("s"+10*(this.indexActive+1)),this.widgetEl.classList.add("s"+10*(t+1))),this.props.tooltip){var i=t<0?this.props.tooltip:this.values[t].text;this.widgetEl.setAttribute("aria-label",i)}this.indexActive=t}this.ticking=!1}},{key:"destroy",value:function(){this.indexActive=null,this.indexSelected=this.selected();var t=this.el.parentNode;t.classList.contains(this.props.classNames.base)&&(this.props.prebuilt?(this.widgetEl=t.querySelector("."+this.props.classNames.base+"--stars"),t.classList.remove(this.props.classNames.base+"--"+this.direction),delete t.dataset.starRating):t.parentNode.replaceChild(this.el,t),this.handleEvents("remove")),delete this.el.widget}},{key:"eventListener",value:function(t,n,e,i){var r=this;e.forEach((function(e){return t[n+"EventListener"](e,r.events[e],i||!1)}))}},{key:"handleEvents",value:function(t){var n=this.el.closest("form");n&&"FORM"===n.tagName&&this.eventListener(n,t,["reset"]),this.eventListener(this.el,t,["change"]),"add"===t&&this.el.disabled||(this.eventListener(this.el,t,["keydown"]),this.eventListener(this.widgetEl,t,["mousedown","mouseleave","mousemove","touchend","touchmove"],!1))}},{key:"indexFromEvent",value:function(t){var n,e,i=(null===(n=t.touches)||void 0===n?void 0:n[0])||(null===(e=t.changedTouches)||void 0===e?void 0:e[0])||t,r=document.elementFromPoint(i.clientX,i.clientY);return[].slice.call(r.parentNode.children).indexOf(r)}},{key:"onChange",value:function(){this.changeIndexTo(this.selected(),!0)}},{key:"onKeyDown",value:function(t){var n=t.key.slice(5);if(~["Left","Right"].indexOf(n)){var e="Left"===n?-1:1;"rtl"===this.direction&&(e*=-1);var i=this.values.length-1,r=Math.min(Math.max(this.selected()+e,-1),i);this.selectValue(r,!0)}}},{key:"onPointerDown",value:function(t){t.preventDefault();var n=this.indexFromEvent(t);this.props.clearable&&n===this.indexSelected&&(n=-1),this.selectValue(n,!0)}},{key:"onPointerLeave",value:function(t){var n=this;t.preventDefault(),cancelAnimationFrame(this.tick),requestAnimationFrame((function(){return n.changeIndexTo(n.indexSelected)}))}},{key:"onPointerMove",value:function(t){var n=this;t.preventDefault(),this.ticking||(this.tick=requestAnimationFrame((function(){return n.changeIndexTo(n.indexFromEvent(t))})),this.ticking=!0)}},{key:"onReset",value:function(){var t;this.selectValue((null===(t=this.el.querySelector("[selected]"))||void 0===t?void 0:t.index)||-1,!1)}},{key:"selected",value:function(){var t=this;return this.values.findIndex((function(n){return n.value===+t.el.value}))}},{key:"selectValue",value:function(t,n){var e;this.el.value=(null===(e=this.values[t])||void 0===e?void 0:e.value)||"",this.indexSelected=this.selected(),!1===n?this.changeIndexTo(this.selected(),!0):this.el.dispatchEvent(new Event("change"))}}]),t}(),f=function(){function t(e,i){n(this,t),this.destroy=this.destroy.bind(this),this.rebuild=this.rebuild.bind(this),this.widgets=[],this.buildWidgets(e,i)}return i(t,[{key:"buildWidgets",value:function(t,n){var e=this;this.queryElements(t).forEach((function(t){var i=u(r,n,JSON.parse(t.getAttribute("data-options")));"SELECT"!==t.tagName||t.widget||(!i.prebuilt&&t.parentNode.classList.contains(i.classNames.base)&&e.unwrap(t),e.widgets.push(new l(t,i)))}))}},{key:"destroy",value:function(){this.widgets.forEach((function(t){return t.destroy()}))}},{key:"queryElements",value:function(t){return"HTMLSelectElement"===c(t)?[t]:"NodeList"===c(t)?[].slice.call(t):"String"===c(t)?[].slice.call(document.querySelectorAll(t)):[]}},{key:"rebuild",value:function(){this.widgets.forEach((function(t){return t.build()}))}},{key:"unwrap",value:function(t){var n=t.parentNode,e=n.parentNode;e.insertBefore(t,n),e.removeChild(n)}}]),t}();t.exports=f}},n={};function e(i){if(n[i])return n[i].exports;var r=n[i]={exports:{}};return t[i].call(r.exports,r,r.exports,e),r.exports}e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,{a:n}),n},e.d=function(t,n){for(var i in n)e.o(n,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:n[i]})},e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},function(){"use strict";var t=function(t){return this.data={},this.form=jQuery(t),this.pushes={},this.init()};t.prototype={patterns:{validate:/^[a-z_-][a-z0-9_-]*(?:\[(?:\d*|[a-z0-9_-]+)\])*$/i,key:/[a-z0-9_-]+|(?=\[\])/gi,named:/^[a-z0-9_-]+$/i,push:/^$/,fixed:/^\d+$/},addPair:function(t){this.patterns.validate.test(t.name)&&(this.data=jQuery.extend(!0,this.data,this.makeObject(t.name,this.encode(t))))},build:function(t,n,e){return t[n]=e,t},encode:function(t){switch(jQuery('[name="'+t.name+'"]',this.form).attr("type")){case"checkbox":return"on"===t.value||t.value;default:return t.value}},incrementPush:function(t){return void 0===this.pushes[t]&&(this.pushes[t]=0),this.pushes[t]++},init:function(){var t=this.form.serializeArray();if(jQuery.isArray(t))for(var n=0,e=t.length;n<e;n++)this.addPair(t[n]);return this.data},makeObject:function(t,n){for(var e,i=t.match(this.patterns.key);void 0!==(e=i.pop());)if(this.patterns.push.test(e)){var r=this.incrementPush(t.replace(/\[\]$/,""));n=this.build([],r,n)}else this.patterns.fixed.test(e)?n=this.build([],e,n):this.patterns.named.test(e)&&(n=this.build({},e,n));return n}};var n=t,i=function(t,n,e){this.event=n||null,this.form=e||null,this.notice=null,this.request=t||{}};i.prototype={post:function(t){this.event?this.t(t):this.i(t)},u:function(t){var e={action:GLSR.action,_ajax_request:!0};if(this.form){var i=new n(this.form);i[GLSR.nameprefix]&&(this.request=i[GLSR.nameprefix])}return this.l(t),e[GLSR.nameprefix]=this.request,e},l:function(t){this.request._nonce||(GLSR.nonce[this.request._action]?this.request._nonce=GLSR.nonce[this.request._action]:t&&(this.request._nonce=t.closest("form").find("#_wpnonce").val()))},i:function(t,n){jQuery.post(GLSR.ajaxurl,this.u(n)).done((function(e){"function"==typeof t&&t(e.data,e.success),n&&n.prop("disabled",!1)})).always((function(t){t.data?t.data.notices&&GLSR.notices.add(t.data.notices):GLSR.notices.add('<div class="notice notice-error inline is-dismissible"><p>Unknown error.</p></div>')}))},t:function(t){this.event.preventDefault();var n=jQuery(this.event.currentTarget);n.is(":disabled")||(n.prop("disabled",!0),this.i(t,n))}};var r=i,o=e(9367),s=e.n(o),a=e(8),u=e.n(a),c=function(){"object"===u()(jQuery.wp)&&"function"==typeof jQuery.wp.wpColorPicker&&jQuery(document).find("input[type=text].color-picker-hex").each((function(){jQuery(this).wpColorPicker(jQuery(this).data("colorpicker")||{})}))},l=function(t){this.el=document.querySelector(t),this.el&&(this.depends=this.el.querySelectorAll("[data-depends]"),this.depends.length&&this.h())};l.prototype={p:function(t){var n=t.getAttribute("data-depends");if(n)try{return JSON.parse(n)}catch(t){return}},h:function(){for(var t=this.el.elements,n=0;n<t.length;n++)~["INPUT","SELECT"].indexOf(t[n].nodeName)&&t[n].addEventListener("change",this.v.bind(this))},m:function(t,n){var e=!1;n=[].concat(n);var i=this.el.querySelectorAll('[name="'+t+'"]');return[].map.call(i,function(t){var i=~this._(n).indexOf(this.k(t.value));~["checkbox","radio"].indexOf(t.type)?t.checked&&i&&(e=!0):i&&(e=!0)}.bind(this)),e},k:function(t){return!!~["true","on","yes","1"].indexOf(t)||!~["false","off","no","0"].indexOf(t)&&t},_:function(t){return t.map(this.k)},v:function(t){this.depends.forEach(function(n){var e=this.p(n);if(e&&~e.map((function(t){return t.name})).indexOf(t.currentTarget.name)){var i=!0;e.forEach(function(t){this.m(t.name,t.value)||(i=!1)}.bind(this)),this.j(n,i)}}.bind(this))},j:function(t,n){var e=t.closest(".glsr-setting-field");e&&e.classList[n?"remove":"add"]("hidden")}};var f=l,d=function(){jQuery(".glsr-metabox-field input[data-edit-review]").on("change",this.S.bind(this)),jQuery(".glsr-metabox-field input[type=url]").on("change",this.F.bind(this))};d.prototype={F:function(t){var n=jQuery(t.currentTarget);this.O(n.parent().find("img"),n.val())},S:function(t){var n=t.currentTarget.checked;jQuery(".glsr-input-value").each(function(t,e){if(n)jQuery(e).data("value",e.value);else{if(e.value=jQuery(e).data("value"),"url"!==e.type)return;this.O(jQuery(e).parent().find("img"),e.value)}}.bind(this)),jQuery(".glsr-input-value").prop("disabled",!n),GLSR.stars.rebuild()},O:function(t,n){if(t){var e=new Image;e.src=n,e.onerror=function(){t.attr("src",t.data("fallback"))},e.onload=function(){t.attr("src",e.src)}}}};var h=d,p=function(){this.h()};p.prototype={add:function(t){t&&(jQuery("#glsr-notices").length||(jQuery("#message.notice").remove(),jQuery("hr.wp-header-end").after('<div id="glsr-notices" />')),jQuery("#glsr-notices").html(t),jQuery(document).trigger("wp-updates-notice-added"))},h:function(){jQuery(".glsr-notice[data-dismiss]").on("click.wp-dismiss-notice",this.A.bind(this))},A:function(t){var n={};n[GLSR.nameprefix]={_action:"dismiss-notice",notice:jQuery(t.currentTarget).data("dismiss")},wp.ajax.post(GLSR.action,n)}};var v=p,m=function(){this.el=jQuery("#pinned-status-select"),this.el&&(this.cancel=jQuery("a.cancel-pinned-status"),this.cancel.on("click",this.R.bind(this)),this.edit=jQuery("a.edit-pinned-status"),this.edit.on("click",this.P.bind(this)),this.save=jQuery("a.save-pinned-status"),this.save.on("click",this.$.bind(this))),jQuery("td.column-is_pinned i.pin-review").on("click",this.C.bind(this))};m.prototype={L:function(){this.el.slideUp("fast"),this.edit.show().focus()},R:function(t){t.preventDefault(),this.L(),this.el.find("select").val("0"===jQuery("#hidden-pinned-status").val()?1:0)},P:function(t){t.preventDefault(),this.el.is(":hidden")&&(this.el.slideDown("fast",function(){this.el.find("select").focus()}.bind(this)),this.edit.hide())},$:function(t){t.preventDefault(),this.L(),this.target=t.currentTarget;var n={_action:"toggle-pinned",id:jQuery("#post_ID").val(),pinned:jQuery("#pinned-status").val()};new r(n).post(this.T.bind(this))},C:function(t){t.preventDefault(),this.target=t.currentTarget;var n={_action:"toggle-pinned",id:t.currentTarget.getAttribute("data-id")};jQuery(this.target).addClass("spinner is-active").removeClass("dashicons-sticky"),new r(n).post(this.G.bind(this))},T:function(t){jQuery("#pinned-status").val(0|!t.pinned),jQuery("#hidden-pinned-status").val(0|t.pinned),jQuery("#pinned-status-text").text(t.pinned?this.target.dataset.yes:this.target.dataset.no),GLSR.notices.add(t.notices)},G:function(t){this.target.classList[t.pinned?"add":"remove"]("pinned"),jQuery(this.target).removeClass("spinner is-active").addClass("dashicons-sticky")}};var y=m,b=function(){jQuery.each(GLSR.pointers,function(t,n){this.h(n)}.bind(this))};b.prototype={M:function(t){jQuery.post(GLSR.ajaxurl,{action:"dismiss-wp-pointer",pointer:t})},h:function(t){jQuery(t.target).pointer({content:t.options.content,position:t.options.position,close:this.M.bind(null,t.id)}).pointer("open").pointer("sendToTop"),jQuery(document).on("wp-window-resized",(function(){jQuery(t.target).pointer("reposition")}))}};var g=b,w=e(8325),k=e.n(w),j=(e(5433),e(4335),e(9980),e(6854),e(9945),e(5251),e(8759),function(t,n){this.el=jQuery(t),this.options=n,this.searchTerm=null,this.h()});j.prototype={defaults:{action:null,exclude:[],onInit:null,onResultClick:null,results:{},selected:-1,selectedClass:"glsr-selected-result",selectorEntries:".glsr-strings-table tbody",selectorResults:".glsr-search-results",selectorSearch:".glsr-search-input"},h:function(){this.options=jQuery.extend({},this.defaults,this.options),this.el.length&&(this.options.entriesEl=this.el.parent().find(this.options.selectorEntries),this.options.resultsEl=this.el.find(this.options.selectorResults),this.options.searchEl=this.el.find(this.options.selectorSearch),this.options.searchEl.attr("aria-describedby","live-search-desc"),"function"==typeof this.options.onInit&&this.options.onInit.call(this),this.q())},q:function(){this.options.searchEl.on("input",_.debounce(this.D.bind(this),500)),this.options.searchEl.on("keyup",this.I.bind(this)),this.options.searchEl.on("keydown keypress",(function(t){GLSR.keys.ENTER===t.which&&t.preventDefault()})),jQuery(document).on("click",this.B.bind(this)),jQuery(document).on("keydown",this.H.bind(this))},W:function(){void 0!==this.searchRequest&&this.searchRequest.abort()},U:function(){this.W(),this.options.resultsEl.empty(),this.options.resultsEl.removeClass("is-active"),this.el.removeClass("is-active"),jQuery("body").removeClass("glsr-focus")},N:function(t){var n=this.options.entriesEl.children("tr").eq(t),e=this;n.find("td").css({backgroundColor:"#faafaa"}),n.fadeOut(350,(function(){jQuery(this).remove(),e.options.results={},e.V(),e.Z()}))},K:function(t){jQuery("body").addClass("glsr-focus"),this.options.resultsEl.append(t),this.options.resultsEl.children("span").on("click",this.X.bind(this))},Y:function(){this.options.entriesEl.on("click","a.delete",this.J.bind(this)),this.options.entriesEl.sortable({items:"tr",tolerance:"pointer",start:function(t,n){n.placeholder.height(n.helper[0].scrollHeight)},sort:function(t,n){var e=t.pageY-jQuery(this).offsetParent().offset().top-n.helper.outerHeight(!0)/2;n.helper.css({top:e+"px"})}})},tt:function(t){this.options.selected+=t,this.options.results.removeClass(this.options.selectedClass),this.options.selected<0&&(this.options.selected=-1,this.options.searchEl.focus()),this.options.selected>=this.options.results.length&&(this.options.selected=this.options.results.length-1),this.options.selected>=0&&this.options.results.eq(this.options.selected).addClass(this.options.selectedClass).focus()},B:function(t){jQuery(t.target).find(this.el).length&&jQuery("body").hasClass("glsr-focus")&&this.U()},H:function(t){if(!jQuery.isEmptyObject(this.options.results)){if(GLSR.keys.ESC===t.which&&this.U(),GLSR.keys.ENTER===t.which||GLSR.keys.SPACE===t.which){var n=this.options.resultsEl.find("."+this.options.selectedClass);n&&n.trigger("click")}GLSR.keys.UP===t.which&&(t.preventDefault(),this.tt(-1)),GLSR.keys.DOWN===t.which&&(t.preventDefault(),this.tt(1))}},J:function(t){t.preventDefault(),this.N(jQuery(t.currentTarget).closest("tr").index())},X:function(t){t.preventDefault(),"function"==typeof this.options.onResultClick&&this.options.onResultClick.call(this,t),this.U()},D:function(t){if(this.W(),this.searchTerm===t.currentTarget.value&&this.options.results.length)return this.K(this.options.results);if(this.options.resultsEl.empty(),this.options.selected=-1,this.searchTerm=t.currentTarget.value,""===this.searchTerm)return this.nt();this.el.addClass("is-active");var n={};n[GLSR.nameprefix]={_action:this.options.action,_nonce:this.el.find("#_search_nonce").val(),exclude:this.options.exclude,search:this.searchTerm},this.searchRequest=wp.ajax.post(GLSR.action,n).done(function(t){this.el.removeClass("is-active"),this.K(t.items?t.items:t.empty),this.options.results=this.options.resultsEl.children(),this.options.resultsEl.addClass("is-active"),delete this.searchRequest}.bind(this))},I:function(t){GLSR.keys.ESC===t.which&&this.nt(),GLSR.keys.ENTER===t.which&&(this.D(t),t.preventDefault())},et:function(t){t.preventDefault();var n=jQuery(t.currentTarget).closest(".glsr-multibox-entry");n.find("a").css({color:"#c00"}),n.fadeOut("fast",(function(){n.remove()}))},V:function(){var t=this;this.options.exclude=[],this.options.entriesEl.children("tr").each((function(n){jQuery(this).find(".glsr-string-td2").children().filter(":input").each((function(){var e=jQuery(this),i=e.attr("name").replace(/\[\d+\]/i,"["+n+"]");e.attr("name",i),e.is("[data-id]")&&t.options.exclude.push({id:e.val()})}))}))},nt:function(){this.U(),this.options.results={},this.options.searchEl.val("")},Z:function(){var t=this.options.entriesEl.children().length>0?"remove":"add";this.options.entriesEl.parent()[t+"Class"]("glsr-hidden")}};var x=j,S=function(t){this.options=jQuery.extend({},this.defaults,t),this.tabs=document.querySelectorAll(this.options.tabSelector),this.tabs&&this.h()};S.prototype={defaults:{expandSelectors:".glsr-nav-view, .glsr-notice",tabSelector:".glsr-nav-tab"},h:function(){var t=this;[].forEach.call(t.tabs,function(n,e){n.addEventListener("click",t.A.bind(t)),n.addEventListener("touchend",t.A.bind(t))}.bind(t)),jQuery(t.options.expandSelectors).on("click","a",(function(){var n=jQuery(this).data("expand");localStorage.setItem("glsr-expand",n),t.it(jQuery(n))})),jQuery(window).on("load",(function(){t.it(jQuery(localStorage.getItem("glsr-expand")))}))},A:function(t){t.preventDefault(),this.rt(t.currentTarget)},it:function(t){if(t.length){var n=t.parent().parent();n.removeClass("collapsed"),this.ot(n),n.removeClass("collapsed"),t.parent().removeClass("closed").find(".glsr-accordion-trigger").attr("aria-expanded",!0),window.setTimeout((function(){t.parent()[0].scrollIntoView({behavior:"smooth",block:"center"}),localStorage.removeItem("glsr-expand")}),10)}},ot:function(t){var n=t.hasClass("collapsed")?"remove":"add";t[n+"Class"]("collapsed").find(".glsr-card.postbox")[n+"Class"]("closed").find(".glsr-accordion-trigger").attr("aria-expanded","add"!==n)},rt:function(t){if(t.classList.contains("nav-tab-active")){var n=jQuery(t.getAttribute("href"));this.ot(n)}}};var F=S,Q=function(t){this.current=null,this.editor=null,this.create=function(t){if(this.editor=tinymce.get(t),this.editor){var n={_action:"mce-shortcode",shortcode:this.current};new r(n).post(this.st.bind(this))}};var n=document.querySelectorAll(t);n.length&&n.forEach(function(t){var n=t.querySelector("button"),e=t.querySelectorAll(".mce-menu-item");n&&e.length&&this.h(t,n,e)}.bind(this))};Q.prototype={at:{},ut:[],h:function(t,n,e){document.addEventListener("click",this.ct.bind(this,t,n)),n.addEventListener("click",this.lt.bind(this,t,n)),e.forEach(function(e){e.addEventListener("click",this.ft.bind(this,t,n))}.bind(this))},dt:function(){tinymce.execCommand("GLSR_Shortcode")},ht:function(){jQuery("#scTemp").length?this.dt():(jQuery("body").append('<textarea id="scTemp" style="display:none!important;"/>'),tinymce.init({elements:"scTemp",external_plugins:GLSR.tinymce,mode:"exact",plugins:["glsr_shortcode","wplink"]}),setTimeout(function(){this.dt()}.bind(this),200))},M:function(t,n){jQuery(n).removeClass("active"),jQuery(t).find(".glsr-mce-menu").hide()},vt:function(){var t=jQuery("#scTemp");t.length&&(tinymce.get("scTemp").remove(),t.remove()),this.at={},this.ut=[]},st:function(t){if(t){if(0===t.body.length)return window.send_to_editor("["+t.shortcode+"]"),void this.vt();var n=this.yt(t);t.ok.constructor===Array&&(n.buttons[0].text=t.ok[0],n.buttons[0].onclick="close",delete n.buttons[1]),this.editor.windowManager.open(n)}},bt:function(t){for(var n in this.at=t,this.ut=[],t)t.hasOwnProperty(n)&&(this.gt(n),this.wt(n),this._t(n));this.at.hide=this.ut.join(",")},gt:function(t){"display"!==t||jQuery.isNumeric(this.at[t])||(this.at[t]="")},wt:function(t){if(GLSR.hideoptions.hasOwnProperty(this.current)){var n=t.substring("hide_".length);-1!==Object.keys(GLSR.hideoptions[this.current]).indexOf(n)&&(this.at[t]&&this.ut.push(n),delete this.at[t])}},_t:function(t){"id"===t&&(this.at[t]=(+new Date).toString(36))},ct:function(t,n,e){jQuery(e.target).closest(jQuery(t)).length||this.M(t,n)},lt:function(t,n,e){e.preventDefault(),e.currentTarget.classList.contains("active")?this.M(t,n):this.kt(t,n)},ft:function(t,n,e){e.preventDefault(),this.current=e.currentTarget.dataset.shortcode,this.current&&(tinymce.get(window.wpActiveEditor)?this.dt():this.ht(),setTimeout(function(){this.M(t,n)}.bind(this),100))},kt:function(t,n){jQuery(n).addClass("active"),jQuery(t).find(".glsr-mce-menu").show()},jt:function(t){return[{classes:"btn glsr-btn primary",onclick:this.xt.bind(this),text:t.ok},{onclick:"close",text:t.close}]},yt:function(t){return{title:t.title,body:t.body,classes:"glsr-mce-popup",minWidth:320,buttons:this.jt(t),onsubmit:this.St.bind(this,t),onclose:this.vt.bind(this)}},St:function(t,n){var e="";for(var i in this.bt(n.data),this.at)this.at.hasOwnProperty(i)&&""!==this.at[i]&&(e+=" "+i+'="'+this.at[i]+'"');window.send_to_editor("["+t.shortcode+e+"]")},xt:function(){var t=this.editor.windowManager.getWindows()[0];this.Ft(t)&&t.submit()},Ft:function(t){var n,e=!0,i=GLSR.shortcodes[this.current];for(var r in i)if(i.hasOwnProperty(r)&&void 0!==(n=t.find("#"+r)[0])&&""===n.state.data.value){e=!1,alert(i[r]);break}return e}};var O=Q,A=e(9449),R=e.n(A),z=function(t){var n=document.querySelectorAll(t);n.length&&n.forEach(function(t){t.addEventListener("click",this.A)}.bind(this))};z.prototype={A:function(t){var n=t.currentTarget.href.match(/post=([0-9]+)/),e=t.currentTarget.href.match(/action=([a-z]+)/);if(null!==n&&null!==e){var i={_action:"toggle-status",_nonce:GLSR.nonce["toggle-status"],post_id:n[1],status:e[1]};new r(i,t).post((function(n){if(n.class){var e=jQuery(t.target);e.closest("tr").removeClass("status-pending status-publish").addClass(n.class),e.closest("td.column-title").find("strong").html(n.link),n.counts&&(e.closest(".wrap").find("ul.subsubsub").html(n.counts),jQuery("#menu-posts-site-review").find(".awaiting-mod").removeClass().addClass("awaiting-mod count-"+n.pending).find(".unapproved-count").html(n.pending))}}))}}};var P=z,$=function(){this.button=jQuery("button#sync-reviews"),this.progressbar=jQuery(".glsr-progress"),this.service=null,jQuery("form.glsr-form-sync").on("click","#sync-reviews",this.Qt.bind(this)),jQuery(document).on("wp-window-resized",this.Ot),jQuery(window).on("hashchange",this.Ot),this.Ot()};$.prototype={At:function(t){jQuery(".service-"+this.service+" td.column-last_sync").text(t.last_sync),jQuery(".service-"+this.service+" td.column-total_fetched a").text(t.total),this.Rt(!1)},Qt:function(t){t.preventDefault(),this.service=jQuery('[name="'+GLSR.nameprefix+'[service]"]').val(),this.service&&(this.Rt(!0),this.zt())},Ot:function(){var t=jQuery(".glsr-progress").width();t&&jQuery(".glsr-progress span").width(t)},zt:function(){var t={_action:"sync-reviews",service:this.service,stage:"fetch"};new r(t).post(this.Pt.bind(this))},Pt:function(t){var n={_action:"sync-reviews",job_id:t.job_id,service:this.service,stage:"progress"},e=t.finished?this.$t.bind(this,t):this.Pt.bind(this);this.Ct(t.message),this.Lt(t.percent),setTimeout((function(){new r(n).post(e)}),1500)},$t:function(t){var n=0;try{n=t.meta.pagination.current_page}catch(t){}var e={_action:"sync-reviews",page:n+1,service:this.service,stage:"reviews"};this.Ct(t.message),t.percent_synced&&t.percent_synced>=100?this.At(t):new r(e).post(this.$t.bind(this))},Ct:function(t){jQuery(".glsr-progress-status",this.progressbar).text(t)},Lt:function(t){t=(t||0)+"%",jQuery(".glsr-progress-bar",this.progressbar).outerWidth(t)},Rt:function(t){if(!0===t&&(this.Ct(this.progressbar.data("active-text")),this.Lt(),this.button.prop("disabled",!0),window.requestAnimationFrame(function(){this.progressbar.addClass("active")}.bind(this))),!1===t)return this.service=null,this.button.prop("disabled",!1),void this.progressbar.removeClass("active");window.requestAnimationFrame(this.Rt.bind(this))}};var C=$,L=function(t){this.options=jQuery.extend({},this.defaults,t),this.active=document.querySelector("input[name=_active_tab]"),this.referrerEl=document.querySelector("input[name=_wp_http_referer]"),this.sections=document.querySelectorAll(this.options.viewSectionSelector),this.subsubsub=document.querySelectorAll(this.options.viewSubsubsub),this.tabs=document.querySelectorAll(this.options.tabSelector),this.views=document.querySelectorAll(this.options.viewSelector),this.active&&this.referrerEl&&this.tabs&&this.views&&this.h()};L.prototype={defaults:{tabSelector:".glsr-nav-tab",viewSelector:".glsr-nav-view",viewSectionSelector:".glsr-nav-view-section",viewSubsubsub:".glsr-subsubsub a"},h:function(){var t=this;jQuery(window).on("hashchange",t.Tt.bind(t)),jQuery(t.options.tabSelector).on("click",t.A.bind(t)),jQuery(t.options.viewSubsubsub).on("click",t.A.bind(t)),jQuery(t.options.tabSelector).each((function(n){(location.hash?this.getAttribute("href").slice(1)===location.hash.slice(5).split("_")[0]:0===n)&&(t.Et(this),t.Gt(t.Mt()))}))},qt:function(t){return t?"add":"remove"},A:function(t){var n=t.currentTarget,e=n.getAttribute("href");e.startsWith("#")&&(location.hash=this.Dt(e.slice(1)),n.blur(),t.preventDefault())},Tt:function(){for(var t=this.Mt().split("_")[0],n=0;n<this.views.length;n++)if(t===this.views[n].id){this.Et(this.tabs[n]),this.Gt(this.Mt());break}},Dt:function(t){return"tab-"+t},Mt:function(){return location.hash?location.hash.split("#tab-")[1]:""},Gt:function(t){if(t){var n=this.referrerEl.value.split("#")[0],e=this.Dt(t);this.referrerEl.value=n+"#"+e}},Et:function(t){[].forEach.call(this.tabs,function(n,e){var i=this.qt(n===t);"add"===i&&(this.active.value=this.views[e].id,this.It(e)),n.classList[i]("nav-tab-active")}.bind(this))},It:function(t){[].forEach.call(this.views,function(n,e){var i=this.qt(e!==t);n.classList[i]("ui-tabs-hide"),this.Bt()}.bind(this))},Bt:function(){var t=this,n=0;[].forEach.call(this.subsubsub,(function(e,i){e.classList.remove("current"),e.getAttribute("href").slice(1)===t.Mt()&&(n=i)})),this.subsubsub[n]&&this.subsubsub[n].classList.add("current"),[].forEach.call(this.sections,(function(e,i){var r=t.qt(i!==n);e.classList[r]("ui-tabs-hide")}))}};var T=L,E=function(){var t=document.querySelector("#contentdiv > textarea");t&&(this.Ht(t),jQuery(document).on("wp-window-resized.editor-expand",function(){this.Ht(t)}.bind(this)))};E.prototype={Ht:function(t){var n=t.scrollHeight>320?t.scrollHeight:320;t.style.height="auto",t.style.height=n+"px"}};var G=E,M=function(){jQuery("form").on("click","#clear-console",this.Wt,this.A.bind(this)),jQuery("form").on("click","#fetch-console",this.Wt,this.A.bind(this)),jQuery("form").on("click","[data-ajax-click]",this.A.bind(this));var t=jQuery("input[data-alt]");t.length&&(jQuery(document).on("keydown",this.Ut.bind(this,t)),jQuery(document).on("keyup",this.Nt.bind(this,t)))};M.prototype={Wt:function(t,n){n&&jQuery("#log-file").val(t.console)},A:function(t){var n=jQuery(t.currentTarget);new r({},t,n.closest("form")).post((function(e,i){"function"==typeof t.data&&t.data(e,i),n.get(0).hasAttribute("data-ajax-scroll")&&jQuery("html, body").animate({scrollTop:0},500),n.closest("[data-ajax-hide]").css({backgroundColor:"rgba(74,184,102,.25)"}).fadeOut("normal",(function(){jQuery(this).remove()})),jQuery("#glsr-notices").on("click","a",(function(){localStorage.setItem("glsr-expand",n.data("expand"))})),jQuery('.glsr-notice[data-notice="'+n.data("remove-notice")+'"]').remove()}))},Ut:function(t,n){GLSR.keys.ALT!==n.keyCode||n.repeat||(t.closest("form").find("[data-alt-text]").addClass("alt"),t.val(1))},Nt:function(t,n){GLSR.keys.ALT===n.keyCode&&(t.closest("form").find("[data-alt-text]").removeClass("alt"),t.val(0))}};var q=M;function D(t){var n=t.getBoundingClientRect();return{width:n.width,height:n.height,top:n.top,right:n.right,bottom:n.bottom,left:n.left,x:n.left,y:n.top}}function I(t){if(null==t)return window;if("[object Window]"!==t.toString()){var n=t.ownerDocument;return n&&n.defaultView||window}return t}function B(t){var n=I(t);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function H(t){return t instanceof I(t).Element||t instanceof Element}function W(t){return t instanceof I(t).HTMLElement||t instanceof HTMLElement}function U(t){return"undefined"!=typeof ShadowRoot&&(t instanceof I(t).ShadowRoot||t instanceof ShadowRoot)}function N(t){return t?(t.nodeName||"").toLowerCase():null}function V(t){return((H(t)?t.ownerDocument:t.document)||window.document).documentElement}function Z(t){return D(V(t)).left+B(t).scrollLeft}function K(t){return I(t).getComputedStyle(t)}function X(t){var n=K(t),e=n.overflow,i=n.overflowX,r=n.overflowY;return/auto|scroll|overlay|hidden/.test(e+r+i)}function Y(t,n,e){void 0===e&&(e=!1);var i,r,o=V(n),s=D(t),a=W(n),u={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(a||!a&&!e)&&(("body"!==N(n)||X(o))&&(u=(i=n)!==I(i)&&W(i)?{scrollLeft:(r=i).scrollLeft,scrollTop:r.scrollTop}:B(i)),W(n)?((c=D(n)).x+=n.clientLeft,c.y+=n.clientTop):o&&(c.x=Z(o))),{x:s.left+u.scrollLeft-c.x,y:s.top+u.scrollTop-c.y,width:s.width,height:s.height}}function J(t){var n=D(t),e=t.offsetWidth,i=t.offsetHeight;return Math.abs(n.width-e)<=1&&(e=n.width),Math.abs(n.height-i)<=1&&(i=n.height),{x:t.offsetLeft,y:t.offsetTop,width:e,height:i}}function tt(t){return"html"===N(t)?t:t.assignedSlot||t.parentNode||(U(t)?t.host:null)||V(t)}function nt(t){return["html","body","#document"].indexOf(N(t))>=0?t.ownerDocument.body:W(t)&&X(t)?t:nt(tt(t))}function et(t,n){var e;void 0===n&&(n=[]);var i=nt(t),r=i===(null==(e=t.ownerDocument)?void 0:e.body),o=I(i),s=r?[o].concat(o.visualViewport||[],X(i)?i:[]):i,a=n.concat(s);return r?a:a.concat(et(tt(s)))}function it(t){return["table","td","th"].indexOf(N(t))>=0}function rt(t){return W(t)&&"fixed"!==K(t).position?t.offsetParent:null}function ot(t){for(var n=I(t),e=rt(t);e&&it(e)&&"static"===K(e).position;)e=rt(e);return e&&("html"===N(e)||"body"===N(e)&&"static"===K(e).position)?n:e||function(t){for(var n=navigator.userAgent.toLowerCase().includes("firefox"),e=tt(t);W(e)&&["html","body"].indexOf(N(e))<0;){var i=K(e);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||["transform","perspective"].includes(i.willChange)||n&&"filter"===i.willChange||n&&i.filter&&"none"!==i.filter)return e;e=e.parentNode}return null}(t)||n}var st="top",at="bottom",ut="right",ct="left",lt="auto",ft=[st,at,ut,ct],dt="start",ht="end",pt="viewport",vt="popper",mt=ft.reduce((function(t,n){return t.concat([n+"-"+dt,n+"-"+ht])}),[]),yt=[].concat(ft,[lt]).reduce((function(t,n){return t.concat([n,n+"-"+dt,n+"-"+ht])}),[]),bt=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function gt(t){var n=new Map,e=new Set,i=[];function r(t){e.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!e.has(t)){var i=n.get(t);i&&r(i)}})),i.push(t)}return t.forEach((function(t){n.set(t.name,t)})),t.forEach((function(t){e.has(t.name)||r(t)})),i}var wt={placement:"bottom",modifiers:[],strategy:"absolute"};function _t(){for(var t=arguments.length,n=new Array(t),e=0;e<t;e++)n[e]=arguments[e];return!n.some((function(t){return!(t&&"function"==typeof t.getBoundingClientRect)}))}function kt(t){void 0===t&&(t={});var n=t,e=n.defaultModifiers,i=void 0===e?[]:e,r=n.defaultOptions,o=void 0===r?wt:r;return function(t,n,e){void 0===e&&(e=o);var r,s,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},wt,o),modifiersData:{},elements:{reference:t,popper:n},attributes:{},styles:{}},u=[],c=!1,l={state:a,setOptions:function(e){f(),a.options=Object.assign({},o,a.options,e),a.scrollParents={reference:H(t)?et(t):t.contextElement?et(t.contextElement):[],popper:et(n)};var r=function(t){var n=gt(t);return bt.reduce((function(t,e){return t.concat(n.filter((function(t){return t.phase===e})))}),[])}(function(t){var n=t.reduce((function(t,n){var e=t[n.name];return t[n.name]=e?Object.assign({},e,n,{options:Object.assign({},e.options,n.options),data:Object.assign({},e.data,n.data)}):n,t}),{});return Object.keys(n).map((function(t){return n[t]}))}([].concat(i,a.options.modifiers)));return a.orderedModifiers=r.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var n=t.name,e=t.options,i=void 0===e?{}:e,r=t.effect;if("function"==typeof r){var o=r({state:a,name:n,instance:l,options:i}),s=function(){};u.push(o||s)}})),l.update()},forceUpdate:function(){if(!c){var t=a.elements,n=t.reference,e=t.popper;if(_t(n,e)){a.rects={reference:Y(n,ot(e),"fixed"===a.options.strategy),popper:J(e)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var i=0;i<a.orderedModifiers.length;i++)if(!0!==a.reset){var r=a.orderedModifiers[i],o=r.fn,s=r.options,u=void 0===s?{}:s,f=r.name;"function"==typeof o&&(a=o({state:a,options:u,name:f,instance:l})||a)}else a.reset=!1,i=-1}}},update:(r=function(){return new Promise((function(t){l.forceUpdate(),t(a)}))},function(){return s||(s=new Promise((function(t){Promise.resolve().then((function(){s=void 0,t(r())}))}))),s}),destroy:function(){f(),c=!0}};if(!_t(t,n))return l;function f(){u.forEach((function(t){return t()})),u=[]}return l.setOptions(e).then((function(t){!c&&e.onFirstUpdate&&e.onFirstUpdate(t)})),l}}var jt={passive:!0};var xt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var n=t.state,e=t.instance,i=t.options,r=i.scroll,o=void 0===r||r,s=i.resize,a=void 0===s||s,u=I(n.elements.popper),c=[].concat(n.scrollParents.reference,n.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",e.update,jt)})),a&&u.addEventListener("resize",e.update,jt),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",e.update,jt)})),a&&u.removeEventListener("resize",e.update,jt)}},data:{}};function St(t){return t.split("-")[0]}function Ft(t){return t.split("-")[1]}function Qt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ot(t){var n,e=t.reference,i=t.element,r=t.placement,o=r?St(r):null,s=r?Ft(r):null,a=e.x+e.width/2-i.width/2,u=e.y+e.height/2-i.height/2;switch(o){case st:n={x:a,y:e.y-i.height};break;case at:n={x:a,y:e.y+e.height};break;case ut:n={x:e.x+e.width,y:u};break;case ct:n={x:e.x-i.width,y:u};break;default:n={x:e.x,y:e.y}}var c=o?Qt(o):null;if(null!=c){var l="y"===c?"height":"width";switch(s){case dt:n[c]=n[c]-(e[l]/2-i[l]/2);break;case ht:n[c]=n[c]+(e[l]/2-i[l]/2)}}return n}var At={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var n=t.state,e=t.name;n.modifiersData[e]=Ot({reference:n.rects.reference,element:n.rects.popper,strategy:"absolute",placement:n.placement})},data:{}},Rt=Math.max,zt=Math.min,Pt=Math.round,$t={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Ct(t){var n,e=t.popper,i=t.popperRect,r=t.placement,o=t.offsets,s=t.position,a=t.gpuAcceleration,u=t.adaptive,c=t.roundOffsets,l=!0===c?function(t){var n=t.x,e=t.y,i=window.devicePixelRatio||1;return{x:Pt(Pt(n*i)/i)||0,y:Pt(Pt(e*i)/i)||0}}(o):"function"==typeof c?c(o):o,f=l.x,d=void 0===f?0:f,h=l.y,p=void 0===h?0:h,v=o.hasOwnProperty("x"),m=o.hasOwnProperty("y"),y=ct,b=st,g=window;if(u){var w=ot(e),_="clientHeight",k="clientWidth";w===I(e)&&"static"!==K(w=V(e)).position&&(_="scrollHeight",k="scrollWidth"),w=w,r===st&&(b=at,p-=w[_]-i.height,p*=a?1:-1),r===ct&&(y=ut,d-=w[k]-i.width,d*=a?1:-1)}var j,x=Object.assign({position:s},u&&$t);return a?Object.assign({},x,((j={})[b]=m?"0":"",j[y]=v?"0":"",j.transform=(g.devicePixelRatio||1)<2?"translate("+d+"px, "+p+"px)":"translate3d("+d+"px, "+p+"px, 0)",j)):Object.assign({},x,((n={})[b]=m?p+"px":"",n[y]=v?d+"px":"",n.transform="",n))}var Lt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var n=t.state;Object.keys(n.elements).forEach((function(t){var e=n.styles[t]||{},i=n.attributes[t]||{},r=n.elements[t];W(r)&&N(r)&&(Object.assign(r.style,e),Object.keys(i).forEach((function(t){var n=i[t];!1===n?r.removeAttribute(t):r.setAttribute(t,!0===n?"":n)})))}))},effect:function(t){var n=t.state,e={popper:{position:n.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(n.elements.popper.style,e.popper),n.styles=e,n.elements.arrow&&Object.assign(n.elements.arrow.style,e.arrow),function(){Object.keys(n.elements).forEach((function(t){var i=n.elements[t],r=n.attributes[t]||{},o=Object.keys(n.styles.hasOwnProperty(t)?n.styles[t]:e[t]).reduce((function(t,n){return t[n]="",t}),{});W(i)&&N(i)&&(Object.assign(i.style,o),Object.keys(r).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};var Tt={left:"right",right:"left",bottom:"top",top:"bottom"};function Et(t){return t.replace(/left|right|bottom|top/g,(function(t){return Tt[t]}))}var Gt={start:"end",end:"start"};function Mt(t){return t.replace(/start|end/g,(function(t){return Gt[t]}))}function qt(t,n){var e=n.getRootNode&&n.getRootNode();if(t.contains(n))return!0;if(e&&U(e)){var i=n;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Dt(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function It(t,n){return n===pt?Dt(function(t){var n=I(t),e=V(t),i=n.visualViewport,r=e.clientWidth,o=e.clientHeight,s=0,a=0;return i&&(r=i.width,o=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=i.offsetLeft,a=i.offsetTop)),{width:r,height:o,x:s+Z(t),y:a}}(t)):W(n)?function(t){var n=D(t);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(n):Dt(function(t){var n,e=V(t),i=B(t),r=null==(n=t.ownerDocument)?void 0:n.body,o=Rt(e.scrollWidth,e.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),s=Rt(e.scrollHeight,e.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),a=-i.scrollLeft+Z(t),u=-i.scrollTop;return"rtl"===K(r||e).direction&&(a+=Rt(e.clientWidth,r?r.clientWidth:0)-o),{width:o,height:s,x:a,y:u}}(V(t)))}function Bt(t,n,e){var i="clippingParents"===n?function(t){var n=et(tt(t)),e=["absolute","fixed"].indexOf(K(t).position)>=0&&W(t)?ot(t):t;return H(e)?n.filter((function(t){return H(t)&&qt(t,e)&&"body"!==N(t)})):[]}(t):[].concat(n),r=[].concat(i,[e]),o=r[0],s=r.reduce((function(n,e){var i=It(t,e);return n.top=Rt(i.top,n.top),n.right=zt(i.right,n.right),n.bottom=zt(i.bottom,n.bottom),n.left=Rt(i.left,n.left),n}),It(t,o));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function Ht(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Wt(t,n){return n.reduce((function(n,e){return n[e]=t,n}),{})}function Ut(t,n){void 0===n&&(n={});var e=n,i=e.placement,r=void 0===i?t.placement:i,o=e.boundary,s=void 0===o?"clippingParents":o,a=e.rootBoundary,u=void 0===a?pt:a,c=e.elementContext,l=void 0===c?vt:c,f=e.altBoundary,d=void 0!==f&&f,h=e.padding,p=void 0===h?0:h,v=Ht("number"!=typeof p?p:Wt(p,ft)),m=l===vt?"reference":vt,y=t.elements.reference,b=t.rects.popper,g=t.elements[d?m:l],w=Bt(H(g)?g:g.contextElement||V(t.elements.popper),s,u),_=D(y),k=Ot({reference:_,element:b,strategy:"absolute",placement:r}),j=Dt(Object.assign({},b,k)),x=l===vt?j:_,S={top:w.top-x.top+v.top,bottom:x.bottom-w.bottom+v.bottom,left:w.left-x.left+v.left,right:x.right-w.right+v.right},F=t.modifiersData.offset;if(l===vt&&F){var Q=F[r];Object.keys(S).forEach((function(t){var n=[ut,at].indexOf(t)>=0?1:-1,e=[st,at].indexOf(t)>=0?"y":"x";S[t]+=Q[e]*n}))}return S}function Nt(t,n,e){return Rt(t,zt(n,e))}function Vt(t,n,e){return void 0===e&&(e={x:0,y:0}),{top:t.top-n.height-e.y,right:t.right-n.width+e.x,bottom:t.bottom-n.height+e.y,left:t.left-n.width-e.x}}function Zt(t){return[st,ut,at,ct].some((function(n){return t[n]>=0}))}var Kt=kt({defaultModifiers:[xt,At,{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var n=t.state,e=t.options,i=e.gpuAcceleration,r=void 0===i||i,o=e.adaptive,s=void 0===o||o,a=e.roundOffsets,u=void 0===a||a,c={placement:St(n.placement),popper:n.elements.popper,popperRect:n.rects.popper,gpuAcceleration:r};null!=n.modifiersData.popperOffsets&&(n.styles.popper=Object.assign({},n.styles.popper,Ct(Object.assign({},c,{offsets:n.modifiersData.popperOffsets,position:n.options.strategy,adaptive:s,roundOffsets:u})))),null!=n.modifiersData.arrow&&(n.styles.arrow=Object.assign({},n.styles.arrow,Ct(Object.assign({},c,{offsets:n.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:u})))),n.attributes.popper=Object.assign({},n.attributes.popper,{"data-popper-placement":n.placement})},data:{}},Lt,{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var n=t.state,e=t.options,i=t.name,r=e.offset,o=void 0===r?[0,0]:r,s=yt.reduce((function(t,e){return t[e]=function(t,n,e){var i=St(t),r=[ct,st].indexOf(i)>=0?-1:1,o="function"==typeof e?e(Object.assign({},n,{placement:t})):e,s=o[0],a=o[1];return s=s||0,a=(a||0)*r,[ct,ut].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(e,n.rects,o),t}),{}),a=s[n.placement],u=a.x,c=a.y;null!=n.modifiersData.popperOffsets&&(n.modifiersData.popperOffsets.x+=u,n.modifiersData.popperOffsets.y+=c),n.modifiersData[i]=s}},{name:"flip",enabled:!0,phase:"main",fn:function(t){var n=t.state,e=t.options,i=t.name;if(!n.modifiersData[i]._skip){for(var r=e.mainAxis,o=void 0===r||r,s=e.altAxis,a=void 0===s||s,u=e.fallbackPlacements,c=e.padding,l=e.boundary,f=e.rootBoundary,d=e.altBoundary,h=e.flipVariations,p=void 0===h||h,v=e.allowedAutoPlacements,m=n.options.placement,y=St(m),b=u||(y===m||!p?[Et(m)]:function(t){if(St(t)===lt)return[];var n=Et(t);return[Mt(t),n,Mt(n)]}(m)),g=[m].concat(b).reduce((function(t,e){return t.concat(St(e)===lt?function(t,n){void 0===n&&(n={});var e=n,i=e.placement,r=e.boundary,o=e.rootBoundary,s=e.padding,a=e.flipVariations,u=e.allowedAutoPlacements,c=void 0===u?yt:u,l=Ft(i),f=l?a?mt:mt.filter((function(t){return Ft(t)===l})):ft,d=f.filter((function(t){return c.indexOf(t)>=0}));0===d.length&&(d=f);var h=d.reduce((function(n,e){return n[e]=Ut(t,{placement:e,boundary:r,rootBoundary:o,padding:s})[St(e)],n}),{});return Object.keys(h).sort((function(t,n){return h[t]-h[n]}))}(n,{placement:e,boundary:l,rootBoundary:f,padding:c,flipVariations:p,allowedAutoPlacements:v}):e)}),[]),w=n.rects.reference,_=n.rects.popper,k=new Map,j=!0,x=g[0],S=0;S<g.length;S++){var F=g[S],Q=St(F),O=Ft(F)===dt,A=[st,at].indexOf(Q)>=0,R=A?"width":"height",z=Ut(n,{placement:F,boundary:l,rootBoundary:f,altBoundary:d,padding:c}),P=A?O?ut:ct:O?at:st;w[R]>_[R]&&(P=Et(P));var $=Et(P),C=[];if(o&&C.push(z[Q]<=0),a&&C.push(z[P]<=0,z[$]<=0),C.every((function(t){return t}))){x=F,j=!1;break}k.set(F,C)}if(j)for(var L=function(t){var n=g.find((function(n){var e=k.get(n);if(e)return e.slice(0,t).every((function(t){return t}))}));if(n)return x=n,"break"},T=p?3:1;T>0;T--){if("break"===L(T))break}n.placement!==x&&(n.modifiersData[i]._skip=!0,n.placement=x,n.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},{name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var n=t.state,e=t.options,i=t.name,r=e.mainAxis,o=void 0===r||r,s=e.altAxis,a=void 0!==s&&s,u=e.boundary,c=e.rootBoundary,l=e.altBoundary,f=e.padding,d=e.tether,h=void 0===d||d,p=e.tetherOffset,v=void 0===p?0:p,m=Ut(n,{boundary:u,rootBoundary:c,padding:f,altBoundary:l}),y=St(n.placement),b=Ft(n.placement),g=!b,w=Qt(y),_="x"===w?"y":"x",k=n.modifiersData.popperOffsets,j=n.rects.reference,x=n.rects.popper,S="function"==typeof v?v(Object.assign({},n.rects,{placement:n.placement})):v,F={x:0,y:0};if(k){if(o||a){var Q="y"===w?st:ct,O="y"===w?at:ut,A="y"===w?"height":"width",R=k[w],z=k[w]+m[Q],P=k[w]-m[O],$=h?-x[A]/2:0,C=b===dt?j[A]:x[A],L=b===dt?-x[A]:-j[A],T=n.elements.arrow,E=h&&T?J(T):{width:0,height:0},G=n.modifiersData["arrow#persistent"]?n.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},M=G[Q],q=G[O],D=Nt(0,j[A],E[A]),I=g?j[A]/2-$-D-M-S:C-D-M-S,B=g?-j[A]/2+$+D+q+S:L+D+q+S,H=n.elements.arrow&&ot(n.elements.arrow),W=H?"y"===w?H.clientTop||0:H.clientLeft||0:0,U=n.modifiersData.offset?n.modifiersData.offset[n.placement][w]:0,N=k[w]+I-U-W,V=k[w]+B-U;if(o){var Z=Nt(h?zt(z,N):z,R,h?Rt(P,V):P);k[w]=Z,F[w]=Z-R}if(a){var K="x"===w?st:ct,X="x"===w?at:ut,Y=k[_],tt=Y+m[K],nt=Y-m[X],et=Nt(h?zt(tt,N):tt,Y,h?Rt(nt,V):nt);k[_]=et,F[_]=et-Y}}n.modifiersData[i]=F}},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(t){var n,e=t.state,i=t.name,r=t.options,o=e.elements.arrow,s=e.modifiersData.popperOffsets,a=St(e.placement),u=Qt(a),c=[ct,ut].indexOf(a)>=0?"height":"width";if(o&&s){var l=function(t,n){return Ht("number"!=typeof(t="function"==typeof t?t(Object.assign({},n.rects,{placement:n.placement})):t)?t:Wt(t,ft))}(r.padding,e),f=J(o),d="y"===u?st:ct,h="y"===u?at:ut,p=e.rects.reference[c]+e.rects.reference[u]-s[u]-e.rects.popper[c],v=s[u]-e.rects.reference[u],m=ot(o),y=m?"y"===u?m.clientHeight||0:m.clientWidth||0:0,b=p/2-v/2,g=l[d],w=y-f[c]-l[h],_=y/2-f[c]/2+b,k=Nt(g,_,w),j=u;e.modifiersData[i]=((n={})[j]=k,n.centerOffset=k-_,n)}},effect:function(t){var n=t.state,e=t.options.element,i=void 0===e?"[data-popper-arrow]":e;null!=i&&("string"!=typeof i||(i=n.elements.popper.querySelector(i)))&&qt(n.elements.popper,i)&&(n.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var n=t.state,e=t.name,i=n.rects.reference,r=n.rects.popper,o=n.modifiersData.preventOverflow,s=Ut(n,{elementContext:"reference"}),a=Ut(n,{altBoundary:!0}),u=Vt(s,i),c=Vt(a,r,o),l=Zt(u),f=Zt(c);n.modifiersData[e]={referenceClippingOffsets:u,popperEscapeOffsets:c,isReferenceHidden:l,hasPopperEscaped:f},n.attributes.popper=Object.assign({},n.attributes.popper,{"data-popper-reference-hidden":l,"data-popper-escaped":f})}}]}),Xt="tippy-content",Yt="tippy-backdrop",Jt="tippy-arrow",tn="tippy-svg-arrow",nn={passive:!0,capture:!0};function en(t,n,e){if(Array.isArray(t)){var i=t[n];return null==i?Array.isArray(e)?e[n]:e:i}return t}function rn(t,n){var e={}.toString.call(t);return 0===e.indexOf("[object")&&e.indexOf(n+"]")>-1}function on(t,n){return"function"==typeof t?t.apply(void 0,n):t}function sn(t,n){return 0===n?t:function(i){clearTimeout(e),e=setTimeout((function(){t(i)}),n)};var e}function an(t){return[].concat(t)}function un(t,n){-1===t.indexOf(n)&&t.push(n)}function cn(t){return t.split("-")[0]}function ln(t){return[].slice.call(t)}function fn(){return document.createElement("div")}function dn(t){return["Element","Fragment"].some((function(n){return rn(t,n)}))}function hn(t){return rn(t,"MouseEvent")}function pn(t){return!(!t||!t._tippy||t._tippy.reference!==t)}function vn(t){return dn(t)?[t]:function(t){return rn(t,"NodeList")}(t)?ln(t):Array.isArray(t)?t:ln(document.querySelectorAll(t))}function mn(t,n){t.forEach((function(t){t&&(t.style.transitionDuration=n+"ms")}))}function yn(t,n){t.forEach((function(t){t&&t.setAttribute("data-state",n)}))}function bn(t){var n,e=an(t)[0];return(null==e||null==(n=e.ownerDocument)?void 0:n.body)?e.ownerDocument:document}function gn(t,n,e){var i=n+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(n){t[i](n,e)}))}var wn={isTouch:!1},_n=0;function kn(){wn.isTouch||(wn.isTouch=!0,window.performance&&document.addEventListener("mousemove",jn))}function jn(){var t=performance.now();t-_n<20&&(wn.isTouch=!1,document.removeEventListener("mousemove",jn)),_n=t}function xn(){var t=document.activeElement;if(pn(t)){var n=t._tippy;t.blur&&!n.state.isVisible&&t.blur()}}var Sn="undefined"!=typeof window&&"undefined"!=typeof document?navigator.userAgent:"",Fn=/MSIE |Trident\//.test(Sn);var Qn={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},On=Object.assign({appendTo:function(){return document.body},aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},Qn,{},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),An=Object.keys(On);function Rn(t){var n=(t.plugins||[]).reduce((function(n,e){var i=e.name,r=e.defaultValue;return i&&(n[i]=void 0!==t[i]?t[i]:r),n}),{});return Object.assign({},t,{},n)}function zn(t,n){var e=Object.assign({},n,{content:on(n.content,[t])},n.ignoreAttributes?{}:function(t,n){return(n?Object.keys(Rn(Object.assign({},On,{plugins:n}))):An).reduce((function(n,e){var i=(t.getAttribute("data-tippy-"+e)||"").trim();if(!i)return n;if("content"===e)n[e]=i;else try{n[e]=JSON.parse(i)}catch(t){n[e]=i}return n}),{})}(t,n.plugins));return e.aria=Object.assign({},On.aria,{},e.aria),e.aria={expanded:"auto"===e.aria.expanded?n.interactive:e.aria.expanded,content:"auto"===e.aria.content?n.interactive?null:"describedby":e.aria.content},e}function Pn(t,n){t.innerHTML=n}function $n(t){var n=fn();return!0===t?n.className=Jt:(n.className=tn,dn(t)?n.appendChild(t):Pn(n,t)),n}function Cn(t,n){dn(n.content)?(Pn(t,""),t.appendChild(n.content)):"function"!=typeof n.content&&(n.allowHTML?Pn(t,n.content):t.textContent=n.content)}function Ln(t){var n=t.firstElementChild,e=ln(n.children);return{box:n,content:e.find((function(t){return t.classList.contains(Xt)})),arrow:e.find((function(t){return t.classList.contains(Jt)||t.classList.contains(tn)})),backdrop:e.find((function(t){return t.classList.contains(Yt)}))}}function Tn(t){var n=fn(),e=fn();e.className="tippy-box",e.setAttribute("data-state","hidden"),e.setAttribute("tabindex","-1");var i=fn();function r(e,i){var r=Ln(n),o=r.box,s=r.content,a=r.arrow;i.theme?o.setAttribute("data-theme",i.theme):o.removeAttribute("data-theme"),"string"==typeof i.animation?o.setAttribute("data-animation",i.animation):o.removeAttribute("data-animation"),i.inertia?o.setAttribute("data-inertia",""):o.removeAttribute("data-inertia"),o.style.maxWidth="number"==typeof i.maxWidth?i.maxWidth+"px":i.maxWidth,i.role?o.setAttribute("role",i.role):o.removeAttribute("role"),e.content===i.content&&e.allowHTML===i.allowHTML||Cn(s,t.props),i.arrow?a?e.arrow!==i.arrow&&(o.removeChild(a),o.appendChild($n(i.arrow))):o.appendChild($n(i.arrow)):a&&o.removeChild(a)}return i.className=Xt,i.setAttribute("data-state","hidden"),Cn(i,t.props),n.appendChild(e),e.appendChild(i),r(t.props,t.props),{popper:n,onUpdate:r}}Tn.$$tippy=!0;var En=1,Gn=[],Mn=[];function qn(t,n){var e,i,r,o,s,a,u,c,l,f=zn(t,Object.assign({},On,{},Rn((e=n,Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{}))))),d=!1,h=!1,p=!1,v=!1,m=[],y=sn(V,f.interactiveDebounce),b=En++,g=(l=f.plugins).filter((function(t,n){return l.indexOf(t)===n})),w={id:b,reference:t,popper:fn(),popperInstance:null,props:f,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:g,clearDelayTimeouts:function(){clearTimeout(i),clearTimeout(r),cancelAnimationFrame(o)},setProps:function(n){0;if(w.state.isDestroyed)return;C("onBeforeUpdate",[w,n]),U();var e=w.props,i=zn(t,Object.assign({},w.props,{},n,{ignoreAttributes:!0}));w.props=i,W(),e.interactiveDebounce!==i.interactiveDebounce&&(E(),y=sn(V,i.interactiveDebounce));e.triggerTarget&&!i.triggerTarget?an(e.triggerTarget).forEach((function(t){t.removeAttribute("aria-expanded")})):i.triggerTarget&&t.removeAttribute("aria-expanded");T(),$(),j&&j(e,i);w.popperInstance&&(Y(),tt().forEach((function(t){requestAnimationFrame(t._tippy.popperInstance.forceUpdate)})));C("onAfterUpdate",[w,n])},setContent:function(t){w.setProps({content:t})},show:function(){0;var t=w.state.isVisible,n=w.state.isDestroyed,e=!w.state.isEnabled,i=wn.isTouch&&!w.props.touch,r=en(w.props.duration,0,On.duration);if(t||n||e||i)return;if(A().hasAttribute("disabled"))return;if(C("onShow",[w],!1),!1===w.props.onShow(w))return;w.state.isVisible=!0,O()&&(k.style.visibility="visible");$(),D(),w.state.isMounted||(k.style.transition="none");if(O()){var o=z(),s=o.box,a=o.content;mn([s,a],0)}u=function(){var t;if(w.state.isVisible&&!v){if(v=!0,k.offsetHeight,k.style.transition=w.props.moveTransition,O()&&w.props.animation){var n=z(),e=n.box,i=n.content;mn([e,i],r),yn([e,i],"visible")}L(),T(),un(Mn,w),null==(t=w.popperInstance)||t.forceUpdate(),w.state.isMounted=!0,C("onMount",[w]),w.props.animation&&O()&&function(t,n){B(t,n)}(r,(function(){w.state.isShown=!0,C("onShown",[w])}))}},function(){var t,n=w.props.appendTo,e=A();t=w.props.interactive&&n===On.appendTo||"parent"===n?e.parentNode:on(n,[e]);t.contains(k)||t.appendChild(k);Y(),!1}()},hide:function(){0;var t=!w.state.isVisible,n=w.state.isDestroyed,e=!w.state.isEnabled,i=en(w.props.duration,1,On.duration);if(t||n||e)return;if(C("onHide",[w],!1),!1===w.props.onHide(w))return;w.state.isVisible=!1,w.state.isShown=!1,v=!1,d=!1,O()&&(k.style.visibility="hidden");if(E(),I(),$(),O()){var r=z(),o=r.box,s=r.content;w.props.animation&&(mn([o,s],i),yn([o,s],"hidden"))}L(),T(),w.props.animation?O()&&function(t,n){B(t,(function(){!w.state.isVisible&&k.parentNode&&k.parentNode.contains(k)&&n()}))}(i,w.unmount):w.unmount()},hideWithInteractivity:function(t){0;R().addEventListener("mousemove",y),un(Gn,y),y(t)},enable:function(){w.state.isEnabled=!0},disable:function(){w.hide(),w.state.isEnabled=!1},unmount:function(){0;w.state.isVisible&&w.hide();if(!w.state.isMounted)return;J(),tt().forEach((function(t){t._tippy.unmount()})),k.parentNode&&k.parentNode.removeChild(k);Mn=Mn.filter((function(t){return t!==w})),w.state.isMounted=!1,C("onHidden",[w])},destroy:function(){0;if(w.state.isDestroyed)return;w.clearDelayTimeouts(),w.unmount(),U(),delete t._tippy,w.state.isDestroyed=!0,C("onDestroy",[w])}};if(!f.render)return w;var _=f.render(w),k=_.popper,j=_.onUpdate;k.setAttribute("data-tippy-root",""),k.id="tippy-"+w.id,w.popper=k,t._tippy=w,k._tippy=w;var x=g.map((function(t){return t.fn(w)})),S=t.hasAttribute("aria-expanded");return W(),T(),$(),C("onCreate",[w]),f.showOnCreate&&nt(),k.addEventListener("mouseenter",(function(){w.props.interactive&&w.state.isVisible&&w.clearDelayTimeouts()})),k.addEventListener("mouseleave",(function(t){w.props.interactive&&w.props.trigger.indexOf("mouseenter")>=0&&(R().addEventListener("mousemove",y),y(t))})),w;function F(){var t=w.props.touch;return Array.isArray(t)?t:[t,0]}function Q(){return"hold"===F()[0]}function O(){var t;return!!(null==(t=w.props.render)?void 0:t.$$tippy)}function A(){return c||t}function R(){var t=A().parentNode;return t?bn(t):document}function z(){return Ln(k)}function P(t){return w.state.isMounted&&!w.state.isVisible||wn.isTouch||s&&"focus"===s.type?0:en(w.props.delay,t?0:1,On.delay)}function $(){k.style.pointerEvents=w.props.interactive&&w.state.isVisible?"":"none",k.style.zIndex=""+w.props.zIndex}function C(t,n,e){var i;(void 0===e&&(e=!0),x.forEach((function(e){e[t]&&e[t].apply(void 0,n)})),e)&&(i=w.props)[t].apply(i,n)}function L(){var n=w.props.aria;if(n.content){var e="aria-"+n.content,i=k.id;an(w.props.triggerTarget||t).forEach((function(t){var n=t.getAttribute(e);if(w.state.isVisible)t.setAttribute(e,n?n+" "+i:i);else{var r=n&&n.replace(i,"").trim();r?t.setAttribute(e,r):t.removeAttribute(e)}}))}}function T(){!S&&w.props.aria.expanded&&an(w.props.triggerTarget||t).forEach((function(t){w.props.interactive?t.setAttribute("aria-expanded",w.state.isVisible&&t===A()?"true":"false"):t.removeAttribute("aria-expanded")}))}function E(){R().removeEventListener("mousemove",y),Gn=Gn.filter((function(t){return t!==y}))}function G(t){if(!(wn.isTouch&&(p||"mousedown"===t.type)||w.props.interactive&&k.contains(t.target))){if(A().contains(t.target)){if(wn.isTouch)return;if(w.state.isVisible&&w.props.trigger.indexOf("click")>=0)return}else C("onClickOutside",[w,t]);!0===w.props.hideOnClick&&(w.clearDelayTimeouts(),w.hide(),h=!0,setTimeout((function(){h=!1})),w.state.isMounted||I())}}function M(){p=!0}function q(){p=!1}function D(){var t=R();t.addEventListener("mousedown",G,!0),t.addEventListener("touchend",G,nn),t.addEventListener("touchstart",q,nn),t.addEventListener("touchmove",M,nn)}function I(){var t=R();t.removeEventListener("mousedown",G,!0),t.removeEventListener("touchend",G,nn),t.removeEventListener("touchstart",q,nn),t.removeEventListener("touchmove",M,nn)}function B(t,n){var e=z().box;function i(t){t.target===e&&(gn(e,"remove",i),n())}if(0===t)return n();gn(e,"remove",a),gn(e,"add",i),a=i}function H(n,e,i){void 0===i&&(i=!1),an(w.props.triggerTarget||t).forEach((function(t){t.addEventListener(n,e,i),m.push({node:t,eventType:n,handler:e,options:i})}))}function W(){var t;Q()&&(H("touchstart",N,{passive:!0}),H("touchend",Z,{passive:!0})),(t=w.props.trigger,t.split(/\s+/).filter(Boolean)).forEach((function(t){if("manual"!==t)switch(H(t,N),t){case"mouseenter":H("mouseleave",Z);break;case"focus":H(Fn?"focusout":"blur",K);break;case"focusin":H("focusout",K)}}))}function U(){m.forEach((function(t){var n=t.node,e=t.eventType,i=t.handler,r=t.options;n.removeEventListener(e,i,r)})),m=[]}function N(t){var n,e=!1;if(w.state.isEnabled&&!X(t)&&!h){var i="focus"===(null==(n=s)?void 0:n.type);s=t,c=t.currentTarget,T(),!w.state.isVisible&&hn(t)&&Gn.forEach((function(n){return n(t)})),"click"===t.type&&(w.props.trigger.indexOf("mouseenter")<0||d)&&!1!==w.props.hideOnClick&&w.state.isVisible?e=!0:nt(t),"click"===t.type&&(d=!e),e&&!i&&et(t)}}function V(t){var n=t.target,e=A().contains(n)||k.contains(n);"mousemove"===t.type&&e||function(t,n){var e=n.clientX,i=n.clientY;return t.every((function(t){var n=t.popperRect,r=t.popperState,o=t.props.interactiveBorder,s=cn(r.placement),a=r.modifiersData.offset;if(!a)return!0;var u="bottom"===s?a.top.y:0,c="top"===s?a.bottom.y:0,l="right"===s?a.left.x:0,f="left"===s?a.right.x:0,d=n.top-i+u>o,h=i-n.bottom-c>o,p=n.left-e+l>o,v=e-n.right-f>o;return d||h||p||v}))}(tt().concat(k).map((function(t){var n,e=null==(n=t._tippy.popperInstance)?void 0:n.state;return e?{popperRect:t.getBoundingClientRect(),popperState:e,props:f}:null})).filter(Boolean),t)&&(E(),et(t))}function Z(t){X(t)||w.props.trigger.indexOf("click")>=0&&d||(w.props.interactive?w.hideWithInteractivity(t):et(t))}function K(t){w.props.trigger.indexOf("focusin")<0&&t.target!==A()||w.props.interactive&&t.relatedTarget&&k.contains(t.relatedTarget)||et(t)}function X(t){return!!wn.isTouch&&Q()!==t.type.indexOf("touch")>=0}function Y(){J();var n=w.props,e=n.popperOptions,i=n.placement,r=n.offset,o=n.getReferenceClientRect,s=n.moveTransition,a=O()?Ln(k).arrow:null,c=o?{getBoundingClientRect:o,contextElement:o.contextElement||A()}:t,l=[{name:"offset",options:{offset:r}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(t){var n=t.state;if(O()){var e=z().box;["placement","reference-hidden","escaped"].forEach((function(t){"placement"===t?e.setAttribute("data-placement",n.placement):n.attributes.popper["data-popper-"+t]?e.setAttribute("data-"+t,""):e.removeAttribute("data-"+t)})),n.attributes.popper={}}}}];O()&&a&&l.push({name:"arrow",options:{element:a,padding:3}}),l.push.apply(l,(null==e?void 0:e.modifiers)||[]),w.popperInstance=Kt(c,k,Object.assign({},e,{placement:i,onFirstUpdate:u,modifiers:l}))}function J(){w.popperInstance&&(w.popperInstance.destroy(),w.popperInstance=null)}function tt(){return ln(k.querySelectorAll("[data-tippy-root]"))}function nt(t){w.clearDelayTimeouts(),t&&C("onTrigger",[w,t]),D();var n=P(!0),e=F(),r=e[0],o=e[1];wn.isTouch&&"hold"===r&&o&&(n=o),n?i=setTimeout((function(){w.show()}),n):w.show()}function et(t){if(w.clearDelayTimeouts(),C("onUntrigger",[w,t]),w.state.isVisible){if(!(w.props.trigger.indexOf("mouseenter")>=0&&w.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(t.type)>=0&&d)){var n=P(!1);n?r=setTimeout((function(){w.state.isVisible&&w.hide()}),n):o=requestAnimationFrame((function(){w.hide()}))}}else I()}}function Dn(t,n){void 0===n&&(n={});var e=On.plugins.concat(n.plugins||[]);document.addEventListener("touchstart",kn,nn),window.addEventListener("blur",xn);var i=Object.assign({},n,{plugins:e}),r=vn(t).reduce((function(t,n){var e=n&&qn(n,i);return e&&t.push(e),t}),[]);return dn(t)?r[0]:r}Dn.defaultProps=On,Dn.setDefaultProps=function(t){Object.keys(t).forEach((function(n){On[n]=t[n]}))},Dn.currentInput=wn;Object.assign({},Lt,{effect:function(t){var n=t.state,e={popper:{position:n.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(n.elements.popper.style,e.popper),n.styles=e,n.elements.arrow&&Object.assign(n.elements.arrow.style,e.arrow)}});var In={clientX:0,clientY:0},Bn=[];function Hn(t){var n=t.clientX,e=t.clientY;In={clientX:n,clientY:e}}var Wn={name:"followCursor",defaultValue:!1,fn:function(t){var n=t.reference,e=bn(t.props.triggerTarget||n),i=!1,r=!1,o=!0,s=t.props;function a(){return"initial"===t.props.followCursor&&t.state.isVisible}function u(){e.addEventListener("mousemove",f)}function c(){e.removeEventListener("mousemove",f)}function l(){i=!0,t.setProps({getReferenceClientRect:null}),i=!1}function f(e){var i=!e.target||n.contains(e.target),r=t.props.followCursor,o=e.clientX,s=e.clientY,a=n.getBoundingClientRect(),u=o-a.left,c=s-a.top;!i&&t.props.interactive||t.setProps({getReferenceClientRect:function(){var t=n.getBoundingClientRect(),e=o,i=s;"initial"===r&&(e=t.left+u,i=t.top+c);var a="horizontal"===r?t.top:i,l="vertical"===r?t.right:e,f="horizontal"===r?t.bottom:i,d="vertical"===r?t.left:e;return{width:l-d,height:f-a,top:a,right:l,bottom:f,left:d}}})}function d(){t.props.followCursor&&(Bn.push({instance:t,doc:e}),function(t){t.addEventListener("mousemove",Hn)}(e))}function h(){0===(Bn=Bn.filter((function(n){return n.instance!==t}))).filter((function(t){return t.doc===e})).length&&function(t){t.removeEventListener("mousemove",Hn)}(e)}return{onCreate:d,onDestroy:h,onBeforeUpdate:function(){s=t.props},onAfterUpdate:function(n,e){var o=e.followCursor;i||void 0!==o&&s.followCursor!==o&&(h(),o?(d(),!t.state.isMounted||r||a()||u()):(c(),l()))},onMount:function(){t.props.followCursor&&!r&&(o&&(f(In),o=!1),a()||u())},onTrigger:function(t,n){hn(n)&&(In={clientX:n.clientX,clientY:n.clientY}),r="focus"===n.type},onHidden:function(){t.props.followCursor&&(l(),c(),o=!0)}}}};Dn.setDefaultProps({render:Tn});var Un=Dn;GLSR.autosize=s(),GLSR.keys={ALT:18,DOWN:40,ENTER:13,ESC:27,SPACE:32,UP:38},GLSR.Tippy={tippy:Un,plugins:{followCursor:Wn}},jQuery((function(t){k().highlightAll(),GLSR.notices=new v,GLSR.shortcode=new O(".glsr-mce"),GLSR.stars=new(R())("select.glsr-star-rating",{tooltip:!1}),GLSR.Tippy.tippy(".glsr-tooltip",{appendTo:function(){return document.body}}),c(),new f("form.glsr-form"),new h,new y,new g,new x("#glsr-search-posts",{action:"search-posts",onInit:function(){this.el.find(".glsr-remove-button").on("click",this.et.bind(this))},onResultClick:function(n){var e=t(n.currentTarget),i=wp.template("glsr-assigned-posts"),r={id:e.data("id"),name:"post_ids[]",url:e.data("url"),title:e.text()};if(i){var o=t(i(r));o.find(".glsr-remove-button").on("click",this.et.bind(this)),this.el.find(".glsr-selected-entries").append(o),this.nt()}this.options.searchEl.focus()}}),new x("#glsr-search-users",{action:"search-users",onInit:function(){this.el.find(".glsr-remove-button").on("click",this.et.bind(this))},onResultClick:function(n){var e=t(n.currentTarget),i=wp.template("glsr-assigned-users"),r={id:e.data("id"),name:"user_ids[]",url:e.data("url"),title:e.text()};if(i){var o=t(i(r));o.find(".glsr-remove-button").on("click",this.et.bind(this)),this.el.find(".glsr-selected-entries").append(o),this.nt()}this.options.searchEl.focus()}}),new x("#glsr-search-translations",{action:"search-translations",onInit:function(){this.Y()},onResultClick:function(n){var e=t(n.currentTarget),i=e.data("entry"),r=wp.template("glsr-string-"+(i.p1?"plural":"single"));i.index=this.options.entriesEl.children().length,i.prefix=this.options.resultsEl.data("prefix"),r&&(this.options.entriesEl.append(r(i)),this.options.exclude.push({id:i.id}),this.options.results=this.options.results.filter((function(t,n){return n!==e.get(0)}))),this.Z()}}),new P("a.glsr-toggle-status"),new F,new T,new G,new q,new C;var n=function(){this.dataset.glsrTrack=this.value};t("select[data-glsr-track]").each(n),t("select[data-glsr-track]").on("change",n),t(".glsr-card.postbox:not(.open)").addClass("closed").find(".glsr-accordion-trigger").attr("aria-expanded",!1).closest(".glsr-nav-view").addClass("collapsed"),t(".glsr-support-step").not(":checked").length<1&&t(".glsr-card-result").removeClass("hidden"),t(".glsr-support-step").on("change",(function(){var n=t(".glsr-support-step").not(":checked").length>0?"add":"remove";t(".glsr-card-result")[n+"Class"]("hidden")})),t(".glsr-card.postbox .glsr-card-heading").on("click",(function(){var n=t(this).parent(),e=n.closest(".glsr-nav-view"),i=n.hasClass("closed")?"remove":"add";n[i+"Class"]("closed").find(".glsr-accordion-trigger").attr("aria-expanded","add"!==i),i=e.find(".glsr-card.postbox").not(".closed").length>0?"remove":"add",e[i+"Class"]("collapsed")}))}))}()}();
1
  /*! For license information please see site-reviews-admin.js.LICENSE.txt */
2
+ !function(){var t={367:function(t,n){var e,i,r;i=[t,n],void 0===(r="function"==typeof(e=function(t,n){"use strict";var e,i,r="function"==typeof Map?new Map:(e=[],i=[],{has:function(t){return e.indexOf(t)>-1},get:function(t){return i[e.indexOf(t)]},set:function(t,n){-1===e.indexOf(t)&&(e.push(t),i.push(n))},delete:function(t){var n=e.indexOf(t);n>-1&&(e.splice(n,1),i.splice(n,1))}}),o=function(t){return new Event(t,{bubbles:!0})};try{new Event("test")}catch(t){o=function(t){var n=document.createEvent("Event");return n.initEvent(t,!0,!1),n}}function s(t){if(t&&t.nodeName&&"TEXTAREA"===t.nodeName&&!r.has(t)){var n=null,e=null,i=null,s=function(){t.clientWidth!==e&&d()},a=function(n){window.removeEventListener("resize",s,!1),t.removeEventListener("input",d,!1),t.removeEventListener("keyup",d,!1),t.removeEventListener("autosize:destroy",a,!1),t.removeEventListener("autosize:update",d,!1),Object.keys(n).forEach((function(e){t.style[e]=n[e]})),r.delete(t)}.bind(t,{height:t.style.height,resize:t.style.resize,overflowY:t.style.overflowY,overflowX:t.style.overflowX,wordWrap:t.style.wordWrap});t.addEventListener("autosize:destroy",a,!1),"onpropertychange"in t&&"oninput"in t&&t.addEventListener("keyup",d,!1),window.addEventListener("resize",s,!1),t.addEventListener("input",d,!1),t.addEventListener("autosize:update",d,!1),t.style.overflowX="hidden",t.style.wordWrap="break-word",r.set(t,{destroy:a,update:d}),u()}function u(){var e=window.getComputedStyle(t,null);"vertical"===e.resize?t.style.resize="none":"both"===e.resize&&(t.style.resize="horizontal"),n="content-box"===e.boxSizing?-(parseFloat(e.paddingTop)+parseFloat(e.paddingBottom)):parseFloat(e.borderTopWidth)+parseFloat(e.borderBottomWidth),isNaN(n)&&(n=0),d()}function c(n){var e=t.style.width;t.style.width="0px",t.offsetWidth,t.style.width=e,t.style.overflowY=n}function l(t){for(var n=[];t&&t.parentNode&&t.parentNode instanceof Element;)t.parentNode.scrollTop&&n.push({node:t.parentNode,scrollTop:t.parentNode.scrollTop}),t=t.parentNode;return n}function f(){if(0!==t.scrollHeight){var i=l(t),r=document.documentElement&&document.documentElement.scrollTop;t.style.height="",t.style.height=t.scrollHeight+n+"px",e=t.clientWidth,i.forEach((function(t){t.node.scrollTop=t.scrollTop})),r&&(document.documentElement.scrollTop=r)}}function d(){f();var n=Math.round(parseFloat(t.style.height)),e=window.getComputedStyle(t,null),r="content-box"===e.boxSizing?Math.round(parseFloat(e.height)):t.offsetHeight;if(r<n?"hidden"===e.overflowY&&(c("scroll"),f(),r="content-box"===e.boxSizing?Math.round(parseFloat(window.getComputedStyle(t,null).height)):t.offsetHeight):"hidden"!==e.overflowY&&(c("hidden"),f(),r="content-box"===e.boxSizing?Math.round(parseFloat(window.getComputedStyle(t,null).height)):t.offsetHeight),i!==r){i=r;var s=o("autosize:resized");try{t.dispatchEvent(s)}catch(t){}}}}function a(t){var n=r.get(t);n&&n.destroy()}function u(t){var n=r.get(t);n&&n.update()}var c=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?((c=function(t){return t}).destroy=function(t){return t},c.update=function(t){return t}):((c=function(t,n){return t&&Array.prototype.forEach.call(t.length?t:[t],(function(t){return s(t,n)})),t}).destroy=function(t){return t&&Array.prototype.forEach.call(t.length?t:[t],a),t},c.update=function(t){return t&&Array.prototype.forEach.call(t.length?t:[t],u),t}),n.default=c,t.exports=n.default})?e.apply(n,i):e)||(t.exports=r)},433:function(){Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}},325:function(t,n,e){var i=function(t){var n=/\blang(?:uage)?-([\w-]+)\b/i,e=0,i={manual:t.Prism&&t.Prism.manual,disableWorkerMessageHandler:t.Prism&&t.Prism.disableWorkerMessageHandler,util:{encode:function t(n){return n instanceof r?new r(n.type,t(n.content),n.alias):Array.isArray(n)?n.map(t):n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(t){return Object.prototype.toString.call(t).slice(8,-1)},objId:function(t){return t.__id||Object.defineProperty(t,"__id",{value:++e}),t.__id},clone:function t(n,e){var r,o;switch(e=e||{},i.util.type(n)){case"Object":if(o=i.util.objId(n),e[o])return e[o];for(var s in r={},e[o]=r,n)n.hasOwnProperty(s)&&(r[s]=t(n[s],e));return r;case"Array":return o=i.util.objId(n),e[o]?e[o]:(r=[],e[o]=r,n.forEach((function(n,i){r[i]=t(n,e)})),r);default:return n}},getLanguage:function(t){for(;t&&!n.test(t.className);)t=t.parentElement;return t?(t.className.match(n)||[,"none"])[1].toLowerCase():"none"},currentScript:function(){if("undefined"==typeof document)return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(i){var t=(/at [^(\r\n]*\((.*):.+:.+\)$/i.exec(i.stack)||[])[1];if(t){var n=document.getElementsByTagName("script");for(var e in n)if(n[e].src==t)return n[e]}return null}},isActive:function(t,n,e){for(var i="no-"+n;t;){var r=t.classList;if(r.contains(n))return!0;if(r.contains(i))return!1;t=t.parentElement}return!!e}},languages:{extend:function(t,n){var e=i.util.clone(i.languages[t]);for(var r in n)e[r]=n[r];return e},insertBefore:function(t,n,e,r){var o=(r=r||i.languages)[t],s={};for(var a in o)if(o.hasOwnProperty(a)){if(a==n)for(var u in e)e.hasOwnProperty(u)&&(s[u]=e[u]);e.hasOwnProperty(a)||(s[a]=o[a])}var c=r[t];return r[t]=s,i.languages.DFS(i.languages,(function(n,e){e===c&&n!=t&&(this[n]=s)})),s},DFS:function t(n,e,r,o){o=o||{};var s=i.util.objId;for(var a in n)if(n.hasOwnProperty(a)){e.call(n,a,n[a],r||a);var u=n[a],c=i.util.type(u);"Object"!==c||o[s(u)]?"Array"!==c||o[s(u)]||(o[s(u)]=!0,t(u,e,a,o)):(o[s(u)]=!0,t(u,e,null,o))}}},plugins:{},highlightAll:function(t,n){i.highlightAllUnder(document,t,n)},highlightAllUnder:function(t,n,e){var r={callback:e,container:t,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};i.hooks.run("before-highlightall",r),r.elements=Array.prototype.slice.apply(r.container.querySelectorAll(r.selector)),i.hooks.run("before-all-elements-highlight",r);for(var o,s=0;o=r.elements[s++];)i.highlightElement(o,!0===n,r.callback)},highlightElement:function(e,r,o){var s=i.util.getLanguage(e),a=i.languages[s];e.className=e.className.replace(n,"").replace(/\s+/g," ")+" language-"+s;var u=e.parentElement;u&&"pre"===u.nodeName.toLowerCase()&&(u.className=u.className.replace(n,"").replace(/\s+/g," ")+" language-"+s);var c={element:e,language:s,grammar:a,code:e.textContent};function l(t){c.highlightedCode=t,i.hooks.run("before-insert",c),c.element.innerHTML=c.highlightedCode,i.hooks.run("after-highlight",c),i.hooks.run("complete",c),o&&o.call(c.element)}if(i.hooks.run("before-sanity-check",c),!c.code)return i.hooks.run("complete",c),void(o&&o.call(c.element));if(i.hooks.run("before-highlight",c),c.grammar)if(r&&t.Worker){var f=new Worker(i.filename);f.onmessage=function(t){l(t.data)},f.postMessage(JSON.stringify({language:c.language,code:c.code,immediateClose:!0}))}else l(i.highlight(c.code,c.grammar,c.language));else l(i.util.encode(c.code))},highlight:function(t,n,e){var o={code:t,grammar:n,language:e};return i.hooks.run("before-tokenize",o),o.tokens=i.tokenize(o.code,o.grammar),i.hooks.run("after-tokenize",o),r.stringify(i.util.encode(o.tokens),o.language)},tokenize:function(t,n){var e=n.rest;if(e){for(var i in e)n[i]=e[i];delete n.rest}var r=new a;return u(r,r.head,t),s(t,r,n,r.head,0),function(t){var n=[],e=t.head.next;for(;e!==t.tail;)n.push(e.value),e=e.next;return n}(r)},hooks:{all:{},add:function(t,n){var e=i.hooks.all;e[t]=e[t]||[],e[t].push(n)},run:function(t,n){var e=i.hooks.all[t];if(e&&e.length)for(var r,o=0;r=e[o++];)r(n)}},Token:r};function r(t,n,e,i){this.type=t,this.content=n,this.alias=e,this.length=0|(i||"").length}function o(t,n,e,i){t.lastIndex=n;var r=t.exec(e);if(r&&i&&r[1]){var o=r[1].length;r.index+=o,r[0]=r[0].slice(o)}return r}function s(t,n,e,a,l,f){for(var d in e)if(e.hasOwnProperty(d)&&e[d]){var h=e[d];h=Array.isArray(h)?h:[h];for(var p=0;p<h.length;++p){if(f&&f.cause==d+","+p)return;var v=h[p],m=v.inside,y=!!v.lookbehind,b=!!v.greedy,g=v.alias;if(b&&!v.pattern.global){var w=v.pattern.toString().match(/[imsuy]*$/)[0];v.pattern=RegExp(v.pattern.source,w+"g")}for(var _=v.pattern||v,k=a.next,j=l;k!==n.tail&&!(f&&j>=f.reach);j+=k.value.length,k=k.next){var x=k.value;if(n.length>t.length)return;if(!(x instanceof r)){var S,F=1;if(b){if(!(S=o(_,j,t,y)))break;var Q=S.index,O=S.index+S[0].length,A=j;for(A+=k.value.length;Q>=A;)A+=(k=k.next).value.length;if(j=A-=k.value.length,k.value instanceof r)continue;for(var R=k;R!==n.tail&&(A<O||"string"==typeof R.value);R=R.next)F++,A+=R.value.length;F--,x=t.slice(j,A),S.index-=j}else if(!(S=o(_,0,x,y)))continue;Q=S.index;var z=S[0],P=x.slice(0,Q),$=x.slice(Q+z.length),C=j+x.length;f&&C>f.reach&&(f.reach=C);var L=k.prev;P&&(L=u(n,L,P),j+=P.length),c(n,L,F),k=u(n,L,new r(d,m?i.tokenize(z,m):z,g,z)),$&&u(n,k,$),F>1&&s(t,n,e,k.prev,j,{cause:d+","+p,reach:C})}}}}}function a(){var t={value:null,prev:null,next:null},n={value:null,prev:t,next:null};t.next=n,this.head=t,this.tail=n,this.length=0}function u(t,n,e){var i=n.next,r={value:e,prev:n,next:i};return n.next=r,i.prev=r,t.length++,r}function c(t,n,e){for(var i=n.next,r=0;r<e&&i!==t.tail;r++)i=i.next;n.next=i,i.prev=n,t.length-=r}if(t.Prism=i,r.stringify=function t(n,e){if("string"==typeof n)return n;if(Array.isArray(n)){var r="";return n.forEach((function(n){r+=t(n,e)})),r}var o={type:n.type,content:t(n.content,e),tag:"span",classes:["token",n.type],attributes:{},language:e},s=n.alias;s&&(Array.isArray(s)?Array.prototype.push.apply(o.classes,s):o.classes.push(s)),i.hooks.run("wrap",o);var a="";for(var u in o.attributes)a+=" "+u+'="'+(o.attributes[u]||"").replace(/"/g,"&quot;")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+a+">"+o.content+"</"+o.tag+">"},!t.document)return t.addEventListener?(i.disableWorkerMessageHandler||t.addEventListener("message",(function(n){var e=JSON.parse(n.data),r=e.language,o=e.code,s=e.immediateClose;t.postMessage(i.highlight(o,i.languages[r],r)),s&&t.close()}),!1),i):i;var l=i.util.currentScript();function f(){i.manual||i.highlightAll()}if(l&&(i.filename=l.src,l.hasAttribute("data-manual")&&(i.manual=!0)),!i.manual){var d=document.readyState;"loading"===d||"interactive"===d&&l&&l.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return i}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});t.exports&&(t.exports=i),void 0!==e.g&&(e.g.Prism=i)},251:function(){!function(t){var n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;t.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:RegExp("[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+n.source+")*(?=\\s*\\{)"),string:{pattern:n,greedy:!0},property:/(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},t.languages.css.atrule.inside.rest=t.languages.css;var e=t.languages.markup;e&&(e.tag.addInlined("style","css"),t.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/(^|["'\s])style\s*=\s*(?:"[^"]*"|'[^']*')/i,lookbehind:!0,inside:{"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{style:{pattern:/(["'])[\s\S]+(?=["']$)/,lookbehind:!0,alias:"language-css",inside:t.languages.css},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},"attr-name":/^style/i}}},e.tag))}(Prism)},980:function(){Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|(?:get|set)(?=\s*[\[$\w\xA0-\uFFFF])|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-flags":/[a-z]+$/,"regex-delimiter":/^\/|\/$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.js=Prism.languages.javascript},854:function(){!function(t){function n(t,n){return"___"+t.toUpperCase()+n+"___"}Object.defineProperties(t.languages["markup-templating"]={},{buildPlaceholders:{value:function(e,i,r,o){if(e.language===i){var s=e.tokenStack=[];e.code=e.code.replace(r,(function(t){if("function"==typeof o&&!o(t))return t;for(var r,a=s.length;-1!==e.code.indexOf(r=n(i,a));)++a;return s[a]=t,r})),e.grammar=t.languages.markup}}},tokenizePlaceholders:{value:function(e,i){if(e.language===i&&e.tokenStack){e.grammar=t.languages[i];var r=0,o=Object.keys(e.tokenStack);!function s(a){for(var u=0;u<a.length&&!(r>=o.length);u++){var c=a[u];if("string"==typeof c||c.content&&"string"==typeof c.content){var l=o[r],f=e.tokenStack[l],d="string"==typeof c?c:c.content,h=n(i,l),p=d.indexOf(h);if(p>-1){++r;var v=d.substring(0,p),m=new t.Token(i,t.tokenize(f,e.grammar),"language-"+i,f),y=d.substring(p+h.length),b=[];v&&b.push.apply(b,s([v])),b.push(m),y&&b.push.apply(b,s([y])),"string"==typeof c?a.splice.apply(a,[u,1].concat(b)):c.content=b}}else c.content&&s(c.content)}return a}(e.tokens)}}}})}(Prism)},335:function(){Prism.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/,name:/[^\s<>'"]+/}},cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",(function(t){"entity"===t.type&&(t.attributes.title=t.content.replace(/&amp;/,"&"))})),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(t,n){var e={};e["language-"+n]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[n]},e.cdata=/^<!\[CDATA\[|\]\]>$/i;var i={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:e}};i["language-"+n]={pattern:/[\s\S]+/,inside:Prism.languages[n]};var r={};r[t]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return t})),"i"),lookbehind:!0,greedy:!0,inside:i},Prism.languages.insertBefore("markup","cdata",r)}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml},945:function(){!function(t){var n=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,e=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/,/\b(?:null)\b/i],i=/\b0b[01]+\b|\b0x[\da-f]+\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+)(?:e[+-]?\d+)?/i,r=/<?=>|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,o=/[{}\[\](),:;]/;t.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:n,variable:/\$+(?:\w+\b|(?={))/i,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},keyword:[{pattern:/(\(\s*)\b(?:bool|boolean|int|integer|float|string|object|array)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:bool|int|float|string|object|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*[a-z0-9_|]\|\s*)(?:null|false)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?[a-z0-9_|]\|\s*)(?:null|false)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:null|false)\b/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},/\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|finally|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|match|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i],"argument-name":/\b[a-z_]\w*(?=\s*:(?!:))/i,"class-name":[{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:e,function:/\w+\s*(?=\()/,property:{pattern:/(->)[\w]+/,lookbehind:!0},number:i,operator:r,punctuation:o};var s={pattern:/{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)*)/,lookbehind:!0,inside:t.languages.php},a=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:s}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:s}}];t.languages.insertBefore("php","variable",{string:a}),t.languages.insertBefore("php","variable",{attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=]$)/,lookbehind:!0,inside:{comment:n,string:a,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:e,number:i,operator:r,punctuation:o}},delimiter:{pattern:/^#\[|]$/,alias:"punctuation"}}}}),t.hooks.add("before-tokenize",(function(n){if(/<\?/.test(n.code)){t.languages["markup-templating"].buildPlaceholders(n,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/gi)}})),t.hooks.add("after-tokenize",(function(n){t.languages["markup-templating"].tokenizePlaceholders(n,"php")}))}(Prism)},759:function(){!function(){if("undefined"!=typeof self&&self.Prism&&self.document){var t="line-numbers",n=/\n(?!$)/g,e=Prism.plugins.lineNumbers={getLine:function(n,e){if("PRE"===n.tagName&&n.classList.contains(t)){var i=n.querySelector(".line-numbers-rows");if(i){var r=parseInt(n.getAttribute("data-start"),10)||1,o=r+(i.children.length-1);e<r&&(e=r),e>o&&(e=o);var s=e-r;return i.children[s]}}},resize:function(t){o([t])},assumeViewportIndependence:!0},i=function(t){return t?window.getComputedStyle?getComputedStyle(t):t.currentStyle||null:null},r=void 0;window.addEventListener("resize",(function(){e.assumeViewportIndependence&&r===window.innerWidth||(r=window.innerWidth,o(Array.prototype.slice.call(document.querySelectorAll("pre.line-numbers"))))})),Prism.hooks.add("complete",(function(e){if(e.code){var i=e.element,r=i.parentNode;if(r&&/pre/i.test(r.nodeName)&&!i.querySelector(".line-numbers-rows")&&Prism.util.isActive(i,t)){i.classList.remove(t),r.classList.add(t);var s,a=e.code.match(n),u=a?a.length+1:1,c=new Array(u+1).join("<span></span>");(s=document.createElement("span")).setAttribute("aria-hidden","true"),s.className="line-numbers-rows",s.innerHTML=c,r.hasAttribute("data-start")&&(r.style.counterReset="linenumber "+(parseInt(r.getAttribute("data-start"),10)-1)),e.element.appendChild(s),o([r]),Prism.hooks.run("line-numbers",e)}}})),Prism.hooks.add("line-numbers",(function(t){t.plugins=t.plugins||{},t.plugins.lineNumbers=!0}))}function o(t){if(0!=(t=t.filter((function(t){var n=i(t)["white-space"];return"pre-wrap"===n||"pre-line"===n}))).length){var e=t.map((function(t){var e=t.querySelector("code"),i=t.querySelector(".line-numbers-rows");if(e&&i){var r=t.querySelector(".line-numbers-sizer"),o=e.textContent.split(n);r||((r=document.createElement("span")).className="line-numbers-sizer",e.appendChild(r)),r.innerHTML="0",r.style.display="block";var s=r.getBoundingClientRect().height;return r.innerHTML="",{element:t,lines:o,lineHeights:[],oneLinerHeight:s,sizer:r}}})).filter(Boolean);e.forEach((function(t){var n=t.sizer,e=t.lines,i=t.lineHeights,r=t.oneLinerHeight;i[e.length-1]=void 0,e.forEach((function(t,e){if(t&&t.length>1){var o=n.appendChild(document.createElement("span"));o.style.display="block",o.textContent=t}else i[e]=r}))})),e.forEach((function(t){for(var n=t.sizer,e=t.lineHeights,i=0,r=0;r<e.length;r++)void 0===e[r]&&(e[r]=n.children[i++].getBoundingClientRect().height)})),e.forEach((function(t){var n=t.sizer,e=t.element.querySelector(".line-numbers-rows");n.style.display="none",n.innerHTML="",t.lineHeights.forEach((function(t,n){e.children[n].style.height=t+"px"}))}))}}}()},449:function(t){"use strict";function n(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function e(t,n){for(var e=0;e<n.length;e++){var i=n[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function i(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}var r={classNames:{active:"gl-active",base:"gl-star-rating",selected:"gl-selected"},clearable:!0,maxStars:10,prebuilt:!1,stars:null,tooltip:"Select a Rating"},o=function(t,n,e){t.classList[n?"add":"remove"](e)},s=function(t){var n=document.createElement("span");for(var e in t=t||{})n.setAttribute(e,t[e]);return n},a=function(t,n,e){var i=s(e);return t.parentNode.insertBefore(i,n?t.nextSibling:t),i},u=function t(){for(var n=arguments.length,e=new Array(n),i=0;i<n;i++)e[i]=arguments[i];var r={};return e.forEach((function(n){Object.keys(n||{}).forEach((function(i){if(void 0!==e[0][i]){var o=n[i];"Object"!==c(o)||"Object"!==c(r[i])?r[i]=o:r[i]=t(r[i],o)}}))})),r},c=function(t){return{}.toString.call(t).slice(8,-1)},l=function(){function t(e,i){var r,o;n(this,t),this.direction=window.getComputedStyle(e,null).getPropertyValue("direction"),this.el=e,this.events={change:this.onChange.bind(this),keydown:this.onKeyDown.bind(this),mousedown:this.onPointerDown.bind(this),mouseleave:this.onPointerLeave.bind(this),mousemove:this.onPointerMove.bind(this),reset:this.onReset.bind(this),touchend:this.onPointerDown.bind(this),touchmove:this.onPointerMove.bind(this)},this.indexActive=null,this.indexSelected=null,this.props=i,this.tick=null,this.ticking=!1,this.values=function(t){var n=[];return[].forEach.call(t.options,(function(t){var e=parseInt(t.value,10)||0;e>0&&n.push({index:t.index,text:t.text,value:e})})),n.sort((function(t,n){return t.value-n.value}))}(e),this.widgetEl=null,this.el.widget&&this.el.widget.destroy(),r=this.values.length,o=this.props.maxStars,/^\d+$/.test(r)&&1<=r&&r<=o?this.build():this.destroy()}return i(t,[{key:"build",value:function(){this.destroy(),this.buildWidget(),this.selectValue(this.indexSelected=this.selected(),!1),this.handleEvents("add"),this.el.widget=this}},{key:"buildWidget",value:function(){var t,n,e=this;this.props.prebuilt?(t=this.el.parentNode,n=t.querySelector("."+this.props.classNames.base+"--stars")):((t=a(this.el,!1,{class:this.props.classNames.base})).appendChild(this.el),n=a(this.el,!0,{class:this.props.classNames.base+"--stars"}),this.values.forEach((function(t,i){var r=s({"data-index":i,"data-value":t.value});"function"==typeof e.props.stars&&e.props.stars.call(e,r,t,i),[].forEach.call(r.children,(function(t){return t.style.pointerEvents="none"})),n.innerHTML+=r.outerHTML}))),t.dataset.starRating="",t.classList.add(this.props.classNames.base+"--"+this.direction),this.props.tooltip&&n.setAttribute("role","tooltip"),this.widgetEl=n}},{key:"changeIndexTo",value:function(t,n){var e=this;if(this.indexActive!==t||n){if([].forEach.call(this.widgetEl.children,(function(n,i){o(n,i<=t,e.props.classNames.active),o(n,i===e.indexSelected,e.props.classNames.selected)})),"function"==typeof this.props.stars||this.props.prebuilt||(this.widgetEl.classList.remove("s"+10*(this.indexActive+1)),this.widgetEl.classList.add("s"+10*(t+1))),this.props.tooltip){var i=t<0?this.props.tooltip:this.values[t].text;this.widgetEl.setAttribute("aria-label",i)}this.indexActive=t}this.ticking=!1}},{key:"destroy",value:function(){this.indexActive=null,this.indexSelected=this.selected();var t=this.el.parentNode;t.classList.contains(this.props.classNames.base)&&(this.props.prebuilt?(this.widgetEl=t.querySelector("."+this.props.classNames.base+"--stars"),t.classList.remove(this.props.classNames.base+"--"+this.direction),delete t.dataset.starRating):t.parentNode.replaceChild(this.el,t),this.handleEvents("remove")),delete this.el.widget}},{key:"eventListener",value:function(t,n,e,i){var r=this;e.forEach((function(e){return t[n+"EventListener"](e,r.events[e],i||!1)}))}},{key:"handleEvents",value:function(t){var n=this.el.closest("form");n&&"FORM"===n.tagName&&this.eventListener(n,t,["reset"]),this.eventListener(this.el,t,["change"]),"add"===t&&this.el.disabled||(this.eventListener(this.el,t,["keydown"]),this.eventListener(this.widgetEl,t,["mousedown","mouseleave","mousemove","touchend","touchmove"],!1))}},{key:"indexFromEvent",value:function(t){var n,e,i=(null===(n=t.touches)||void 0===n?void 0:n[0])||(null===(e=t.changedTouches)||void 0===e?void 0:e[0])||t,r=document.elementFromPoint(i.clientX,i.clientY);return[].slice.call(r.parentNode.children).indexOf(r)}},{key:"onChange",value:function(){this.changeIndexTo(this.selected(),!0)}},{key:"onKeyDown",value:function(t){var n=t.key.slice(5);if(~["Left","Right"].indexOf(n)){var e="Left"===n?-1:1;"rtl"===this.direction&&(e*=-1);var i=this.values.length-1,r=Math.min(Math.max(this.selected()+e,-1),i);this.selectValue(r,!0)}}},{key:"onPointerDown",value:function(t){t.preventDefault();var n=this.indexFromEvent(t);this.props.clearable&&n===this.indexSelected&&(n=-1),this.selectValue(n,!0)}},{key:"onPointerLeave",value:function(t){var n=this;t.preventDefault(),cancelAnimationFrame(this.tick),requestAnimationFrame((function(){return n.changeIndexTo(n.indexSelected)}))}},{key:"onPointerMove",value:function(t){var n=this;t.preventDefault(),this.ticking||(this.tick=requestAnimationFrame((function(){return n.changeIndexTo(n.indexFromEvent(t))})),this.ticking=!0)}},{key:"onReset",value:function(){var t;this.selectValue((null===(t=this.el.querySelector("[selected]"))||void 0===t?void 0:t.index)||-1,!1)}},{key:"selected",value:function(){var t=this;return this.values.findIndex((function(n){return n.value===+t.el.value}))}},{key:"selectValue",value:function(t,n){var e;this.el.value=(null===(e=this.values[t])||void 0===e?void 0:e.value)||"",this.indexSelected=this.selected(),!1===n?this.changeIndexTo(this.selected(),!0):this.el.dispatchEvent(new Event("change"))}}]),t}(),f=function(){function t(e,i){n(this,t),this.destroy=this.destroy.bind(this),this.rebuild=this.rebuild.bind(this),this.widgets=[],this.buildWidgets(e,i)}return i(t,[{key:"buildWidgets",value:function(t,n){var e=this;this.queryElements(t).forEach((function(t){var i=u(r,n,JSON.parse(t.getAttribute("data-options")));"SELECT"!==t.tagName||t.widget||(!i.prebuilt&&t.parentNode.classList.contains(i.classNames.base)&&e.unwrap(t),e.widgets.push(new l(t,i)))}))}},{key:"destroy",value:function(){this.widgets.forEach((function(t){return t.destroy()}))}},{key:"queryElements",value:function(t){return"HTMLSelectElement"===c(t)?[t]:"NodeList"===c(t)?[].slice.call(t):"String"===c(t)?[].slice.call(document.querySelectorAll(t)):[]}},{key:"rebuild",value:function(){this.widgets.forEach((function(t){return t.build()}))}},{key:"unwrap",value:function(t){var n=t.parentNode,e=n.parentNode;e.insertBefore(t,n),e.removeChild(n)}}]),t}();t.exports=f}},n={};function e(i){var r=n[i];if(void 0!==r)return r.exports;var o=n[i]={exports:{}};return t[i].call(o.exports,o,o.exports,e),o.exports}e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,{a:n}),n},e.d=function(t,n){for(var i in n)e.o(n,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:n[i]})},e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},function(){"use strict";var t=function(t){return this.data={},this.form=jQuery(t),this.pushes={},this.init()};t.prototype={patterns:{validate:/^[a-z_-][a-z0-9_-]*(?:\[(?:\d*|[a-z0-9_-]+)\])*$/i,key:/[a-z0-9_-]+|(?=\[\])/gi,named:/^[a-z0-9_-]+$/i,push:/^$/,fixed:/^\d+$/},addPair:function(t){this.patterns.validate.test(t.name)&&(this.data=jQuery.extend(!0,this.data,this.makeObject(t.name,this.encode(t))))},build:function(t,n,e){return t[n]=e,t},encode:function(t){switch(jQuery('[name="'+t.name+'"]',this.form).attr("type")){case"checkbox":return"on"===t.value||t.value;default:return t.value}},incrementPush:function(t){return void 0===this.pushes[t]&&(this.pushes[t]=0),this.pushes[t]++},init:function(){var t=this.form.serializeArray();if(jQuery.isArray(t))for(var n=0,e=t.length;n<e;n++)this.addPair(t[n]);return this.data},makeObject:function(t,n){for(var e,i=t.match(this.patterns.key);void 0!==(e=i.pop());)if(this.patterns.push.test(e)){var r=this.incrementPush(t.replace(/\[\]$/,""));n=this.build([],r,n)}else this.patterns.fixed.test(e)?n=this.build([],e,n):this.patterns.named.test(e)&&(n=this.build({},e,n));return n}};var n=t,i=function(t,n,e){this.event=n||null,this.form=e||null,this.notice=null,this.request=t||{}};i.prototype={post:function(t){this.event?this.t(t):this.i(t)},u:function(t){var e={action:GLSR.action,_ajax_request:!0};if(this.form){var i=new n(this.form);i[GLSR.nameprefix]&&(this.request=i[GLSR.nameprefix])}return this.l(t),e[GLSR.nameprefix]=this.request,e},l:function(t){this.request._nonce||(GLSR.nonce[this.request._action]?this.request._nonce=GLSR.nonce[this.request._action]:t&&(this.request._nonce=t.closest("form").find("#_wpnonce").val()))},i:function(t,n){jQuery.post(GLSR.ajaxurl,this.u(n)).done((function(e){"function"==typeof t&&t(e.data,e.success),n&&n.prop("disabled",!1)})).always((function(t){t.data?t.data.notices&&GLSR.notices.add(t.data.notices):GLSR.notices.add('<div class="notice notice-error inline is-dismissible"><p>Unknown error.</p></div>')}))},t:function(t){this.event.preventDefault();var n=jQuery(this.event.currentTarget);n.is(":disabled")||(n.prop("disabled",!0),this.i(t,n))}};var r=i,o=e(367),s=e.n(o);function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var u=function(){"object"===a(jQuery.wp)&&"function"==typeof jQuery.wp.wpColorPicker&&jQuery(document).find("input[type=text].color-picker-hex").each((function(){jQuery(this).wpColorPicker(jQuery(this).data("colorpicker")||{})}))},c=function(t){this.el=document.querySelector(t),this.el&&(this.depends=this.el.querySelectorAll("[data-depends]"),this.depends.length&&this.h())};c.prototype={p:function(t){var n=t.getAttribute("data-depends");if(n)try{return JSON.parse(n)}catch(t){return}},h:function(){for(var t=this.el.elements,n=0;n<t.length;n++)~["INPUT","SELECT"].indexOf(t[n].nodeName)&&t[n].addEventListener("change",this.v.bind(this))},m:function(t,n){var e=!1;n=[].concat(n);var i=this.el.querySelectorAll('[name="'+t+'"]');return[].map.call(i,function(t){var i=~this._(n).indexOf(this.k(t.value));~["checkbox","radio"].indexOf(t.type)?t.checked&&i&&(e=!0):i&&(e=!0)}.bind(this)),e},k:function(t){return!!~["true","on","yes","1"].indexOf(t)||!~["false","off","no","0"].indexOf(t)&&t},_:function(t){return t.map(this.k)},v:function(t){this.depends.forEach(function(n){var e=this.p(n);if(e&&~e.map((function(t){return t.name})).indexOf(t.currentTarget.name)){var i=!0;e.forEach(function(t){this.m(t.name,t.value)||(i=!1)}.bind(this)),this.j(n,i)}}.bind(this))},j:function(t,n){var e=t.closest(".glsr-setting-field");e&&e.classList[n?"remove":"add"]("hidden")}};var l=c,f=function(){jQuery(".glsr-metabox-field input[data-edit-review]").on("change",this.S.bind(this)),jQuery(".glsr-metabox-field input[type=url]").on("change",this.F.bind(this))};f.prototype={F:function(t){var n=jQuery(t.currentTarget);this.O(n.parent().find("img"),n.val())},S:function(t){var n=t.currentTarget.checked;jQuery(".glsr-input-value").each(function(t,e){if(n)jQuery(e).data("value",e.value);else{if(e.value=jQuery(e).data("value"),"url"!==e.type)return;this.O(jQuery(e).parent().find("img"),e.value)}}.bind(this)),jQuery(".glsr-input-value").prop("disabled",!n),GLSR.stars.rebuild()},O:function(t,n){if(t){var e=new Image;e.src=n,e.onerror=function(){t.attr("src",t.data("fallback"))},e.onload=function(){t.attr("src",e.src)}}}};var d=f,h=function(){this.h()};h.prototype={add:function(t){t&&(jQuery("#glsr-notices").length||(jQuery("#message.notice").remove(),jQuery("hr.wp-header-end").after('<div id="glsr-notices" />')),jQuery("#glsr-notices").html(t),jQuery(document).trigger("wp-updates-notice-added"))},h:function(){jQuery(".glsr-notice[data-dismiss]").on("click.wp-dismiss-notice",this.A.bind(this))},A:function(t){var n={};n[GLSR.nameprefix]={_action:"dismiss-notice",notice:jQuery(t.currentTarget).data("dismiss")},wp.ajax.post(GLSR.action,n)}};var p=h,v=function(){this.el=jQuery("#pinned-status-select"),this.el&&(this.cancel=jQuery("a.cancel-pinned-status"),this.cancel.on("click",this.R.bind(this)),this.edit=jQuery("a.edit-pinned-status"),this.edit.on("click",this.P.bind(this)),this.save=jQuery("a.save-pinned-status"),this.save.on("click",this.$.bind(this))),jQuery("td.column-is_pinned i.pin-review").on("click",this.C.bind(this))};v.prototype={L:function(){this.el.slideUp("fast"),this.edit.show().focus()},R:function(t){t.preventDefault(),this.L(),this.el.find("select").val("0"===jQuery("#hidden-pinned-status").val()?1:0)},P:function(t){t.preventDefault(),this.el.is(":hidden")&&(this.el.slideDown("fast",function(){this.el.find("select").focus()}.bind(this)),this.edit.hide())},$:function(t){t.preventDefault(),this.L(),this.target=t.currentTarget;var n={_action:"toggle-pinned",id:jQuery("#post_ID").val(),pinned:jQuery("#pinned-status").val()};new r(n).post(this.T.bind(this))},C:function(t){t.preventDefault(),this.target=t.currentTarget;var n={_action:"toggle-pinned",id:t.currentTarget.getAttribute("data-id")};jQuery(this.target).addClass("spinner is-active").removeClass("dashicons-sticky"),new r(n).post(this.G.bind(this))},T:function(t){jQuery("#pinned-status").val(0|!t.pinned),jQuery("#hidden-pinned-status").val(0|t.pinned),jQuery("#pinned-status-text").text(t.pinned?this.target.dataset.yes:this.target.dataset.no),GLSR.notices.add(t.notices)},G:function(t){this.target.classList[t.pinned?"add":"remove"]("pinned"),jQuery(this.target).removeClass("spinner is-active").addClass("dashicons-sticky")}};var m=v,y=function(){jQuery.each(GLSR.pointers,function(t,n){this.h(n)}.bind(this))};y.prototype={M:function(t){jQuery.post(GLSR.ajaxurl,{action:"dismiss-wp-pointer",pointer:t})},h:function(t){jQuery(t.target).pointer({content:t.options.content,position:t.options.position,close:this.M.bind(null,t.id)}).pointer("open").pointer("sendToTop"),jQuery(document).on("wp-window-resized",(function(){jQuery(t.target).pointer("reposition")}))}};var b=y,g=e(325),w=e.n(g),k=(e(433),e(335),e(980),e(854),e(945),e(251),e(759),function(t,n){this.el=jQuery(t),this.options=n,this.searchTerm=null,this.h()});k.prototype={defaults:{action:null,exclude:[],onInit:null,onResultClick:null,results:{},selected:-1,selectedClass:"glsr-selected-result",selectorEntries:".glsr-strings-table tbody",selectorResults:".glsr-search-results",selectorSearch:".glsr-search-input"},h:function(){this.options=jQuery.extend({},this.defaults,this.options),this.el.length&&(this.options.entriesEl=this.el.parent().find(this.options.selectorEntries),this.options.resultsEl=this.el.find(this.options.selectorResults),this.options.searchEl=this.el.find(this.options.selectorSearch),this.options.searchEl.attr("aria-describedby","live-search-desc"),"function"==typeof this.options.onInit&&this.options.onInit.call(this),this.q())},q:function(){this.options.searchEl.on("input",_.debounce(this.D.bind(this),500)),this.options.searchEl.on("keyup",this.I.bind(this)),this.options.searchEl.on("keydown keypress",(function(t){GLSR.keys.ENTER===t.which&&t.preventDefault()})),jQuery(document).on("click",this.B.bind(this)),jQuery(document).on("keydown",this.H.bind(this))},W:function(){void 0!==this.searchRequest&&this.searchRequest.abort()},U:function(){this.W(),this.options.resultsEl.empty(),this.options.resultsEl.removeClass("is-active"),this.el.removeClass("is-active"),jQuery("body").removeClass("glsr-focus")},N:function(t){var n=this.options.entriesEl.children("tr").eq(t),e=this;n.find("td").css({backgroundColor:"#faafaa"}),n.fadeOut(350,(function(){jQuery(this).remove(),e.options.results={},e.V(),e.Z()}))},K:function(t){jQuery("body").addClass("glsr-focus"),this.options.resultsEl.append(t),this.options.resultsEl.children("span").on("click",this.X.bind(this))},Y:function(){this.options.entriesEl.on("click","a.delete",this.J.bind(this)),this.options.entriesEl.sortable({items:"tr",tolerance:"pointer",start:function(t,n){n.placeholder.height(n.helper[0].scrollHeight)},sort:function(t,n){var e=t.pageY-jQuery(this).offsetParent().offset().top-n.helper.outerHeight(!0)/2;n.helper.css({top:e+"px"})}})},tt:function(t){this.options.selected+=t,this.options.results.removeClass(this.options.selectedClass),this.options.selected<0&&(this.options.selected=-1,this.options.searchEl.focus()),this.options.selected>=this.options.results.length&&(this.options.selected=this.options.results.length-1),this.options.selected>=0&&this.options.results.eq(this.options.selected).addClass(this.options.selectedClass).focus()},B:function(t){jQuery(t.target).find(this.el).length&&jQuery("body").hasClass("glsr-focus")&&this.U()},H:function(t){if(!jQuery.isEmptyObject(this.options.results)){if(GLSR.keys.ESC===t.which&&this.U(),GLSR.keys.ENTER===t.which||GLSR.keys.SPACE===t.which){var n=this.options.resultsEl.find("."+this.options.selectedClass);n&&n.trigger("click")}GLSR.keys.UP===t.which&&(t.preventDefault(),this.tt(-1)),GLSR.keys.DOWN===t.which&&(t.preventDefault(),this.tt(1))}},J:function(t){t.preventDefault(),this.N(jQuery(t.currentTarget).closest("tr").index())},X:function(t){t.preventDefault(),"function"==typeof this.options.onResultClick&&this.options.onResultClick.call(this,t),this.U()},D:function(t){if(this.W(),this.searchTerm===t.currentTarget.value&&this.options.results.length)return this.K(this.options.results);if(this.options.resultsEl.empty(),this.options.selected=-1,this.searchTerm=t.currentTarget.value,""===this.searchTerm)return this.nt();this.el.addClass("is-active");var n={};n[GLSR.nameprefix]={_action:this.options.action,_nonce:this.el.find("#_search_nonce").val(),exclude:this.options.exclude,search:this.searchTerm},this.searchRequest=wp.ajax.post(GLSR.action,n).done(function(t){this.el.removeClass("is-active"),this.K(t.items?t.items:t.empty),this.options.results=this.options.resultsEl.children(),this.options.resultsEl.addClass("is-active"),delete this.searchRequest}.bind(this))},I:function(t){GLSR.keys.ESC===t.which&&this.nt(),GLSR.keys.ENTER===t.which&&(this.D(t),t.preventDefault())},et:function(t){t.preventDefault();var n=jQuery(t.currentTarget).closest(".glsr-multibox-entry");n.find("a").css({color:"#c00"}),n.fadeOut("fast",(function(){n.remove()}))},V:function(){var t=this;this.options.exclude=[],this.options.entriesEl.children("tr").each((function(n){jQuery(this).find(".glsr-string-td2").children().filter(":input").each((function(){var e=jQuery(this),i=e.attr("name").replace(/\[\d+\]/i,"["+n+"]");e.attr("name",i),e.is("[data-id]")&&t.options.exclude.push({id:e.val()})}))}))},nt:function(){this.U(),this.options.results={},this.options.searchEl.val("")},Z:function(){var t=this.options.entriesEl.children().length>0?"remove":"add";this.options.entriesEl.parent()[t+"Class"]("glsr-hidden")}};var j=k,x=function(t){this.options=jQuery.extend({},this.defaults,t),this.tabs=document.querySelectorAll(this.options.tabSelector),this.tabs&&this.h()};x.prototype={defaults:{expandSelectors:".glsr-nav-view, .glsr-notice",tabSelector:".glsr-nav-tab"},h:function(){var t=this;[].forEach.call(t.tabs,function(n,e){n.addEventListener("click",t.A.bind(t)),n.addEventListener("touchend",t.A.bind(t))}.bind(t)),jQuery(t.options.expandSelectors).on("click","a",(function(){var n=jQuery(this).data("expand");localStorage.setItem("glsr-expand",n),t.it(jQuery(n))})),jQuery(window).on("load",(function(){t.it(jQuery(localStorage.getItem("glsr-expand")))}))},A:function(t){t.preventDefault(),this.rt(t.currentTarget)},it:function(t){if(t.length){var n=t.parent().parent();n.removeClass("collapsed"),this.ot(n),n.removeClass("collapsed"),t.parent().removeClass("closed").find(".glsr-accordion-trigger").attr("aria-expanded",!0),window.setTimeout((function(){t.parent()[0].scrollIntoView({behavior:"smooth",block:"center"}),localStorage.removeItem("glsr-expand")}),10)}},ot:function(t){var n=t.hasClass("collapsed")?"remove":"add";t[n+"Class"]("collapsed").find(".glsr-card.postbox")[n+"Class"]("closed").find(".glsr-accordion-trigger").attr("aria-expanded","add"!==n)},rt:function(t){if(t.classList.contains("nav-tab-active")){var n=jQuery(t.getAttribute("href"));this.ot(n)}}};var S=x,F=function(t){this.current=null,this.editor=null,this.create=function(t){if(this.editor=tinymce.get(t),this.editor){var n={_action:"mce-shortcode",shortcode:this.current};new r(n).post(this.st.bind(this))}};var n=document.querySelectorAll(t);n.length&&n.forEach(function(t){var n=t.querySelector("button"),e=t.querySelectorAll(".mce-menu-item");n&&e.length&&this.h(t,n,e)}.bind(this))};F.prototype={at:{},ut:[],h:function(t,n,e){document.addEventListener("click",this.ct.bind(this,t,n)),n.addEventListener("click",this.lt.bind(this,t,n)),e.forEach(function(e){e.addEventListener("click",this.ft.bind(this,t,n))}.bind(this))},dt:function(){tinymce.execCommand("GLSR_Shortcode")},ht:function(){jQuery("#scTemp").length?this.dt():(jQuery("body").append('<textarea id="scTemp" style="display:none!important;"/>'),tinymce.init({elements:"scTemp",external_plugins:GLSR.tinymce,mode:"exact",plugins:["glsr_shortcode","wplink"]}),setTimeout(function(){this.dt()}.bind(this),200))},M:function(t,n){jQuery(n).removeClass("active"),jQuery(t).find(".glsr-mce-menu").hide()},vt:function(){var t=jQuery("#scTemp");t.length&&(tinymce.get("scTemp").remove(),t.remove()),this.at={},this.ut=[]},st:function(t){if(t){if(0===t.body.length)return window.send_to_editor("["+t.shortcode+"]"),void this.vt();var n=this.yt(t);t.ok.constructor===Array&&(n.buttons[0].text=t.ok[0],n.buttons[0].onclick="close",delete n.buttons[1]),this.editor.windowManager.open(n)}},bt:function(t){for(var n in this.at=t,this.ut=[],t)t.hasOwnProperty(n)&&(this.gt(n),this.wt(n),this._t(n));this.at.hide=this.ut.join(",")},gt:function(t){"display"!==t||jQuery.isNumeric(this.at[t])||(this.at[t]="")},wt:function(t){if(GLSR.hideoptions.hasOwnProperty(this.current)){var n=t.substring("hide_".length);-1!==Object.keys(GLSR.hideoptions[this.current]).indexOf(n)&&(this.at[t]&&this.ut.push(n),delete this.at[t])}},_t:function(t){"id"===t&&(this.at[t]=(+new Date).toString(36))},ct:function(t,n,e){jQuery(e.target).closest(jQuery(t)).length||this.M(t,n)},lt:function(t,n,e){e.preventDefault(),e.currentTarget.classList.contains("active")?this.M(t,n):this.kt(t,n)},ft:function(t,n,e){e.preventDefault(),this.current=e.currentTarget.dataset.shortcode,this.current&&(tinymce.get(window.wpActiveEditor)?this.dt():this.ht(),setTimeout(function(){this.M(t,n)}.bind(this),100))},kt:function(t,n){jQuery(n).addClass("active"),jQuery(t).find(".glsr-mce-menu").show()},jt:function(t){return[{classes:"btn glsr-btn primary",onclick:this.xt.bind(this),text:t.ok},{onclick:"close",text:t.close}]},yt:function(t){return{title:t.title,body:t.body,classes:"glsr-mce-popup",minWidth:320,buttons:this.jt(t),onsubmit:this.St.bind(this,t),onclose:this.vt.bind(this)}},St:function(t,n){var e="";for(var i in this.bt(n.data),this.at)this.at.hasOwnProperty(i)&&""!==this.at[i]&&(e+=" "+i+'="'+this.at[i]+'"');window.send_to_editor("["+t.shortcode+e+"]")},xt:function(){var t=this.editor.windowManager.getWindows()[0];this.Ft(t)&&t.submit()},Ft:function(t){var n,e=!0,i=GLSR.shortcodes[this.current];for(var r in i)if(i.hasOwnProperty(r)&&void 0!==(n=t.find("#"+r)[0])&&""===n.state.data.value){e=!1,alert(i[r]);break}return e}};var Q=F,O=e(449),A=e.n(O),R=function(t){var n=document.querySelectorAll(t);n.length&&n.forEach(function(t){t.addEventListener("click",this.A)}.bind(this))};R.prototype={A:function(t){var n=t.currentTarget.href.match(/post=([0-9]+)/),e=t.currentTarget.href.match(/action=([a-z]+)/);if(null!==n&&null!==e){var i={_action:"toggle-status",_nonce:GLSR.nonce["toggle-status"],post_id:n[1],status:e[1]};new r(i,t).post((function(n){if(n.class){var e=jQuery(t.target);e.closest("tr").removeClass("status-pending status-publish").addClass(n.class),e.closest("td.column-title").find("strong").html(n.link),n.counts&&(e.closest(".wrap").find("ul.subsubsub").html(n.counts),jQuery("#menu-posts-site-review").find(".awaiting-mod").removeClass().addClass("awaiting-mod count-"+n.pending).find(".unapproved-count").html(n.pending))}}))}}};var z=R,P=function(){this.button=jQuery("button#sync-reviews"),this.progressbar=jQuery(".glsr-progress"),this.service=null,jQuery("form.glsr-form-sync").on("click","#sync-reviews",this.Qt.bind(this)),jQuery(document).on("wp-window-resized",this.Ot),jQuery(window).on("hashchange",this.Ot),this.Ot()};P.prototype={At:function(t){jQuery(".service-"+this.service+" td.column-last_sync").text(t.last_sync),jQuery(".service-"+this.service+" td.column-total_fetched a").text(t.total),this.Rt(!1)},Qt:function(t){t.preventDefault(),this.service=jQuery('[name="'+GLSR.nameprefix+'[service]"]').val(),this.service&&(this.Rt(!0),this.zt())},Ot:function(){var t=jQuery(".glsr-progress").width();t&&jQuery(".glsr-progress span").width(t)},zt:function(){var t={_action:"sync-reviews",service:this.service,stage:"fetch"};new r(t).post(this.Pt.bind(this))},Pt:function(t){var n={_action:"sync-reviews",job_id:t.job_id,service:this.service,stage:"progress"},e=t.finished?this.$t.bind(this,t):this.Pt.bind(this);this.Ct(t.message),this.Lt(t.percent),setTimeout((function(){new r(n).post(e)}),1500)},$t:function(t){var n=0;try{n=t.meta.pagination.current_page}catch(t){}var e={_action:"sync-reviews",page:n+1,service:this.service,stage:"reviews"};this.Ct(t.message),t.percent_synced&&t.percent_synced>=100?this.At(t):new r(e).post(this.$t.bind(this))},Ct:function(t){jQuery(".glsr-progress-status",this.progressbar).text(t)},Lt:function(t){t=(t||0)+"%",jQuery(".glsr-progress-bar",this.progressbar).outerWidth(t)},Rt:function(t){if(!0===t&&(this.Ct(this.progressbar.data("active-text")),this.Lt(),this.button.prop("disabled",!0),window.requestAnimationFrame(function(){this.progressbar.addClass("active")}.bind(this))),!1===t)return this.service=null,this.button.prop("disabled",!1),void this.progressbar.removeClass("active");window.requestAnimationFrame(this.Rt.bind(this))}};var $=P,C=function(t){this.options=jQuery.extend({},this.defaults,t),this.active=document.querySelector("input[name=_active_tab]"),this.referrerEl=document.querySelector("input[name=_wp_http_referer]"),this.sections=document.querySelectorAll(this.options.viewSectionSelector),this.subsubsub=document.querySelectorAll(this.options.viewSubsubsub),this.tabs=document.querySelectorAll(this.options.tabSelector),this.views=document.querySelectorAll(this.options.viewSelector),this.active&&this.referrerEl&&this.tabs&&this.views&&this.h()};C.prototype={defaults:{tabSelector:".glsr-nav-tab",viewSelector:".glsr-nav-view",viewSectionSelector:".glsr-nav-view-section",viewSubsubsub:".glsr-subsubsub a"},h:function(){var t=this;jQuery(window).on("hashchange",t.Tt.bind(t)),jQuery(t.options.tabSelector+","+t.options.viewSubsubsub).on("click touchend",t.A.bind(t)),jQuery(t.options.tabSelector).each((function(n){(location.hash?this.getAttribute("href").slice(1)===location.hash.slice(5).split("_")[0]:0===n)&&(t.Et(this),t.Gt(t.Mt()))}))},qt:function(t){return t?"add":"remove"},A:function(t){var n=t.currentTarget,e=n.getAttribute("href");e.startsWith("#")&&(location.hash=this.Dt(e.slice(1)),n.blur(),t.preventDefault())},Tt:function(){for(var t=this.Mt().split("_")[0],n=0;n<this.views.length;n++)if(t===this.views[n].id){this.Et(this.tabs[n]),this.Gt(this.Mt());break}},Dt:function(t){return"tab-"+t},Mt:function(){return location.hash?location.hash.split("#tab-")[1]:""},Gt:function(t){if(t){var n=this.referrerEl.value.split("#")[0],e=this.Dt(t);this.referrerEl.value=n+"#"+e}},Et:function(t){[].forEach.call(this.tabs,function(n,e){var i=this.qt(n===t);"add"===i&&(this.active.value=this.views[e].id,this.It(e)),n.classList[i]("nav-tab-active")}.bind(this))},It:function(t){[].forEach.call(this.views,function(n,e){var i=this.qt(e!==t);n.classList[i]("ui-tabs-hide"),this.Bt()}.bind(this))},Bt:function(){var t=this,n=0;[].forEach.call(this.subsubsub,(function(e,i){e.classList.remove("current"),e.getAttribute("href").slice(1)===t.Mt()&&(n=i)})),this.subsubsub[n]&&this.subsubsub[n].classList.add("current"),[].forEach.call(this.sections,(function(e,i){var r=t.qt(i!==n);e.classList[r]("ui-tabs-hide")}))}};var L=C,T=function(){var t=document.querySelector("#contentdiv > textarea");t&&(this.Ht(t),jQuery(document).on("wp-window-resized.editor-expand",function(){this.Ht(t)}.bind(this)))};T.prototype={Ht:function(t){var n=t.scrollHeight>320?t.scrollHeight:320;t.style.height="auto",t.style.height=n+"px"}};var E=T,G=function(){jQuery("form").on("click","#clear-console",this.Wt,this.A.bind(this)),jQuery("form").on("click","#fetch-console",this.Wt,this.A.bind(this)),jQuery("form").on("click","[data-ajax-click]",this.A.bind(this)),jQuery(".glsr-button").on("click",this.Ut);var t=jQuery("input[data-alt]");t.length&&(jQuery(document).on("keydown",this.Nt.bind(this,t)),jQuery(document).on("keyup",this.Vt.bind(this,t)))};G.prototype={Wt:function(t,n){n&&jQuery("#log-file").val(t.console)},A:function(t){var n=jQuery(t.currentTarget),e=this;n.addClass("is-busy"),new r({},t,n.closest("form")).post((function(i,r){"function"==typeof t.data&&t.data(i,r),n.get(0).hasAttribute("data-ajax-scroll")&&jQuery("html, body").animate({scrollTop:0},500),n.removeClass("is-busy"),n.closest("[data-ajax-hide]").css({backgroundColor:"rgba(74,184,102,.25)"}).fadeOut("normal",(function(){jQuery(this).remove()})),jQuery("#glsr-notices").on("click","a",e.Ut),jQuery('.glsr-notice[data-notice="'+n.data("remove-notice")+'"]').remove()}))},Nt:function(t,n){GLSR.keys.ALT!==n.keyCode||n.repeat||(t.closest("form").find("[data-alt-text]").addClass("alt"),t.val(1))},Vt:function(t,n){GLSR.keys.ALT===n.keyCode&&(t.closest("form").find("[data-alt-text]").removeClass("alt"),t.val(0))},Ut:function(t){var n=jQuery(t.currentTarget).data("expand");n&&localStorage.setItem("glsr-expand",n)}};var M=G;function q(t){var n=t.getBoundingClientRect();return{width:n.width,height:n.height,top:n.top,right:n.right,bottom:n.bottom,left:n.left,x:n.left,y:n.top}}function D(t){if(null==t)return window;if("[object Window]"!==t.toString()){var n=t.ownerDocument;return n&&n.defaultView||window}return t}function I(t){var n=D(t);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function B(t){return t instanceof D(t).Element||t instanceof Element}function H(t){return t instanceof D(t).HTMLElement||t instanceof HTMLElement}function W(t){return"undefined"!=typeof ShadowRoot&&(t instanceof D(t).ShadowRoot||t instanceof ShadowRoot)}function U(t){return t?(t.nodeName||"").toLowerCase():null}function N(t){return((B(t)?t.ownerDocument:t.document)||window.document).documentElement}function V(t){return q(N(t)).left+I(t).scrollLeft}function Z(t){return D(t).getComputedStyle(t)}function K(t){var n=Z(t),e=n.overflow,i=n.overflowX,r=n.overflowY;return/auto|scroll|overlay|hidden/.test(e+r+i)}function X(t,n,e){void 0===e&&(e=!1);var i,r,o=N(n),s=q(t),a=H(n),u={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(a||!a&&!e)&&(("body"!==U(n)||K(o))&&(u=(i=n)!==D(i)&&H(i)?{scrollLeft:(r=i).scrollLeft,scrollTop:r.scrollTop}:I(i)),H(n)?((c=q(n)).x+=n.clientLeft,c.y+=n.clientTop):o&&(c.x=V(o))),{x:s.left+u.scrollLeft-c.x,y:s.top+u.scrollTop-c.y,width:s.width,height:s.height}}function Y(t){var n=q(t),e=t.offsetWidth,i=t.offsetHeight;return Math.abs(n.width-e)<=1&&(e=n.width),Math.abs(n.height-i)<=1&&(i=n.height),{x:t.offsetLeft,y:t.offsetTop,width:e,height:i}}function J(t){return"html"===U(t)?t:t.assignedSlot||t.parentNode||(W(t)?t.host:null)||N(t)}function tt(t){return["html","body","#document"].indexOf(U(t))>=0?t.ownerDocument.body:H(t)&&K(t)?t:tt(J(t))}function nt(t,n){var e;void 0===n&&(n=[]);var i=tt(t),r=i===(null==(e=t.ownerDocument)?void 0:e.body),o=D(i),s=r?[o].concat(o.visualViewport||[],K(i)?i:[]):i,a=n.concat(s);return r?a:a.concat(nt(J(s)))}function et(t){return["table","td","th"].indexOf(U(t))>=0}function it(t){return H(t)&&"fixed"!==Z(t).position?t.offsetParent:null}function rt(t){for(var n=D(t),e=it(t);e&&et(e)&&"static"===Z(e).position;)e=it(e);return e&&("html"===U(e)||"body"===U(e)&&"static"===Z(e).position)?n:e||function(t){for(var n=navigator.userAgent.toLowerCase().includes("firefox"),e=J(t);H(e)&&["html","body"].indexOf(U(e))<0;){var i=Z(e);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||["transform","perspective"].includes(i.willChange)||n&&"filter"===i.willChange||n&&i.filter&&"none"!==i.filter)return e;e=e.parentNode}return null}(t)||n}var ot="top",st="bottom",at="right",ut="left",ct="auto",lt=[ot,st,at,ut],ft="start",dt="end",ht="viewport",pt="popper",vt=lt.reduce((function(t,n){return t.concat([n+"-"+ft,n+"-"+dt])}),[]),mt=[].concat(lt,[ct]).reduce((function(t,n){return t.concat([n,n+"-"+ft,n+"-"+dt])}),[]),yt=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function bt(t){var n=new Map,e=new Set,i=[];function r(t){e.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!e.has(t)){var i=n.get(t);i&&r(i)}})),i.push(t)}return t.forEach((function(t){n.set(t.name,t)})),t.forEach((function(t){e.has(t.name)||r(t)})),i}var gt={placement:"bottom",modifiers:[],strategy:"absolute"};function wt(){for(var t=arguments.length,n=new Array(t),e=0;e<t;e++)n[e]=arguments[e];return!n.some((function(t){return!(t&&"function"==typeof t.getBoundingClientRect)}))}function _t(t){void 0===t&&(t={});var n=t,e=n.defaultModifiers,i=void 0===e?[]:e,r=n.defaultOptions,o=void 0===r?gt:r;return function(t,n,e){void 0===e&&(e=o);var r,s,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},gt,o),modifiersData:{},elements:{reference:t,popper:n},attributes:{},styles:{}},u=[],c=!1,l={state:a,setOptions:function(e){f(),a.options=Object.assign({},o,a.options,e),a.scrollParents={reference:B(t)?nt(t):t.contextElement?nt(t.contextElement):[],popper:nt(n)};var r=function(t){var n=bt(t);return yt.reduce((function(t,e){return t.concat(n.filter((function(t){return t.phase===e})))}),[])}(function(t){var n=t.reduce((function(t,n){var e=t[n.name];return t[n.name]=e?Object.assign({},e,n,{options:Object.assign({},e.options,n.options),data:Object.assign({},e.data,n.data)}):n,t}),{});return Object.keys(n).map((function(t){return n[t]}))}([].concat(i,a.options.modifiers)));return a.orderedModifiers=r.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var n=t.name,e=t.options,i=void 0===e?{}:e,r=t.effect;if("function"==typeof r){var o=r({state:a,name:n,instance:l,options:i}),s=function(){};u.push(o||s)}})),l.update()},forceUpdate:function(){if(!c){var t=a.elements,n=t.reference,e=t.popper;if(wt(n,e)){a.rects={reference:X(n,rt(e),"fixed"===a.options.strategy),popper:Y(e)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var i=0;i<a.orderedModifiers.length;i++)if(!0!==a.reset){var r=a.orderedModifiers[i],o=r.fn,s=r.options,u=void 0===s?{}:s,f=r.name;"function"==typeof o&&(a=o({state:a,options:u,name:f,instance:l})||a)}else a.reset=!1,i=-1}}},update:(r=function(){return new Promise((function(t){l.forceUpdate(),t(a)}))},function(){return s||(s=new Promise((function(t){Promise.resolve().then((function(){s=void 0,t(r())}))}))),s}),destroy:function(){f(),c=!0}};if(!wt(t,n))return l;function f(){u.forEach((function(t){return t()})),u=[]}return l.setOptions(e).then((function(t){!c&&e.onFirstUpdate&&e.onFirstUpdate(t)})),l}}var kt={passive:!0};var jt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var n=t.state,e=t.instance,i=t.options,r=i.scroll,o=void 0===r||r,s=i.resize,a=void 0===s||s,u=D(n.elements.popper),c=[].concat(n.scrollParents.reference,n.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",e.update,kt)})),a&&u.addEventListener("resize",e.update,kt),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",e.update,kt)})),a&&u.removeEventListener("resize",e.update,kt)}},data:{}};function xt(t){return t.split("-")[0]}function St(t){return t.split("-")[1]}function Ft(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Qt(t){var n,e=t.reference,i=t.element,r=t.placement,o=r?xt(r):null,s=r?St(r):null,a=e.x+e.width/2-i.width/2,u=e.y+e.height/2-i.height/2;switch(o){case ot:n={x:a,y:e.y-i.height};break;case st:n={x:a,y:e.y+e.height};break;case at:n={x:e.x+e.width,y:u};break;case ut:n={x:e.x-i.width,y:u};break;default:n={x:e.x,y:e.y}}var c=o?Ft(o):null;if(null!=c){var l="y"===c?"height":"width";switch(s){case ft:n[c]=n[c]-(e[l]/2-i[l]/2);break;case dt:n[c]=n[c]+(e[l]/2-i[l]/2)}}return n}var Ot={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var n=t.state,e=t.name;n.modifiersData[e]=Qt({reference:n.rects.reference,element:n.rects.popper,strategy:"absolute",placement:n.placement})},data:{}},At=Math.max,Rt=Math.min,zt=Math.round,Pt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function $t(t){var n,e=t.popper,i=t.popperRect,r=t.placement,o=t.offsets,s=t.position,a=t.gpuAcceleration,u=t.adaptive,c=t.roundOffsets,l=!0===c?function(t){var n=t.x,e=t.y,i=window.devicePixelRatio||1;return{x:zt(zt(n*i)/i)||0,y:zt(zt(e*i)/i)||0}}(o):"function"==typeof c?c(o):o,f=l.x,d=void 0===f?0:f,h=l.y,p=void 0===h?0:h,v=o.hasOwnProperty("x"),m=o.hasOwnProperty("y"),y=ut,b=ot,g=window;if(u){var w=rt(e),_="clientHeight",k="clientWidth";w===D(e)&&"static"!==Z(w=N(e)).position&&(_="scrollHeight",k="scrollWidth"),w=w,r===ot&&(b=st,p-=w[_]-i.height,p*=a?1:-1),r===ut&&(y=at,d-=w[k]-i.width,d*=a?1:-1)}var j,x=Object.assign({position:s},u&&Pt);return a?Object.assign({},x,((j={})[b]=m?"0":"",j[y]=v?"0":"",j.transform=(g.devicePixelRatio||1)<2?"translate("+d+"px, "+p+"px)":"translate3d("+d+"px, "+p+"px, 0)",j)):Object.assign({},x,((n={})[b]=m?p+"px":"",n[y]=v?d+"px":"",n.transform="",n))}var Ct={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var n=t.state;Object.keys(n.elements).forEach((function(t){var e=n.styles[t]||{},i=n.attributes[t]||{},r=n.elements[t];H(r)&&U(r)&&(Object.assign(r.style,e),Object.keys(i).forEach((function(t){var n=i[t];!1===n?r.removeAttribute(t):r.setAttribute(t,!0===n?"":n)})))}))},effect:function(t){var n=t.state,e={popper:{position:n.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(n.elements.popper.style,e.popper),n.styles=e,n.elements.arrow&&Object.assign(n.elements.arrow.style,e.arrow),function(){Object.keys(n.elements).forEach((function(t){var i=n.elements[t],r=n.attributes[t]||{},o=Object.keys(n.styles.hasOwnProperty(t)?n.styles[t]:e[t]).reduce((function(t,n){return t[n]="",t}),{});H(i)&&U(i)&&(Object.assign(i.style,o),Object.keys(r).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};var Lt={left:"right",right:"left",bottom:"top",top:"bottom"};function Tt(t){return t.replace(/left|right|bottom|top/g,(function(t){return Lt[t]}))}var Et={start:"end",end:"start"};function Gt(t){return t.replace(/start|end/g,(function(t){return Et[t]}))}function Mt(t,n){var e=n.getRootNode&&n.getRootNode();if(t.contains(n))return!0;if(e&&W(e)){var i=n;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function qt(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Dt(t,n){return n===ht?qt(function(t){var n=D(t),e=N(t),i=n.visualViewport,r=e.clientWidth,o=e.clientHeight,s=0,a=0;return i&&(r=i.width,o=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=i.offsetLeft,a=i.offsetTop)),{width:r,height:o,x:s+V(t),y:a}}(t)):H(n)?function(t){var n=q(t);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(n):qt(function(t){var n,e=N(t),i=I(t),r=null==(n=t.ownerDocument)?void 0:n.body,o=At(e.scrollWidth,e.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),s=At(e.scrollHeight,e.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),a=-i.scrollLeft+V(t),u=-i.scrollTop;return"rtl"===Z(r||e).direction&&(a+=At(e.clientWidth,r?r.clientWidth:0)-o),{width:o,height:s,x:a,y:u}}(N(t)))}function It(t,n,e){var i="clippingParents"===n?function(t){var n=nt(J(t)),e=["absolute","fixed"].indexOf(Z(t).position)>=0&&H(t)?rt(t):t;return B(e)?n.filter((function(t){return B(t)&&Mt(t,e)&&"body"!==U(t)})):[]}(t):[].concat(n),r=[].concat(i,[e]),o=r[0],s=r.reduce((function(n,e){var i=Dt(t,e);return n.top=At(i.top,n.top),n.right=Rt(i.right,n.right),n.bottom=Rt(i.bottom,n.bottom),n.left=At(i.left,n.left),n}),Dt(t,o));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function Bt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Ht(t,n){return n.reduce((function(n,e){return n[e]=t,n}),{})}function Wt(t,n){void 0===n&&(n={});var e=n,i=e.placement,r=void 0===i?t.placement:i,o=e.boundary,s=void 0===o?"clippingParents":o,a=e.rootBoundary,u=void 0===a?ht:a,c=e.elementContext,l=void 0===c?pt:c,f=e.altBoundary,d=void 0!==f&&f,h=e.padding,p=void 0===h?0:h,v=Bt("number"!=typeof p?p:Ht(p,lt)),m=l===pt?"reference":pt,y=t.elements.reference,b=t.rects.popper,g=t.elements[d?m:l],w=It(B(g)?g:g.contextElement||N(t.elements.popper),s,u),_=q(y),k=Qt({reference:_,element:b,strategy:"absolute",placement:r}),j=qt(Object.assign({},b,k)),x=l===pt?j:_,S={top:w.top-x.top+v.top,bottom:x.bottom-w.bottom+v.bottom,left:w.left-x.left+v.left,right:x.right-w.right+v.right},F=t.modifiersData.offset;if(l===pt&&F){var Q=F[r];Object.keys(S).forEach((function(t){var n=[at,st].indexOf(t)>=0?1:-1,e=[ot,st].indexOf(t)>=0?"y":"x";S[t]+=Q[e]*n}))}return S}function Ut(t,n,e){return At(t,Rt(n,e))}function Nt(t,n,e){return void 0===e&&(e={x:0,y:0}),{top:t.top-n.height-e.y,right:t.right-n.width+e.x,bottom:t.bottom-n.height+e.y,left:t.left-n.width-e.x}}function Vt(t){return[ot,at,st,ut].some((function(n){return t[n]>=0}))}var Zt=_t({defaultModifiers:[jt,Ot,{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var n=t.state,e=t.options,i=e.gpuAcceleration,r=void 0===i||i,o=e.adaptive,s=void 0===o||o,a=e.roundOffsets,u=void 0===a||a,c={placement:xt(n.placement),popper:n.elements.popper,popperRect:n.rects.popper,gpuAcceleration:r};null!=n.modifiersData.popperOffsets&&(n.styles.popper=Object.assign({},n.styles.popper,$t(Object.assign({},c,{offsets:n.modifiersData.popperOffsets,position:n.options.strategy,adaptive:s,roundOffsets:u})))),null!=n.modifiersData.arrow&&(n.styles.arrow=Object.assign({},n.styles.arrow,$t(Object.assign({},c,{offsets:n.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:u})))),n.attributes.popper=Object.assign({},n.attributes.popper,{"data-popper-placement":n.placement})},data:{}},Ct,{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var n=t.state,e=t.options,i=t.name,r=e.offset,o=void 0===r?[0,0]:r,s=mt.reduce((function(t,e){return t[e]=function(t,n,e){var i=xt(t),r=[ut,ot].indexOf(i)>=0?-1:1,o="function"==typeof e?e(Object.assign({},n,{placement:t})):e,s=o[0],a=o[1];return s=s||0,a=(a||0)*r,[ut,at].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(e,n.rects,o),t}),{}),a=s[n.placement],u=a.x,c=a.y;null!=n.modifiersData.popperOffsets&&(n.modifiersData.popperOffsets.x+=u,n.modifiersData.popperOffsets.y+=c),n.modifiersData[i]=s}},{name:"flip",enabled:!0,phase:"main",fn:function(t){var n=t.state,e=t.options,i=t.name;if(!n.modifiersData[i]._skip){for(var r=e.mainAxis,o=void 0===r||r,s=e.altAxis,a=void 0===s||s,u=e.fallbackPlacements,c=e.padding,l=e.boundary,f=e.rootBoundary,d=e.altBoundary,h=e.flipVariations,p=void 0===h||h,v=e.allowedAutoPlacements,m=n.options.placement,y=xt(m),b=u||(y===m||!p?[Tt(m)]:function(t){if(xt(t)===ct)return[];var n=Tt(t);return[Gt(t),n,Gt(n)]}(m)),g=[m].concat(b).reduce((function(t,e){return t.concat(xt(e)===ct?function(t,n){void 0===n&&(n={});var e=n,i=e.placement,r=e.boundary,o=e.rootBoundary,s=e.padding,a=e.flipVariations,u=e.allowedAutoPlacements,c=void 0===u?mt:u,l=St(i),f=l?a?vt:vt.filter((function(t){return St(t)===l})):lt,d=f.filter((function(t){return c.indexOf(t)>=0}));0===d.length&&(d=f);var h=d.reduce((function(n,e){return n[e]=Wt(t,{placement:e,boundary:r,rootBoundary:o,padding:s})[xt(e)],n}),{});return Object.keys(h).sort((function(t,n){return h[t]-h[n]}))}(n,{placement:e,boundary:l,rootBoundary:f,padding:c,flipVariations:p,allowedAutoPlacements:v}):e)}),[]),w=n.rects.reference,_=n.rects.popper,k=new Map,j=!0,x=g[0],S=0;S<g.length;S++){var F=g[S],Q=xt(F),O=St(F)===ft,A=[ot,st].indexOf(Q)>=0,R=A?"width":"height",z=Wt(n,{placement:F,boundary:l,rootBoundary:f,altBoundary:d,padding:c}),P=A?O?at:ut:O?st:ot;w[R]>_[R]&&(P=Tt(P));var $=Tt(P),C=[];if(o&&C.push(z[Q]<=0),a&&C.push(z[P]<=0,z[$]<=0),C.every((function(t){return t}))){x=F,j=!1;break}k.set(F,C)}if(j)for(var L=function(t){var n=g.find((function(n){var e=k.get(n);if(e)return e.slice(0,t).every((function(t){return t}))}));if(n)return x=n,"break"},T=p?3:1;T>0;T--){if("break"===L(T))break}n.placement!==x&&(n.modifiersData[i]._skip=!0,n.placement=x,n.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},{name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var n=t.state,e=t.options,i=t.name,r=e.mainAxis,o=void 0===r||r,s=e.altAxis,a=void 0!==s&&s,u=e.boundary,c=e.rootBoundary,l=e.altBoundary,f=e.padding,d=e.tether,h=void 0===d||d,p=e.tetherOffset,v=void 0===p?0:p,m=Wt(n,{boundary:u,rootBoundary:c,padding:f,altBoundary:l}),y=xt(n.placement),b=St(n.placement),g=!b,w=Ft(y),_="x"===w?"y":"x",k=n.modifiersData.popperOffsets,j=n.rects.reference,x=n.rects.popper,S="function"==typeof v?v(Object.assign({},n.rects,{placement:n.placement})):v,F={x:0,y:0};if(k){if(o||a){var Q="y"===w?ot:ut,O="y"===w?st:at,A="y"===w?"height":"width",R=k[w],z=k[w]+m[Q],P=k[w]-m[O],$=h?-x[A]/2:0,C=b===ft?j[A]:x[A],L=b===ft?-x[A]:-j[A],T=n.elements.arrow,E=h&&T?Y(T):{width:0,height:0},G=n.modifiersData["arrow#persistent"]?n.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},M=G[Q],q=G[O],D=Ut(0,j[A],E[A]),I=g?j[A]/2-$-D-M-S:C-D-M-S,B=g?-j[A]/2+$+D+q+S:L+D+q+S,H=n.elements.arrow&&rt(n.elements.arrow),W=H?"y"===w?H.clientTop||0:H.clientLeft||0:0,U=n.modifiersData.offset?n.modifiersData.offset[n.placement][w]:0,N=k[w]+I-U-W,V=k[w]+B-U;if(o){var Z=Ut(h?Rt(z,N):z,R,h?At(P,V):P);k[w]=Z,F[w]=Z-R}if(a){var K="x"===w?ot:ut,X="x"===w?st:at,J=k[_],tt=J+m[K],nt=J-m[X],et=Ut(h?Rt(tt,N):tt,J,h?At(nt,V):nt);k[_]=et,F[_]=et-J}}n.modifiersData[i]=F}},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(t){var n,e=t.state,i=t.name,r=t.options,o=e.elements.arrow,s=e.modifiersData.popperOffsets,a=xt(e.placement),u=Ft(a),c=[ut,at].indexOf(a)>=0?"height":"width";if(o&&s){var l=function(t,n){return Bt("number"!=typeof(t="function"==typeof t?t(Object.assign({},n.rects,{placement:n.placement})):t)?t:Ht(t,lt))}(r.padding,e),f=Y(o),d="y"===u?ot:ut,h="y"===u?st:at,p=e.rects.reference[c]+e.rects.reference[u]-s[u]-e.rects.popper[c],v=s[u]-e.rects.reference[u],m=rt(o),y=m?"y"===u?m.clientHeight||0:m.clientWidth||0:0,b=p/2-v/2,g=l[d],w=y-f[c]-l[h],_=y/2-f[c]/2+b,k=Ut(g,_,w),j=u;e.modifiersData[i]=((n={})[j]=k,n.centerOffset=k-_,n)}},effect:function(t){var n=t.state,e=t.options.element,i=void 0===e?"[data-popper-arrow]":e;null!=i&&("string"!=typeof i||(i=n.elements.popper.querySelector(i)))&&Mt(n.elements.popper,i)&&(n.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var n=t.state,e=t.name,i=n.rects.reference,r=n.rects.popper,o=n.modifiersData.preventOverflow,s=Wt(n,{elementContext:"reference"}),a=Wt(n,{altBoundary:!0}),u=Nt(s,i),c=Nt(a,r,o),l=Vt(u),f=Vt(c);n.modifiersData[e]={referenceClippingOffsets:u,popperEscapeOffsets:c,isReferenceHidden:l,hasPopperEscaped:f},n.attributes.popper=Object.assign({},n.attributes.popper,{"data-popper-reference-hidden":l,"data-popper-escaped":f})}}]}),Kt="tippy-content",Xt="tippy-backdrop",Yt="tippy-arrow",Jt="tippy-svg-arrow",tn={passive:!0,capture:!0};function nn(t,n,e){if(Array.isArray(t)){var i=t[n];return null==i?Array.isArray(e)?e[n]:e:i}return t}function en(t,n){var e={}.toString.call(t);return 0===e.indexOf("[object")&&e.indexOf(n+"]")>-1}function rn(t,n){return"function"==typeof t?t.apply(void 0,n):t}function on(t,n){return 0===n?t:function(i){clearTimeout(e),e=setTimeout((function(){t(i)}),n)};var e}function sn(t){return[].concat(t)}function an(t,n){-1===t.indexOf(n)&&t.push(n)}function un(t){return t.split("-")[0]}function cn(t){return[].slice.call(t)}function ln(){return document.createElement("div")}function fn(t){return["Element","Fragment"].some((function(n){return en(t,n)}))}function dn(t){return en(t,"MouseEvent")}function hn(t){return!(!t||!t._tippy||t._tippy.reference!==t)}function pn(t){return fn(t)?[t]:function(t){return en(t,"NodeList")}(t)?cn(t):Array.isArray(t)?t:cn(document.querySelectorAll(t))}function vn(t,n){t.forEach((function(t){t&&(t.style.transitionDuration=n+"ms")}))}function mn(t,n){t.forEach((function(t){t&&t.setAttribute("data-state",n)}))}function yn(t){var n,e=sn(t)[0];return(null==e||null==(n=e.ownerDocument)?void 0:n.body)?e.ownerDocument:document}function bn(t,n,e){var i=n+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(n){t[i](n,e)}))}var gn={isTouch:!1},wn=0;function _n(){gn.isTouch||(gn.isTouch=!0,window.performance&&document.addEventListener("mousemove",kn))}function kn(){var t=performance.now();t-wn<20&&(gn.isTouch=!1,document.removeEventListener("mousemove",kn)),wn=t}function jn(){var t=document.activeElement;if(hn(t)){var n=t._tippy;t.blur&&!n.state.isVisible&&t.blur()}}var xn="undefined"!=typeof window&&"undefined"!=typeof document?navigator.userAgent:"",Sn=/MSIE |Trident\//.test(xn);var Fn={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},Qn=Object.assign({appendTo:function(){return document.body},aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},Fn,{},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),On=Object.keys(Qn);function An(t){var n=(t.plugins||[]).reduce((function(n,e){var i=e.name,r=e.defaultValue;return i&&(n[i]=void 0!==t[i]?t[i]:r),n}),{});return Object.assign({},t,{},n)}function Rn(t,n){var e=Object.assign({},n,{content:rn(n.content,[t])},n.ignoreAttributes?{}:function(t,n){return(n?Object.keys(An(Object.assign({},Qn,{plugins:n}))):On).reduce((function(n,e){var i=(t.getAttribute("data-tippy-"+e)||"").trim();if(!i)return n;if("content"===e)n[e]=i;else try{n[e]=JSON.parse(i)}catch(t){n[e]=i}return n}),{})}(t,n.plugins));return e.aria=Object.assign({},Qn.aria,{},e.aria),e.aria={expanded:"auto"===e.aria.expanded?n.interactive:e.aria.expanded,content:"auto"===e.aria.content?n.interactive?null:"describedby":e.aria.content},e}function zn(t,n){t.innerHTML=n}function Pn(t){var n=ln();return!0===t?n.className=Yt:(n.className=Jt,fn(t)?n.appendChild(t):zn(n,t)),n}function $n(t,n){fn(n.content)?(zn(t,""),t.appendChild(n.content)):"function"!=typeof n.content&&(n.allowHTML?zn(t,n.content):t.textContent=n.content)}function Cn(t){var n=t.firstElementChild,e=cn(n.children);return{box:n,content:e.find((function(t){return t.classList.contains(Kt)})),arrow:e.find((function(t){return t.classList.contains(Yt)||t.classList.contains(Jt)})),backdrop:e.find((function(t){return t.classList.contains(Xt)}))}}function Ln(t){var n=ln(),e=ln();e.className="tippy-box",e.setAttribute("data-state","hidden"),e.setAttribute("tabindex","-1");var i=ln();function r(e,i){var r=Cn(n),o=r.box,s=r.content,a=r.arrow;i.theme?o.setAttribute("data-theme",i.theme):o.removeAttribute("data-theme"),"string"==typeof i.animation?o.setAttribute("data-animation",i.animation):o.removeAttribute("data-animation"),i.inertia?o.setAttribute("data-inertia",""):o.removeAttribute("data-inertia"),o.style.maxWidth="number"==typeof i.maxWidth?i.maxWidth+"px":i.maxWidth,i.role?o.setAttribute("role",i.role):o.removeAttribute("role"),e.content===i.content&&e.allowHTML===i.allowHTML||$n(s,t.props),i.arrow?a?e.arrow!==i.arrow&&(o.removeChild(a),o.appendChild(Pn(i.arrow))):o.appendChild(Pn(i.arrow)):a&&o.removeChild(a)}return i.className=Kt,i.setAttribute("data-state","hidden"),$n(i,t.props),n.appendChild(e),e.appendChild(i),r(t.props,t.props),{popper:n,onUpdate:r}}Ln.$$tippy=!0;var Tn=1,En=[],Gn=[];function Mn(t,n){var e,i,r,o,s,a,u,c,l,f=Rn(t,Object.assign({},Qn,{},An((e=n,Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{}))))),d=!1,h=!1,p=!1,v=!1,m=[],y=on(V,f.interactiveDebounce),b=Tn++,g=(l=f.plugins).filter((function(t,n){return l.indexOf(t)===n})),w={id:b,reference:t,popper:ln(),popperInstance:null,props:f,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:g,clearDelayTimeouts:function(){clearTimeout(i),clearTimeout(r),cancelAnimationFrame(o)},setProps:function(n){0;if(w.state.isDestroyed)return;C("onBeforeUpdate",[w,n]),U();var e=w.props,i=Rn(t,Object.assign({},w.props,{},n,{ignoreAttributes:!0}));w.props=i,W(),e.interactiveDebounce!==i.interactiveDebounce&&(E(),y=on(V,i.interactiveDebounce));e.triggerTarget&&!i.triggerTarget?sn(e.triggerTarget).forEach((function(t){t.removeAttribute("aria-expanded")})):i.triggerTarget&&t.removeAttribute("aria-expanded");T(),$(),j&&j(e,i);w.popperInstance&&(Y(),tt().forEach((function(t){requestAnimationFrame(t._tippy.popperInstance.forceUpdate)})));C("onAfterUpdate",[w,n])},setContent:function(t){w.setProps({content:t})},show:function(){0;var t=w.state.isVisible,n=w.state.isDestroyed,e=!w.state.isEnabled,i=gn.isTouch&&!w.props.touch,r=nn(w.props.duration,0,Qn.duration);if(t||n||e||i)return;if(A().hasAttribute("disabled"))return;if(C("onShow",[w],!1),!1===w.props.onShow(w))return;w.state.isVisible=!0,O()&&(k.style.visibility="visible");$(),D(),w.state.isMounted||(k.style.transition="none");if(O()){var o=z(),s=o.box,a=o.content;vn([s,a],0)}u=function(){var t;if(w.state.isVisible&&!v){if(v=!0,k.offsetHeight,k.style.transition=w.props.moveTransition,O()&&w.props.animation){var n=z(),e=n.box,i=n.content;vn([e,i],r),mn([e,i],"visible")}L(),T(),an(Gn,w),null==(t=w.popperInstance)||t.forceUpdate(),w.state.isMounted=!0,C("onMount",[w]),w.props.animation&&O()&&function(t,n){B(t,n)}(r,(function(){w.state.isShown=!0,C("onShown",[w])}))}},function(){var t,n=w.props.appendTo,e=A();t=w.props.interactive&&n===Qn.appendTo||"parent"===n?e.parentNode:rn(n,[e]);t.contains(k)||t.appendChild(k);Y(),!1}()},hide:function(){0;var t=!w.state.isVisible,n=w.state.isDestroyed,e=!w.state.isEnabled,i=nn(w.props.duration,1,Qn.duration);if(t||n||e)return;if(C("onHide",[w],!1),!1===w.props.onHide(w))return;w.state.isVisible=!1,w.state.isShown=!1,v=!1,d=!1,O()&&(k.style.visibility="hidden");if(E(),I(),$(),O()){var r=z(),o=r.box,s=r.content;w.props.animation&&(vn([o,s],i),mn([o,s],"hidden"))}L(),T(),w.props.animation?O()&&function(t,n){B(t,(function(){!w.state.isVisible&&k.parentNode&&k.parentNode.contains(k)&&n()}))}(i,w.unmount):w.unmount()},hideWithInteractivity:function(t){0;R().addEventListener("mousemove",y),an(En,y),y(t)},enable:function(){w.state.isEnabled=!0},disable:function(){w.hide(),w.state.isEnabled=!1},unmount:function(){0;w.state.isVisible&&w.hide();if(!w.state.isMounted)return;J(),tt().forEach((function(t){t._tippy.unmount()})),k.parentNode&&k.parentNode.removeChild(k);Gn=Gn.filter((function(t){return t!==w})),w.state.isMounted=!1,C("onHidden",[w])},destroy:function(){0;if(w.state.isDestroyed)return;w.clearDelayTimeouts(),w.unmount(),U(),delete t._tippy,w.state.isDestroyed=!0,C("onDestroy",[w])}};if(!f.render)return w;var _=f.render(w),k=_.popper,j=_.onUpdate;k.setAttribute("data-tippy-root",""),k.id="tippy-"+w.id,w.popper=k,t._tippy=w,k._tippy=w;var x=g.map((function(t){return t.fn(w)})),S=t.hasAttribute("aria-expanded");return W(),T(),$(),C("onCreate",[w]),f.showOnCreate&&nt(),k.addEventListener("mouseenter",(function(){w.props.interactive&&w.state.isVisible&&w.clearDelayTimeouts()})),k.addEventListener("mouseleave",(function(t){w.props.interactive&&w.props.trigger.indexOf("mouseenter")>=0&&(R().addEventListener("mousemove",y),y(t))})),w;function F(){var t=w.props.touch;return Array.isArray(t)?t:[t,0]}function Q(){return"hold"===F()[0]}function O(){var t;return!!(null==(t=w.props.render)?void 0:t.$$tippy)}function A(){return c||t}function R(){var t=A().parentNode;return t?yn(t):document}function z(){return Cn(k)}function P(t){return w.state.isMounted&&!w.state.isVisible||gn.isTouch||s&&"focus"===s.type?0:nn(w.props.delay,t?0:1,Qn.delay)}function $(){k.style.pointerEvents=w.props.interactive&&w.state.isVisible?"":"none",k.style.zIndex=""+w.props.zIndex}function C(t,n,e){var i;(void 0===e&&(e=!0),x.forEach((function(e){e[t]&&e[t].apply(void 0,n)})),e)&&(i=w.props)[t].apply(i,n)}function L(){var n=w.props.aria;if(n.content){var e="aria-"+n.content,i=k.id;sn(w.props.triggerTarget||t).forEach((function(t){var n=t.getAttribute(e);if(w.state.isVisible)t.setAttribute(e,n?n+" "+i:i);else{var r=n&&n.replace(i,"").trim();r?t.setAttribute(e,r):t.removeAttribute(e)}}))}}function T(){!S&&w.props.aria.expanded&&sn(w.props.triggerTarget||t).forEach((function(t){w.props.interactive?t.setAttribute("aria-expanded",w.state.isVisible&&t===A()?"true":"false"):t.removeAttribute("aria-expanded")}))}function E(){R().removeEventListener("mousemove",y),En=En.filter((function(t){return t!==y}))}function G(t){if(!(gn.isTouch&&(p||"mousedown"===t.type)||w.props.interactive&&k.contains(t.target))){if(A().contains(t.target)){if(gn.isTouch)return;if(w.state.isVisible&&w.props.trigger.indexOf("click")>=0)return}else C("onClickOutside",[w,t]);!0===w.props.hideOnClick&&(w.clearDelayTimeouts(),w.hide(),h=!0,setTimeout((function(){h=!1})),w.state.isMounted||I())}}function M(){p=!0}function q(){p=!1}function D(){var t=R();t.addEventListener("mousedown",G,!0),t.addEventListener("touchend",G,tn),t.addEventListener("touchstart",q,tn),t.addEventListener("touchmove",M,tn)}function I(){var t=R();t.removeEventListener("mousedown",G,!0),t.removeEventListener("touchend",G,tn),t.removeEventListener("touchstart",q,tn),t.removeEventListener("touchmove",M,tn)}function B(t,n){var e=z().box;function i(t){t.target===e&&(bn(e,"remove",i),n())}if(0===t)return n();bn(e,"remove",a),bn(e,"add",i),a=i}function H(n,e,i){void 0===i&&(i=!1),sn(w.props.triggerTarget||t).forEach((function(t){t.addEventListener(n,e,i),m.push({node:t,eventType:n,handler:e,options:i})}))}function W(){var t;Q()&&(H("touchstart",N,{passive:!0}),H("touchend",Z,{passive:!0})),(t=w.props.trigger,t.split(/\s+/).filter(Boolean)).forEach((function(t){if("manual"!==t)switch(H(t,N),t){case"mouseenter":H("mouseleave",Z);break;case"focus":H(Sn?"focusout":"blur",K);break;case"focusin":H("focusout",K)}}))}function U(){m.forEach((function(t){var n=t.node,e=t.eventType,i=t.handler,r=t.options;n.removeEventListener(e,i,r)})),m=[]}function N(t){var n,e=!1;if(w.state.isEnabled&&!X(t)&&!h){var i="focus"===(null==(n=s)?void 0:n.type);s=t,c=t.currentTarget,T(),!w.state.isVisible&&dn(t)&&En.forEach((function(n){return n(t)})),"click"===t.type&&(w.props.trigger.indexOf("mouseenter")<0||d)&&!1!==w.props.hideOnClick&&w.state.isVisible?e=!0:nt(t),"click"===t.type&&(d=!e),e&&!i&&et(t)}}function V(t){var n=t.target,e=A().contains(n)||k.contains(n);"mousemove"===t.type&&e||function(t,n){var e=n.clientX,i=n.clientY;return t.every((function(t){var n=t.popperRect,r=t.popperState,o=t.props.interactiveBorder,s=un(r.placement),a=r.modifiersData.offset;if(!a)return!0;var u="bottom"===s?a.top.y:0,c="top"===s?a.bottom.y:0,l="right"===s?a.left.x:0,f="left"===s?a.right.x:0,d=n.top-i+u>o,h=i-n.bottom-c>o,p=n.left-e+l>o,v=e-n.right-f>o;return d||h||p||v}))}(tt().concat(k).map((function(t){var n,e=null==(n=t._tippy.popperInstance)?void 0:n.state;return e?{popperRect:t.getBoundingClientRect(),popperState:e,props:f}:null})).filter(Boolean),t)&&(E(),et(t))}function Z(t){X(t)||w.props.trigger.indexOf("click")>=0&&d||(w.props.interactive?w.hideWithInteractivity(t):et(t))}function K(t){w.props.trigger.indexOf("focusin")<0&&t.target!==A()||w.props.interactive&&t.relatedTarget&&k.contains(t.relatedTarget)||et(t)}function X(t){return!!gn.isTouch&&Q()!==t.type.indexOf("touch")>=0}function Y(){J();var n=w.props,e=n.popperOptions,i=n.placement,r=n.offset,o=n.getReferenceClientRect,s=n.moveTransition,a=O()?Cn(k).arrow:null,c=o?{getBoundingClientRect:o,contextElement:o.contextElement||A()}:t,l=[{name:"offset",options:{offset:r}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(t){var n=t.state;if(O()){var e=z().box;["placement","reference-hidden","escaped"].forEach((function(t){"placement"===t?e.setAttribute("data-placement",n.placement):n.attributes.popper["data-popper-"+t]?e.setAttribute("data-"+t,""):e.removeAttribute("data-"+t)})),n.attributes.popper={}}}}];O()&&a&&l.push({name:"arrow",options:{element:a,padding:3}}),l.push.apply(l,(null==e?void 0:e.modifiers)||[]),w.popperInstance=Zt(c,k,Object.assign({},e,{placement:i,onFirstUpdate:u,modifiers:l}))}function J(){w.popperInstance&&(w.popperInstance.destroy(),w.popperInstance=null)}function tt(){return cn(k.querySelectorAll("[data-tippy-root]"))}function nt(t){w.clearDelayTimeouts(),t&&C("onTrigger",[w,t]),D();var n=P(!0),e=F(),r=e[0],o=e[1];gn.isTouch&&"hold"===r&&o&&(n=o),n?i=setTimeout((function(){w.show()}),n):w.show()}function et(t){if(w.clearDelayTimeouts(),C("onUntrigger",[w,t]),w.state.isVisible){if(!(w.props.trigger.indexOf("mouseenter")>=0&&w.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(t.type)>=0&&d)){var n=P(!1);n?r=setTimeout((function(){w.state.isVisible&&w.hide()}),n):o=requestAnimationFrame((function(){w.hide()}))}}else I()}}function qn(t,n){void 0===n&&(n={});var e=Qn.plugins.concat(n.plugins||[]);document.addEventListener("touchstart",_n,tn),window.addEventListener("blur",jn);var i=Object.assign({},n,{plugins:e}),r=pn(t).reduce((function(t,n){var e=n&&Mn(n,i);return e&&t.push(e),t}),[]);return fn(t)?r[0]:r}qn.defaultProps=Qn,qn.setDefaultProps=function(t){Object.keys(t).forEach((function(n){Qn[n]=t[n]}))},qn.currentInput=gn;Object.assign({},Ct,{effect:function(t){var n=t.state,e={popper:{position:n.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(n.elements.popper.style,e.popper),n.styles=e,n.elements.arrow&&Object.assign(n.elements.arrow.style,e.arrow)}});var Dn={clientX:0,clientY:0},In=[];function Bn(t){var n=t.clientX,e=t.clientY;Dn={clientX:n,clientY:e}}var Hn={name:"followCursor",defaultValue:!1,fn:function(t){var n=t.reference,e=yn(t.props.triggerTarget||n),i=!1,r=!1,o=!0,s=t.props;function a(){return"initial"===t.props.followCursor&&t.state.isVisible}function u(){e.addEventListener("mousemove",f)}function c(){e.removeEventListener("mousemove",f)}function l(){i=!0,t.setProps({getReferenceClientRect:null}),i=!1}function f(e){var i=!e.target||n.contains(e.target),r=t.props.followCursor,o=e.clientX,s=e.clientY,a=n.getBoundingClientRect(),u=o-a.left,c=s-a.top;!i&&t.props.interactive||t.setProps({getReferenceClientRect:function(){var t=n.getBoundingClientRect(),e=o,i=s;"initial"===r&&(e=t.left+u,i=t.top+c);var a="horizontal"===r?t.top:i,l="vertical"===r?t.right:e,f="horizontal"===r?t.bottom:i,d="vertical"===r?t.left:e;return{width:l-d,height:f-a,top:a,right:l,bottom:f,left:d}}})}function d(){t.props.followCursor&&(In.push({instance:t,doc:e}),function(t){t.addEventListener("mousemove",Bn)}(e))}function h(){0===(In=In.filter((function(n){return n.instance!==t}))).filter((function(t){return t.doc===e})).length&&function(t){t.removeEventListener("mousemove",Bn)}(e)}return{onCreate:d,onDestroy:h,onBeforeUpdate:function(){s=t.props},onAfterUpdate:function(n,e){var o=e.followCursor;i||void 0!==o&&s.followCursor!==o&&(h(),o?(d(),!t.state.isMounted||r||a()||u()):(c(),l()))},onMount:function(){t.props.followCursor&&!r&&(o&&(f(Dn),o=!1),a()||u())},onTrigger:function(t,n){dn(n)&&(Dn={clientX:n.clientX,clientY:n.clientY}),r="focus"===n.type},onHidden:function(){t.props.followCursor&&(l(),c(),o=!0)}}}};qn.setDefaultProps({render:Ln});var Wn=qn;GLSR.autosize=s(),GLSR.keys={ALT:18,DOWN:40,ENTER:13,ESC:27,SPACE:32,UP:38},GLSR.Tippy={tippy:Wn,plugins:{followCursor:Hn}},jQuery((function(t){w().highlightAll(),GLSR.notices=new p,GLSR.shortcode=new Q(".glsr-mce"),GLSR.stars=new(A())("select.glsr-star-rating",{tooltip:!1}),GLSR.Tippy.tippy(".glsr-tooltip",{appendTo:function(){return document.body}}),u(),new l("form.glsr-form"),new d,new m,new b,new j("#glsr-search-posts",{action:"search-posts",onInit:function(){this.el.find(".glsr-remove-button").on("click",this.et.bind(this))},onResultClick:function(n){var e=t(n.currentTarget),i=wp.template("glsr-assigned-posts"),r={id:e.data("id"),name:"post_ids[]",url:e.data("url"),title:e.text()};if(i){var o=t(i(r));o.find(".glsr-remove-button").on("click",this.et.bind(this)),this.el.find(".glsr-selected-entries").append(o),this.nt()}this.options.searchEl.focus()}}),new j("#glsr-search-users",{action:"search-users",onInit:function(){this.el.find(".glsr-remove-button").on("click",this.et.bind(this))},onResultClick:function(n){var e=t(n.currentTarget),i=wp.template("glsr-assigned-users"),r={id:e.data("id"),name:"user_ids[]",url:e.data("url"),title:e.text()};if(i){var o=t(i(r));o.find(".glsr-remove-button").on("click",this.et.bind(this)),this.el.find(".glsr-selected-entries").append(o),this.nt()}this.options.searchEl.focus()}}),new j("#glsr-search-translations",{action:"search-translations",onInit:function(){this.Y()},onResultClick:function(n){var e=t(n.currentTarget),i=e.data("entry"),r=wp.template("glsr-string-"+(i.p1?"plural":"single"));i.index=this.options.entriesEl.children().length,i.prefix=this.options.resultsEl.data("prefix"),r&&(this.options.entriesEl.append(r(i)),this.options.exclude.push({id:i.id}),this.options.results=this.options.results.filter((function(t,n){return n!==e.get(0)}))),this.Z()}}),new z("a.glsr-toggle-status"),new S,new L,new E,new M,new $;var n=function(){this.dataset.glsrTrack=this.value};t("select[data-glsr-track]").each(n),t("select[data-glsr-track]").on("change",n),t(".glsr-card.postbox:not(.open)").addClass("closed").find(".glsr-accordion-trigger").attr("aria-expanded",!1).closest(".glsr-nav-view").addClass("collapsed"),t(".glsr-support-step").not(":checked").length<1&&t(".glsr-card-result").removeClass("hidden"),t(".glsr-support-step").on("change",(function(){var n=t(".glsr-support-step").not(":checked").length>0?"add":"remove";t(".glsr-card-result")[n+"Class"]("hidden")})),t(".glsr-card.postbox .glsr-card-heading").on("click",(function(){var n=t(this).parent(),e=n.closest(".glsr-nav-view"),i=n.hasClass("closed")?"remove":"add";n[i+"Class"]("closed").find(".glsr-accordion-trigger").attr("aria-expanded","add"!==i),i=e.find(".glsr-card.postbox").not(".closed").length>0?"remove":"add",e[i+"Class"]("collapsed")}))}))}()}();
assets/scripts/site-reviews-blocks.js CHANGED
@@ -1,2 +1,2 @@
1
  /*! For license information please see site-reviews-blocks.js.LICENSE.txt */
2
- !function(){var e={7228:function(e){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}},2858:function(e){e.exports=function(e){if(Array.isArray(e))return e}},7154:function(e){function t(){return e.exports=t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},t.apply(this,arguments)}e.exports=t},3884:function(e){e.exports=function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],i=!0,s=!1,r=void 0;try{for(var a,o=e[Symbol.iterator]();!(i=(a=o.next()).done)&&(n.push(a.value),!t||n.length!==t);i=!0);}catch(e){s=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(s)throw r}}return n}}},521:function(e){e.exports=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.")}},6479:function(e,t,n){var i=n(7316);e.exports=function(e,t){if(null==e)return{};var n,s,r=i(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(s=0;s<a.length;s++)n=a[s],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}},7316:function(e){e.exports=function(e,t){if(null==e)return{};var n,i,s={},r=Object.keys(e);for(i=0;i<r.length;i++)n=r[i],t.indexOf(n)>=0||(s[n]=e[n]);return s}},3038:function(e,t,n){var i=n(2858),s=n(3884),r=n(379),a=n(521);e.exports=function(e,t){return i(e)||s(e,t)||r(e,t)||a()}},379:function(e,t,n){var i=n(7228);e.exports=function(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}},2408:function(e,t,n){"use strict";var i=n(9424),s="function"==typeof Symbol&&Symbol.for,r=s?Symbol.for("react.element"):60103,a=s?Symbol.for("react.portal"):60106,o=s?Symbol.for("react.fragment"):60107,l=s?Symbol.for("react.strict_mode"):60108,u=s?Symbol.for("react.profiler"):60114,c=s?Symbol.for("react.provider"):60109,d=s?Symbol.for("react.context"):60110,p=s?Symbol.for("react.forward_ref"):60112,m=s?Symbol.for("react.suspense"):60113,v=s?Symbol.for("react.memo"):60115,f=s?Symbol.for("react.lazy"):60116,g="function"==typeof Symbol&&Symbol.iterator;function y(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w={};function b(e,t,n){this.props=e,this.context=t,this.refs=w,this.updater=n||h}function x(){}function _(e,t,n){this.props=e,this.context=t,this.refs=w,this.updater=n||h}b.prototype.isReactComponent={},b.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(y(85));this.updater.enqueueSetState(this,e,t,"setState")},b.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},x.prototype=b.prototype;var S=_.prototype=new x;S.constructor=_,i(S,b.prototype),S.isPureReactComponent=!0;var j={current:null},C=Object.prototype.hasOwnProperty,k={key:!0,ref:!0,__self:!0,__source:!0};function R(e,t,n){var i,s={},a=null,o=null;if(null!=t)for(i in void 0!==t.ref&&(o=t.ref),void 0!==t.key&&(a=""+t.key),t)C.call(t,i)&&!k.hasOwnProperty(i)&&(s[i]=t[i]);var l=arguments.length-2;if(1===l)s.children=n;else if(1<l){for(var u=Array(l),c=0;c<l;c++)u[c]=arguments[c+2];s.children=u}if(e&&e.defaultProps)for(i in l=e.defaultProps)void 0===s[i]&&(s[i]=l[i]);return{$$typeof:r,type:e,key:a,ref:o,props:s,_owner:j.current}}function O(e){return"object"==typeof e&&null!==e&&e.$$typeof===r}var I=/\/+/g,L=[];function A(e,t,n,i){if(L.length){var s=L.pop();return s.result=e,s.keyPrefix=t,s.func=n,s.context=i,s.count=0,s}return{result:e,keyPrefix:t,func:n,context:i,count:0}}function D(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>L.length&&L.push(e)}function E(e,t,n,i){var s=typeof e;"undefined"!==s&&"boolean"!==s||(e=null);var o=!1;if(null===e)o=!0;else switch(s){case"string":case"number":o=!0;break;case"object":switch(e.$$typeof){case r:case a:o=!0}}if(o)return n(i,e,""===t?"."+G(e,0):t),1;if(o=0,t=""===t?".":t+":",Array.isArray(e))for(var l=0;l<e.length;l++){var u=t+G(s=e[l],l);o+=E(s,u,n,i)}else if(null===e||"object"!=typeof e?u=null:u="function"==typeof(u=g&&e[g]||e["@@iterator"])?u:null,"function"==typeof u)for(e=u.call(e),l=0;!(s=e.next()).done;)o+=E(s=s.value,u=t+G(s,l++),n,i);else if("object"===s)throw n=""+e,Error(y(31,"[object Object]"===n?"object with keys {"+Object.keys(e).join(", ")+"}":n,""));return o}function P(e,t,n){return null==e?0:E(e,"",t,n)}function G(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function N(e,t){e.func.call(e.context,t,e.count++)}function M(e,t,n){var i=e.result,s=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?z(e,i,n,(function(e){return e})):null!=e&&(O(e)&&(e=function(e,t){return{$$typeof:r,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,s+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(I,"$&/")+"/")+n)),i.push(e))}function z(e,t,n,i,s){var r="";null!=n&&(r=(""+n).replace(I,"$&/")+"/"),P(e,M,t=A(t,r,i,s)),D(t)}var U={current:null};function $(){var e=U.current;if(null===e)throw Error(y(321));return e}t.createElement=R},7294:function(e,t,n){"use strict";e.exports=n(2408)},9424:function(e){"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function s(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach((function(e){i[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(e){return!1}}()?Object.assign:function(e,r){for(var a,o,l=s(e),u=1;u<arguments.length;u++){for(var c in a=Object(arguments[u]))n.call(a,c)&&(l[c]=a[c]);if(t){o=t(a);for(var d=0;d<o.length;d++)i.call(a,o[d])&&(l[o[d]]=a[o[d]])}}return l}}},t={};function n(i){if(t[i])return t[i].exports;var s=t[i]={exports:{}};return e[i](s,s.exports,n),s.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){"use strict";var e=n(7294),t=n(3038),i=n.n(t),s=wp.components.CheckboxControl,r=wp.element.useState,a=function(t,n,a){var o=[];return jQuery.each(t,(function(t,l){var u=r(!1),c=i()(u,2),d=c[0],p=c[1],m=n.split(",").indexOf(t)>-1;o.push((0,e.createElement)(s,{key:"hide-".concat(t),className:"glsr-checkbox-control",checked:m||d,label:l,onChange:function(e){p(e),n=_.without(_.without(n.split(","),""),t),e&&n.push(t),a({hide:n.toString()})}}))})),o},o=(0,e.createElement)("svg",{width:"22px",height:"22px",viewBox:"0 0 22 22",xmlns:"http://www.w3.org/2000/svg"},(0,e.createElement)("path",{d:"M11 2l-3 6-6 .75 4.13 4.62-1.13 6.63 6-3 6 3-1.12-6.63 4.12-4.62-6-.75-3-6zm0 2.24l2.34 4.69 4.65.58-3.18 3.56.87 5.15-4.68-2.34v-11.64zm8.28-.894v.963h-3.272v2.691h-1.017v-6.3h4.496v.963h-3.479v1.683h3.272z"})),l=(0,e.createElement)("svg",{width:"22px",height:"22px",viewBox:"0 0 22 22",xmlns:"http://www.w3.org/2000/svg"},(0,e.createElement)("path",{d:"M11 2l-3 6-6 .75 4.13 4.62-1.13 6.63 6-3 6 3-1.12-6.63 4.12-4.62-6-.75-3-6zm0 2.24l2.34 4.69 4.65.58-3.18 3.56.87 5.15-4.68-2.34v-11.64zm3.681-3.54h2.592c1.449 0 2.232.648 2.232 1.823 0 1.071-.819 1.782-2.102 1.827l2.075 2.651h-1.26l-2.007-2.651h-.513v2.651h-1.017v-6.3zm2.565.954h-1.548v1.773h1.548c.819 0 1.202-.297 1.202-.905 0-.599-.405-.869-1.202-.869z"})),u=(0,e.createElement)("svg",{width:"22px",height:"22px",viewBox:"0 0 22 22",xmlns:"http://www.w3.org/2000/svg"},(0,e.createElement)("path",{d:"M11 2l-3 6-6 .75 4.13 4.62-1.13 6.63 6-3 6 3-1.12-6.63 4.12-4.62-6-.75-3-6zm0 2.24l2.34 4.69 4.65.58-3.18 3.56.87 5.15-4.68-2.34v-11.64zm8.415-2.969l-.518.824c-.536-.342-1.13-.54-1.769-.54-.842 0-1.418.365-1.418.941 0 .522.491.725 1.31.842l.437.059c1.022.14 2.03.563 2.03 1.733 0 1.283-1.161 1.985-2.525 1.985-.855 0-1.881-.284-2.534-.846l.554-.81c.432.396 1.247.693 1.976.693.824 0 1.472-.351 1.472-.932 0-.495-.495-.725-1.418-.851l-.491-.068c-.936-.131-1.868-.572-1.868-1.742 0-1.265 1.121-1.967 2.484-1.967.918 0 1.643.257 2.277.68z"})),c=wp.i18n._x,d=[{label:"- "+c("Select","admin-text","site-reviews")+" -",value:""},{label:"- "+c("Select Multiple Post IDs","admin-text","site-reviews")+" -",value:"custom"},{label:c("Assign to the Current Page","admin-text","site-reviews"),value:"post_id"},{label:c("Assign to the Parent Page","admin-text","site-reviews"),value:"parent_id"}],p=wp.i18n._x,m=[],v={label:"- "+p("Select","admin-text","site-reviews")+" -",value:""},f={label:"- "+p("Select Multiple Categories","admin-text","site-reviews")+" -",value:"glsr_custom"};wp.apiFetch({path:"/site-reviews/v1/categories?per_page=50"}).then((function(e){m.push(v),m.push(f),jQuery.each(e,(function(e,t){m.push({label:"".concat(t.name," (").concat(t.slug,")"),value:t.id})}))}));var g=m,y=wp.i18n._x,h=[],w={label:"- "+y("Select","admin-text","site-reviews")+" -",value:""},b={label:"- "+y("Select Multiple Users","admin-text","site-reviews")+" -",value:"glsr_custom"};wp.apiFetch({path:"/wp/v2/users?per_page=50"}).then((function(e){h.push(w),h.push(b),jQuery.each(e,(function(e,t){h.push({label:t.name+" ("+t.slug+")",value:t.id})}))}));var x=h,S=n(7154),j=n.n(S),C=n(6479),k=n.n(C),R=(wp.i18n._x,wp.components),O=R.BaseControl,I=(R.TextControl,lodash.isEmpty),L=wp.compose.useInstanceId;function A(t){var n=t.children,i=t.custom_value,s=void 0===i?"custom":i,r=t.help,a=t.label,o=t.onChange,l=t.options,u=void 0===l?[]:l,c=t.className,d=t.hideLabelFromVision,p=(t.selectedValue,k()(t,["children","custom_value","help","label","onChange","options","className","hideLabelFromVision","selectedValue"])),m=L(A),v="inspector-select-control-".concat(m),f=p.value;return!I(u)&&(0,e.createElement)(O,{label:a,hideLabelFromVision:d,id:v,help:r,className:c},(0,e.createElement)("select",j()({id:v,className:"components-select-control__input",onChange:function(e){o(e.target.value)},"aria-describedby":r?"".concat(v,"__help"):void 0},p),u.map((function(t,n){return(0,e.createElement)("option",{key:"".concat(t.label,"-").concat(t.value,"-").concat(n),value:t.value,disabled:t.disabled},t.label)}))),s===f&&n)}var D=wp.i18n._x,E=wp.blocks.registerBlockType,P=wp.blockEditor,G=P.InspectorAdvancedControls,N=P.InspectorControls,M=wp.components,z=M.PanelBody,U=(M.SelectControl,M.TextControl),$=wp.serverSideRender,Q=GLSR.nameprefix+"/form",T=(E(Q,{attributes:{assign_to:{default:"",type:"string"},assigned_posts:{default:"",type:"string"},assigned_terms:{default:"",type:"string"},assigned_users:{default:"",type:"string"},category:{default:"",type:"string"},className:{default:"",type:"string"},hide:{default:"",type:"string"},id:{default:"",type:"string"},user:{default:"",type:"string"}},category:GLSR.nameprefix,description:D("Display a review form.","admin-text","site-reviews"),edit:function(t){var n=t.attributes,i=n.assign_to,s=n.assigned_posts,r=n.assigned_terms,o=n.assigned_users,l=n.category,u=n.hide,c=n.id,p=n.user,m=(t.className,t.setAttributes),v={assign_to:(0,e.createElement)(A,{key:"assigned_posts",label:D("Assign Reviews to a Post ID","admin-text","site-reviews"),onChange:function(e){return m({assign_to:e,assigned_posts:"custom"===e?s:""})},options:d,value:i},(0,e.createElement)(U,{className:"glsr-base-conditional-control",help:D("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return m({assigned_posts:e})},placeholder:D("Enter the Post IDs","admin-text","site-reviews"),type:"text",value:s})),category:(0,e.createElement)(A,{key:"assigned_terms",custom_value:"glsr_custom",label:D("Assign Reviews to a Category","admin-text","site-reviews"),onChange:function(e){return m({category:e,assigned_terms:"glsr_custom"===e?r:""})},options:g,value:l},(0,e.createElement)(U,{className:"glsr-base-conditional-control",help:D("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return m({assigned_terms:e})},placeholder:D("Enter the Category IDs or slugs","admin-text","site-reviews"),type:"text",value:r})),user:(0,e.createElement)(A,{key:"assigned_users",custom_value:"glsr_custom",label:D("Assign Reviews to a User","admin-text","site-reviews"),onChange:function(e){return m({user:e,assigned_users:"glsr_custom"===e?o:""})},options:x,value:p},(0,e.createElement)(U,{className:"glsr-base-conditional-control",help:D("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return m({assigned_users:e})},placeholder:D("Enter the User IDs or usernames","admin-text","site-reviews"),type:"text",value:o})),hide:a(GLSR.hideoptions.site_reviews_form,u,m)},f={id:(0,e.createElement)(U,{label:D("Custom ID","admin-text","site-reviews"),onChange:function(e){return m({id:e})},value:c})};return[(0,e.createElement)(N,null,(0,e.createElement)(z,{title:D("Settings","admin-text","site-reviews")},Object.values(wp.hooks.applyFilters(GLSR.nameprefix+".form.InspectorControls",v,t)))),(0,e.createElement)(G,null,Object.values(wp.hooks.applyFilters(GLSR.nameprefix+".form.InspectorAdvancedControls",f,t))),(0,e.createElement)($,{block:Q,attributes:t.attributes})]},example:{},icon:{src:o},keywords:["reviews","form"],save:function(){return null},title:D("Submit a Review","admin-text","site-reviews")}),wp.i18n._x),q=[{label:"- "+T("Select","admin-text","site-reviews")+" -",value:""},{label:"- "+T("Select Multiple Post IDs","admin-text","site-reviews")+" -",value:"custom"},{label:T("Assigned to the Current Page","admin-text","site-reviews"),value:"post_id"},{label:T("Assigned to the Parent Page","admin-text","site-reviews"),value:"parent_id"}],B={label:"- "+(0,wp.i18n._x)("Select","admin-text","site-reviews")+" -",value:""},F=[];wp.apiFetch({path:"/site-reviews/v1/types?per_page=50"}).then((function(e){e.length<2||(F.push(B),jQuery.each(e,(function(e,t){F.push({label:t.name,value:t.id})})))}));var V=F,H=wp.i18n._x,J=wp.blocks.registerBlockType,K=wp.blockEditor,W=K.InspectorAdvancedControls,X=K.InspectorControls,Y=wp.components,Z=Y.PanelBody,ee=Y.RangeControl,te=Y.SelectControl,ne=Y.TextControl,ie=Y.ToggleControl,se=wp.serverSideRender,re=GLSR.nameprefix+"/reviews";wp.hooks.addFilter("blocks.getBlockAttributes",re,(function(e,t,n,i){return i&&i.count&&(e.display=i.count),e}));J(re,{attributes:{assigned_to:{default:"",type:"string"},assigned_posts:{default:"",type:"string"},assigned_terms:{default:"",type:"string"},assigned_users:{default:"",type:"string"},category:{default:"",type:"string"},className:{default:"",type:"string"},display:{default:5,type:"number"},hide:{default:"",type:"string"},id:{default:"",type:"string"},pagination:{default:"",type:"string"},post_id:{default:"",type:"string"},rating:{default:0,type:"number"},schema:{default:!1,type:"boolean"},type:{default:"local",type:"string"},user:{default:"",type:"string"}},category:GLSR.nameprefix,description:H("Display your most recent reviews.","admin-text","site-reviews"),edit:function(t){t.attributes.post_id=jQuery("#post_ID").val();var n=t.attributes,i=n.assigned_to,s=n.assigned_posts,r=n.assigned_terms,o=n.assigned_users,l=n.category,u=n.display,c=n.hide,d=n.id,p=n.pagination,m=n.rating,v=n.schema,f=n.type,y=n.user,h=(t.className,t.setAttributes),w={assigned_to:(0,e.createElement)(A,{key:"assigned_posts",label:H("Limit Reviews to an Assigned Post ID","admin-text","site-reviews"),onChange:function(e){return h({assigned_to:e,assigned_posts:"custom"===e?s:""})},options:q,value:i},(0,e.createElement)(ne,{className:"glsr-base-conditional-control",help:H("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return h({assigned_posts:e})},placeholder:H("Enter the Post IDs","admin-text","site-reviews"),type:"text",value:s})),category:(0,e.createElement)(A,{key:"assigned_terms",custom_value:"glsr_custom",label:H("Limit Reviews to an Assigned Category","admin-text","site-reviews"),onChange:function(e){return h({category:e,assigned_terms:"glsr_custom"===e?r:""})},options:g,value:l},(0,e.createElement)(ne,{className:"glsr-base-conditional-control",help:H("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return h({assigned_terms:e})},placeholder:H("Enter the Category IDs or slugs","admin-text","site-reviews"),type:"text",value:r})),user:(0,e.createElement)(A,{key:"assigned_users",custom_value:"glsr_custom",label:H("Limit Reviews to an Assigned User","admin-text","site-reviews"),onChange:function(e){return h({user:e,assigned_users:"glsr_custom"===e?o:""})},options:x,value:y},(0,e.createElement)(ne,{className:"glsr-base-conditional-control",help:H("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return h({assigned_users:e})},placeholder:H("Enter the User IDs or usernames","admin-text","site-reviews"),type:"text",value:o})),pagination:(0,e.createElement)(te,{key:"pagination",label:H("Enable Pagination","admin-text","site-reviews"),onChange:function(e){return h({pagination:e})},options:[{label:"- "+H("Select","admin-text","site-reviews")+" -",value:""},{label:H("Enabled","admin-text","site-reviews"),value:"true"},{label:H("Enabled (using ajax)","admin-text","site-reviews"),value:"ajax"}],value:p}),type:(0,e.createElement)(te,{key:"type",label:H("Limit the Type of Reviews","admin-text","site-reviews"),onChange:function(e){return h({type:e})},options:V,value:f}),display:(0,e.createElement)(ee,{key:"display",label:H("Reviews Per Page","admin-text","site-reviews"),min:1,max:50,onChange:function(e){return h({display:e})},value:u}),rating:(0,e.createElement)(ee,{key:"rating",label:H("Minimum Rating","admin-text","site-reviews"),min:0,max:GLSR.maxrating,onChange:function(e){return h({rating:e})},value:m}),schema:(0,e.createElement)(ie,{key:"schema",checked:v,help:H("The schema should only be enabled once per page.","admin-text","site-reviews"),label:H("Enable the schema?","admin-text","site-reviews"),onChange:function(e){return h({schema:e})}}),hide:a(GLSR.hideoptions.site_reviews,c,h)},b={id:(0,e.createElement)(ne,{label:H("Custom ID","admin-text","site-reviews"),onChange:function(e){return h({id:e})},value:d})};return[(0,e.createElement)(X,null,(0,e.createElement)(Z,{title:H("Settings","admin-text","site-reviews")},Object.values(wp.hooks.applyFilters(GLSR.nameprefix+".reviews.InspectorControls",w,t)))),(0,e.createElement)(W,null,Object.values(wp.hooks.applyFilters(GLSR.nameprefix+".reviews.InspectorAdvancedControls",b,t))),(0,e.createElement)(se,{block:re,attributes:t.attributes})]},example:{attributes:{display:2,pagination:"ajax",rating:0}},icon:{src:l},keywords:["reviews"],save:function(){return null},title:H("Latest Reviews","admin-text","site-reviews")});var ae=wp.i18n._x,oe=wp.blocks.registerBlockType,le=wp.blockEditor,ue=le.InspectorAdvancedControls,ce=le.InspectorControls,de=wp.components,pe=de.PanelBody,me=de.RangeControl,ve=de.SelectControl,fe=de.TextControl,ge=de.ToggleControl,ye=wp.serverSideRender,he=GLSR.nameprefix+"/summary";oe(he,{attributes:{assigned_to:{default:"",type:"string"},assigned_posts:{default:"",type:"string"},assigned_terms:{default:"",type:"string"},assigned_users:{default:"",type:"string"},category:{default:"",type:"string"},className:{default:"",type:"string"},hide:{default:"",type:"string"},post_id:{default:"",type:"string"},rating:{default:0,type:"number"},schema:{default:!1,type:"boolean"},type:{default:"local",type:"string"},user:{default:"",type:"string"}},category:GLSR.nameprefix,description:ae("Display a summary of your reviews.","admin-text","site-reviews"),edit:function(t){t.attributes.post_id=jQuery("#post_ID").val();var n=t.attributes,i=n.assigned_to,s=n.assigned_posts,r=n.assigned_terms,o=n.assigned_users,l=n.category,u=(n.display,n.hide),c=(n.id,n.pagination,n.rating),d=n.schema,p=n.type,m=n.user,v=(t.className,t.setAttributes),f={assigned_to:(0,e.createElement)(A,{key:"assigned_posts",label:ae("Limit Reviews to an Assigned Post ID","admin-text","site-reviews"),onChange:function(e){return v({assigned_to:e,assigned_posts:"custom"===e?s:""})},options:q,value:i},(0,e.createElement)(fe,{className:"glsr-base-conditional-control",help:ae("Separate multiple IDs with commas.","admin-text","site-reviews"),onChange:function(e){return v({assigned_posts:e})},placeholder:ae("Enter the Post IDs","admin-text","site-reviews"),type:"text",value:s})),category:(0,e.createElement)(A,{key:"assigned_terms",custom_value:"glsr_custom",label:ae("Limit Reviews to an Assigned Category","admin-text","site-reviews"),onChange:function(e){return v({category:e,assigned_terms:"glsr_custom"===e?r:""})},options:g,value:l},(0,e.createElement)(fe,{className:"glsr-base-conditional-control",help:ae("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return v({assigned_terms:e})},placeholder:ae("Enter the Category IDs or slugs","admin-text","site-reviews"),type:"text",value:r})),user:(0,e.createElement)(A,{key:"assigned_users",custom_value:"glsr_custom",label:ae("Limit Reviews to an Assigned User","admin-text","site-reviews"),onChange:function(e){return v({user:e,assigned_users:"glsr_custom"===e?o:""})},options:x,value:m},(0,e.createElement)(fe,{className:"glsr-base-conditional-control",help:ae("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return v({assigned_users:e})},placeholder:ae("Enter the User IDs or usernames","admin-text","site-reviews"),type:"text",value:o})),type:(0,e.createElement)(ve,{key:"type",label:ae("Limit the Type of Reviews","admin-text","site-reviews"),onChange:function(e){return v({type:e})},options:V,value:p}),rating:(0,e.createElement)(me,{key:"rating",label:ae("Minimum Rating","admin-text","site-reviews"),min:0,max:GLSR.maxrating,onChange:function(e){return v({rating:e})},value:c}),schema:(0,e.createElement)(ge,{key:"schema",checked:d,help:ae("The schema should only be enabled once per page.","admin-text","site-reviews"),label:ae("Enable the schema?","admin-text","site-reviews"),onChange:function(e){return v({schema:e})}}),hide:a(GLSR.hideoptions.site_reviews_summary,u,v)};return[(0,e.createElement)(ce,null,(0,e.createElement)(pe,{title:ae("Settings","admin-text","site-reviews")},Object.values(wp.hooks.applyFilters(GLSR.nameprefix+".summary.InspectorControls",f,t)))),(0,e.createElement)(ue,null,Object.values(wp.hooks.applyFilters(GLSR.nameprefix+".summary.InspectorAdvancedControls",{},t))),(0,e.createElement)(ye,{block:he,attributes:t.attributes})]},example:{},icon:{src:u},keywords:["reviews","summary"],save:function(){return null},title:ae("Summary","admin-text","site-reviews")})}()}();
1
  /*! For license information please see site-reviews-blocks.js.LICENSE.txt */
2
+ !function(){"use strict";var e={90:function(e,t,n){var s=n(424),i="function"==typeof Symbol&&Symbol.for,r=i?Symbol.for("react.element"):60103,a=i?Symbol.for("react.portal"):60106,o=i?Symbol.for("react.fragment"):60107,l=i?Symbol.for("react.strict_mode"):60108,u=i?Symbol.for("react.profiler"):60114,c=i?Symbol.for("react.provider"):60109,d=i?Symbol.for("react.context"):60110,m=i?Symbol.for("react.forward_ref"):60112,p=i?Symbol.for("react.suspense"):60113,v=i?Symbol.for("react.memo"):60115,g=i?Symbol.for("react.lazy"):60116,f="function"==typeof Symbol&&Symbol.iterator;function w(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h={};function b(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||y}function x(){}function _(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||y}b.prototype.isReactComponent={},b.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(w(85));this.updater.enqueueSetState(this,e,t,"setState")},b.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},x.prototype=b.prototype;var S=_.prototype=new x;S.constructor=_,s(S,b.prototype),S.isPureReactComponent=!0;var C={current:null},j=Object.prototype.hasOwnProperty,k={key:!0,ref:!0,__self:!0,__source:!0};function R(e,t,n){var s,i={},a=null,o=null;if(null!=t)for(s in void 0!==t.ref&&(o=t.ref),void 0!==t.key&&(a=""+t.key),t)j.call(t,s)&&!k.hasOwnProperty(s)&&(i[s]=t[s]);var l=arguments.length-2;if(1===l)i.children=n;else if(1<l){for(var u=Array(l),c=0;c<l;c++)u[c]=arguments[c+2];i.children=u}if(e&&e.defaultProps)for(s in l=e.defaultProps)void 0===i[s]&&(i[s]=l[s]);return{$$typeof:r,type:e,key:a,ref:o,props:i,_owner:C.current}}function L(e){return"object"==typeof e&&null!==e&&e.$$typeof===r}var I=/\/+/g,O=[];function A(e,t,n,s){if(O.length){var i=O.pop();return i.result=e,i.keyPrefix=t,i.func=n,i.context=s,i.count=0,i}return{result:e,keyPrefix:t,func:n,context:s,count:0}}function D(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>O.length&&O.push(e)}function E(e,t,n,s){var i=typeof e;"undefined"!==i&&"boolean"!==i||(e=null);var o=!1;if(null===e)o=!0;else switch(i){case"string":case"number":o=!0;break;case"object":switch(e.$$typeof){case r:case a:o=!0}}if(o)return n(s,e,""===t?"."+G(e,0):t),1;if(o=0,t=""===t?".":t+":",Array.isArray(e))for(var l=0;l<e.length;l++){var u=t+G(i=e[l],l);o+=E(i,u,n,s)}else if(null===e||"object"!=typeof e?u=null:u="function"==typeof(u=f&&e[f]||e["@@iterator"])?u:null,"function"==typeof u)for(e=u.call(e),l=0;!(i=e.next()).done;)o+=E(i=i.value,u=t+G(i,l++),n,s);else if("object"===i)throw n=""+e,Error(w(31,"[object Object]"===n?"object with keys {"+Object.keys(e).join(", ")+"}":n,""));return o}function P(e,t,n){return null==e?0:E(e,"",t,n)}function G(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function N(e,t){e.func.call(e.context,t,e.count++)}function M(e,t,n){var s=e.result,i=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?z(e,s,n,(function(e){return e})):null!=e&&(L(e)&&(e=function(e,t){return{$$typeof:r,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,i+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(I,"$&/")+"/")+n)),s.push(e))}function z(e,t,n,s,i){var r="";null!=n&&(r=(""+n).replace(I,"$&/")+"/"),P(e,M,t=A(t,r,s,i)),D(t)}var U={current:null};function T(){var e=U.current;if(null===e)throw Error(w(321));return e}t.createElement=R},294:function(e,t,n){e.exports=n(90)},424:function(e){var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable;function i(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var s={};return"abcdefghijklmnopqrst".split("").forEach((function(e){s[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},s)).join("")}catch(e){return!1}}()?Object.assign:function(e,r){for(var a,o,l=i(e),u=1;u<arguments.length;u++){for(var c in a=Object(arguments[u]))n.call(a,c)&&(l[c]=a[c]);if(t){o=t(a);for(var d=0;d<o.length;d++)s.call(a,o[d])&&(l[o[d]]=a[o[d]])}}return l}}},t={};function n(s){var i=t[s];if(void 0!==i)return i.exports;var r=t[s]={exports:{}};return e[s](r,r.exports,n),r.exports}!function(){var e=n(294);function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,s=new Array(t);n<t;n++)s[n]=e[n];return s}function s(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null!=n){var s,i,r=[],a=!0,o=!1;try{for(n=n.call(e);!(a=(s=n.next()).done)&&(r.push(s.value),!t||r.length!==t);a=!0);}catch(e){o=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(o)throw i}}return r}}(e,n)||function(e,n){if(e){if("string"==typeof e)return t(e,n);var s=Object.prototype.toString.call(e).slice(8,-1);return"Object"===s&&e.constructor&&(s=e.constructor.name),"Map"===s||"Set"===s?Array.from(e):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?t(e,n):void 0}}(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.")}()}var i=wp.components.CheckboxControl,r=wp.element.useState,a=function(t,n,a){var o=[];return jQuery.each(t,(function(t,l){var u=s(r(!1),2),c=u[0],d=u[1],m=n.split(",").indexOf(t)>-1;o.push((0,e.createElement)(i,{key:"hide-".concat(t),className:"glsr-checkbox-control",checked:m||c,label:l,onChange:function(e){d(e),n=_.without(_.without(n.split(","),""),t),e&&n.push(t),a({hide:n.toString()})}}))})),o},o=(0,e.createElement)("svg",{width:"22px",height:"22px",viewBox:"0 0 22 22",xmlns:"http://www.w3.org/2000/svg"},(0,e.createElement)("path",{d:"M11 2l-3 6-6 .75 4.13 4.62-1.13 6.63 6-3 6 3-1.12-6.63 4.12-4.62-6-.75-3-6zm0 2.24l2.34 4.69 4.65.58-3.18 3.56.87 5.15-4.68-2.34v-11.64zm8.28-.894v.963h-3.272v2.691h-1.017v-6.3h4.496v.963h-3.479v1.683h3.272z"})),l=(0,e.createElement)("svg",{width:"22px",height:"22px",viewBox:"0 0 22 22",xmlns:"http://www.w3.org/2000/svg"},(0,e.createElement)("path",{d:"M11 2l-3 6-6 .75 4.13 4.62-1.13 6.63 6-3 6 3-1.12-6.63 4.12-4.62-6-.75-3-6zm0 2.24l2.34 4.69 4.65.58-3.18 3.56.87 5.15-4.68-2.34v-11.64zm3.681-3.54h2.592c1.449 0 2.232.648 2.232 1.823 0 1.071-.819 1.782-2.102 1.827l2.075 2.651h-1.26l-2.007-2.651h-.513v2.651h-1.017v-6.3zm2.565.954h-1.548v1.773h1.548c.819 0 1.202-.297 1.202-.905 0-.599-.405-.869-1.202-.869z"})),u=(0,e.createElement)("svg",{width:"22px",height:"22px",viewBox:"0 0 22 22",xmlns:"http://www.w3.org/2000/svg"},(0,e.createElement)("path",{d:"M11 2l-3 6-6 .75 4.13 4.62-1.13 6.63 6-3 6 3-1.12-6.63 4.12-4.62-6-.75-3-6zm0 2.24l2.34 4.69 4.65.58-3.18 3.56.87 5.15-4.68-2.34v-11.64zm8.415-2.969l-.518.824c-.536-.342-1.13-.54-1.769-.54-.842 0-1.418.365-1.418.941 0 .522.491.725 1.31.842l.437.059c1.022.14 2.03.563 2.03 1.733 0 1.283-1.161 1.985-2.525 1.985-.855 0-1.881-.284-2.534-.846l.554-.81c.432.396 1.247.693 1.976.693.824 0 1.472-.351 1.472-.932 0-.495-.495-.725-1.418-.851l-.491-.068c-.936-.131-1.868-.572-1.868-1.742 0-1.265 1.121-1.967 2.484-1.967.918 0 1.643.257 2.277.68z"})),c=wp.i18n._x,d=[{label:"- "+c("Select","admin-text","site-reviews")+" -",value:""},{label:"- "+c("Select Multiple Post IDs","admin-text","site-reviews")+" -",value:"custom"},{label:c("Assign to the Current Page","admin-text","site-reviews"),value:"post_id"},{label:c("Assign to the Parent Page","admin-text","site-reviews"),value:"parent_id"}],m=wp.i18n._x,p=[],v={label:"- "+m("Select","admin-text","site-reviews")+" -",value:""},g={label:"- "+m("Select Multiple Categories","admin-text","site-reviews")+" -",value:"glsr_custom"};wp.apiFetch({path:"/site-reviews/v1/categories?per_page=50"}).then((function(e){p.push(v),p.push(g),jQuery.each(e,(function(e,t){p.push({label:"".concat(t.name," (").concat(t.slug,")"),value:t.id})}))}));var f=p,w=wp.i18n._x,y=[],h={label:"- "+w("Select","admin-text","site-reviews")+" -",value:""},b={label:"- "+w("Select Multiple Users","admin-text","site-reviews")+" -",value:"glsr_custom"};wp.apiFetch({path:"/wp/v2/users?per_page=50"}).then((function(e){y.push(h),y.push(b),jQuery.each(e,(function(e,t){y.push({label:t.name+" ("+t.slug+")",value:t.id})}))}));var x=y;function S(){return(S=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(e[s]=n[s])}return e}).apply(this,arguments)}function C(e,t){if(null==e)return{};var n,s,i=function(e,t){if(null==e)return{};var n,s,i={},r=Object.keys(e);for(s=0;s<r.length;s++)n=r[s],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s<r.length;s++)n=r[s],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}wp.i18n._x;var j=wp.components,k=j.BaseControl,R=(j.TextControl,lodash.isEmpty),L=wp.compose.useInstanceId;function I(t){var n=t.children,s=t.custom_value,i=void 0===s?"custom":s,r=t.help,a=t.label,o=t.onChange,l=t.options,u=void 0===l?[]:l,c=t.className,d=t.hideLabelFromVision,m=(t.selectedValue,C(t,["children","custom_value","help","label","onChange","options","className","hideLabelFromVision","selectedValue"])),p=L(I),v="inspector-select-control-".concat(p),g=m.value;return!R(u)&&(0,e.createElement)(k,{label:a,hideLabelFromVision:d,id:v,help:r,className:c},(0,e.createElement)("select",S({id:v,className:"components-select-control__input",onChange:function(e){o(e.target.value)},"aria-describedby":r?"".concat(v,"__help"):void 0},m),u.map((function(t,n){return(0,e.createElement)("option",{key:"".concat(t.label,"-").concat(t.value,"-").concat(n),value:t.value,disabled:t.disabled},t.label)}))),i===g&&n)}var O=wp.i18n._x,A=wp.blocks.registerBlockType,D=wp.blockEditor,E=D.InspectorAdvancedControls,P=D.InspectorControls,G=wp.components,N=G.PanelBody,M=(G.SelectControl,G.TextControl),z=wp.serverSideRender,U=GLSR.nameprefix+"/form",T=(A(U,{attributes:{assign_to:{default:"",type:"string"},assigned_posts:{default:"",type:"string"},assigned_terms:{default:"",type:"string"},assigned_users:{default:"",type:"string"},category:{default:"",type:"string"},className:{default:"",type:"string"},hide:{default:"",type:"string"},id:{default:"",type:"string"},user:{default:"",type:"string"}},category:GLSR.nameprefix,description:O("Display a review form.","admin-text","site-reviews"),edit:function(t){var n=t.attributes,s=n.assign_to,i=n.assigned_posts,r=n.assigned_terms,o=n.assigned_users,l=n.category,u=n.hide,c=n.id,m=n.user,p=(t.className,t.setAttributes),v={assign_to:(0,e.createElement)(I,{key:"assigned_posts",label:O("Assign Reviews to a Post ID","admin-text","site-reviews"),onChange:function(e){return p({assign_to:e,assigned_posts:"custom"===e?i:""})},options:d,value:s},(0,e.createElement)(M,{className:"glsr-base-conditional-control",help:O("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return p({assigned_posts:e})},placeholder:O("Enter the Post IDs","admin-text","site-reviews"),type:"text",value:i})),category:(0,e.createElement)(I,{key:"assigned_terms",custom_value:"glsr_custom",label:O("Assign Reviews to a Category","admin-text","site-reviews"),onChange:function(e){return p({category:e,assigned_terms:"glsr_custom"===e?r:""})},options:f,value:l},(0,e.createElement)(M,{className:"glsr-base-conditional-control",help:O("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return p({assigned_terms:e})},placeholder:O("Enter the Category IDs or slugs","admin-text","site-reviews"),type:"text",value:r})),user:(0,e.createElement)(I,{key:"assigned_users",custom_value:"glsr_custom",label:O("Assign Reviews to a User","admin-text","site-reviews"),onChange:function(e){return p({user:e,assigned_users:"glsr_custom"===e?o:""})},options:x,value:m},(0,e.createElement)(M,{className:"glsr-base-conditional-control",help:O("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return p({assigned_users:e})},placeholder:O("Enter the User IDs or usernames","admin-text","site-reviews"),type:"text",value:o})),hide:a(GLSR.hideoptions.site_reviews_form,u,p)},g={id:(0,e.createElement)(M,{label:O("Custom ID","admin-text","site-reviews"),onChange:function(e){return p({id:e})},value:c})};return[(0,e.createElement)(P,null,(0,e.createElement)(N,{title:O("Settings","admin-text","site-reviews")},Object.values(wp.hooks.applyFilters(GLSR.nameprefix+".form.InspectorControls",v,t)))),(0,e.createElement)(E,null,Object.values(wp.hooks.applyFilters(GLSR.nameprefix+".form.InspectorAdvancedControls",g,t))),(0,e.createElement)(z,{block:U,attributes:t.attributes})]},example:{},icon:{src:o},keywords:["reviews","form"],save:function(){return null},title:O("Submit a Review","admin-text","site-reviews")}),wp.i18n._x),$=[{label:"- "+T("Select","admin-text","site-reviews")+" -",value:""},{label:"- "+T("Select Multiple Post IDs","admin-text","site-reviews")+" -",value:"custom"},{label:T("Assigned to the Current Page","admin-text","site-reviews"),value:"post_id"},{label:T("Assigned to the Parent Page","admin-text","site-reviews"),value:"parent_id"}],Q=wp.i18n._x,q=[{label:"- "+Q("Select","admin-text","site-reviews")+" -",value:""},{label:Q("Terms were accepted","admin-text","site-reviews"),value:"true"},{label:Q("Terms were not accepted","admin-text","site-reviews"),value:"false"}],B={label:"- "+(0,wp.i18n._x)("Select","admin-text","site-reviews")+" -",value:""},F=[];wp.apiFetch({path:"/site-reviews/v1/types?per_page=50"}).then((function(e){e.length<2||(F.push(B),jQuery.each(e,(function(e,t){F.push({label:t.name,value:t.id})})))}));var V=F,H=wp.i18n._x,J=wp.blocks.registerBlockType,K=wp.blockEditor,W=K.InspectorAdvancedControls,X=K.InspectorControls,Y=wp.components,Z=Y.PanelBody,ee=Y.RangeControl,te=Y.SelectControl,ne=Y.TextControl,se=Y.ToggleControl,ie=wp.serverSideRender,re=GLSR.nameprefix+"/reviews";wp.hooks.addFilter("blocks.getBlockAttributes",re,(function(e,t,n,s){return s&&s.count&&(e.display=s.count),e}));J(re,{attributes:{assigned_to:{default:"",type:"string"},assigned_posts:{default:"",type:"string"},assigned_terms:{default:"",type:"string"},assigned_users:{default:"",type:"string"},category:{default:"",type:"string"},className:{default:"",type:"string"},display:{default:5,type:"number"},hide:{default:"",type:"string"},id:{default:"",type:"string"},pagination:{default:"",type:"string"},post_id:{default:"",type:"string"},rating:{default:0,type:"number"},schema:{default:!1,type:"boolean"},terms:{default:"",type:"string"},type:{default:"local",type:"string"},user:{default:"",type:"string"}},category:GLSR.nameprefix,description:H("Display your most recent reviews.","admin-text","site-reviews"),edit:function(t){t.attributes.post_id=jQuery("#post_ID").val();var n=t.attributes,s=n.assigned_to,i=n.assigned_posts,r=n.assigned_terms,o=n.assigned_users,l=n.category,u=n.display,c=n.hide,d=n.id,m=n.pagination,p=n.rating,v=n.schema,g=n.terms,w=n.type,y=n.user,h=(t.className,t.setAttributes),b={assigned_to:(0,e.createElement)(I,{key:"assigned_posts",label:H("Limit Reviews to an Assigned Post ID","admin-text","site-reviews"),onChange:function(e){return h({assigned_to:e,assigned_posts:"custom"===e?i:""})},options:$,value:s},(0,e.createElement)(ne,{className:"glsr-base-conditional-control",help:H("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return h({assigned_posts:e})},placeholder:H("Enter the Post IDs","admin-text","site-reviews"),type:"text",value:i})),category:(0,e.createElement)(I,{key:"assigned_terms",custom_value:"glsr_custom",label:H("Limit Reviews to an Assigned Category","admin-text","site-reviews"),onChange:function(e){return h({category:e,assigned_terms:"glsr_custom"===e?r:""})},options:f,value:l},(0,e.createElement)(ne,{className:"glsr-base-conditional-control",help:H("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return h({assigned_terms:e})},placeholder:H("Enter the Category IDs or slugs","admin-text","site-reviews"),type:"text",value:r})),user:(0,e.createElement)(I,{key:"assigned_users",custom_value:"glsr_custom",label:H("Limit Reviews to an Assigned User","admin-text","site-reviews"),onChange:function(e){return h({user:e,assigned_users:"glsr_custom"===e?o:""})},options:x,value:y},(0,e.createElement)(ne,{className:"glsr-base-conditional-control",help:H("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return h({assigned_users:e})},placeholder:H("Enter the User IDs or usernames","admin-text","site-reviews"),type:"text",value:o})),terms:(0,e.createElement)(te,{key:"terms",label:H("Limit Reviews to terms","admin-text","site-reviews"),onChange:function(e){return h({terms:e})},options:q,value:g}),pagination:(0,e.createElement)(te,{key:"pagination",label:H("Enable Pagination","admin-text","site-reviews"),onChange:function(e){return h({pagination:e})},options:[{label:"- "+H("Select","admin-text","site-reviews")+" -",value:""},{label:H("Enabled","admin-text","site-reviews"),value:"true"},{label:H("Enabled (using ajax)","admin-text","site-reviews"),value:"ajax"}],value:m}),type:(0,e.createElement)(te,{key:"type",label:H("Limit the Type of Reviews","admin-text","site-reviews"),onChange:function(e){return h({type:e})},options:V,value:w}),display:(0,e.createElement)(ee,{key:"display",label:H("Reviews Per Page","admin-text","site-reviews"),min:1,max:50,onChange:function(e){return h({display:e})},value:u}),rating:(0,e.createElement)(ee,{key:"rating",label:H("Minimum Rating","admin-text","site-reviews"),min:0,max:GLSR.maxrating,onChange:function(e){return h({rating:e})},value:p}),schema:(0,e.createElement)(se,{key:"schema",checked:v,help:H("The schema should only be enabled once per page.","admin-text","site-reviews"),label:H("Enable the schema?","admin-text","site-reviews"),onChange:function(e){return h({schema:e})}}),hide:a(GLSR.hideoptions.site_reviews,c,h)},_={id:(0,e.createElement)(ne,{label:H("Custom ID","admin-text","site-reviews"),onChange:function(e){return h({id:e})},value:d})};return[(0,e.createElement)(X,null,(0,e.createElement)(Z,{title:H("Settings","admin-text","site-reviews")},Object.values(wp.hooks.applyFilters(GLSR.nameprefix+".reviews.InspectorControls",b,t)))),(0,e.createElement)(W,null,Object.values(wp.hooks.applyFilters(GLSR.nameprefix+".reviews.InspectorAdvancedControls",_,t))),(0,e.createElement)(ie,{block:re,attributes:t.attributes})]},example:{attributes:{display:2,pagination:"ajax",rating:0}},icon:{src:l},keywords:["reviews"],save:function(){return null},title:H("Latest Reviews","admin-text","site-reviews")});var ae=wp.i18n._x,oe=wp.blocks.registerBlockType,le=wp.blockEditor,ue=le.InspectorAdvancedControls,ce=le.InspectorControls,de=wp.components,me=de.PanelBody,pe=de.RangeControl,ve=de.SelectControl,ge=de.TextControl,fe=de.ToggleControl,we=wp.serverSideRender,ye=GLSR.nameprefix+"/summary";oe(ye,{attributes:{assigned_to:{default:"",type:"string"},assigned_posts:{default:"",type:"string"},assigned_terms:{default:"",type:"string"},assigned_users:{default:"",type:"string"},category:{default:"",type:"string"},className:{default:"",type:"string"},hide:{default:"",type:"string"},post_id:{default:"",type:"string"},rating:{default:0,type:"number"},schema:{default:!1,type:"boolean"},terms:{default:"",type:"string"},type:{default:"local",type:"string"},user:{default:"",type:"string"}},category:GLSR.nameprefix,description:ae("Display a summary of your reviews.","admin-text","site-reviews"),edit:function(t){t.attributes.post_id=jQuery("#post_ID").val();var n=t.attributes,s=n.assigned_to,i=n.assigned_posts,r=n.assigned_terms,o=n.assigned_users,l=n.category,u=(n.display,n.hide),c=(n.id,n.pagination,n.rating),d=n.schema,m=n.terms,p=n.type,v=n.user,g=(t.className,t.setAttributes),w={assigned_to:(0,e.createElement)(I,{key:"assigned_posts",label:ae("Limit Reviews to an Assigned Post ID","admin-text","site-reviews"),onChange:function(e){return g({assigned_to:e,assigned_posts:"custom"===e?i:""})},options:$,value:s},(0,e.createElement)(ge,{className:"glsr-base-conditional-control",help:ae("Separate multiple IDs with commas.","admin-text","site-reviews"),onChange:function(e){return g({assigned_posts:e})},placeholder:ae("Enter the Post IDs","admin-text","site-reviews"),type:"text",value:i})),category:(0,e.createElement)(I,{key:"assigned_terms",custom_value:"glsr_custom",label:ae("Limit Reviews to an Assigned Category","admin-text","site-reviews"),onChange:function(e){return g({category:e,assigned_terms:"glsr_custom"===e?r:""})},options:f,value:l},(0,e.createElement)(ge,{className:"glsr-base-conditional-control",help:ae("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return g({assigned_terms:e})},placeholder:ae("Enter the Category IDs or slugs","admin-text","site-reviews"),type:"text",value:r})),user:(0,e.createElement)(I,{key:"assigned_users",custom_value:"glsr_custom",label:ae("Limit Reviews to an Assigned User","admin-text","site-reviews"),onChange:function(e){return g({user:e,assigned_users:"glsr_custom"===e?o:""})},options:x,value:v},(0,e.createElement)(ge,{className:"glsr-base-conditional-control",help:ae("Separate with commas.","admin-text","site-reviews"),onChange:function(e){return g({assigned_users:e})},placeholder:ae("Enter the User IDs or usernames","admin-text","site-reviews"),type:"text",value:o})),terms:(0,e.createElement)(ve,{key:"terms",label:ae("Limit Reviews to terms","admin-text","site-reviews"),onChange:function(e){return g({terms:e})},options:q,value:m}),type:(0,e.createElement)(ve,{key:"type",label:ae("Limit the Type of Reviews","admin-text","site-reviews"),onChange:function(e){return g({type:e})},options:V,value:p}),rating:(0,e.createElement)(pe,{key:"rating",label:ae("Minimum Rating","admin-text","site-reviews"),min:0,max:GLSR.maxrating,onChange:function(e){return g({rating:e})},value:c}),schema:(0,e.createElement)(fe,{key:"schema",checked:d,help:ae("The schema should only be enabled once per page.","admin-text","site-reviews"),label:ae("Enable the schema?","admin-text","site-reviews"),onChange:function(e){return g({schema:e})}}),hide:a(GLSR.hideoptions.site_reviews_summary,u,g)};return[(0,e.createElement)(ce,null,(0,e.createElement)(me,{title:ae("Settings","admin-text","site-reviews")},Object.values(wp.hooks.applyFilters(GLSR.nameprefix+".summary.InspectorControls",w,t)))),(0,e.createElement)(ue,null,Object.values(wp.hooks.applyFilters(GLSR.nameprefix+".summary.InspectorAdvancedControls",{},t))),(0,e.createElement)(we,{block:ye,attributes:t.attributes})]},example:{},icon:{src:u},keywords:["reviews","summary"],save:function(){return null},title:ae("Summary","admin-text","site-reviews")})}()}();
assets/scripts/site-reviews.js CHANGED
@@ -1 +1 @@
1
- !function(){var t={4575:function(t){t.exports=function(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}},3913:function(t){function i(t,i){for(var n=0;n<i.length;n++){var e=i[n];e.enumerable=e.enumerable||!1,e.configurable=!0,"value"in e&&(e.writable=!0),Object.defineProperty(t,e.key,e)}}t.exports=function(t,n,e){return n&&i(t.prototype,n),e&&i(t,e),t}},8:function(t){function i(n){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?t.exports=i=function(t){return typeof t}:t.exports=i=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(n)}t.exports=i},7401:function(t,i,n){"use strict";var e=n(8),s=n.n(e),o=function(){};o.prototype={get:function(t,i,n){this.t(i),this.xhr.open("GET",t,!0),this.xhr.responseType="text",this.i(n),this.xhr.send()},u:function(t){return"json"===this.xhr.responseType||!0===this.xhr.json?t({message:this.xhr.statusText},!1):"text"===this.xhr.responseType?t(this.xhr.statusText):void 0},h:function(t){if(0===this.xhr.status||this.xhr.status>=200&&this.xhr.status<300||304===this.xhr.status){if("json"===this.xhr.responseType)return t(this.xhr.response.data,this.xhr.response.success);if("text"===this.xhr.responseType)return t(this.xhr.responseText);if(!0===this.xhr.json){var i=JSON.parse(this.xhr.response);return t(i.data,i.success)}}else this.u(t)},isFileSupported:function(){var t=document.createElement("INPUT");return t.type="file","files"in t},isFormDataSupported:function(){return!!window.FormData},isUploadSupported:function(){var t=new XMLHttpRequest;return!!(t&&"upload"in t&&"onprogress"in t.upload)},post:function(t,i,n){this.t(i),this.xhr.open("POST",GLSR.ajaxurl,!0),this.xhr.responseType="json",this.xhr.json=!0,this.i(n),this.xhr.send(this.l(t))},t:function(t){this.xhr=new XMLHttpRequest,this.xhr.onload=this.h.bind(this,t),this.xhr.onerror=this.u.bind(this,t)},v:function(t,i,n){return"object"!==s()(i)||i instanceof Date||i instanceof File?t.append(n,i||""):Object.keys(i).forEach(function(e){i.hasOwnProperty(e)&&(t=this.v(t,i[e],n?n[e]:e))}.bind(this)),t},l:function(t){var i=new FormData,n=Object.prototype.toString.call(t);return"[object FormData]"===n&&(i=t),"[object HTMLFormElement]"===n&&(i=new FormData(t)),"[object Object]"===n&&Object.keys(t).forEach((function(n){i.append(n,t[n])})),i.append("action",GLSR.action),i.append("_ajax_request",!0),i},i:function(t){for(var i in(t=t||{})["X-Requested-With"]="XMLHttpRequest",t)t.hasOwnProperty(i)&&this.xhr.setRequestHeader(i,t[i])}};var r=o,u={},h=function(t,i){var n=u[t]||[],e=[];i&&[].forEach.call(n,(function(t){i!==t.fn&&i!==t.fn.once&&e.push(t)})),e.length?u[t]=e:delete u[t]},a=function(t,i,n){(u[t]||(u[t]=[])).push({fn:i,context:n})},c=function(t,i,n){var e=arguments,s=function s(){h(t,s),i.apply(n,e)};s.once=i,a(t,s,n)},f=function(t){var i=[].slice.call(arguments,1),n=(u[t]||[]).slice();[].forEach.call(n,(function(t){return t.fn.apply(t.context,i)}))},l={events:u,trigger:f,off:h,on:a,once:c},d=n(4575),v=n.n(d),m=n(3913),w=n.n(m),p={hiddenClass:"glsr-hidden",hiddenTextSelector:".glsr-hidden-text",readMoreClass:"glsr-read-more",visibleClass:"glsr-visible"},g=function(){function t(i){var n=this;v()(this,t);var e=(i||document).querySelectorAll(p.hiddenTextSelector);[].forEach.call(e,(function(t){return n.init(t)})),GLSR.Event.trigger("site-reviews/excerpts/init",i)}return w()(t,[{key:"init",value:function(t){if(!t.parentNode.querySelector("."+p.readMoreClass)){var i=t.dataset.trigger,n=document.createElement("span"),e=document.createElement("a");e.setAttribute("href","#"),e.innerHTML=t.dataset.showMore,"excerpt"===i&&(e.addEventListener("click",this.onClick.bind(this)),e.setAttribute("data-text",t.dataset.showLess)),"modal"===i&&e.setAttribute("data-excerpt-trigger","glsr-modal"),n.setAttribute("class",p.readMoreClass),n.appendChild(e),t.parentNode.insertBefore(n,t.nextSibling)}}},{key:"onClick",value:function(t){t.preventDefault();var i=t.currentTarget,n=i.parentNode.previousSibling,e=i.dataset.text;n.classList.toggle(p.hiddenClass),n.classList.toggle(p.visibleClass),i.dataset.text=i.innerText,i.innerText=e}}]),t}(),y=g,b=function(t){this.Form=t,this.counter=0,this.id=-1,this.is_submitting=!1,this.recaptchaEl=t.form.querySelector(".glsr-recaptcha-holder"),this.observer=new MutationObserver(function(t){var i=t.pop();i.target&&"visible"!==i.target.style.visibility&&(this.observer.disconnect(),setTimeout(function(){this.is_submitting||this.Form.p()}.bind(this),250))}.bind(this))};b.prototype={g:function(){this.counter=0,this.id=-1,this.is_submitting=!1,this.recaptchaEl&&(this.recaptchaEl.innerHTML="")},k:function(){if(-1!==this.id)return this.counter=0,this.S(this.id),void grecaptcha.execute(this.id);setTimeout(function(){this.counter++,this.L.call(this.Form,this.counter)}.bind(this),1e3)},S:function(t){var i=window.___grecaptcha_cfg.clients[t];for(var n in i)if(i.hasOwnProperty(n)&&"[object String]"===Object.prototype.toString.call(i[n])){var e=document.querySelector("iframe[name=c-"+i[n]+"]");if(e){this.observer.observe(e.parentElement.parentElement,{attributeFilter:["style"],attributes:!0});break}}},R:function(){this.Form.form.onsubmit=null,this.g(),this._()},_:function(){this.recaptchaEl&&setTimeout(function(){if("undefined"==typeof grecaptcha||void 0===grecaptcha.render)return this._();this.id=grecaptcha.render(this.recaptchaEl,{callback:this.L.bind(this.Form,this.counter),"expired-callback":this.F.bind(this),isolated:!0},!0)}.bind(this),250)},F:function(){this.counter=0,this.is_submitting=!1,-1!==this.id&&grecaptcha.reset(this.id)},L:function(t){if(this.recaptcha.is_submitting=!0,!this.useAjax)return this.G(),void this.form.submit();this.L(t)}};var k=b,S=n(9449),L=n.n(S),R=function(t,i,n){t&&i.split(" ").forEach((function(i){t.classList[n?"add":"remove"](i)}))},_=function(t){return"."+t.trim().split(" ").join(".")},x=function(t){var i='input[name="'+t.getAttribute("name")+'"]:checked';return t.validation.form.querySelectorAll(i).length},E={email:{fn:function(t){return!t||/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)}},max:{fn:function(t,i){return!t||("checkbox"===this.type?x(this)<=parseInt(i):parseFloat(t)<=parseFloat(i))}},maxlength:{fn:function(t,i){return!t||t.length<=parseInt(i)}},min:{fn:function(t,i){return!t||("checkbox"===this.type?x(this)>=parseInt(i):parseFloat(t)>=parseFloat(i))}},minlength:{fn:function(t,i){return!t||t.length>=parseInt(i)}},number:{fn:function(t){return!t||!isNaN(parseFloat(t))},priority:2},required:{fn:function(t){return"radio"===this.type||"checkbox"===this.type?x(this):void 0!==t&&""!==t},priority:99,halt:!0}},F=function(t){this.config=GLSR.validationconfig,this.fields=[],this.form=t,this.form.setAttribute("novalidate",""),this.strings=GLSR.validationstrings,this.validateEvent=this.T.bind(this)};F.prototype={j:["required","max","maxlength","min","minlength","pattern"],O:"input:not([type^=hidden]):not([type^=submit]), select, textarea, [data-glsr-validate]",destroy:function(){for(this.F();this.fields.length;){var t=this.fields.shift();this.M(t.input),delete t.input.validation}},init:function(){var t=this;[].forEach.call(this.form.querySelectorAll(this.O),(function(i){t.fields.find((function(t){return t.input.name===i.name}))||"none"!==i.closest(_(t.config.field)).style.display&&t.fields.push(t.C(i))}))},A:function(t){t.addEventListener(this.D(t),this.validateEvent)},N:function(t,i,n){[].forEach.call(t,function(t){var e=t.name.replace("data-","");~this.j.indexOf(e)?this.q(i,n,e,t.value):"type"===t.name&&this.q(i,n,t.value)}.bind(this))},q:function(t,i,n,e){if(E[n]&&(E[n].name=n,t.push(E[n]),e)){var s=e.split(",");s.unshift(null),i[n]=s}},T:function(t){this.I(t.currentTarget)},M:function(t){t.removeEventListener(this.D(t),this.validateEvent)},F:function(){for(var t in this.fields)if(this.fields.hasOwnProperty(t)){this.fields[t].errorElements=null;var i=this.fields[t].input.closest(_(this.config.field));R(this.fields[t].input,this.config.input_error,!1),R(this.fields[t].input,this.config.input_valid,!1),R(i,this.config.field_error,!1),R(i,this.config.field_valid,!1)}},D:function(t){return~["radio","checkbox"].indexOf(t.getAttribute("type"))||"SELECT"===t.nodeName?"change":"input"},C:function(t){var i={},n=[];return null!==t.offsetParent&&(this.N(t.attributes,n,i),this.P(n),this.A(t)),t.validation={form:this.form,input:t,params:i,validators:n}},H:function(t,i){var n=t.input.closest(_(this.config.field));if(R(t.input,this.config.input_error,i),R(t.input,this.config.input_valid,!i),n){R(n,this.config.field_error,i),R(n,this.config.field_valid,!i);var e=n.querySelector(_(this.config.field_message));e.innerHTML=i?t.errors.join("<br>"):"",e.style.display=i?"":"none"}},B:function(t,i){t.hasOwnProperty("validation")&&this.C(t),t.validation.errors=i},P:function(t){t.sort((function(t,i){return(i.priority||1)-(t.priority||1)}))},I:function(t){var i=!0,n=this.fields;for(var e in t instanceof HTMLElement&&(n=[t.validation]),n)if(n.hasOwnProperty(e)){var s=n[e];this.V(s)?this.H(s,!1):(i=!1,this.H(s,!0))}return i},V:function(t){var i=[],n=!0;for(var e in t.validators)if(t.validators.hasOwnProperty(e)){var s=t.validators[e],o=t.params[s.name]?t.params[s.name]:[];if(o[0]=t.input.value,!s.fn.apply(t.input,o)){n=!1;var r=this.strings[s.name];if(i.push(r.replace(/(\%s)/g,o[1])),!0===s.halt)break}}return t.errors=i,n}};var G=F,T=function(t,i){this.button=i,this.config=GLSR.validationconfig,this.events={submit:this.W.bind(this)},this.form=t,this.isActive=!1,this.recaptcha=new k(this),this.stars=null,this.strings=GLSR.validationstrings,this.useAjax=this.J(),this.validation=new G(t)};T.prototype={destroy:function(){this.destroyForm(),this.destroyRecaptcha(),this.destroyStarRatings(),this.isActive=!1},destroyForm:function(){this.form.removeEventListener("submit",this.events.submit),this.U(),this.validation.destroy()},destroyRecaptcha:function(){this.recaptcha.g()},destroyStarRatings:function(){this.stars&&this.stars.destroy()},init:function(){this.isActive||(this.initForm(),this.initStarRatings(),this.initRecaptcha(),this.isActive=!0)},initForm:function(){this.destroyForm(),this.form.addEventListener("submit",this.events.submit),this.validation.init()},initRecaptcha:function(){this.recaptcha.R()},initStarRatings:function(){null!==this.stars?this.stars.rebuild():this.stars=new(L())(this.form.querySelectorAll(".glsr-field-rating select"),GLSR.stars)},G:function(){this.button.setAttribute("disabled","")},p:function(){this.button.removeAttribute("disabled")},X:function(t,i){var n=!0===i;"unset"!==t.recaptcha?("reset"===t.recaptcha&&this.recaptcha.F(),n&&(this.recaptcha.F(),this.form.reset()),this.K(t.errors),this.Y(t.message,n),this.p(),GLSR.Event.trigger("site-reviews/form/handle",t,this.form),t.form=this.form,document.dispatchEvent(new CustomEvent("site-reviews/after/submission",{detail:t})),n&&""!==t.redirect&&(window.location=t.redirect)):this.recaptcha.k()},J:function(){var t=!0;return[].forEach.call(this.form.elements,(function(i){"file"===i.type&&(t=GLSR.ajax.isFileSupported()&&GLSR.ajax.isUploadSupported())})),t&&!this.form.classList.contains("no-ajax")},W:function(t){if(!this.validation.I())return t.preventDefault(),void this.Y(this.strings.errors,!1);this.U(),(this.form["g-recaptcha-response"]&&""===this.form["g-recaptcha-response"].value||this.useAjax)&&(t.preventDefault(),this.L())},U:function(){R(this.form,this.config.form_error,!1),this.Y("",null),this.validation.F()},K:function(t){if(t)for(var i in t)if(t.hasOwnProperty(i)){var n=GLSR.nameprefix?GLSR.nameprefix+"["+i+"]":i,e=this.form.querySelector('[name="'+n+'"]');e&&(this.validation.B(e,t[i]),this.validation.H(e.validation,"add"))}},Y:function(t,i){var n=this.form.querySelector(_(this.config.form_message));null!==n&&(R(this.form,this.config.form_error,!1===i),R(n,this.config.form_message_failed,!1===i),R(n,this.config.form_message_success,!0===i),n.innerHTML=t)},L:function(t){GLSR.ajax.isFormDataSupported()?(this.G(),this.form[GLSR.nameprefix+"[_counter]"].value=t||0,GLSR.ajax.post(this.form,this.X.bind(this))):this.Y(this.strings.unsupported,!1)}};var j=function(){for(;GLSR.forms.length;){(t=GLSR.forms.shift()).destroy()}var t,i,n;i=document.querySelectorAll("form.glsr-review-form");for(var e=0;e<i.length;e++)(n=i[e].querySelector("[type=submit]"))&&((t=new T(i[e],n)).init(),GLSR.forms.push(t))},O=j;function M(t){if(Array.isArray(t)){for(var i=0,n=Array(t.length);i<t.length;i++)n[i]=t[i];return n}return Array.from(t)}var C=!1;if("undefined"!=typeof window){var A={get passive(){C=!0}};window.addEventListener("testPassive",null,A),window.removeEventListener("testPassive",null,A)}var D="undefined"!=typeof window&&window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1),N=[],q=!1,I=-1,P=void 0,H=void 0,B=function(t){return N.some((function(i){return!(!i.options.allowTouchMove||!i.options.allowTouchMove(t))}))},V=function(t){var i=t||window.event;return!!B(i.target)||(i.touches.length>1||(i.preventDefault&&i.preventDefault(),!1))},W=function(t){if(void 0===H){var i=!!t&&!0===t.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;i&&n>0&&(H=document.body.style.paddingRight,document.body.style.paddingRight=n+"px")}void 0===P&&(P=document.body.style.overflow,document.body.style.overflow="hidden")},J=function(){void 0!==H&&(document.body.style.paddingRight=H,H=void 0),void 0!==P&&(document.body.style.overflow=P,P=void 0)},U=function(t){return!!t&&t.scrollHeight-t.scrollTop<=t.clientHeight},X=function(t,i){var n=t.targetTouches[0].clientY-I;return!B(t.target)&&(i&&0===i.scrollTop&&n>0||U(i)&&n<0?V(t):(t.stopPropagation(),!0))},K=function(t,i){if(t&&!N.some((function(i){return i.targetElement===t}))){var n={targetElement:t,options:i||{}};N=[].concat(M(N),[n]),D?(t.ontouchstart=function(t){1===t.targetTouches.length&&(I=t.targetTouches[0].clientY)},t.ontouchmove=function(i){1===i.targetTouches.length&&X(i,t)},q||(document.addEventListener("touchmove",V,C?{passive:!1}:void 0),q=!0)):W(i)}},Y=function(){D?(N.forEach((function(t){t.targetElement.ontouchstart=null,t.targetElement.ontouchmove=null})),q&&(document.removeEventListener("touchmove",V,C?{passive:!1}:void 0),q=!1),I=-1):J(),N=[]},$=["[contenteditable]",'[tabindex]:not([tabindex^="-"])',"a[href]","button:not([disabled]):not([aria-hidden])",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])"],z=function(){function t(i){var n=i.closeTrigger,e=void 0===n?"data-glsr-close":n,s=i.onClose,o=void 0===s?function(){}:s,r=i.onOpen,u=void 0===r?function(){}:r,h=i.openClass,a=void 0===h?"is-open":h,c=i.openTrigger,f=void 0===c?"data-glsr-trigger":c,l=i.targetModalId,d=void 0===l?"glsr-modal":l,m=i.triggers,w=void 0===m?[]:m;v()(this,t),this.modal=document.getElementById(d),this.config={openTrigger:f,closeTrigger:e,openClass:a,onOpen:u,onClose:o},this.events={mouseup:this.onClick.bind(this),keydown:this.onKeydown.bind(this),touchstart:this.onClick.bind(this)},w.length>0&&this.registerTriggers(w)}return w()(t,[{key:"addEventListeners",value:function(){this.eventListener(this.modal,"add",["mouseup","touchstart"]),this.eventListener(document,"add",["keydown"])}},{key:"closeModal",value:function(){var t=this,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;i&&(i.preventDefault(),i.stopPropagation()),this.modal.setAttribute("aria-hidden","true"),this.removeEventListeners(),Y(),this.activeElement&&this.activeElement.focus&&this.activeElement.focus();var n=function n(){t.modal.classList.remove(t.config.openClass),t.modal.removeEventListener("animationend",n,!1),t.config.onClose(t.modal,t.activeElement,i)};this.modal.addEventListener("animationend",n,!1)}},{key:"closeModalById",value:function(t){this.modal=document.getElementById(t),this.modal&&this.closeModal()}},{key:"eventListener",value:function(t,i,n){var e=this;n.forEach((function(n){return t[i+"EventListener"](n,e.events[n])}))}},{key:"getFocusableNodes",value:function(){var t=this.modal.querySelectorAll($);return Array.prototype.slice.call(t)}},{key:"onClick",value:function(t){t.target.hasAttribute(this.config.closeTrigger)&&this.closeModal(t)}},{key:"onKeydown",value:function(t){27===t.keyCode&&this.closeModal(t),9===t.keyCode&&this.retainFocus(t)}},{key:"openModal",value:function(){var t=this,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.activeElement=document.activeElement,i&&(i.preventDefault(),this.activeElement=i.currentTarget),this.config.onOpen(this.modal,this.activeElement,i),this.modal.setAttribute("aria-hidden","false"),this.modal.classList.add(this.config.openClass),K(this.modal.querySelector("[data-glsr-modal]")),this.addEventListeners();var n=function i(){t.modal.removeEventListener("animationend",i,!1),t.setFocusToFirstNode()};this.modal.addEventListener("animationend",n,!1)}},{key:"registerTriggers",value:function(t){var i=this;t.filter(Boolean).forEach((function(t){t.triggerModal&&t.removeEventListener("click",t.triggerModal),t.triggerModal=i.openModal.bind(i),t.addEventListener("click",t.triggerModal)}))}},{key:"removeEventListeners",value:function(){this.eventListener(this.modal,"remove",["mouseup","touchstart"]),this.eventListener(document,"remove",["keydown"])}},{key:"retainFocus",value:function(t){var i=this.getFocusableNodes();if(0!==i.length)if(i=i.filter((function(t){return null!==t.offsetParent})),this.modal.contains(document.activeElement)){var n=i.indexOf(document.activeElement);t.shiftKey&&0===n&&(i[i.length-1].focus(),t.preventDefault()),!t.shiftKey&&i.length>0&&n===i.length-1&&(i[0].focus(),t.preventDefault())}else i[0].focus()}},{key:"setFocusToFirstNode",value:function(){var t=this,i=this.getFocusableNodes();if(0!==i.length){var n=i.filter((function(i){return!i.hasAttribute(t.config.closeTrigger)}));n.length>0&&n[0].focus(),0===n.length&&i[0].focus()}}}]),t}(),Q={},Z=function(t){if(t)Q[t].closeModalById(t);else for(var i in Q)Q[i].closeModal()},tt=function(t,i){var n={};return t.forEach((function(t){var e=t.attributes[i].value;void 0===n[e]&&(n[e]=[]),n[e].push(t)})),n},it=function(t){var i=Object.assign({},{openTrigger:"data-glsr-trigger"},t),n=Array.prototype.slice.call(document.querySelectorAll("[".concat(i.openTrigger,"]"))),e=tt(n,i.openTrigger);return Object.keys(e).forEach((function(t){i.targetModalId=t,i.triggers=e[t],Q[t]=new z(i)})),Q},nt=function(t,i){var n=i||{};n.targetModalId=t,Q[t]&&Q[t].removeEventListeners(),Q[t]=new z(n),Q[t].openModal()},et={init:it,open:nt,close:Z},st={hideClass:"glsr-hide",linkSelector:"a.page-numbers",paginationSelector:".glsr-ajax-pagination",reviewsSelector:".glsr-reviews",scrollOffset:16,scrollTime:468},ot=function(){function t(i){v()(this,t),this.links=[],this.reviewsEl=i.querySelector(st.reviewsSelector),this.wrapperEl=i,this.init()}return w()(t,[{key:"init",value:function(){var t=this;this.links=this.wrapperEl.querySelectorAll("".concat(st.paginationSelector," ").concat(st.linkSelector)),this.links.length&&[].forEach.call(this.links,(function(i){i.dataset.ready||(i.addEventListener("click",t.onClick.bind(t,i)),i.dataset.ready=!0)}))}},{key:"onClick",value:function(t,i){var n=t.closest(st.paginationSelector);if(n){for(var e={},s=0,o=Object.keys(n.dataset);s<o.length;s++){var r=o[s],u=n.dataset[r];try{u=JSON.parse(u)}catch(t){}e["".concat(GLSR.nameprefix,"[atts][").concat(r,"]")]=u}e["".concat(GLSR.nameprefix,"[_action]")]="fetch-paged-reviews",e["".concat(GLSR.nameprefix,"[page]")]=i.currentTarget.dataset.page||"",e["".concat(GLSR.nameprefix,"[url]")]=i.currentTarget.href||"",this.wrapperEl.classList.add(st.hideClass),i.preventDefault(),GLSR.ajax.post(e,this.handleResponse.bind(this,i.currentTarget.href))}}},{key:"handleResponse",value:function(t,i,n){n?([].forEach.call(this.wrapperEl.querySelectorAll(st.paginationSelector),(function(t){t.innerHTML=i.pagination})),this.reviewsEl.innerHTML=i.reviews,this.scrollToTop(),this.init(),this.wrapperEl.classList.remove(st.hideClass),GLSR.urlparameter&&window.history.pushState(null,"",t),new y(this.reviewsEl),GLSR.Event.trigger("site-reviews/pagination/handle",i,this)):window.location=t}},{key:"scrollToTop",value:function(){var t=st.scrollOffset;[].forEach.call(GLSR.ajaxpagination,(function(i){var n=document.querySelector(i);n&&"fixed"===window.getComputedStyle(n).getPropertyValue("position")&&(t+=n.clientHeight)}));var i=this.reviewsEl.getBoundingClientRect().top-t;i>0||this.scrollStep({endY:i,offset:window.pageYOffset,startTime:window.performance.now(),startY:this.reviewsEl.scrollTop})}},{key:"scrollStep",value:function(t){var i=Math.min(1,(window.performance.now()-t.startTime)/st.scrollTime),n=.5*(1-Math.cos(Math.PI*i)),e=t.startY+(t.endY-t.startY)*n;window.scroll(0,t.offset+e),e!==t.endY&&window.requestAnimationFrame(this.scrollStep.bind(this,t))}}]),t}(),rt=function(){[].forEach.call(document.querySelectorAll(st.paginationSelector),(function(t){var i=t.closest(".glsr");i&&new ot(i)}))},ut=function(){var t="glsr-modal__content",i="glsr-modal__review";window.GLSR.Modal.init({onClose:function(n,e,s){n.querySelector("."+t).innerHTML="",n.classList.remove(i),GLSR.Event.trigger("site-reviews/modal/close",n,e,s)},onOpen:function(n,e,s){var o=e.closest(".glsr").cloneNode(!0),r=e.closest(".glsr-review").cloneNode(!0);o.innerHTML="",o.appendChild(r),n.querySelector("."+t).appendChild(o),n.classList.add(i),GLSR.Event.trigger("site-reviews/modal/open",n,e,s)},openTrigger:"data-excerpt-trigger"})},ht=function(){[].forEach.call(document.querySelectorAll(".glsr"),(function(t){var i="glsr-"+window.getComputedStyle(t,null).getPropertyValue("direction");t.classList.add(i)})),new y,new O,rt()};window.hasOwnProperty("GLSR")||(window.GLSR={}),window.GLSR.ajax=new r,window.GLSR.forms=[],window.GLSR.Event=l,window.GLSR.Forms=O,window.GLSR.Modal=et,l.on("site-reviews/init",ht),l.on("site-reviews/excerpts/init",ut),document.addEventListener("DOMContentLoaded",(function(){l.trigger("site-reviews/init")}))},113:function(){},4030:function(){},6966:function(){},83:function(){},7649:function(){},3408:function(){},529:function(){},2275:function(){},2872:function(){},8865:function(){},4835:function(){},6786:function(){},1045:function(){},3622:function(){},2688:function(){},8340:function(){},3961:function(){},853:function(){},1273:function(){},5651:function(){},7730:function(){},3382:function(){},4747:function(){},4605:function(){},3963:function(){},5406:function(){},6829:function(){},6273:function(){},4518:function(){},6963:function(){},9449:function(t){"use strict";function i(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function n(t,i){for(var n=0;n<i.length;n++){var e=i[n];e.enumerable=e.enumerable||!1,e.configurable=!0,"value"in e&&(e.writable=!0),Object.defineProperty(t,e.key,e)}}function e(t,i,e){return i&&n(t.prototype,i),e&&n(t,e),t}var s={classNames:{active:"gl-active",base:"gl-star-rating",selected:"gl-selected"},clearable:!0,maxStars:10,prebuilt:!1,stars:null,tooltip:"Select a Rating"},o=function(t,i,n){t.classList[i?"add":"remove"](n)},r=function(t){var i=document.createElement("span");for(var n in t=t||{})i.setAttribute(n,t[n]);return i},u=function(t,i,n){var e=r(n);return t.parentNode.insertBefore(e,i?t.nextSibling:t),e},h=function t(){for(var i=arguments.length,n=new Array(i),e=0;e<i;e++)n[e]=arguments[e];var s={};return n.forEach((function(i){Object.keys(i||{}).forEach((function(e){if(void 0!==n[0][e]){var o=i[e];"Object"!==a(o)||"Object"!==a(s[e])?s[e]=o:s[e]=t(s[e],o)}}))})),s},a=function(t){return{}.toString.call(t).slice(8,-1)},c=function(){function t(n,e){var s,o;i(this,t),this.direction=window.getComputedStyle(n,null).getPropertyValue("direction"),this.el=n,this.events={change:this.onChange.bind(this),keydown:this.onKeyDown.bind(this),mousedown:this.onPointerDown.bind(this),mouseleave:this.onPointerLeave.bind(this),mousemove:this.onPointerMove.bind(this),reset:this.onReset.bind(this),touchend:this.onPointerDown.bind(this),touchmove:this.onPointerMove.bind(this)},this.indexActive=null,this.indexSelected=null,this.props=e,this.tick=null,this.ticking=!1,this.values=function(t){var i=[];return[].forEach.call(t.options,(function(t){var n=parseInt(t.value,10)||0;n>0&&i.push({index:t.index,text:t.text,value:n})})),i.sort((function(t,i){return t.value-i.value}))}(n),this.widgetEl=null,this.el.widget&&this.el.widget.destroy(),s=this.values.length,o=this.props.maxStars,/^\d+$/.test(s)&&1<=s&&s<=o?this.build():this.destroy()}return e(t,[{key:"build",value:function(){this.destroy(),this.buildWidget(),this.selectValue(this.indexSelected=this.selected(),!1),this.handleEvents("add"),this.el.widget=this}},{key:"buildWidget",value:function(){var t,i,n=this;this.props.prebuilt?(t=this.el.parentNode,i=t.querySelector("."+this.props.classNames.base+"--stars")):((t=u(this.el,!1,{class:this.props.classNames.base})).appendChild(this.el),i=u(this.el,!0,{class:this.props.classNames.base+"--stars"}),this.values.forEach((function(t,e){var s=r({"data-index":e,"data-value":t.value});"function"==typeof n.props.stars&&n.props.stars.call(n,s,t,e),[].forEach.call(s.children,(function(t){return t.style.pointerEvents="none"})),i.innerHTML+=s.outerHTML}))),t.dataset.starRating="",t.classList.add(this.props.classNames.base+"--"+this.direction),this.props.tooltip&&i.setAttribute("role","tooltip"),this.widgetEl=i}},{key:"changeIndexTo",value:function(t,i){var n=this;if(this.indexActive!==t||i){if([].forEach.call(this.widgetEl.children,(function(i,e){o(i,e<=t,n.props.classNames.active),o(i,e===n.indexSelected,n.props.classNames.selected)})),"function"==typeof this.props.stars||this.props.prebuilt||(this.widgetEl.classList.remove("s"+10*(this.indexActive+1)),this.widgetEl.classList.add("s"+10*(t+1))),this.props.tooltip){var e=t<0?this.props.tooltip:this.values[t].text;this.widgetEl.setAttribute("aria-label",e)}this.indexActive=t}this.ticking=!1}},{key:"destroy",value:function(){this.indexActive=null,this.indexSelected=this.selected();var t=this.el.parentNode;t.classList.contains(this.props.classNames.base)&&(this.props.prebuilt?(this.widgetEl=t.querySelector("."+this.props.classNames.base+"--stars"),t.classList.remove(this.props.classNames.base+"--"+this.direction),delete t.dataset.starRating):t.parentNode.replaceChild(this.el,t),this.handleEvents("remove")),delete this.el.widget}},{key:"eventListener",value:function(t,i,n,e){var s=this;n.forEach((function(n){return t[i+"EventListener"](n,s.events[n],e||!1)}))}},{key:"handleEvents",value:function(t){var i=this.el.closest("form");i&&"FORM"===i.tagName&&this.eventListener(i,t,["reset"]),this.eventListener(this.el,t,["change"]),"add"===t&&this.el.disabled||(this.eventListener(this.el,t,["keydown"]),this.eventListener(this.widgetEl,t,["mousedown","mouseleave","mousemove","touchend","touchmove"],!1))}},{key:"indexFromEvent",value:function(t){var i,n,e=(null===(i=t.touches)||void 0===i?void 0:i[0])||(null===(n=t.changedTouches)||void 0===n?void 0:n[0])||t,s=document.elementFromPoint(e.clientX,e.clientY);return[].slice.call(s.parentNode.children).indexOf(s)}},{key:"onChange",value:function(){this.changeIndexTo(this.selected(),!0)}},{key:"onKeyDown",value:function(t){var i=t.key.slice(5);if(~["Left","Right"].indexOf(i)){var n="Left"===i?-1:1;"rtl"===this.direction&&(n*=-1);var e=this.values.length-1,s=Math.min(Math.max(this.selected()+n,-1),e);this.selectValue(s,!0)}}},{key:"onPointerDown",value:function(t){t.preventDefault();var i=this.indexFromEvent(t);this.props.clearable&&i===this.indexSelected&&(i=-1),this.selectValue(i,!0)}},{key:"onPointerLeave",value:function(t){var i=this;t.preventDefault(),cancelAnimationFrame(this.tick),requestAnimationFrame((function(){return i.changeIndexTo(i.indexSelected)}))}},{key:"onPointerMove",value:function(t){var i=this;t.preventDefault(),this.ticking||(this.tick=requestAnimationFrame((function(){return i.changeIndexTo(i.indexFromEvent(t))})),this.ticking=!0)}},{key:"onReset",value:function(){var t;this.selectValue((null===(t=this.el.querySelector("[selected]"))||void 0===t?void 0:t.index)||-1,!1)}},{key:"selected",value:function(){var t=this;return this.values.findIndex((function(i){return i.value===+t.el.value}))}},{key:"selectValue",value:function(t,i){var n;this.el.value=(null===(n=this.values[t])||void 0===n?void 0:n.value)||"",this.indexSelected=this.selected(),!1===i?this.changeIndexTo(this.selected(),!0):this.el.dispatchEvent(new Event("change"))}}]),t}(),f=function(){function t(n,e){i(this,t),this.destroy=this.destroy.bind(this),this.rebuild=this.rebuild.bind(this),this.widgets=[],this.buildWidgets(n,e)}return e(t,[{key:"buildWidgets",value:function(t,i){var n=this;this.queryElements(t).forEach((function(t){var e=h(s,i,JSON.parse(t.getAttribute("data-options")));"SELECT"!==t.tagName||t.widget||(!e.prebuilt&&t.parentNode.classList.contains(e.classNames.base)&&n.unwrap(t),n.widgets.push(new c(t,e)))}))}},{key:"destroy",value:function(){this.widgets.forEach((function(t){return t.destroy()}))}},{key:"queryElements",value:function(t){return"HTMLSelectElement"===a(t)?[t]:"NodeList"===a(t)?[].slice.call(t):"String"===a(t)?[].slice.call(document.querySelectorAll(t)):[]}},{key:"rebuild",value:function(){this.widgets.forEach((function(t){return t.build()}))}},{key:"unwrap",value:function(t){var i=t.parentNode,n=i.parentNode;n.insertBefore(t,i),n.removeChild(i)}}]),t}();t.exports=f}},i={};function n(e){if(i[e])return i[e].exports;var s=i[e]={exports:{}};return t[e](s,s.exports,n),s.exports}n.m=t,n.x=function(){},n.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(i,{a:i}),i},n.d=function(t,i){for(var e in i)n.o(i,e)&&!n.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:i[e]})},n.o=function(t,i){return Object.prototype.hasOwnProperty.call(t,i)},function(){var t={341:0},i=[[7401],[5406],[6829],[6273],[4518],[6963],[113],[4030],[6966],[83],[7649],[3408],[529],[2275],[2872],[8865],[4835],[6786],[1045],[3622],[2688],[8340],[3961],[853],[1273],[5651],[7730],[3382],[4747],[4605],[3963]],e=function(){},s=function(s,o){for(var r,u,h=o[0],a=o[1],c=o[2],f=o[3],l=0,d=[];l<h.length;l++)u=h[l],n.o(t,u)&&t[u]&&d.push(t[u][0]),t[u]=0;for(r in a)n.o(a,r)&&(n.m[r]=a[r]);for(c&&c(n),s&&s(o);d.length;)d.shift()();return f&&i.push.apply(i,f),e()},o=self.webpackChunk=self.webpackChunk||[];function r(){for(var e,s=0;s<i.length;s++){for(var o=i[s],r=!0,u=1;u<o.length;u++){var h=o[u];0!==t[h]&&(r=!1)}r&&(i.splice(s--,1),e=n(n.s=o[0]))}return 0===i.length&&(n.x(),n.x=function(){}),e}o.forEach(s.bind(null,0)),o.push=s.bind(null,o.push.bind(o));var u=n.x;n.x=function(){return n.x=u||function(){},(e=r)()}}(),n.x()}();
1
+ !function(){"use strict";var t,i={237:function(t,i,n){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var s=function(){};s.prototype={get:function(t,i,n){this.t(i),this.xhr.open("GET",t,!0),this.xhr.responseType="text",this.i(n),this.xhr.send()},u:function(t){return"json"===this.xhr.responseType||!0===this.xhr.json?t({message:this.xhr.statusText},!1):"text"===this.xhr.responseType?t(this.xhr.statusText):void 0},h:function(t){if(0===this.xhr.status||this.xhr.status>=200&&this.xhr.status<300||304===this.xhr.status){if("json"===this.xhr.responseType)return t(this.xhr.response.data,this.xhr.response.success);if("text"===this.xhr.responseType)return t(this.xhr.responseText);if(!0===this.xhr.json){var i=JSON.parse(this.xhr.response);return t(i.data,i.success)}}else this.u(t)},isFileSupported:function(){var t=document.createElement("INPUT");return t.type="file","files"in t},isFormDataSupported:function(){return!!window.FormData},isUploadSupported:function(){var t=new XMLHttpRequest;return!!(t&&"upload"in t&&"onprogress"in t.upload)},post:function(t,i,n){this.t(i),this.xhr.open("POST",GLSR.ajaxurl,!0),this.xhr.responseType="json",this.xhr.json=!0,this.i(n),this.xhr.send(this.l(t))},t:function(t){this.xhr=new XMLHttpRequest,this.xhr.onload=this.h.bind(this,t),this.xhr.onerror=this.u.bind(this,t)},v:function(t,i,n){return"object"!==e(i)||i instanceof Date||i instanceof File?t.append(n,i||""):Object.keys(i).forEach(function(e){i.hasOwnProperty(e)&&(t=this.v(t,i[e],n?n[e]:e))}.bind(this)),t},l:function(t){var i=new FormData,n=Object.prototype.toString.call(t);return"[object FormData]"===n&&(i=t),"[object HTMLFormElement]"===n&&(i=new FormData(t)),"[object Object]"===n&&Object.keys(t).forEach((function(n){i.append(n,t[n])})),i.append("action",GLSR.action),i.append("_ajax_request",!0),i},i:function(t){for(var i in(t=t||{})["X-Requested-With"]="XMLHttpRequest",t)t.hasOwnProperty(i)&&this.xhr.setRequestHeader(i,t[i])}};var o=s,r={},u=function(t,i){var n=r[t]||[],e=[];i&&[].forEach.call(n,(function(t){i!==t.fn&&i!==t.fn.once&&e.push(t)})),e.length?r[t]=e:delete r[t]},h=function(t,i,n){(r[t]||(r[t]=[])).push({fn:i,context:n})},a=function(t,i,n){var e=arguments,s=function s(){u(t,s),i.apply(n,e)};s.once=i,h(t,s,n)},c=function(t){var i=[].slice.call(arguments,1),n=(r[t]||[]).slice();[].forEach.call(n,(function(t){return t.fn.apply(t.context,i)}))},f={events:r,trigger:c,off:u,on:h,once:a};function d(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function l(t,i){for(var n=0;n<i.length;n++){var e=i[n];e.enumerable=e.enumerable||!1,e.configurable=!0,"value"in e&&(e.writable=!0),Object.defineProperty(t,e.key,e)}}function v(t,i,n){return i&&l(t.prototype,i),n&&l(t,n),t}var m={hiddenClass:"glsr-hidden",hiddenTextSelector:".glsr-hidden-text",readMoreClass:"glsr-read-more",visibleClass:"glsr-visible"},w=function(){function t(i){var n=this;d(this,t);var e=(i||document).querySelectorAll(m.hiddenTextSelector);[].forEach.call(e,(function(t){return n.init(t)})),GLSR.Event.trigger("site-reviews/excerpts/init",i)}return v(t,[{key:"init",value:function(t){if(!t.parentNode.querySelector("."+m.readMoreClass)){var i=t.dataset.trigger,n=document.createElement("span"),e=document.createElement("a");e.setAttribute("href","#"),e.innerHTML=t.dataset.showMore,"excerpt"===i&&(e.addEventListener("click",this.onClick.bind(this)),e.setAttribute("data-text",t.dataset.showLess)),"modal"===i&&e.setAttribute("data-excerpt-trigger","glsr-modal"),n.setAttribute("class",m.readMoreClass),n.appendChild(e),t.parentNode.insertBefore(n,t.nextSibling)}}},{key:"onClick",value:function(t){t.preventDefault();var i=t.currentTarget,n=i.parentNode.previousSibling,e=i.dataset.text;n.classList.toggle(m.hiddenClass),n.classList.toggle(m.visibleClass),i.dataset.text=i.innerText,i.innerText=e}}]),t}(),p=w,g=function(t){this.Form=t,this.counter=0,this.id=-1,this.is_submitting=!1,this.recaptchaEl=t.form.querySelector(".glsr-recaptcha-holder"),this.observer=new MutationObserver(function(t){var i=t.pop();i.target&&"visible"!==i.target.style.visibility&&(this.observer.disconnect(),setTimeout(function(){this.is_submitting||this.Form.p()}.bind(this),250))}.bind(this))};g.prototype={g:function(){this.counter=0,this.id=-1,this.is_submitting=!1,this.recaptchaEl&&(this.recaptchaEl.innerHTML="")},k:function(){if(-1!==this.id)return this.counter=0,this.S(this.id),void grecaptcha.execute(this.id);setTimeout(function(){this.counter++,this.L.call(this.Form,this.counter)}.bind(this),1e3)},S:function(t){var i=window.___grecaptcha_cfg.clients[t];for(var n in i)if(i.hasOwnProperty(n)&&"[object String]"===Object.prototype.toString.call(i[n])){var e=document.querySelector("iframe[name=c-"+i[n]+"]");if(e){this.observer.observe(e.parentElement.parentElement,{attributeFilter:["style"],attributes:!0});break}}},R:function(){this.Form.form.onsubmit=null,this.g(),this._()},_:function(){this.recaptchaEl&&setTimeout(function(){if("undefined"==typeof grecaptcha||void 0===grecaptcha.render)return this._();this.id=grecaptcha.render(this.recaptchaEl,{callback:this.L.bind(this.Form,this.counter),"expired-callback":this.F.bind(this),isolated:!0},!0)}.bind(this),250)},F:function(){this.counter=0,this.is_submitting=!1,-1!==this.id&&grecaptcha.reset(this.id)},L:function(t){if(this.recaptcha.is_submitting=!0,!this.useAjax)return this.G(),void this.form.submit();this.L(t)}};var y=g,b=n(449),k=n.n(b),S=function(t,i,n){t&&i.split(" ").forEach((function(i){t.classList[n?"add":"remove"](i)}))},L=function(t){return"."+t.trim().split(" ").join(".")},R=function(t){var i='input[name="'+t.getAttribute("name")+'"]:checked';return t.validation.form.querySelectorAll(i).length},_={email:{fn:function(t){return!t||/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)}},max:{fn:function(t,i){return!t||("checkbox"===this.type?R(this)<=parseInt(i):parseFloat(t)<=parseFloat(i))}},maxlength:{fn:function(t,i){return!t||t.length<=parseInt(i)}},min:{fn:function(t,i){return!t||("checkbox"===this.type?R(this)>=parseInt(i):parseFloat(t)>=parseFloat(i))}},minlength:{fn:function(t,i){return!t||t.length>=parseInt(i)}},number:{fn:function(t){return!t||!isNaN(parseFloat(t))},priority:2},required:{fn:function(t){return"radio"===this.type||"checkbox"===this.type?R(this):void 0!==t&&""!==t},priority:99,halt:!0}},x=function(t){this.config=GLSR.validationconfig,this.fields=[],this.form=t,this.form.setAttribute("novalidate",""),this.strings=GLSR.validationstrings,this.validateEvent=this.T.bind(this)};x.prototype={M:["required","max","maxlength","min","minlength","pattern"],C:"input:not([type^=hidden]):not([type^=submit]), select, textarea, [data-glsr-validate]",destroy:function(){for(this.F();this.fields.length;){var t=this.fields.shift();this.A(t.input),delete t.input.validation}},init:function(){var t=this;[].forEach.call(this.form.querySelectorAll(this.C),(function(i){t.fields.find((function(t){return t.input.name===i.name}))||"none"!==i.closest(L(t.config.field)).style.display&&t.fields.push(t.D(i))}))},N:function(t){t.addEventListener(this.q(t),this.validateEvent)},I:function(t,i,n){[].forEach.call(t,function(t){var e=t.name.replace("data-","");~this.M.indexOf(e)?this.P(i,n,e,t.value):"type"===t.name&&this.P(i,n,t.value)}.bind(this))},P:function(t,i,n,e){if(_[n]&&(_[n].name=n,t.push(_[n]),e)){var s=e.split(",");s.unshift(null),i[n]=s}},T:function(t){this.H(t.currentTarget)},A:function(t){t.removeEventListener(this.q(t),this.validateEvent)},F:function(){for(var t in this.fields)if(this.fields.hasOwnProperty(t)){this.fields[t].errorElements=null;var i=this.fields[t].input.closest(L(this.config.field));S(this.fields[t].input,this.config.input_error,!1),S(this.fields[t].input,this.config.input_valid,!1),S(i,this.config.field_error,!1),S(i,this.config.field_valid,!1)}},q:function(t){return~["radio","checkbox"].indexOf(t.getAttribute("type"))||"SELECT"===t.nodeName?"change":"input"},D:function(t){var i={},n=[];return null!==t.offsetParent&&(this.I(t.attributes,n,i),this.B(n),this.N(t)),t.validation={form:this.form,input:t,params:i,validators:n}},V:function(t,i){var n=t.input.closest(L(this.config.field));if(S(t.input,this.config.input_error,i),S(t.input,this.config.input_valid,!i),n){S(n,this.config.field_error,i),S(n,this.config.field_valid,!i);var e=n.querySelector(L(this.config.field_message));e.innerHTML=i?t.errors.join("<br>"):"",e.style.display=i?"":"none"}},W:function(t,i){t.hasOwnProperty("validation")&&this.D(t),t.validation.errors=i},B:function(t){t.sort((function(t,i){return(i.priority||1)-(t.priority||1)}))},H:function(t){var i=!0,n=this.fields;for(var e in t instanceof HTMLElement&&(n=[t.validation]),n)if(n.hasOwnProperty(e)){var s=n[e];this.J(s)?this.V(s,!1):(i=!1,this.V(s,!0))}return i},J:function(t){var i=[],n=!0;for(var e in t.validators)if(t.validators.hasOwnProperty(e)){var s=t.validators[e],o=t.params[s.name]?t.params[s.name]:[];if(o[0]=t.input.value,!s.fn.apply(t.input,o)){n=!1;var r=this.strings[s.name];if(i.push(r.replace(/(\%s)/g,o[1])),!0===s.halt)break}}return t.errors=i,n}};var E=x,F=function(t,i){this.button=i,this.config=GLSR.validationconfig,this.events={submit:this.U.bind(this)},this.form=t,this.isActive=!1,this.recaptcha=new y(this),this.stars=null,this.strings=GLSR.validationstrings,this.useAjax=this.X(),this.validation=new E(t)};F.prototype={destroy:function(){this.destroyForm(),this.destroyRecaptcha(),this.destroyStarRatings(),this.isActive=!1},destroyForm:function(){this.form.removeEventListener("submit",this.events.submit),this.K(),this.validation.destroy()},destroyRecaptcha:function(){this.recaptcha.g()},destroyStarRatings:function(){this.stars&&this.stars.destroy()},init:function(){this.isActive||(this.initForm(),this.initStarRatings(),this.initRecaptcha(),this.isActive=!0)},initForm:function(){this.destroyForm(),this.form.addEventListener("submit",this.events.submit),this.validation.init()},initRecaptcha:function(){this.recaptcha.R()},initStarRatings:function(){null!==this.stars?this.stars.rebuild():this.stars=new(k())(this.form.querySelectorAll(".glsr-field-rating select"),GLSR.stars)},G:function(){this.button.setAttribute("disabled","")},p:function(){this.button.removeAttribute("disabled")},Y:function(t,i){var n=!0===i;"unset"!==t.recaptcha?("reset"===t.recaptcha&&this.recaptcha.F(),n&&(this.recaptcha.F(),this.form.reset()),this.$(t.errors),this.Z(t.message,n),this.p(),GLSR.Event.trigger("site-reviews/form/handle",t,this.form),t.form=this.form,document.dispatchEvent(new CustomEvent("site-reviews/after/submission",{detail:t})),n&&""!==t.redirect&&(window.location=t.redirect)):this.recaptcha.k()},X:function(){var t=!0;return[].forEach.call(this.form.elements,(function(i){"file"===i.type&&(t=GLSR.ajax.isFileSupported()&&GLSR.ajax.isUploadSupported())})),t&&!this.form.classList.contains("no-ajax")},U:function(t){if(!this.validation.H())return t.preventDefault(),void this.Z(this.strings.errors,!1);this.K(),(this.form["g-recaptcha-response"]&&""===this.form["g-recaptcha-response"].value||this.useAjax)&&(t.preventDefault(),this.L())},K:function(){S(this.form,this.config.form_error,!1),this.Z("",null),this.validation.F()},$:function(t){if(t)for(var i in t)if(t.hasOwnProperty(i)){var n=GLSR.nameprefix?GLSR.nameprefix+"["+i+"]":i,e=this.form.querySelector('[name="'+n+'"]');e&&(this.validation.W(e,t[i]),this.validation.V(e.validation,"add"))}},Z:function(t,i){var n=this.form.querySelector(L(this.config.form_message));null!==n&&(S(this.form,this.config.form_error,!1===i),S(n,this.config.form_message_failed,!1===i),S(n,this.config.form_message_success,!0===i),n.innerHTML=t)},L:function(t){GLSR.ajax.isFormDataSupported()?(this.G(),this.form[GLSR.nameprefix+"[_counter]"].value=t||0,GLSR.ajax.post(this.form,this.Y.bind(this))):this.Z(this.strings.unsupported,!1)}};var G=function(){for(;GLSR.forms.length;){(t=GLSR.forms.shift()).destroy()}var t,i,n;i=document.querySelectorAll("form.glsr-review-form");for(var e=0;e<i.length;e++)(n=i[e].querySelector("[type=submit]"))&&((t=new F(i[e],n)).init(),GLSR.forms.push(t))},T=G;function j(t){if(Array.isArray(t)){for(var i=0,n=Array(t.length);i<t.length;i++)n[i]=t[i];return n}return Array.from(t)}var O=!1;if("undefined"!=typeof window){var M={get passive(){O=!0}};window.addEventListener("testPassive",null,M),window.removeEventListener("testPassive",null,M)}var C="undefined"!=typeof window&&window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1),A=[],D=!1,N=-1,q=void 0,I=void 0,P=function(t){return A.some((function(i){return!(!i.options.allowTouchMove||!i.options.allowTouchMove(t))}))},H=function(t){var i=t||window.event;return!!P(i.target)||(i.touches.length>1||(i.preventDefault&&i.preventDefault(),!1))},B=function(t){if(void 0===I){var i=!!t&&!0===t.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;i&&n>0&&(I=document.body.style.paddingRight,document.body.style.paddingRight=n+"px")}void 0===q&&(q=document.body.style.overflow,document.body.style.overflow="hidden")},V=function(){void 0!==I&&(document.body.style.paddingRight=I,I=void 0),void 0!==q&&(document.body.style.overflow=q,q=void 0)},W=function(t){return!!t&&t.scrollHeight-t.scrollTop<=t.clientHeight},J=function(t,i){var n=t.targetTouches[0].clientY-N;return!P(t.target)&&(i&&0===i.scrollTop&&n>0||W(i)&&n<0?H(t):(t.stopPropagation(),!0))},U=function(t,i){if(t&&!A.some((function(i){return i.targetElement===t}))){var n={targetElement:t,options:i||{}};A=[].concat(j(A),[n]),C?(t.ontouchstart=function(t){1===t.targetTouches.length&&(N=t.targetTouches[0].clientY)},t.ontouchmove=function(i){1===i.targetTouches.length&&J(i,t)},D||(document.addEventListener("touchmove",H,O?{passive:!1}:void 0),D=!0)):B(i)}},X=function(){C?(A.forEach((function(t){t.targetElement.ontouchstart=null,t.targetElement.ontouchmove=null})),D&&(document.removeEventListener("touchmove",H,O?{passive:!1}:void 0),D=!1),N=-1):V(),A=[]},K=["[contenteditable]",'[tabindex]:not([tabindex^="-"])',"a[href]","button:not([disabled]):not([aria-hidden])",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])"],Y=function(){function t(i){var n=i.closeTrigger,e=void 0===n?"data-glsr-close":n,s=i.onClose,o=void 0===s?function(){}:s,r=i.onOpen,u=void 0===r?function(){}:r,h=i.openClass,a=void 0===h?"is-open":h,c=i.openTrigger,f=void 0===c?"data-glsr-trigger":c,l=i.targetModalId,v=void 0===l?"glsr-modal":l,m=i.triggers,w=void 0===m?[]:m;d(this,t),this.modal=document.getElementById(v),this.config={openTrigger:f,closeTrigger:e,openClass:a,onOpen:u,onClose:o},this.events={mouseup:this.onClick.bind(this),keydown:this.onKeydown.bind(this),touchstart:this.onClick.bind(this)},w.length>0&&this.registerTriggers(w)}return v(t,[{key:"addEventListeners",value:function(){this.eventListener(this.modal,"add",["mouseup","touchstart"]),this.eventListener(document,"add",["keydown"])}},{key:"closeModal",value:function(){var t=this,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;i&&(i.preventDefault(),i.stopPropagation()),this.modal.setAttribute("aria-hidden","true"),this.removeEventListeners(),X(),this.activeElement&&this.activeElement.focus&&this.activeElement.focus();var n=function n(){t.modal.classList.remove(t.config.openClass),t.modal.removeEventListener("animationend",n,!1),t.config.onClose(t.modal,t.activeElement,i)};this.modal.addEventListener("animationend",n,!1)}},{key:"closeModalById",value:function(t){this.modal=document.getElementById(t),this.modal&&this.closeModal()}},{key:"eventListener",value:function(t,i,n){var e=this;n.forEach((function(n){return t[i+"EventListener"](n,e.events[n])}))}},{key:"getFocusableNodes",value:function(){var t=this.modal.querySelectorAll(K);return Array.prototype.slice.call(t)}},{key:"onClick",value:function(t){t.target.hasAttribute(this.config.closeTrigger)&&this.closeModal(t)}},{key:"onKeydown",value:function(t){27===t.keyCode&&this.closeModal(t),9===t.keyCode&&this.retainFocus(t)}},{key:"openModal",value:function(){var t=this,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.activeElement=document.activeElement,i&&(i.preventDefault(),this.activeElement=i.currentTarget),this.config.onOpen(this.modal,this.activeElement,i),this.modal.setAttribute("aria-hidden","false"),this.modal.classList.add(this.config.openClass),U(this.modal.querySelector("[data-glsr-modal]")),this.addEventListeners();var n=function i(){t.modal.removeEventListener("animationend",i,!1),t.setFocusToFirstNode()};this.modal.addEventListener("animationend",n,!1)}},{key:"registerTriggers",value:function(t){var i=this;t.filter(Boolean).forEach((function(t){t.triggerModal&&t.removeEventListener("click",t.triggerModal),t.triggerModal=i.openModal.bind(i),t.addEventListener("click",t.triggerModal)}))}},{key:"removeEventListeners",value:function(){this.eventListener(this.modal,"remove",["mouseup","touchstart"]),this.eventListener(document,"remove",["keydown"])}},{key:"retainFocus",value:function(t){var i=this.getFocusableNodes();if(0!==i.length)if(i=i.filter((function(t){return null!==t.offsetParent})),this.modal.contains(document.activeElement)){var n=i.indexOf(document.activeElement);t.shiftKey&&0===n&&(i[i.length-1].focus(),t.preventDefault()),!t.shiftKey&&i.length>0&&n===i.length-1&&(i[0].focus(),t.preventDefault())}else i[0].focus()}},{key:"setFocusToFirstNode",value:function(){var t=this,i=this.getFocusableNodes();if(0!==i.length){var n=i.filter((function(i){return!i.hasAttribute(t.config.closeTrigger)}));n.length>0&&n[0].focus(),0===n.length&&i[0].focus()}}}]),t}(),$={},z=function(t){if(t)$[t].closeModalById(t);else for(var i in $)$[i].closeModal()},Q=function(t,i){var n={};return t.forEach((function(t){var e=t.attributes[i].value;void 0===n[e]&&(n[e]=[]),n[e].push(t)})),n},Z=function(t){var i=Object.assign({},{openTrigger:"data-glsr-trigger"},t),n=Array.prototype.slice.call(document.querySelectorAll("[".concat(i.openTrigger,"]"))),e=Q(n,i.openTrigger);return Object.keys(e).forEach((function(t){i.targetModalId=t,i.triggers=e[t],$[t]=new Y(i)})),$},tt=function(t,i){var n=i||{};n.targetModalId=t,$[t]&&$[t].removeEventListeners(),$[t]=new Y(n),$[t].openModal()},it={init:Z,open:tt,close:z},nt={hideClass:"glsr-hide",linkSelector:"a.page-numbers",paginationSelector:".glsr-ajax-pagination",reviewsSelector:".glsr-reviews",scrollOffset:16,scrollTime:468},et=function(){function t(i){d(this,t),this.links=[],this.reviewsEl=i.querySelector(nt.reviewsSelector),this.wrapperEl=i,this.init()}return v(t,[{key:"init",value:function(){var t=this;this.links=this.wrapperEl.querySelectorAll("".concat(nt.paginationSelector," ").concat(nt.linkSelector)),this.links.length&&[].forEach.call(this.links,(function(i){i.dataset.ready||(i.addEventListener("click",t.onClick.bind(t,i)),i.dataset.ready=!0)}))}},{key:"onClick",value:function(t,i){var n=t.closest(nt.paginationSelector);if(n){for(var e={},s=0,o=Object.keys(n.dataset);s<o.length;s++){var r=o[s],u=n.dataset[r];try{u=JSON.parse(u)}catch(t){}e["".concat(GLSR.nameprefix,"[atts][").concat(r,"]")]=u}e["".concat(GLSR.nameprefix,"[_action]")]="fetch-paged-reviews",e["".concat(GLSR.nameprefix,"[page]")]=i.currentTarget.dataset.page||"",e["".concat(GLSR.nameprefix,"[url]")]=i.currentTarget.href||"",this.wrapperEl.classList.add(nt.hideClass),i.preventDefault(),GLSR.ajax.post(e,this.handleResponse.bind(this,i.currentTarget.href))}}},{key:"handleResponse",value:function(t,i,n){n?([].forEach.call(this.wrapperEl.querySelectorAll(nt.paginationSelector),(function(t){t.innerHTML=i.pagination})),this.reviewsEl.innerHTML=i.reviews,this.scrollToTop(),this.init(),this.wrapperEl.classList.remove(nt.hideClass),GLSR.urlparameter&&window.history.pushState(null,"",t),new p(this.reviewsEl),GLSR.Event.trigger("site-reviews/pagination/handle",i,this)):window.location=t}},{key:"scrollToTop",value:function(){var t=nt.scrollOffset;[].forEach.call(GLSR.ajaxpagination,(function(i){var n=document.querySelector(i);n&&"fixed"===window.getComputedStyle(n).getPropertyValue("position")&&(t+=n.clientHeight)}));var i=this.reviewsEl.getBoundingClientRect().top-t;i>0||this.scrollStep({endY:i,offset:window.pageYOffset,startTime:window.performance.now(),startY:this.reviewsEl.scrollTop})}},{key:"scrollStep",value:function(t){var i=Math.min(1,(window.performance.now()-t.startTime)/nt.scrollTime),n=.5*(1-Math.cos(Math.PI*i)),e=t.startY+(t.endY-t.startY)*n;window.scroll(0,t.offset+e),e!==t.endY&&window.requestAnimationFrame(this.scrollStep.bind(this,t))}}]),t}(),st=function(){[].forEach.call(document.querySelectorAll(nt.paginationSelector),(function(t){var i=t.closest(".glsr");i&&new et(i)}))},ot=function(){var t="glsr-modal__content",i="glsr-modal__review";window.GLSR.Modal.init({onClose:function(n,e,s){n.querySelector("."+t).innerHTML="",n.classList.remove(i),GLSR.Event.trigger("site-reviews/modal/close",n,e,s)},onOpen:function(n,e,s){var o=e.closest(".glsr").cloneNode(!0),r=e.closest(".glsr-review").cloneNode(!0);o.innerHTML="",o.appendChild(r),n.querySelector("."+t).appendChild(o),n.classList.add(i),GLSR.Event.trigger("site-reviews/modal/open",n,e,s)},openTrigger:"data-excerpt-trigger"})},rt=function(){[].forEach.call(document.querySelectorAll(".glsr"),(function(t){var i="glsr-"+window.getComputedStyle(t,null).getPropertyValue("direction");t.classList.add(i)})),new p,new T,st()};window.hasOwnProperty("GLSR")||(window.GLSR={}),window.GLSR.ajax=new o,window.GLSR.forms=[],window.GLSR.Event=f,window.GLSR.Forms=T,window.GLSR.Modal=it,f.on("site-reviews/init",rt),f.on("site-reviews/excerpts/init",ot),document.addEventListener("DOMContentLoaded",(function(){f.trigger("site-reviews/init")}))},113:function(){},30:function(){},966:function(){},83:function(){},649:function(){},408:function(){},529:function(){},275:function(){},872:function(){},865:function(){},835:function(){},786:function(){},45:function(){},622:function(){},688:function(){},340:function(){},961:function(){},853:function(){},712:function(){},651:function(){},730:function(){},382:function(){},747:function(){},605:function(){},410:function(){},406:function(){},829:function(){},273:function(){},518:function(){},963:function(){},449:function(t){function i(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function n(t,i){for(var n=0;n<i.length;n++){var e=i[n];e.enumerable=e.enumerable||!1,e.configurable=!0,"value"in e&&(e.writable=!0),Object.defineProperty(t,e.key,e)}}function e(t,i,e){return i&&n(t.prototype,i),e&&n(t,e),t}var s={classNames:{active:"gl-active",base:"gl-star-rating",selected:"gl-selected"},clearable:!0,maxStars:10,prebuilt:!1,stars:null,tooltip:"Select a Rating"},o=function(t,i,n){t.classList[i?"add":"remove"](n)},r=function(t){var i=document.createElement("span");for(var n in t=t||{})i.setAttribute(n,t[n]);return i},u=function(t,i,n){var e=r(n);return t.parentNode.insertBefore(e,i?t.nextSibling:t),e},h=function t(){for(var i=arguments.length,n=new Array(i),e=0;e<i;e++)n[e]=arguments[e];var s={};return n.forEach((function(i){Object.keys(i||{}).forEach((function(e){if(void 0!==n[0][e]){var o=i[e];"Object"!==a(o)||"Object"!==a(s[e])?s[e]=o:s[e]=t(s[e],o)}}))})),s},a=function(t){return{}.toString.call(t).slice(8,-1)},c=function(){function t(n,e){var s,o;i(this,t),this.direction=window.getComputedStyle(n,null).getPropertyValue("direction"),this.el=n,this.events={change:this.onChange.bind(this),keydown:this.onKeyDown.bind(this),mousedown:this.onPointerDown.bind(this),mouseleave:this.onPointerLeave.bind(this),mousemove:this.onPointerMove.bind(this),reset:this.onReset.bind(this),touchend:this.onPointerDown.bind(this),touchmove:this.onPointerMove.bind(this)},this.indexActive=null,this.indexSelected=null,this.props=e,this.tick=null,this.ticking=!1,this.values=function(t){var i=[];return[].forEach.call(t.options,(function(t){var n=parseInt(t.value,10)||0;n>0&&i.push({index:t.index,text:t.text,value:n})})),i.sort((function(t,i){return t.value-i.value}))}(n),this.widgetEl=null,this.el.widget&&this.el.widget.destroy(),s=this.values.length,o=this.props.maxStars,/^\d+$/.test(s)&&1<=s&&s<=o?this.build():this.destroy()}return e(t,[{key:"build",value:function(){this.destroy(),this.buildWidget(),this.selectValue(this.indexSelected=this.selected(),!1),this.handleEvents("add"),this.el.widget=this}},{key:"buildWidget",value:function(){var t,i,n=this;this.props.prebuilt?(t=this.el.parentNode,i=t.querySelector("."+this.props.classNames.base+"--stars")):((t=u(this.el,!1,{class:this.props.classNames.base})).appendChild(this.el),i=u(this.el,!0,{class:this.props.classNames.base+"--stars"}),this.values.forEach((function(t,e){var s=r({"data-index":e,"data-value":t.value});"function"==typeof n.props.stars&&n.props.stars.call(n,s,t,e),[].forEach.call(s.children,(function(t){return t.style.pointerEvents="none"})),i.innerHTML+=s.outerHTML}))),t.dataset.starRating="",t.classList.add(this.props.classNames.base+"--"+this.direction),this.props.tooltip&&i.setAttribute("role","tooltip"),this.widgetEl=i}},{key:"changeIndexTo",value:function(t,i){var n=this;if(this.indexActive!==t||i){if([].forEach.call(this.widgetEl.children,(function(i,e){o(i,e<=t,n.props.classNames.active),o(i,e===n.indexSelected,n.props.classNames.selected)})),"function"==typeof this.props.stars||this.props.prebuilt||(this.widgetEl.classList.remove("s"+10*(this.indexActive+1)),this.widgetEl.classList.add("s"+10*(t+1))),this.props.tooltip){var e=t<0?this.props.tooltip:this.values[t].text;this.widgetEl.setAttribute("aria-label",e)}this.indexActive=t}this.ticking=!1}},{key:"destroy",value:function(){this.indexActive=null,this.indexSelected=this.selected();var t=this.el.parentNode;t.classList.contains(this.props.classNames.base)&&(this.props.prebuilt?(this.widgetEl=t.querySelector("."+this.props.classNames.base+"--stars"),t.classList.remove(this.props.classNames.base+"--"+this.direction),delete t.dataset.starRating):t.parentNode.replaceChild(this.el,t),this.handleEvents("remove")),delete this.el.widget}},{key:"eventListener",value:function(t,i,n,e){var s=this;n.forEach((function(n){return t[i+"EventListener"](n,s.events[n],e||!1)}))}},{key:"handleEvents",value:function(t){var i=this.el.closest("form");i&&"FORM"===i.tagName&&this.eventListener(i,t,["reset"]),this.eventListener(this.el,t,["change"]),"add"===t&&this.el.disabled||(this.eventListener(this.el,t,["keydown"]),this.eventListener(this.widgetEl,t,["mousedown","mouseleave","mousemove","touchend","touchmove"],!1))}},{key:"indexFromEvent",value:function(t){var i,n,e=(null===(i=t.touches)||void 0===i?void 0:i[0])||(null===(n=t.changedTouches)||void 0===n?void 0:n[0])||t,s=document.elementFromPoint(e.clientX,e.clientY);return[].slice.call(s.parentNode.children).indexOf(s)}},{key:"onChange",value:function(){this.changeIndexTo(this.selected(),!0)}},{key:"onKeyDown",value:function(t){var i=t.key.slice(5);if(~["Left","Right"].indexOf(i)){var n="Left"===i?-1:1;"rtl"===this.direction&&(n*=-1);var e=this.values.length-1,s=Math.min(Math.max(this.selected()+n,-1),e);this.selectValue(s,!0)}}},{key:"onPointerDown",value:function(t){t.preventDefault();var i=this.indexFromEvent(t);this.props.clearable&&i===this.indexSelected&&(i=-1),this.selectValue(i,!0)}},{key:"onPointerLeave",value:function(t){var i=this;t.preventDefault(),cancelAnimationFrame(this.tick),requestAnimationFrame((function(){return i.changeIndexTo(i.indexSelected)}))}},{key:"onPointerMove",value:function(t){var i=this;t.preventDefault(),this.ticking||(this.tick=requestAnimationFrame((function(){return i.changeIndexTo(i.indexFromEvent(t))})),this.ticking=!0)}},{key:"onReset",value:function(){var t;this.selectValue((null===(t=this.el.querySelector("[selected]"))||void 0===t?void 0:t.index)||-1,!1)}},{key:"selected",value:function(){var t=this;return this.values.findIndex((function(i){return i.value===+t.el.value}))}},{key:"selectValue",value:function(t,i){var n;this.el.value=(null===(n=this.values[t])||void 0===n?void 0:n.value)||"",this.indexSelected=this.selected(),!1===i?this.changeIndexTo(this.selected(),!0):this.el.dispatchEvent(new Event("change"))}}]),t}(),f=function(){function t(n,e){i(this,t),this.destroy=this.destroy.bind(this),this.rebuild=this.rebuild.bind(this),this.widgets=[],this.buildWidgets(n,e)}return e(t,[{key:"buildWidgets",value:function(t,i){var n=this;this.queryElements(t).forEach((function(t){var e=h(s,i,JSON.parse(t.getAttribute("data-options")));"SELECT"!==t.tagName||t.widget||(!e.prebuilt&&t.parentNode.classList.contains(e.classNames.base)&&n.unwrap(t),n.widgets.push(new c(t,e)))}))}},{key:"destroy",value:function(){this.widgets.forEach((function(t){return t.destroy()}))}},{key:"queryElements",value:function(t){return"HTMLSelectElement"===a(t)?[t]:"NodeList"===a(t)?[].slice.call(t):"String"===a(t)?[].slice.call(document.querySelectorAll(t)):[]}},{key:"rebuild",value:function(){this.widgets.forEach((function(t){return t.build()}))}},{key:"unwrap",value:function(t){var i=t.parentNode,n=i.parentNode;n.insertBefore(t,i),n.removeChild(i)}}]),t}();t.exports=f}},n={};function e(t){var s=n[t];if(void 0!==s)return s.exports;var o=n[t]={exports:{}};return i[t](o,o.exports,e),o.exports}e.m=i,t=[],e.O=function(i,n,s,o){if(!n){var r=1/0;for(a=0;a<t.length;a++){n=t[a][0],s=t[a][1],o=t[a][2];for(var u=!0,h=0;h<n.length;h++)(!1&o||r>=o)&&Object.keys(e.O).every((function(t){return e.O[t](n[h])}))?n.splice(h--,1):(u=!1,o<r&&(r=o));u&&(t.splice(a--,1),i=s())}return i}o=o||0;for(var a=t.length;a>0&&t[a-1][2]>o;a--)t[a]=t[a-1];t[a]=[n,s,o]},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,{a:i}),i},e.d=function(t,i){for(var n in i)e.o(i,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:i[n]})},e.o=function(t,i){return Object.prototype.hasOwnProperty.call(t,i)},function(){var t={341:0,884:0,320:0,974:0,570:0,184:0,979:0,224:0,384:0,81:0,877:0,691:0,931:0,192:0,77:0,753:0,540:0,69:0,16:0,831:0,181:0,193:0,994:0,232:0,896:0,737:0,612:0,554:0,483:0,49:0,985:0};e.O.j=function(i){return 0===t[i]};var i=function(i,n){var s,o,r=n[0],u=n[1],h=n[2],a=0;for(s in u)e.o(u,s)&&(e.m[s]=u[s]);if(h)var c=h(e);for(i&&i(n);a<r.length;a++)o=r[a],e.o(t,o)&&t[o]&&t[o][0](),t[r[a]]=0;return e.O(c)},n=self.webpackChunk=self.webpackChunk||[];n.forEach(i.bind(null,0)),n.push=i.bind(null,n.push.bind(n))}(),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(237)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(406)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(829)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(273)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(518)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(963)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(113)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(30)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(966)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(83)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(649)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(408)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(529)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(275)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(872)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(865)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(835)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(786)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(45)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(622)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(688)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(340)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(961)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(853)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(712)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(651)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(730)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(382)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(747)})),e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(605)}));var s=e.O(void 0,[884,320,974,570,184,979,224,384,81,877,691,931,192,77,753,540,69,16,831,181,193,994,232,896,737,612,554,483,49,985],(function(){return e(410)}));s=e.O(s)}();
assets/styles/admin/admin.css CHANGED
@@ -1 +1 @@
1
- @charset "UTF-8";.glsr-addons{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));width:100%}@media only screen and (min-width:783px){.glsr-addons{gap:20px;margin:12px 0}}.glsr-addon{border:1px solid #ccd0d4;box-shadow:0 1px 1px -1px rgba(0,0,0,.1);display:flex;flex-direction:column;position:relative}.glsr-addon-description{background-color:#fff;padding:20px;flex:auto}.glsr-addon-description p{margin:0}.glsr-addon-name{font-size:15px;margin-top:0;text-overflow:ellipsis;white-space:nowrap}.glsr-addon-footer{height:48px;background:hsla(0,0%,100%,.65);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-sizing:border-box;padding:15px;margin:0;overflow:hidden}@media screen and (max-width:782px){.glsr-addon-footer{height:58px}}.glsr-addon-screenshot{display:block;background-position:50% 50%;background-repeat:no-repeat;background-size:cover;border-bottom:1px solid #ccd0d4;padding-top:66.67%;margin:-1px}@media screen and (min-width:514px){.glsr-addon-screenshot{padding-top:100%}}.glsr-addon-screenshot[data-slug=filters]{background-color:#319796;background-image:url(../../images/addon-filters.svg)}.glsr-addon-screenshot[data-slug=forms]{background-color:#617c8b;background-image:url(../../images/addon-forms.svg)}.glsr-addon-screenshot[data-slug=images]{background-color:#6b46c1;background-image:url(../../images/addon-images.svg)}.glsr-addon-screenshot[data-slug=premium]{background-color:#1a2349;background-image:url(../../images/addon-premium.svg)}.glsr-addon-screenshot[data-slug=themes]{background-color:#00acc1;background-image:url(../../images/addon-themes.svg)}.glsr-addon-screenshot[data-slug=trustalyze]{background-color:#4282d6;background-image:url(../../images/addon-trustalyze.svg)}.glsr-addon-screenshot[data-slug=woocommerce]{background-color:#7f54b3;background-image:url(../../images/addon-woocommerce.svg)}.glsr-addon-link{position:absolute;right:15px;bottom:10px}@media screen and (max-width:782px){.glsr-addon-link{bottom:6px}}.glsr-addon-link.glsr-external:after{content:" ";font-family:dashicons;line-height:1.2;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@-webkit-keyframes glsr-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes glsr-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.wp-admin .glsr-button{position:relative;white-space:nowrap;display:inline-flex;align-items:center}.wp-admin .glsr-button:after,.wp-admin .glsr-button:before{display:inline-block;position:absolute;top:50%;height:1em;width:1em;border:.2em solid;border-radius:100%;box-sizing:border-box;margin:-.5em auto 0;-webkit-animation:glsr-spin .5s linear infinite;animation:glsr-spin .5s linear infinite}.wp-admin .glsr-button:before{border-top-color:transparent;opacity:.5}.wp-admin .glsr-button:after{border-color:currentColor transparent transparent}.wp-admin .glsr-button[disabled]{padding-left:calc(1em + 15px)}.wp-admin .glsr-button[disabled]:after,.wp-admin .glsr-button[disabled]:before{content:"";left:10px}.wp-admin .glsr-button[disabled] span{font-size:0;visibility:hidden}.wp-admin .glsr-button.is-small[disabled] span{height:22px}.wp-admin .glsr-button[disabled] span:after{content:attr(data-loading);font-size:13px;visibility:visible}.wp-admin .glsr-button.is-small[disabled] span:after{font-size:11px}.wp-admin .glsr-button:not([disabled]) span[data-alt-text].alt{visibility:hidden;font-size:0}.wp-admin .glsr-button:not([disabled]) span[data-alt-text].alt:after{visibility:visible;content:attr(data-alt-text);font-size:13px}.wp-admin .glsr-button.is-small:not([disabled]) span[data-alt-text].alt:after{font-size:11px}#dashboard_right_now li>span.glsr-review-count:before,#dashboard_right_now li a.glsr-review-count:before{content:"";top:-2px}.post-type-site-review #titlediv #title{margin-bottom:20px}.post-type-site-review #contentdiv textarea,.post-type-site-review .wp-editor-area{display:block;width:100%;height:320px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:16px;line-height:1.5;padding:10px;resize:vertical;-webkit-font-smoothing:antialiased!important;overflow-wrap:break-word}.post-type-site-review .misc-pub-pinned:before{display:inline-block;position:relative;content:"";font:normal 20px/1 dashicons;speak:none;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;top:0;left:-1px;color:#82878c;padding:0 2px 0 0}.post-type-site-review .misc-pub-pinned .pinned-status-text{font-weight:600}.post-type-site-review .misc-pub-pinned .pinned-status-select{margin-top:3px}.wp-admin .glsr-response{display:block;height:6em;width:100%;margin:12px 0 0}.glsr-mce{position:relative;display:inline-block;margin-right:1px}.glsr-mce-menu.mce-menu{display:none;position:absolute;top:100%;left:0;min-width:100%;background:#fff;padding:5px 0;margin:-2px 0 0}.glsr-mce-menu-item.mce-menu-item{cursor:pointer;font-size:14px;white-space:nowrap;padding:6px 12px;margin-bottom:2px}.mce-glsr-mce-popup a{text-decoration:underline}.mce-glsr-mce-popup p{margin-bottom:1em}.mce-glsr-mce-popup p.strong{font-weight:600}.mce-glsr-mce-popup p.no-margin{margin-bottom:0}.mce-glsr-mce-popup p.margin-top{margin-top:1em}.mce-glsr-btn.mce-btn button{box-sizing:border-box;padding:0 8px}.wp-media-buttons button.glsr-mce-button{outline:none;padding-left:5px;margin-right:0}button.glsr-mce-button:after{display:inline-block;position:relative;top:-1px;left:-1px;width:0;height:0;content:"";border-top:6px solid;border-right:4px solid transparent;border-left:4px solid transparent}button.glsr-mce-button.active:after{top:-2px;border-top:0;border-bottom:6px solid}button.glsr-mce-button:active{margin-bottom:5px}button.glsr-mce-button .wp-media-buttons-icon:before{content:"";font:normal 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media screen and (max-width:782px){button.glsr-mce-button .wp-media-buttons-icon:before{font-size:20px!important}}div.sc-wrap{margin-right:1px}#site-review-detailsdiv.postbox .inside{padding:0;margin:0}.glsr-response-postbox{margin-top:20px;margin-bottom:0}.js .glsr-response-postbox .hndle{cursor:default}.js .glsr-response-postbox .toggle-indicator:before{content:"";display:inline-block;font:normal 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.js .glsr-response-postbox.closed .toggle-indicator:before{content:""}.glsr-metabox-table{width:auto;padding:0 12px 12px;margin-top:12px}.glsr-metabox-table td{line-height:1.5;vertical-align:top;padding:0 14px 8px 0}.glsr-metabox-table td:first-child{font-weight:600}.glsr-metabox-table td:last-child{padding-bottom:0}.glsr-metabox-actions{border-top:1px solid #ccd0d4;background:#f5f5f5;padding:10px;clear:both}.glsr-revert-action{text-align:right;float:right;line-height:1.9}.glsr-revert-action .spinner{float:left}.glsr-metabox-field select:focus{border-color:#007cba;border-color:var(--wp-admin-theme-color);color:#016087;color:var(--wp-admin-theme-color-darker-20);box-shadow:0 0 0 1px #007cba;box-shadow:0 0 0 1px var(--wp-admin-theme-color)}.glsr-metabox-field{box-sizing:border-box;position:relative}.glsr-metabox-field:first-child{margin-top:12px}.glsr-metabox-field .glsr-label{box-sizing:border-box;line-height:1.5;margin:0;overflow:hidden;padding:0 12px;position:relative;white-space:nowrap;width:100%}.glsr-metabox-field .glsr-label label{display:block;font-size:14px;margin:0;overflow:hidden;padding:0;text-overflow:ellipsis}.glsr-metabox-field .glsr-input{box-sizing:border-box;width:100%;position:relative;padding:12px;margin:0}.glsr-metabox-field .glsr-input>img{border-radius:3px;margin-top:12px}.glsr-metabox-field input[type=date],.glsr-metabox-field input[type=datetime-local],.glsr-metabox-field input[type=datetime],.glsr-metabox-field input[type=email],.glsr-metabox-field input[type=month],.glsr-metabox-field input[type=number],.glsr-metabox-field input[type=password],.glsr-metabox-field input[type=search],.glsr-metabox-field input[type=tel],.glsr-metabox-field input[type=text],.glsr-metabox-field input[type=time],.glsr-metabox-field input[type=url],.glsr-metabox-field input[type=week],.glsr-metabox-field select,.glsr-metabox-field textarea{margin:0;width:100%;padding:3px 8px;line-height:1.5;min-height:30px}.glsr-metabox-field .glsr-input label,.glsr-metabox-field input:disabled,.glsr-metabox-field select:disabled,.glsr-metabox-field textarea:disabled{cursor:default}.glsr-input-value:disabled{color:#32373c!important;background-color:#eee!important;border-color:#7e8993!important;opacity:1}@media screen and (min-width:641px){.glsr-metabox-field{display:flex;flex:1 auto}.glsr-metabox-field:first-child{margin-top:0}.glsr-metabox-field:first-child .glsr-input,.glsr-metabox-field:first-child .glsr-label{padding-top:12px}.glsr-metabox-field:last-child .glsr-input,.glsr-metabox-field:last-child .glsr-label{padding-bottom:12px}.glsr-metabox-field .glsr-label{align-items:flex-start;display:flex;background:#f9f9f9;border-right:1px solid #ddd;padding:6px 12px;min-width:150px;width:20%;line-height:40px}.glsr-metabox-field .glsr-label label{font-weight:600}.glsr-metabox-field .glsr-input{flex-direction:column;justify-content:center;display:flex;padding:6px 12px;vertical-align:top}}@media screen and (min-width:783px){.glsr-metabox-field .glsr-label{line-height:30px}}.glsr-toggle-field{display:flex;line-height:normal;height:40px}@media screen and (min-width:641px){.glsr-toggle-field{align-items:center}}@media screen and (min-width:783px){.glsr-toggle-field{height:30px}}.glsr-toggle{position:relative;display:inline-block}.glsr-toggle .glsr-toggle__track{content:"";display:inline-block;box-sizing:border-box;vertical-align:top;background-color:#fff;border:1px solid #1e1e1e;width:36px;height:18px;border-radius:9px;transition:background .2s ease}@media (prefers-reduced-motion:reduce){.glsr-toggle .glsr-toggle__track{transition-duration:0s}}.glsr-toggle .glsr-toggle__thumb{display:block;position:absolute;box-sizing:border-box;top:3px;left:3px;width:12px;height:12px;border-radius:50%;transition:transform .1s ease;background-color:#1e1e1e;border:5px solid #1e1e1e}@media (prefers-reduced-motion:reduce){.glsr-toggle .glsr-toggle__thumb{transition-duration:0s}}.glsr-toggle .glsr-toggle__input[type=checkbox]:checked~.glsr-toggle__track{background-color:#007cba;background-color:var(--wp-admin-theme-color);border:9px solid transparent}.glsr-toggle .glsr-toggle__input:focus+.glsr-toggle__track{box-shadow:0 0 0 2px #fff,0 0 0 3.5px #007cba;box-shadow:0 0 0 2px #fff,0 0 0 3.5px var(--wp-admin-theme-color);outline:2px solid transparent;outline-offset:2px}.glsr-toggle .glsr-toggle__input[type=checkbox]:checked~.glsr-toggle__thumb{background-color:#fff;border-width:0;transform:translateX(18px)}.glsr-toggle input.glsr-toggle__input[type=checkbox]{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;margin:0;padding:0;z-index:1;border:none}.glsr-toggle input.glsr-toggle__input[type=checkbox]:checked{background:none}.glsr-toggle input.glsr-toggle__input[type=checkbox]:before{content:""}.glsr-metabox-field [data-star-rating]>select{clip:rect(1px,1px,1px,1px)!important;-webkit-clip-path:circle(1px at 0 0)!important;clip-path:circle(1px at 0 0)!important;height:1px!important;margin:0!important;overflow:hidden!important;padding:0!important;position:absolute!important;top:0!important;visibility:visible!important;white-space:nowrap!important;width:1px!important}.glsr-metabox-field .gl-star-rating:not([data-star-rating]) .gl-star-rating--stars,.glsr-metabox-field [data-star-rating]>select:after,.glsr-metabox-field [data-star-rating]>select:before{display:none!important}.glsr-metabox-field .gl-star-rating--stars{align-items:center;color:#555d66;cursor:pointer;display:flex;float:left;position:relative;white-space:nowrap}.glsr-metabox-field [data-star-rating]>select[disabled]+.gl-star-rating--stars{color:#72777c;cursor:default}.glsr-metabox-field .gl-star-rating--stars>span{-webkit-font-smoothing:antialiased;font-family:dashicons;font-size:30px;letter-spacing:1px;line-height:1;text-align:center;transition:color .1s ease-in}@media screen and (min-width:783px){.glsr-metabox-field .gl-star-rating--stars>span{font-size:24px}}.glsr-metabox-field .gl-star-rating--stars>span:before{content:""}.glsr-metabox-field .gl-star-rating--stars.s10>span:first-child:before,.glsr-metabox-field .gl-star-rating--stars.s20>span:nth-child(-1n+2):before,.glsr-metabox-field .gl-star-rating--stars.s30>span:nth-child(-1n+3):before,.glsr-metabox-field .gl-star-rating--stars.s40>span:nth-child(-1n+4):before,.glsr-metabox-field .gl-star-rating--stars.s50>span:nth-child(-1n+5):before,.glsr-metabox-field .gl-star-rating--stars.s60>span:nth-child(-1n+6):before,.glsr-metabox-field .gl-star-rating--stars.s70>span:nth-child(-1n+7):before,.glsr-metabox-field .gl-star-rating--stars.s80>span:nth-child(-1n+8):before,.glsr-metabox-field .gl-star-rating--stars.s90>span:nth-child(-1n+9):before,.glsr-metabox-field .gl-star-rating--stars.s100>span:before{content:""}.glsr-metabox-field [data-star-rating]>select:focus+.gl-star-rating--stars:before{border-radius:3px;border:1px solid #007cba;border:1px solid var(--wp-admin-theme-color);box-shadow:0 0 0 1px #007cba;box-shadow:0 0 0 1px var(--wp-admin-theme-color);box-sizing:border-box;content:"";display:block;height:40px;pointer-events:none;position:absolute;width:100%}@media screen and (min-width:783px){.glsr-metabox-field [data-star-rating]>select:focus+.gl-star-rating--stars:before{height:30px}}.glsr-notice-branded{border-left-color:#f6e05e!important;padding-left:123px}.glsr-notice-branded-image{align-items:center;border-right:1px solid #ccd0d4;bottom:0;display:flex;justify-content:center;left:0;padding:0 5px;position:absolute;width:100px}.glsr-notice-branded .glsr-notice-branded-image{background-color:#faf089;top:0}.glsr-notice-premium .glsr-notice-branded-image{background-color:#252f3f;bottom:-1px;top:-1px}.glsr-notice-branded-image svg{position:relative;top:0;left:0;width:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}.glsr-notice:not(.notice-error):not(.notice-info):not(.notice-warning):not(.glsr-notice-branded){display:flex;border-left-color:#32373c}.glsr-notice-icon{display:flex;align-items:flex-start;margin-left:6px;margin-top:18px;margin-right:18px}.glsr-notice-icon img{width:80px;height:80px}@media only screen and (min-width:601px){.glsr-notice-icon img{width:96px;height:96px}}.glsr-notice-content{margin:6px 0}.glsr-notice-content h3{line-height:1.25;margin-top:12px;margin-bottom:12px}.glsr-notice-content .button,.glsr-notice-content p{margin-top:0;margin-bottom:12px}:root{--base00:#2b303b;--base01:#343d46;--base02:#4f5b66;--base03:#65737e;--base04:#a7adba;--base05:#c0c5ce;--base06:#dfe1e8;--base07:#eff1f5;--base08:#bf616a;--base09:#d08770;--base0A:#ebcb8b;--base0B:#a3be8c;--base0C:#96b5b4;--base0D:#8fa1b3;--base0E:#b48ead;--base0F:#ab7967}.syntax-shortcode,code[class*=language-],pre[class*=language-]{background-color:#181818;background-color:var(--base00);color:#d8d8d8;color:var(--base05);font-family:"Operator Mono Lig","Fira Code",monospace;font-size:13px;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;white-space:pre;word-break:normal;word-spacing:normal;word-wrap:normal;border-radius:2px}.syntax-shortcode,pre[class*=language-]{display:block;padding:1em;margin:.5em 0;overflow:auto}pre[class*=language-]>code{margin:0;padding:0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.bold{font-weight:bold}.token.italic{font-style:italic}.syntax-shortcode .tag{color:#ab4642;color:var(--base08)}.syntax-shortcode .attr-name{color:#ba8baf;color:var(--base0E)}.syntax-shortcode .attr-value{color:#a1b56c;color:var(--base0B)}.language-css .comment{color:#585858;color:var(--base03)}.language-css .important,.language-css .selector{color:#ba8baf;color:var(--base0E)}.language-css .function,.language-css .property,.language-css .url .function{color:#7cafc2;color:var(--base0D)}.language-css .string,.language-css .url{color:#a1b56c;color:var(--base0B)}.language-css .atrule,.language-css .atrule .punctuation,.language-css .url .punctuation{color:#d8d8d8;color:var(--base05)}.language-css .atrule .rule{color:#f7ca88;color:var(--base0A)}.language-css .atrule .keyword,.language-html .tag{color:#ab4642;color:var(--base08)}.language-html .attr-name{color:#ba8baf;color:var(--base0E)}.language-html .attr-value{color:#a1b56c;color:var(--base0B)}.language-html .attr-equals,.language-php .attr-value,.language-php .char,.language-php .constant,.language-php .package .punctuation,.language-php .property,.language-php .punctuation,.language-php .regex,.language-php .variable{color:#d8d8d8;color:var(--base05)}.language-php .block-comment,.language-php .cdata,.language-php .comment,.language-php .doctype,.language-php .prolog{color:#585858;color:var(--base03)}.language-php .string{color:#a1b56c;color:var(--base0B)}.language-php .important,.language-php .keyword,.language-php .selector{color:#ba8baf;color:var(--base0E)}.language-php .number,.language-php .operator{color:#ab4642;color:var(--base08)}.language-php .boolean,.language-php .class-name,.language-php .function,.language-php .package{color:#7cafc2;color:var(--base0D)}.shortcode-example{position:relative}.shortcode-example>input{margin:0;opacity:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#181818;background-color:var(--base00);border-radius:2px;border:0;color:#d8d8d8;color:var(--base05);display:block;font-family:"Operator Mono","Fira Code",monaco,monospace;font-size:13px;line-height:1.5;padding:1em;position:absolute;width:100%}.shortcode-example>input:active,.shortcode-example>input:focus{border:0;box-shadow:none;opacity:1!important}.glsr-progress{position:relative;display:block;height:28px;opacity:.65;text-align:center;font-size:14px}@media screen and (max-width:782px){.glsr-progress{height:31px}}.glsr-progress.active{opacity:1}.glsr-progress *{box-sizing:border-box}.glsr-progress-background,.glsr-progress-bar{height:100%;background-size:40px 40px}.glsr-progress.active .glsr-progress-background,.glsr-progress.active .glsr-progress-bar{transition:width 2.5s linear;-webkit-animation:glsr-progress-bar 1s linear infinite;animation:glsr-progress-bar 1s linear infinite}.glsr-progress-bar{position:relative;width:0;color:#fff;background-color:#616b75;background-image:linear-gradient(-45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);border:1px solid #4a5259;border-top-color:#616b75;border-radius:3px 0 0 3px;overflow:hidden;z-index:1}.glsr-progress-bar[style="width: 0%;"]{border-width:0}.glsr-progress-bar[style="width: 100%;"]{border-radius:3px}.glsr-progress-background{position:absolute;top:0;left:0;width:100%;height:28px;background-color:#f7f7f7;background-image:linear-gradient(-45deg,#fff 25%,transparent 0,transparent 50%,#fff 0,#fff 75%,transparent 0,transparent);border-radius:3px;box-shadow:inset 0 1px 2px #ccd0d4;border:1px solid #ccc}@media screen and (max-width:782px){.glsr-progress-background{height:31px}}.glsr-progress span{position:absolute;left:0;top:0;line-height:26px;color:#555;padding:0 6px}@media screen and (max-width:782px){.glsr-progress span{line-height:29px}}.glsr-progress-bar>span{color:#fff;text-shadow:0 -1px 1px #4a5259,1px 0 1px #4a5259,0 1px 1px #4a5259,-1px 0 1px #4a5259}@-webkit-keyframes glsr-progress-bar{0%{background-position:0 0}to{background-position:40px 0}}@keyframes glsr-progress-bar{0%{background-position:0 0}to{background-position:40px 0}}.glsr-progress .glsr-progress-bar{background-color:#681b98;border-color:#681b98 #591782 #591782}.glsr-progress .glsr-progress-bar>span{text-shadow:0 -1px 1px #591782,1px 0 1px #591782,0 1px 1px #591782,-1px 0 1px #591782}.star-rating .glsr-star{width:16px;font-size:16px;line-height:20px;color:#555}select[data-glsr-track=minimal]{border-color:#dba617!important;color:#c49515!important}select[data-glsr-track=minimal]:focus{box-shadow:0 0 0 1px #dba617}select[data-glsr-track=all]{border-color:#d63638!important;color:#d63638!important}select[data-glsr-track=all]:focus{box-shadow:0 0 0 1px #d63638}td.glsr-string-td1{position:relative;padding-bottom:2em}td.glsr-string-td1 .row-actions{position:absolute;bottom:10px;z-index:1}td.glsr-string-td2 input[type=text]:last-of-type{margin-bottom:0}td.glsr-string-td2 .description{display:block;padding-top:.5em}.is-invalid td.glsr-string-td2 .description{color:#d63638}.mobile td.glsr-string-td1 .row-actions,.no-js td.glsr-string-td1 .row-actions,td.glsr-string-td1 .row-actions.visible,tr:hover td.glsr-string-td1 .row-actions{left:10px}.is-invalid td.glsr-string-td1,.is-invalid td.glsr-string-td1>div,.is-invalid td.glsr-string-td2,.is-invalid td.glsr-string-td2>div{position:relative}.is-invalid td.glsr-string-td1>button,.is-invalid td.glsr-string-td1>div,.is-invalid td.glsr-string-td2>button,.is-invalid td.glsr-string-td2>div{z-index:1}.is-invalid td.glsr-string-td1:after,.is-invalid td.glsr-string-td2:after{display:block;position:absolute;content:"";top:-1px;right:-1px;bottom:-1px;left:-1px;background:rgba(220,50,50,.06);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0}.is-invalid td.glsr-string-td1:after{background:rgba(220,50,50,.08)}.is-invalid td.glsr-string-td2 input[type=text],.is-invalid td.glsr-string-td2 textarea{border-color:#e2cbcb}@media screen and (max-width:782px){.post-type-site-review .wp-list-table .is-expanded.is-invalid td:not(.hidden){overflow:unset}}@media screen and (max-width:720px){nav a.glsr-nav-tab,nav a.glsr-nav-tab.nav-tab-active:hover{transition-property:background,color;border-bottom:1px solid #ccc;margin:10px 10px 0 0}.wrap nav.glsr-nav-tab-wrapper{border-bottom:0}}.glsr-card{max-width:800px;box-sizing:border-box}.glsr-card-result{border:1px solid #ccd0d4;background-color:#f6fbfd;padding:0 1em;margin:1em 0}.glsr-card ol{list-style:decimal;margin-left:1.5em}.glsr-card ul{list-style:disc;margin-left:1.5em}.glsr-card h2{margin-top:0;text-align:left}.glsr-heading{color:#000;font-size:14px;font-weight:600}.glsr-card.postbox{padding:0;margin-bottom:0}.glsr-card.postbox:not(:last-child){border-bottom:none}.glsr-card.postbox.closed:last-child{border-bottom:1px solid #ccd0d4}.glsr-card .components-notice{margin:0}.glsr-card .components-notice.is-info{background-color:rgba(231,245,254,.75)}.glsr-card h3.glsr-card-heading{border-top:1px solid #ccd0d4;color:inherit;font-size:inherit;font-weight:600;line-height:inherit;margin:0}.glsr-card h3.glsr-card-heading:first-child{border-top:none}.glsr-accordion-trigger{background:#fff;border:0;color:#32373c;cursor:pointer;display:flex;font-weight:400;margin:0;padding:1em 3.5em 1em 1.5em;min-height:46px;position:relative;text-align:left;width:100%;align-items:center;justify-content:space-between;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.glsr-accordion-trigger:active,.glsr-accordion-trigger:hover{background:#f8f9f9}.glsr-accordion-trigger:focus{color:#191e23;border:none;box-shadow:none;outline-offset:-1px;outline:2px solid #0071a1;background-color:#f8f9f9;z-index:1}.glsr-accordion-trigger .title{pointer-events:none;font-weight:600;font-size:16px;flex-grow:1}.glsr-accordion-trigger .icon{border:solid #555d66;border-width:0 2px 2px 0;height:.5rem;pointer-events:none;position:absolute;right:1.5em;top:50%;transform:translateY(-70%) rotate(45deg);width:.5rem}.glsr-accordion-trigger[aria-expanded=true] .icon{transform:translateY(-30%) rotate(-135deg)}.glsr-accordion-trigger .badge{padding:.1rem .5rem .15rem;color:#32373c;font-weight:500;margin-left:.5rem;border:1px solid #72aee6}.glsr-accordion-trigger .badge.important{border:1px solid #d63638}@media screen and (max-width:782px){.glsr-accordion-trigger{align-items:flex-start;flex-direction:column}.glsr-accordion-trigger .badge{margin:1em 0 0}}.glsr-card.postbox .inside{border-bottom:none;border-top:1px solid #ccd0d4;margin:0;padding:1em 1.5em}.glsr-card.postbox .inside>:not(h2):first-child{margin-top:.5em}.glsr-card.postbox .inside>:last-child{margin-bottom:.5em!important}.glsr-card p.submit{margin:0}.glsr-card code,.glsr-card pre{word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.glsr-card dd{margin:1em 0}.glsr-card dt{font-weight:600;margin:1em 0}.glsr-card code a{text-decoration:none}.glsr-float-left{float:left;padding-right:.25em}.glsr-code[readonly]{width:100%;font-family:"Operator Mono","Fira Code",monaco,monospace;font-weight:300;white-space:pre;-webkit-font-smoothing:antialiased!important}.glsr-code-large{min-height:60vh}@media only screen and (max-width:782px){.glsr-card{max-width:inherit}}.glsr-tooltip{color:#646970;cursor:help;margin-left:6px}tr.glsr-setting-field th{width:210px}tr.glsr-setting-field th .tippy-box{font-weight:400}@media only screen and (min-width:783px){.glsr-tooltip{float:left;margin-left:0;margin-right:6px}}tr.glsr-setting-field td .inline br{display:none}tr.glsr-setting-field td .inline label:after{content:"";margin-right:1em}.glsr-setting-field a.button{margin-top:6px}.glsr-notice-inline{background:hsla(0,0%,100%,.65);color:#555;padding:4px 10px 10px;margin:10px 0 0!important}.glsr-notice-inline p{padding:0!important}.glsr-setting-field{margin:1em 0;line-height:1.5}.glsr-setting-field small code{font-size:inherit;padding:0 3px 1px}.glsr-setting-field>label{margin-right:3px}@media screen and (max-width:782px){.glsr-setting-field>label+input.small-text{margin-left:0}}.glsr-setting-field>ul{margin:0}.glsr-setting-field>ul li{margin-bottom:2px}.glsr-setting-field textarea.code,.post-type-site-review .code,.post-type-site-review code{font-family:"Operator Mono","Fira Code",monaco,monospace}.glsr-hidden{display:none}.glsr-search-box,.glsr-strings-table{position:relative;max-width:800px}.glsr-search-box *,.glsr-strings-table *{box-sizing:border-box}.glsr-search-box,.glsr-search-multibox{position:relative;margin:1em 0}.glsr-search-box.is-active .spinner,.glsr-search-multibox.is-active .spinner{visibility:visible}.glsr-search-box.is-active input[type=search]::-webkit-search-cancel-button,.glsr-search-multibox.is-active input[type=search]::-webkit-search-cancel-button{display:none!important}.glsr-search-box .description{display:block}.glsr-spinner{visibility:hidden;position:absolute;top:5px;right:5px;height:20px;width:20px;background-color:#fff;z-index:5}.glsr-spinner .spinner{margin:0}.loading-content .glsr-spinner{visibility:visible}.glsr-search-input{position:relative;width:100%;font-weight:300;line-height:1.5;padding:3px 5px;margin:0;z-index:2}.site-review_page_settings .glsr-search-input{height:32px;font-size:16px}.glsr-search-input:focus{z-index:20}.glsr-search-results{position:absolute;top:calc(100% - 4px);padding-top:4px;left:0;width:100%;max-height:315px;overflow-y:scroll;-webkit-overflow-scrolling:touch;border:1px solid #7e8993;border-top:none;box-shadow:0 1px 1px rgba(0,0,0,.04);background-color:#fff;box-sizing:border-box;border-radius:0 0 4px 4px;z-index:3}.glsr-search-results:not(.is-active){display:none}.glsr-search-results:before{display:block;background:#fff;border-left:1px solid #7e8993;border-right:1px solid #7e8993;box-sizing:border-box;content:"";height:4px;position:absolute;top:0;left:-1px;right:-1px}.glsr-search-results>div,.glsr-search-results>span{position:relative;display:block;box-sizing:border-box;height:32px;line-height:32px;text-overflow:ellipsis;white-space:nowrap;padding:0 10px;margin-top:-1px;overflow:hidden}.glsr-search-results>div{background-color:#f6fbfd}.glsr-search-results>span:active,.glsr-search-results>span:focus,.glsr-search-results>span:hover{color:#fff;background-color:#00a0d2;cursor:pointer;outline:none}.glsr-search-box-wrap{position:relative}.glsr-strings-table{transition:opacity .2s linear}.glsr-focus .glsr-strings-table{opacity:.2;pointer-events:none}.glsr-string-td1,.glsr-string-td2{border-top:none;padding:13px 15px}.glsr-string-td1{max-width:375px;border-right:1px solid #ccd0d4;vertical-align:top}.glsr-string-td2{width:60%;max-width:375px}.glsr-strings-table p:not(.row-actions){font-size:14px;font-weight:400;line-height:1.3;color:#000}.glsr-strings-table p.row-actions{margin:0}.glsr-strings-table textarea{display:block;width:100%;margin:0}.glsr-strings-table input[type=text]{display:block;width:100%;margin:0 0 5px}.glsr-strings-table input[type=text]:active,.glsr-strings-table input[type=text]:focus{position:relative}.glsr-string-tr:last-child .glsr-string-td2,.glsr-string-tr:not(.is-expanded):last-child .glsr-string-td1{border-bottom:none}@media screen and (max-width:782px){.glsr-search-results>span{padding:0 10px}.glsr-string-td1{max-width:none;border-right:none}.glsr-string-td2{max-width:none;padding:13px 15px!important}.glsr-spinner{right:10px}}.glsr-string-tr.ui-sortable-helper{opacity:.8;display:table;box-shadow:0 1px 2px rgba(0,0,0,.1)}.ui-sortable .glsr-string-tr:hover{cursor:move}@media screen and (min-width:783px){.ui-sortable-placeholder+.glsr-string-tr .glsr-string-td2{border-top:1px solid #f1f1f1}}.ui-sortable-helper .glsr-string-td1{border-left:1px solid #999}.ui-sortable-helper .glsr-string-td1,.ui-sortable-helper .glsr-string-td2{border-top:1px solid #999!important;border-bottom:1px solid #999!important}.ui-sortable-helper .glsr-string-td2{border-right:1px solid #999}@media screen and (max-width:782px){.ui-sortable-helper .glsr-string-td1{border:1px solid #999}.ui-sortable-helper.is-expanded .glsr-string-td1{border-bottom:none!important}.ui-sortable-helper.is-expanded .glsr-string-td2{border:1px solid #999;border-top-color:#f1f1f1!important}}.glsr-search-multibox,.glsr-search-multibox-entries{display:flex;margin:0;position:relative}.glsr-search-multibox-entries{background-color:#fff;border-radius:4px;border:1px solid #7e8993;box-shadow:0 0 0 transparent;color:#32373c;flex-direction:column;width:100%;z-index:2}.glsr-search-multibox-entries:focus-within{border-color:#007cba;box-shadow:0 0 0 1px #007cba;outline:2px solid transparent;z-index:20}.glsr-search-multibox .glsr-selected-entries{display:flex;flex-wrap:wrap;padding-right:6px}.glsr-search-multibox .glsr-selected-entries>span{align-items:center;background:rgba(0,0,0,.07);border-radius:3px;box-sizing:border-box;display:flex;font-size:11px;font-style:normal;height:24px;line-height:1;margin:6px 0 0 6px;padding:0 8px 0 24px;position:relative}.glsr-search-multibox .glsr-selected-entries a{color:inherit;pointer-events:none}.glsr-search-multibox .glsr-remove-button{left:2px}.glsr-search-multibox .glsr-remove-icon:before{color:#757575}.glsr-search-multibox input[type=search].glsr-search-input{border:none;margin:0;background:transparent;width:auto;flex-grow:1}.glsr-search-multibox input[type=search].glsr-search-input:focus{outline:none;box-shadow:none}.glsr-search-multibox .glsr-spinner{top:auto;bottom:5px;right:7px}@media screen and (max-width:782px){.glsr-search-multibox .glsr-remove-button{left:6px}.glsr-search-multibox .glsr-selected-entries>span{margin:8px 0 0 8px;font-size:14px;height:32px;padding:8px 10px 8px 30px}.glsr-search-multibox .glsr-spinner{bottom:10px;right:10px}}.glsr-multibox-entry{color:#444;display:block;margin-left:20px}.glsr-remove-button{position:absolute;left:-4px;width:20px;height:20px;border:none;margin:0;padding:0;background:0 0;cursor:pointer;text-indent:0}.glsr-remove-button:focus .glsr-remove-icon:before,.glsr-remove-button:hover .glsr-remove-icon:before{color:#1e1e1e}.glsr-remove-icon:before{margin-left:0;border-radius:50%;color:#007cba;color:var(--wp-admin-theme-color);line-height:1.28;background:0 0;content:"";display:block;font:400 16px/20px dashicons;speak:none;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glsr-status{max-width:750px}.glsr-status th.column-primary{width:50%}.glsr-status td.column-primary{position:relative;font-size:14px!important;font-weight:600}.glsr-status td.column-primary span{font-weight:400}.glsr-status .toggle-row{top:0}.glsr-status .toggle-row:before{top:6px}.glsr-status tfoot td.glsr-radio-column,.glsr-status thead td.glsr-radio-column{color:#82878c;text-align:center;padding-left:4px}@media screen and (max-width:782px){.glsr-status th input[type=radio]{margin-bottom:8px}.glsr-status tfoot td.glsr-radio-column,.glsr-status thead td.glsr-radio-column{padding-top:4px;padding-left:9px}}.wrap nav.glsr-nav-tab-wrapper{margin-top:12px;padding-top:0}nav.glsr-nav-tab-wrapper a.glsr-nav-tab:focus{box-shadow:none;outline-offset:-1px;outline:2px solid #0071a1}.wrap>.glsr-nav-view{margin-top:20px}.glsr-subsubsub{display:flex;flex-wrap:wrap;float:none;margin-top:.5em;text-align:left}.glsr-subsubsub li{align-items:center;display:flex}.glsr-subsubsub li a{padding:0 .2em}.glsr-subsubsub li span{margin:0 .2em}.glsr-subsubsub li:last-child span{display:none}body[class*=type-site-review] [data-tippy-root]{max-width:calc(100vw - 10px)}body[class*=type-site-review] .tippy-box{background-color:#2c3338;border-radius:4px;color:#fff;font-size:14px;line-height:1.4;outline:0;position:relative;transition-property:transform,visibility,opacity}body[class*=type-site-review] .tippy-box a{color:#72aee6}body[class*=type-site-review] .tippy-box a:hover{color:#4f94d4}body[class*=type-site-review] .tippy-box code{background-color:hsla(0,0%,100%,.25);display:inline-block;padding:0 3px;border-radius:2px}body[class*=type-site-review] .tippy-box[data-animation=fade][data-state=hidden]{opacity:0}body[class*=type-site-review] .tippy-box[data-animation=scale][data-placement^=top]{transform-origin:bottom}body[class*=type-site-review] .tippy-box[data-animation=scale][data-placement=top-start]{transform-origin:left bottom}body[class*=type-site-review] .tippy-box[data-animation=scale][data-placement^=right]{transform-origin:left}body[class*=type-site-review] .tippy-box[data-animation=scale][data-placement^=bottom]{transform-origin:top}body[class*=type-site-review] .tippy-box[data-animation=scale][data-placement^=left]{transform-origin:right}body[class*=type-site-review] .tippy-box[data-animation=scale][data-state=hidden]{transform:scale(.5);opacity:0}body[class*=type-site-review] .tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}body[class*=type-site-review] .tippy-box[data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:initial;border-width:0 8px 8px;left:0;top:-7px;transform-origin:center bottom}body[class*=type-site-review] .tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}body[class*=type-site-review] .tippy-box[data-placement^=top]>.tippy-arrow:before{border-top-color:initial;border-width:8px 8px 0;bottom:-7px;left:0;transform-origin:center top}body[class*=type-site-review] .tippy-box[data-placement^=left]>.tippy-arrow{right:0}body[class*=type-site-review] .tippy-box[data-placement^=left]>.tippy-arrow:before{border-left-color:initial;border-width:8px 0 8px 8px;right:-7px;transform-origin:center left}body[class*=type-site-review] .tippy-box[data-placement^=right]>.tippy-arrow{left:0}body[class*=type-site-review] .tippy-box[data-placement^=right]>.tippy-arrow:before{border-right-color:initial;border-width:8px 8px 8px 0;left:-7px;transform-origin:center right}body[class*=type-site-review] .tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}body[class*=type-site-review] .tippy-arrow{color:#2c3338;height:16px;width:16px}body[class*=type-site-review] .tippy-arrow:before{border-color:transparent;border-style:solid;content:"";position:absolute}body[class*=type-site-review] .tippy-content{padding:8px 10px;position:relative;z-index:1}.glsr-screenshot{border:1px solid #ccd0d4;box-shadow:0 1px 1px rgba(0,0,0,.04);box-sizing:border-box}.glsr-welcome .badge{position:absolute;top:1em;right:0;padding:.25rem .5rem;font-weight:500;font-size:16px;text-rendering:optimizeLegibility;background-color:#72777c;color:#fff;border-radius:5px}@media only screen and (max-width:500px){.glsr-welcome .badge{display:inline-block;position:relative;top:auto}}.glsr-welcome.about-wrap{margin-top:40px}.glsr-welcome.about-wrap .inside li,.glsr-welcome.about-wrap .inside p{font-size:16px}.glsr-welcome .glsr-about-text{margin:1em 0}.glsr-welcome-banner{margin:2em 0 0}.glsr-welcome .about-buttons{display:flex;flex-wrap:wrap;margin:1.5em 0}.glsr-welcome .components-button{margin:0 .5em .5em 0}.glsr-welcome .dashicon:before{font:normal 18px dashicons;margin-right:6px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glsr-welcome .glsr-nav-view{margin-top:0}.glsr-welcome ul:not(.glsr-flex-row){list-style:circle;padding-left:20px}.glsr-flex-row{display:flex;flex-direction:row;flex-wrap:wrap;margin-left:-20px;margin-right:-20px}.glsr-column{width:100%;max-width:100%;box-sizing:border-box;padding-left:20px;padding-right:20px}@media (min-width:601px){.glsr-has-2-columns .glsr-column,.glsr-has-3-columns .glsr-column{max-width:50%}}@media (min-width:783px){.glsr-has-3-columns .glsr-column{max-width:33.33%}}[class*=post-type-site-review] .row-actions .id>span{color:#999}.glsr-metabox-table .star-rating .star,.post-type-site-review .star-rating .star{width:16px;font-size:16px;line-height:20px;color:#555}.post-type-site-review .star-rating .star{margin-top:-2px}.post-type-site-review .hide-column-tog+.pinned-icon+svg,.post-type-site-review .wp-list-table .approve,.post-type-site-review .wp-list-table .status-pending .unapprove{display:none}.post-type-site-review .wp-list-table .spam .approve,.post-type-site-review .wp-list-table .status-pending .approve,.post-type-site-review .wp-list-table .trash .approve{display:inline}.post-type-site-review .wp-list-table .approve a{color:#006505}.post-type-site-review .wp-list-table .approve a:hover{color:#007f06}.post-type-site-review .wp-list-table .unapprove a{color:#d98500}.post-type-site-review .wp-list-table .unapprove a:hover{color:#f39500}.post-type-site-review .wp-list-table th.column-rating{width:100px}.post-type-site-review .wp-list-table td.column-is_pinned i.pin-review{align-items:center;cursor:pointer;display:flex;float:none;justify-content:center;margin:0;transition:none}.post-type-site-review .wp-list-table td.column-is_pinned i{line-height:24px;text-indent:-3px}.post-type-site-review .wp-list-table td.column-is_pinned i:not(.pinned){color:rgba(85,85,85,.2)}.post-type-site-review .wp-list-table :not(.status-pending)+tr.status-pending th.check-column{box-shadow:inset 0 1px 0 rgba(0,0,0,.07),inset 0 -1px 0 rgba(0,0,0,.07)}.post-type-site-review .wp-list-table :not(.status-pending)+tr.status-pending td:nth-child(2){box-shadow:inset 0 1px 0 rgba(0,0,0,.07)}.post-type-site-review .wp-list-table :not(.status-pending)+tr.status-pending:not(.is-expanded) td:nth-child(2){box-shadow:inset 0 1px 0 rgba(0,0,0,.07),inset 0 -1px 0 rgba(0,0,0,.07)}.post-type-site-review .wp-list-table tr.status-pending.is-expanded td:last-child,.post-type-site-review .wp-list-table tr.status-pending:not(.is-expanded) td:nth-child(2),.post-type-site-review .wp-list-table tr.status-pending th.check-column{box-shadow:inset 0 -1px 0 rgba(0,0,0,.07)}.post-type-site-review .wp-list-table tr.status-pending td,.post-type-site-review .wp-list-table tr.status-pending th.check-column{background-color:#fef7f1}.post-type-site-review .wp-list-table tr.status-pending th.check-column{position:relative;border-left:4px solid #d54e21;z-index:1}.post-type-site-review .wp-list-table tr.status-pending th.check-column input{margin-left:4px}@media screen and (min-width:783px){.post-type-site-review .wp-list-table :not(.status-pending)+tr.status-pending td{box-shadow:inset 0 1px 0 rgba(0,0,0,.07),inset 0 -1px 0 rgba(0,0,0,.07)}.post-type-site-review .wp-list-table tr.status-pending td{box-shadow:inset 0 -1px 0 rgba(0,0,0,.07)}.post-type-site-review .wp-list-table th.column-assigned_posts,.post-type-site-review .wp-list-table th.column-assigned_users,.post-type-site-review .wp-list-table th.column-ip_address{white-space:nowrap}.post-type-site-review .wp-list-table th.column-assigned_posts,.post-type-site-review .wp-list-table th.column-assigned_users,.post-type-site-review .wp-list-table th.column-name,.post-type-site-review .wp-list-table th.column-taxonomy-site-review-category,.post-type-site-review .wp-list-table th.column-type{width:120px}.post-type-site-review .wp-list-table th.column-is_pinned{width:45px}.post-type-site-review .wp-list-table th.column-is_pinned span.pinned-icon span{display:none}.post-type-site-review .wp-list-table th.column-is_pinned span.pinned-icon:after{display:inline-block;position:relative;content:"";font:normal 20px/1 dashicons;speak:none;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:16px;height:20px;line-height:22px;font-size:16px;text-align:center}.post-type-site-review .wp-list-table th.column-is_pinned .sorting-indicator{margin-left:3px}.post-type-site-review .wp-list-table td.column-is_pinned{padding:8px 6px}.post-type-site-review .wp-list-table td.column-is_pinned i{text-indent:0}}#available-widgets [class*=site-reviews] .widget-title:before{content:""}.glsr-no-margins{margin:0!important}::-moz-placeholder{color:#72777c!important;font-size:inherit!important;line-height:inherit!important;opacity:1}:-ms-input-placeholder{color:#72777c!important;font-size:inherit!important;line-height:inherit!important;opacity:1}::placeholder{color:#72777c!important;font-size:inherit!important;line-height:inherit!important;opacity:1}::-webkit-input-placeholder{color:#72777c!important;font-size:inherit!important;line-height:inherit!important;opacity:1}:-moz-placeholder,::-moz-placeholder{color:#72777c!important;font-size:inherit!important;line-height:inherit!important;opacity:1}:-ms-input-placeholder{color:#72777c!important;font-size:inherit!important;line-height:inherit!important;opacity:1}
1
+ @charset "UTF-8";.glsr-addons{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));width:100%}@media only screen and (min-width:783px){.glsr-addons{gap:20px;margin:12px 0}}.glsr-addon{border:1px solid #ccd0d4;box-shadow:0 1px 1px -1px rgba(0,0,0,.1);display:flex;flex-direction:column;position:relative}.glsr-addon-description{background-color:#fff;padding:20px;flex:auto}.glsr-addon-description p{margin:0}.glsr-addon-name{font-size:15px;margin-top:0;text-overflow:ellipsis;white-space:nowrap}.glsr-addon-footer{height:48px;background:hsla(0,0%,100%,.65);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-sizing:border-box;padding:15px;margin:0;overflow:hidden}@media screen and (max-width:782px){.glsr-addon-footer{height:58px}}.glsr-addon-screenshot{display:block;background-position:50% 50%;background-repeat:no-repeat;background-size:cover;border-bottom:1px solid #ccd0d4;padding-top:66.67%;margin:-1px}@media screen and (min-width:514px){.glsr-addon-screenshot{padding-top:100%}}.glsr-addon-screenshot[data-slug=filters]{background-color:#319796;background-image:url(../../images/addon-filters.svg)}.glsr-addon-screenshot[data-slug=forms]{background-color:#617c8b;background-image:url(../../images/addon-forms.svg)}.glsr-addon-screenshot[data-slug=images]{background-color:#6b46c1;background-image:url(../../images/addon-images.svg)}.glsr-addon-screenshot[data-slug=premium]{background-color:#1a2349;background-image:url(../../images/addon-premium.svg)}.glsr-addon-screenshot[data-slug=themes]{background-color:#00acc1;background-image:url(../../images/addon-themes.svg)}.glsr-addon-screenshot[data-slug=trustalyze]{background-color:#4282d6;background-image:url(../../images/addon-trustalyze.svg)}.glsr-addon-screenshot[data-slug=woocommerce]{background-color:#7f54b3;background-image:url(../../images/addon-woocommerce.svg)}.glsr-addon-link{position:absolute;right:15px;bottom:10px}@media screen and (max-width:782px){.glsr-addon-link{bottom:6px}}.glsr-addon-link.glsr-external:after{content:" ";font-family:dashicons;line-height:1.2;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@-webkit-keyframes glsr-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes glsr-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.wp-admin .glsr-button{position:relative;white-space:nowrap;display:inline-flex;align-items:center}.wp-admin .glsr-button[disabled]{box-shadow:inset 0 0 0 1px #8f98a1;color:#6c7781}.wp-admin .glsr-button[disabled] span{font-size:0;visibility:hidden}.wp-admin .glsr-button.is-small[disabled] span{height:22px}.wp-admin .glsr-button[disabled] span:after{content:attr(data-loading);font-size:13px;visibility:visible}.wp-admin .glsr-button.is-small[disabled] span:after{font-size:11px}.wp-admin .glsr-button:not([disabled]) span[data-alt-text].alt{visibility:hidden;font-size:0}.wp-admin .glsr-button:not([disabled]) span[data-alt-text].alt:after{visibility:visible;content:attr(data-alt-text);font-size:13px}.wp-admin .glsr-button.is-small:not([disabled]) span[data-alt-text].alt:after{font-size:11px}#dashboard_right_now li>span.glsr-review-count:before,#dashboard_right_now li a.glsr-review-count:before{content:"";top:-2px}.post-type-site-review #titlediv #title{margin-bottom:20px}.post-type-site-review #contentdiv textarea,.post-type-site-review .wp-editor-area{display:block;width:100%;height:320px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:16px;line-height:1.5;padding:10px;resize:vertical;-webkit-font-smoothing:antialiased!important;overflow-wrap:break-word}.post-type-site-review .misc-pub-pinned:before{display:inline-block;position:relative;content:"";font:normal 20px/1 dashicons;speak:none;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;top:0;left:-1px;color:#82878c;padding:0 2px 0 0}.post-type-site-review .misc-pub-pinned .pinned-status-text{font-weight:600}.post-type-site-review .misc-pub-pinned .pinned-status-select{margin-top:3px}.wp-admin .glsr-response{display:block;height:6em;width:100%;margin:12px 0 0}.glsr-mce{position:relative;display:inline-block;margin-right:1px}.glsr-mce-menu.mce-menu{display:none;position:absolute;top:100%;left:0;min-width:100%;background:#fff;padding:5px 0;margin:-2px 0 0}.glsr-mce-menu-item.mce-menu-item{cursor:pointer;font-size:14px;white-space:nowrap;padding:6px 12px;margin-bottom:2px}.mce-glsr-mce-popup a{text-decoration:underline}.mce-glsr-mce-popup p{margin-bottom:1em}.mce-glsr-mce-popup p.strong{font-weight:600}.mce-glsr-mce-popup p.no-margin{margin-bottom:0}.mce-glsr-mce-popup p.margin-top{margin-top:1em}.mce-glsr-btn.mce-btn button{box-sizing:border-box;padding:0 8px}.wp-media-buttons button.glsr-mce-button{outline:none;padding-left:5px;margin-right:0}button.glsr-mce-button:after{display:inline-block;position:relative;top:-1px;left:-1px;width:0;height:0;content:"";border-top:6px solid;border-right:4px solid transparent;border-left:4px solid transparent}button.glsr-mce-button.active:after{top:-2px;border-top:0;border-bottom:6px solid}button.glsr-mce-button:active{margin-bottom:5px}button.glsr-mce-button .wp-media-buttons-icon:before{content:"";font:normal 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media screen and (max-width:782px){button.glsr-mce-button .wp-media-buttons-icon:before{font-size:20px!important}}div.sc-wrap{margin-right:1px}#site-review-detailsdiv.postbox .inside{padding:0;margin:0}.glsr-response-postbox{margin-top:20px;margin-bottom:0}.js .glsr-response-postbox .hndle{cursor:default}.js .glsr-response-postbox .toggle-indicator:before{content:"";display:inline-block;font:normal 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.js .glsr-response-postbox.closed .toggle-indicator:before{content:""}.glsr-metabox-table{width:auto;padding:0 12px 12px;margin-top:12px}.glsr-metabox-table td{line-height:1.5;vertical-align:top;padding:0 14px 8px 0}.glsr-metabox-table td:first-child{font-weight:600}.glsr-metabox-table td:last-child{padding-bottom:0}.glsr-metabox-actions{border-top:1px solid #ccd0d4;background:#f5f5f5;padding:10px;clear:both}.glsr-revert-action{text-align:right;float:right;line-height:1.9}.glsr-revert-action .spinner{float:left}.glsr-metabox-field select:focus{border-color:#007cba;border-color:var(--wp-admin-theme-color);color:#016087;color:var(--wp-admin-theme-color-darker-20);box-shadow:0 0 0 1px #007cba;box-shadow:0 0 0 1px var(--wp-admin-theme-color)}.glsr-metabox-field{box-sizing:border-box;position:relative}.glsr-metabox-field:first-child{margin-top:12px}.glsr-metabox-field .glsr-label{box-sizing:border-box;line-height:1.5;margin:0;overflow:hidden;padding:0 12px;position:relative;white-space:nowrap;width:100%}.glsr-metabox-field .glsr-label label{display:block;font-size:14px;margin:0;overflow:hidden;padding:0;text-overflow:ellipsis}.glsr-metabox-field .glsr-input{box-sizing:border-box;width:100%;position:relative;padding:12px;margin:0}.glsr-metabox-field .glsr-input>img{border-radius:3px;margin-top:12px}.glsr-metabox-field input[type=date],.glsr-metabox-field input[type=datetime-local],.glsr-metabox-field input[type=datetime],.glsr-metabox-field input[type=email],.glsr-metabox-field input[type=month],.glsr-metabox-field input[type=number],.glsr-metabox-field input[type=password],.glsr-metabox-field input[type=search],.glsr-metabox-field input[type=tel],.glsr-metabox-field input[type=text],.glsr-metabox-field input[type=time],.glsr-metabox-field input[type=url],.glsr-metabox-field input[type=week],.glsr-metabox-field select,.glsr-metabox-field textarea{margin:0;width:100%;padding:3px 8px;line-height:1.5;min-height:30px}.glsr-metabox-field .glsr-input label,.glsr-metabox-field input:disabled,.glsr-metabox-field select:disabled,.glsr-metabox-field textarea:disabled{cursor:default}.glsr-input-value:disabled{color:#32373c!important;background-color:#eee!important;border-color:#7e8993!important;opacity:1}@media screen and (min-width:641px){.glsr-metabox-field{display:flex;flex:1 auto}.glsr-metabox-field:first-child{margin-top:0}.glsr-metabox-field:first-child .glsr-input,.glsr-metabox-field:first-child .glsr-label{padding-top:12px}.glsr-metabox-field:last-child .glsr-input,.glsr-metabox-field:last-child .glsr-label{padding-bottom:12px}.glsr-metabox-field .glsr-label{align-items:flex-start;display:flex;background:#f9f9f9;border-right:1px solid #ddd;padding:6px 12px;min-width:150px;width:20%;line-height:40px}.glsr-metabox-field .glsr-label label{font-weight:600}.glsr-metabox-field .glsr-input{flex-direction:column;justify-content:center;display:flex;padding:6px 12px;vertical-align:top}}@media screen and (min-width:783px){.glsr-metabox-field .glsr-label{line-height:30px}}.glsr-toggle-field{display:flex;line-height:normal;height:40px}@media screen and (min-width:641px){.glsr-toggle-field{align-items:center}}@media screen and (min-width:783px){.glsr-toggle-field{height:30px}}.glsr-toggle{position:relative;display:inline-block}.glsr-toggle .glsr-toggle__track{content:"";display:inline-block;box-sizing:border-box;vertical-align:top;background-color:#fff;border:1px solid #1e1e1e;width:36px;height:18px;border-radius:9px;transition:background .2s ease}@media (prefers-reduced-motion:reduce){.glsr-toggle .glsr-toggle__track{transition-duration:0s}}.glsr-toggle .glsr-toggle__thumb{display:block;position:absolute;box-sizing:border-box;top:3px;left:3px;width:12px;height:12px;border-radius:50%;transition:transform .1s ease;background-color:#1e1e1e;border:5px solid #1e1e1e}@media (prefers-reduced-motion:reduce){.glsr-toggle .glsr-toggle__thumb{transition-duration:0s}}.glsr-toggle .glsr-toggle__input[type=checkbox]:checked~.glsr-toggle__track{background-color:#007cba;background-color:var(--wp-admin-theme-color);border:9px solid transparent}.glsr-toggle .glsr-toggle__input:focus+.glsr-toggle__track{box-shadow:0 0 0 2px #fff,0 0 0 3.5px #007cba;box-shadow:0 0 0 2px #fff,0 0 0 3.5px var(--wp-admin-theme-color);outline:2px solid transparent;outline-offset:2px}.glsr-toggle .glsr-toggle__input[type=checkbox]:checked~.glsr-toggle__thumb{background-color:#fff;border-width:0;transform:translateX(18px)}.glsr-toggle input.glsr-toggle__input[type=checkbox]{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;margin:0;padding:0;z-index:1;border:none}.glsr-toggle input.glsr-toggle__input[type=checkbox]:checked{background:none}.glsr-toggle input.glsr-toggle__input[type=checkbox]:before{content:""}.glsr-metabox-field [data-star-rating]>select{clip:rect(1px,1px,1px,1px)!important;-webkit-clip-path:circle(1px at 0 0)!important;clip-path:circle(1px at 0 0)!important;height:1px!important;margin:0!important;overflow:hidden!important;padding:0!important;position:absolute!important;top:0!important;visibility:visible!important;white-space:nowrap!important;width:1px!important}.glsr-metabox-field .gl-star-rating:not([data-star-rating]) .gl-star-rating--stars,.glsr-metabox-field [data-star-rating]>select:after,.glsr-metabox-field [data-star-rating]>select:before{display:none!important}.glsr-metabox-field .gl-star-rating--stars{align-items:center;color:#555d66;cursor:pointer;display:flex;float:left;position:relative;white-space:nowrap}.glsr-metabox-field [data-star-rating]>select[disabled]+.gl-star-rating--stars{color:#72777c;cursor:default}.glsr-metabox-field .gl-star-rating--stars>span{-webkit-font-smoothing:antialiased;font-family:dashicons;font-size:30px;letter-spacing:1px;line-height:1;text-align:center;transition:color .1s ease-in}@media screen and (min-width:783px){.glsr-metabox-field .gl-star-rating--stars>span{font-size:24px}}.glsr-metabox-field .gl-star-rating--stars>span:before{content:""}.glsr-metabox-field .gl-star-rating--stars.s10>span:first-child:before,.glsr-metabox-field .gl-star-rating--stars.s20>span:nth-child(-1n+2):before,.glsr-metabox-field .gl-star-rating--stars.s30>span:nth-child(-1n+3):before,.glsr-metabox-field .gl-star-rating--stars.s40>span:nth-child(-1n+4):before,.glsr-metabox-field .gl-star-rating--stars.s50>span:nth-child(-1n+5):before,.glsr-metabox-field .gl-star-rating--stars.s60>span:nth-child(-1n+6):before,.glsr-metabox-field .gl-star-rating--stars.s70>span:nth-child(-1n+7):before,.glsr-metabox-field .gl-star-rating--stars.s80>span:nth-child(-1n+8):before,.glsr-metabox-field .gl-star-rating--stars.s90>span:nth-child(-1n+9):before,.glsr-metabox-field .gl-star-rating--stars.s100>span:before{content:""}.glsr-metabox-field [data-star-rating]>select:focus+.gl-star-rating--stars:before{border-radius:3px;border:1px solid #007cba;border:1px solid var(--wp-admin-theme-color);box-shadow:0 0 0 1px #007cba;box-shadow:0 0 0 1px var(--wp-admin-theme-color);box-sizing:border-box;content:"";display:block;height:40px;pointer-events:none;position:absolute;width:100%}@media screen and (min-width:783px){.glsr-metabox-field [data-star-rating]>select:focus+.gl-star-rating--stars:before{height:30px}}.glsr-notice-branded{border-left-color:#f6e05e!important;padding-left:123px}.glsr-notice-branded-image{align-items:center;border-right:1px solid #ccd0d4;bottom:0;display:flex;justify-content:center;left:0;padding:0 5px;position:absolute;width:100px}.glsr-notice-branded .glsr-notice-branded-image{background-color:#faf089;top:0}.glsr-notice-premium .glsr-notice-branded-image{background-color:#252f3f;bottom:-1px;top:-1px}.glsr-notice-branded-image svg{position:relative;top:0;left:0;width:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}.glsr-notice:not(.notice-error):not(.notice-info):not(.notice-warning):not(.glsr-notice-branded){display:flex;border-left-color:#32373c}.glsr-notice-icon{display:flex;align-items:flex-start;margin-left:6px;margin-top:18px;margin-right:18px}.glsr-notice-icon img{width:80px;height:80px}@media only screen and (min-width:601px){.glsr-notice-icon img{width:96px;height:96px}}.glsr-notice-content{margin:6px 0}.glsr-notice-content h3{line-height:1.25;margin-top:12px;margin-bottom:12px}.glsr-notice-content .button,.glsr-notice-content p{margin-top:0;margin-bottom:12px}:root{--base00:#2b303b;--base01:#343d46;--base02:#4f5b66;--base03:#65737e;--base04:#a7adba;--base05:#c0c5ce;--base06:#dfe1e8;--base07:#eff1f5;--base08:#bf616a;--base09:#d08770;--base0A:#ebcb8b;--base0B:#a3be8c;--base0C:#96b5b4;--base0D:#8fa1b3;--base0E:#b48ead;--base0F:#ab7967}.syntax-shortcode,code[class*=language-],pre[class*=language-]{background-color:#181818;background-color:var(--base00);color:#d8d8d8;color:var(--base05);font-family:"Operator Mono Lig","Fira Code",monospace;font-size:13px;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;white-space:pre;word-break:normal;word-spacing:normal;word-wrap:normal;border-radius:2px}.syntax-shortcode,pre[class*=language-]{display:block;padding:1em;margin:.5em 0;overflow:auto}pre[class*=language-]>code{margin:0;padding:0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.bold{font-weight:bold}.token.italic{font-style:italic}.syntax-shortcode .tag{color:#ab4642;color:var(--base08)}.syntax-shortcode .attr-name{color:#ba8baf;color:var(--base0E)}.syntax-shortcode .attr-value{color:#a1b56c;color:var(--base0B)}.language-css .comment{color:#585858;color:var(--base03)}.language-css .important,.language-css .selector{color:#ba8baf;color:var(--base0E)}.language-css .function,.language-css .property,.language-css .url .function{color:#7cafc2;color:var(--base0D)}.language-css .string,.language-css .url{color:#a1b56c;color:var(--base0B)}.language-css .atrule,.language-css .atrule .punctuation,.language-css .url .punctuation{color:#d8d8d8;color:var(--base05)}.language-css .atrule .rule{color:#f7ca88;color:var(--base0A)}.language-css .atrule .keyword,.language-html .tag{color:#ab4642;color:var(--base08)}.language-html .attr-name{color:#ba8baf;color:var(--base0E)}.language-html .attr-value{color:#a1b56c;color:var(--base0B)}.language-html .attr-equals,.language-php .attr-value,.language-php .char,.language-php .constant,.language-php .package .punctuation,.language-php .property,.language-php .punctuation,.language-php .regex,.language-php .variable{color:#d8d8d8;color:var(--base05)}.language-php .block-comment,.language-php .cdata,.language-php .comment,.language-php .doctype,.language-php .prolog{color:#585858;color:var(--base03)}.language-php .string{color:#a1b56c;color:var(--base0B)}.language-php .important,.language-php .keyword,.language-php .selector{color:#ba8baf;color:var(--base0E)}.language-php .number,.language-php .operator{color:#ab4642;color:var(--base08)}.language-php .boolean,.language-php .class-name,.language-php .function,.language-php .package{color:#7cafc2;color:var(--base0D)}.shortcode-example{position:relative}.shortcode-example>input{margin:0;opacity:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#181818;background-color:var(--base00);border-radius:2px;border:0;color:#d8d8d8;color:var(--base05);display:block;font-family:"Operator Mono","Fira Code",monaco,monospace;font-size:13px;line-height:1.5;padding:1em;position:absolute;width:100%}.shortcode-example>input:active,.shortcode-example>input:focus{border:0;box-shadow:none;opacity:1!important}.glsr-progress{position:relative;display:block;height:28px;opacity:.65;text-align:center;font-size:14px}@media screen and (max-width:782px){.glsr-progress{height:31px}}.glsr-progress.active{opacity:1}.glsr-progress *{box-sizing:border-box}.glsr-progress-background,.glsr-progress-bar{height:100%;background-size:40px 40px}.glsr-progress.active .glsr-progress-background,.glsr-progress.active .glsr-progress-bar{transition:width 2.5s linear;-webkit-animation:glsr-progress-bar 1s linear infinite;animation:glsr-progress-bar 1s linear infinite}.glsr-progress-bar{position:relative;width:0;color:#fff;background-color:#616b75;background-image:linear-gradient(-45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);border:1px solid #4a5259;border-top-color:#616b75;border-radius:3px 0 0 3px;overflow:hidden;z-index:1}.glsr-progress-bar[style="width: 0%;"]{border-width:0}.glsr-progress-bar[style="width: 100%;"]{border-radius:3px}.glsr-progress-background{position:absolute;top:0;left:0;width:100%;height:28px;background-color:#f7f7f7;background-image:linear-gradient(-45deg,#fff 25%,transparent 0,transparent 50%,#fff 0,#fff 75%,transparent 0,transparent);border-radius:3px;box-shadow:inset 0 1px 2px #ccd0d4;border:1px solid #ccc}@media screen and (max-width:782px){.glsr-progress-background{height:31px}}.glsr-progress span{position:absolute;left:0;top:0;line-height:26px;color:#555;padding:0 6px}@media screen and (max-width:782px){.glsr-progress span{line-height:29px}}.glsr-progress-bar>span{color:#fff;text-shadow:0 -1px 1px #4a5259,1px 0 1px #4a5259,0 1px 1px #4a5259,-1px 0 1px #4a5259}@-webkit-keyframes glsr-progress-bar{0%{background-position:0 0}to{background-position:40px 0}}@keyframes glsr-progress-bar{0%{background-position:0 0}to{background-position:40px 0}}.glsr-progress .glsr-progress-bar{background-color:#681b98;border-color:#681b98 #591782 #591782}.glsr-progress .glsr-progress-bar>span{text-shadow:0 -1px 1px #591782,1px 0 1px #591782,0 1px 1px #591782,-1px 0 1px #591782}.star-rating .glsr-star{width:16px;font-size:16px;line-height:20px;color:#555}select[data-glsr-track=minimal]{border-color:#dba617!important;color:#c49515!important}select[data-glsr-track=minimal]:focus{box-shadow:0 0 0 1px #dba617}select[data-glsr-track=all]{border-color:#d63638!important;color:#d63638!important}select[data-glsr-track=all]:focus{box-shadow:0 0 0 1px #d63638}td.glsr-string-td1{position:relative;padding-bottom:2em}td.glsr-string-td1 .row-actions{position:absolute;bottom:10px;z-index:1}td.glsr-string-td2 input[type=text]:last-of-type{margin-bottom:0}td.glsr-string-td2 .description{display:block;padding-top:.5em}.is-invalid td.glsr-string-td2 .description{color:#d63638}.mobile td.glsr-string-td1 .row-actions,.no-js td.glsr-string-td1 .row-actions,td.glsr-string-td1 .row-actions.visible,tr:hover td.glsr-string-td1 .row-actions{left:10px}.is-invalid td.glsr-string-td1,.is-invalid td.glsr-string-td1>div,.is-invalid td.glsr-string-td2,.is-invalid td.glsr-string-td2>div{position:relative}.is-invalid td.glsr-string-td1>button,.is-invalid td.glsr-string-td1>div,.is-invalid td.glsr-string-td2>button,.is-invalid td.glsr-string-td2>div{z-index:1}.is-invalid td.glsr-string-td1:after,.is-invalid td.glsr-string-td2:after{display:block;position:absolute;content:"";top:-1px;right:-1px;bottom:-1px;left:-1px;background:rgba(220,50,50,.06);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0}.is-invalid td.glsr-string-td1:after{background:rgba(220,50,50,.08)}.is-invalid td.glsr-string-td2 input[type=text],.is-invalid td.glsr-string-td2 textarea{border-color:#e2cbcb}@media screen and (max-width:782px){.post-type-site-review .wp-list-table .is-expanded.is-invalid td:not(.hidden){overflow:unset}}@media screen and (max-width:720px){nav a.glsr-nav-tab,nav a.glsr-nav-tab.nav-tab-active:hover{transition-property:background,color;border-bottom:1px solid #ccc;margin:10px 10px 0 0}.wrap nav.glsr-nav-tab-wrapper{border-bottom:0}}.glsr-card{max-width:800px;box-sizing:border-box}.glsr-card-result{border:1px solid #ccd0d4;background-color:#f6fbfd;padding:0 1em;margin:1em 0}.glsr-card ol{list-style:decimal;margin-left:1.5em}.glsr-card ul{list-style:disc;margin-left:1.5em}.glsr-card h2{margin-top:0;text-align:left}.glsr-heading{color:#000;font-size:14px;font-weight:600}.glsr-card.postbox{padding:0;margin-bottom:0}.glsr-card.postbox:not(:last-child){border-bottom:none}.glsr-card.postbox.closed:last-child{border-bottom:1px solid #ccd0d4}.glsr-card .components-notice{margin:0}.glsr-card .components-notice.is-info{background-color:rgba(231,245,254,.75)}.glsr-card h3.glsr-card-heading{border-top:1px solid #ccd0d4;color:inherit;font-size:inherit;font-weight:600;line-height:inherit;margin:0}.glsr-card h3.glsr-card-heading:first-child{border-top:none}.glsr-accordion-trigger{background:#fff;border:0;color:#32373c;cursor:pointer;display:flex;font-weight:400;margin:0;padding:1em 3.5em 1em 1.5em;min-height:46px;position:relative;text-align:left;width:100%;align-items:center;justify-content:space-between;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.glsr-accordion-trigger .title.dashicons-before:before{margin-left:-.25em;padding-right:.5em}.glsr-accordion-trigger:active,.glsr-accordion-trigger:hover{background:#f8f9f9}.glsr-accordion-trigger:focus{color:#191e23;border:none;box-shadow:none;outline-offset:-1px;outline:2px solid #0071a1;background-color:#f8f9f9;z-index:1}.glsr-accordion-trigger .title{pointer-events:none;font-weight:600;font-size:16px;flex-grow:1}.glsr-accordion-trigger .icon{border:solid #555d66;border-width:0 2px 2px 0;height:.5rem;pointer-events:none;position:absolute;right:1.5em;top:50%;transform:translateY(-70%) rotate(45deg);width:.5rem}.glsr-accordion-trigger[aria-expanded=true] .icon{transform:translateY(-30%) rotate(-135deg)}.glsr-accordion-trigger .badge{padding:.1rem .5rem .15rem;color:#32373c;font-weight:500;margin-left:.5rem;border:1px solid #72aee6}.glsr-accordion-trigger .badge.important{border:1px solid #d63638}@media screen and (max-width:782px){.glsr-accordion-trigger{align-items:flex-start;flex-direction:column}.glsr-accordion-trigger .badge{margin:1em 0 0}}.glsr-card.postbox .inside{border-bottom:none;border-top:1px solid #ccd0d4;margin:0;padding:1em 1.5em}.glsr-card.postbox .inside>:not(h2):first-child{margin-top:.5em}.glsr-card.postbox .inside>:last-child{margin-bottom:.5em!important}.glsr-card p.submit{margin:0}.glsr-card code,.glsr-card pre{word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.glsr-card dd{margin:1em 0}.glsr-card dt{font-weight:600;margin:1em 0}.glsr-card code a{text-decoration:none}.glsr-float-left{float:left;padding-right:.25em}.glsr-code[readonly]{width:100%;font-family:"Operator Mono","Fira Code",monaco,monospace;font-weight:300;white-space:pre;-webkit-font-smoothing:antialiased!important}.glsr-code-large{min-height:60vh}@media only screen and (max-width:782px){.glsr-card{max-width:inherit}}.glsr-tooltip{color:#646970;cursor:help;margin-left:6px}tr.glsr-setting-field th{width:210px}tr.glsr-setting-field th .tippy-box{font-weight:400}@media only screen and (min-width:783px){.glsr-tooltip{float:left;margin-left:0;margin-right:6px}}tr.glsr-setting-field td .inline br{display:none}tr.glsr-setting-field td .inline label:after{content:"";margin-right:1em}.glsr-setting-field a.button{margin-top:6px}.glsr-notice-inline{background:hsla(0,0%,100%,.65);color:#555;padding:4px 10px 10px;margin:10px 0 0!important}.glsr-notice-inline p{padding:0!important}.glsr-setting-field{margin:1em 0;line-height:1.5}.glsr-setting-field small code{font-size:inherit;padding:0 3px 1px}.glsr-setting-field>label{margin-right:3px}@media screen and (max-width:782px){.glsr-setting-field>label+input.small-text{margin-left:0}}.glsr-setting-field>ul{margin:0}.glsr-setting-field>ul li{margin-bottom:2px}.glsr-setting-field textarea.code,.post-type-site-review .code,.post-type-site-review code{font-family:"Operator Mono","Fira Code",monaco,monospace}.glsr-hidden{display:none}.glsr-search-box,.glsr-strings-table{position:relative;max-width:800px}.glsr-search-box *,.glsr-strings-table *{box-sizing:border-box}.glsr-search-box,.glsr-search-multibox{position:relative;margin:1em 0}.glsr-search-box.is-active .spinner,.glsr-search-multibox.is-active .spinner{visibility:visible}.glsr-search-box.is-active input[type=search]::-webkit-search-cancel-button,.glsr-search-multibox.is-active input[type=search]::-webkit-search-cancel-button{display:none!important}.glsr-search-box .description{display:block}.glsr-spinner{visibility:hidden;position:absolute;top:5px;right:5px;height:20px;width:20px;background-color:#fff;z-index:5}.glsr-spinner .spinner{margin:0}.loading-content .glsr-spinner{visibility:visible}.glsr-search-input{position:relative;width:100%;font-weight:300;line-height:1.5;padding:3px 5px;margin:0;z-index:2}.site-review_page_settings .glsr-search-input{height:32px;font-size:16px}.glsr-search-input:focus{z-index:20}.glsr-search-results{position:absolute;top:calc(100% - 4px);padding-top:4px;left:0;width:100%;max-height:315px;overflow-y:scroll;-webkit-overflow-scrolling:touch;border:1px solid #7e8993;border-top:none;box-shadow:0 1px 1px rgba(0,0,0,.04);background-color:#fff;box-sizing:border-box;border-radius:0 0 4px 4px;z-index:3}.glsr-search-results:not(.is-active){display:none}.glsr-search-results:before{display:block;background:#fff;border-left:1px solid #7e8993;border-right:1px solid #7e8993;box-sizing:border-box;content:"";height:4px;position:absolute;top:0;left:-1px;right:-1px}.glsr-search-results>div,.glsr-search-results>span{position:relative;display:block;box-sizing:border-box;height:32px;line-height:32px;text-overflow:ellipsis;white-space:nowrap;padding:0 10px;margin-top:-1px;overflow:hidden}.glsr-search-results>div{background-color:#f6fbfd}.glsr-search-results>span:active,.glsr-search-results>span:focus,.glsr-search-results>span:hover{color:#fff;background-color:#00a0d2;cursor:pointer;outline:none}.glsr-search-box-wrap{position:relative}.glsr-strings-table{transition:opacity .2s linear}.glsr-focus .glsr-strings-table{opacity:.2;pointer-events:none}.glsr-string-td1,.glsr-string-td2{border-top:none;padding:13px 15px}.glsr-string-td1{max-width:375px;border-right:1px solid #ccd0d4;vertical-align:top}.glsr-string-td2{width:60%;max-width:375px}.glsr-strings-table p:not(.row-actions){font-size:14px;font-weight:400;line-height:1.3;color:#000}.glsr-strings-table p.row-actions{margin:0}.glsr-strings-table textarea{display:block;width:100%;margin:0}.glsr-strings-table input[type=text]{display:block;width:100%;margin:0 0 5px}.glsr-strings-table input[type=text]:active,.glsr-strings-table input[type=text]:focus{position:relative}.glsr-string-tr:last-child .glsr-string-td2,.glsr-string-tr:not(.is-expanded):last-child .glsr-string-td1{border-bottom:none}@media screen and (max-width:782px){.glsr-search-results>span{padding:0 10px}.glsr-string-td1{max-width:none;border-right:none}.glsr-string-td2{max-width:none;padding:13px 15px!important}.glsr-spinner{right:10px}}.glsr-string-tr.ui-sortable-helper{opacity:.8;display:table;box-shadow:0 1px 2px rgba(0,0,0,.1)}.ui-sortable .glsr-string-tr:hover{cursor:move}@media screen and (min-width:783px){.ui-sortable-placeholder+.glsr-string-tr .glsr-string-td2{border-top:1px solid #f1f1f1}}.ui-sortable-helper .glsr-string-td1{border-left:1px solid #999}.ui-sortable-helper .glsr-string-td1,.ui-sortable-helper .glsr-string-td2{border-top:1px solid #999!important;border-bottom:1px solid #999!important}.ui-sortable-helper .glsr-string-td2{border-right:1px solid #999}@media screen and (max-width:782px){.ui-sortable-helper .glsr-string-td1{border:1px solid #999}.ui-sortable-helper.is-expanded .glsr-string-td1{border-bottom:none!important}.ui-sortable-helper.is-expanded .glsr-string-td2{border:1px solid #999;border-top-color:#f1f1f1!important}}.glsr-search-multibox,.glsr-search-multibox-entries{display:flex;margin:0;position:relative}.glsr-search-multibox-entries{background-color:#fff;border-radius:4px;border:1px solid #7e8993;box-shadow:0 0 0 transparent;color:#32373c;flex-direction:column;width:100%;z-index:2}.glsr-search-multibox-entries:focus-within{border-color:#007cba;box-shadow:0 0 0 1px #007cba;outline:2px solid transparent;z-index:20}.glsr-search-multibox .glsr-selected-entries{display:flex;flex-wrap:wrap;padding-right:6px}.glsr-search-multibox .glsr-selected-entries>span{align-items:center;background:rgba(0,0,0,.07);border-radius:3px;box-sizing:border-box;display:flex;font-size:11px;font-style:normal;height:24px;line-height:1;margin:6px 0 0 6px;padding:0 8px 0 24px;position:relative}.glsr-search-multibox .glsr-selected-entries a{color:inherit;pointer-events:none}.glsr-search-multibox .glsr-remove-button{left:2px}.glsr-search-multibox .glsr-remove-icon:before{color:#757575}.glsr-search-multibox input[type=search].glsr-search-input{border:none;margin:0;background:transparent;width:auto;flex-grow:1}.glsr-search-multibox input[type=search].glsr-search-input:focus{outline:none;box-shadow:none}.glsr-search-multibox .glsr-spinner{top:auto;bottom:5px;right:7px}@media screen and (max-width:782px){.glsr-search-multibox .glsr-remove-button{left:6px}.glsr-search-multibox .glsr-selected-entries>span{margin:8px 0 0 8px;font-size:14px;height:32px;padding:8px 10px 8px 30px}.glsr-search-multibox .glsr-spinner{bottom:10px;right:10px}}.glsr-multibox-entry{color:#444;display:block;margin-left:20px}.glsr-remove-button{position:absolute;left:-4px;width:20px;height:20px;border:none;margin:0;padding:0;background:0 0;cursor:pointer;text-indent:0}.glsr-remove-button:focus .glsr-remove-icon:before,.glsr-remove-button:hover .glsr-remove-icon:before{color:#1e1e1e}.glsr-remove-icon:before{margin-left:0;border-radius:50%;color:#007cba;color:var(--wp-admin-theme-color);line-height:1.28;background:0 0;content:"";display:block;font:400 16px/20px dashicons;speak:none;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glsr-status{max-width:750px}.glsr-status th.column-primary{width:50%}.glsr-status td.column-primary{position:relative;font-size:14px!important;font-weight:600}.glsr-status td.column-primary span{font-weight:400}.glsr-status .toggle-row{top:0}.glsr-status .toggle-row:before{top:6px}.glsr-status tfoot td.glsr-radio-column,.glsr-status thead td.glsr-radio-column{color:#82878c;text-align:center;padding-left:4px}@media screen and (max-width:782px){.glsr-status th input[type=radio]{margin-bottom:8px}.glsr-status tfoot td.glsr-radio-column,.glsr-status thead td.glsr-radio-column{padding-top:4px;padding-left:9px}}.wrap nav.glsr-nav-tab-wrapper{margin-top:12px;padding-top:0}nav.glsr-nav-tab-wrapper a.glsr-nav-tab:focus{box-shadow:none;outline-offset:-1px;outline:2px solid #0071a1}.wrap>.glsr-nav-view{margin-top:20px}.glsr-subsubsub{display:flex;flex-wrap:wrap;float:none;margin-top:.5em;text-align:left}.glsr-subsubsub li{align-items:center;display:flex}.glsr-subsubsub li a{padding:0 .2em}.glsr-subsubsub li span{margin:0 .2em}.glsr-subsubsub li:last-child span{display:none}body[class*=type-site-review] [data-tippy-root]{max-width:calc(100vw - 10px)}body[class*=type-site-review] .tippy-box{background-color:#2c3338;border-radius:4px;color:#fff;font-size:14px;line-height:1.4;outline:0;position:relative;transition-property:transform,visibility,opacity}body[class*=type-site-review] .tippy-box a{color:#72aee6}body[class*=type-site-review] .tippy-box a:hover{color:#4f94d4}body[class*=type-site-review] .tippy-box code{background-color:hsla(0,0%,100%,.25);display:inline-block;padding:0 3px;border-radius:2px}body[class*=type-site-review] .tippy-box[data-animation=fade][data-state=hidden]{opacity:0}body[class*=type-site-review] .tippy-box[data-animation=scale][data-placement^=top]{transform-origin:bottom}body[class*=type-site-review] .tippy-box[data-animation=scale][data-placement=top-start]{transform-origin:left bottom}body[class*=type-site-review] .tippy-box[data-animation=scale][data-placement^=right]{transform-origin:left}body[class*=type-site-review] .tippy-box[data-animation=scale][data-placement^=bottom]{transform-origin:top}body[class*=type-site-review] .tippy-box[data-animation=scale][data-placement^=left]{transform-origin:right}body[class*=type-site-review] .tippy-box[data-animation=scale][data-state=hidden]{transform:scale(.5);opacity:0}body[class*=type-site-review] .tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}body[class*=type-site-review] .tippy-box[data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:initial;border-width:0 8px 8px;left:0;top:-7px;transform-origin:center bottom}body[class*=type-site-review] .tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}body[class*=type-site-review] .tippy-box[data-placement^=top]>.tippy-arrow:before{border-top-color:initial;border-width:8px 8px 0;bottom:-7px;left:0;transform-origin:center top}body[class*=type-site-review] .tippy-box[data-placement^=left]>.tippy-arrow{right:0}body[class*=type-site-review] .tippy-box[data-placement^=left]>.tippy-arrow:before{border-left-color:initial;border-width:8px 0 8px 8px;right:-7px;transform-origin:center left}body[class*=type-site-review] .tippy-box[data-placement^=right]>.tippy-arrow{left:0}body[class*=type-site-review] .tippy-box[data-placement^=right]>.tippy-arrow:before{border-right-color:initial;border-width:8px 8px 8px 0;left:-7px;transform-origin:center right}body[class*=type-site-review] .tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}body[class*=type-site-review] .tippy-arrow{color:#2c3338;height:16px;width:16px}body[class*=type-site-review] .tippy-arrow:before{border-color:transparent;border-style:solid;content:"";position:absolute}body[class*=type-site-review] .tippy-content{padding:8px 10px;position:relative;z-index:1}.glsr-screenshot{border:1px solid #ccd0d4;box-shadow:0 1px 1px rgba(0,0,0,.04);box-sizing:border-box}.glsr-welcome .badge{position:absolute;top:1em;right:0;padding:.25rem .5rem;font-weight:500;font-size:16px;text-rendering:optimizeLegibility;background-color:#72777c;color:#fff;border-radius:5px}@media only screen and (max-width:500px){.glsr-welcome .badge{display:inline-block;position:relative;top:auto}}.glsr-welcome.about-wrap{margin-top:40px}.glsr-welcome.about-wrap .inside li,.glsr-welcome.about-wrap .inside p{font-size:16px}.glsr-welcome .glsr-about-text{margin:1em 0}.glsr-welcome-banner{margin:2em 0 0}.glsr-welcome .about-buttons{display:flex;flex-wrap:wrap;margin:1.5em 0}.glsr-welcome .components-button{margin:0 .5em .5em 0}.glsr-welcome .dashicon:before{font:normal 18px dashicons;margin-right:6px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glsr-welcome .glsr-nav-view{margin-top:0}.glsr-welcome ul:not(.glsr-flex-row){list-style:circle;padding-left:20px}.glsr-flex-row{display:flex;flex-direction:row;flex-wrap:wrap;margin-left:-20px;margin-right:-20px}.glsr-column{width:100%;max-width:100%;box-sizing:border-box;padding-left:20px;padding-right:20px}@media (min-width:601px){.glsr-has-2-columns .glsr-column,.glsr-has-3-columns .glsr-column{max-width:50%}}@media (min-width:783px){.glsr-has-3-columns .glsr-column{max-width:33.33%}}[class*=post-type-site-review] .row-actions .id>span{color:#999}.glsr-metabox-table .star-rating .star,.post-type-site-review .star-rating .star{width:16px;font-size:16px;line-height:20px;color:#555}.post-type-site-review .star-rating .star{margin-top:-2px}.post-type-site-review .hide-column-tog+.pinned-icon+svg,.post-type-site-review .wp-list-table .approve,.post-type-site-review .wp-list-table .status-pending .unapprove{display:none}.post-type-site-review .wp-list-table .spam .approve,.post-type-site-review .wp-list-table .status-pending .approve,.post-type-site-review .wp-list-table .trash .approve{display:inline}.post-type-site-review .wp-list-table .approve a{color:#006505}.post-type-site-review .wp-list-table .approve a:hover{color:#007f06}.post-type-site-review .wp-list-table .unapprove a{color:#d98500}.post-type-site-review .wp-list-table .unapprove a:hover{color:#f39500}.post-type-site-review .wp-list-table th.column-rating{width:100px}.post-type-site-review .wp-list-table td.column-is_pinned i.pin-review{align-items:center;cursor:pointer;display:flex;float:none;justify-content:center;margin:0;transition:none}.post-type-site-review .wp-list-table td.column-is_pinned i{line-height:24px;text-indent:-3px}.post-type-site-review .wp-list-table td.column-is_pinned i:not(.pinned){color:rgba(85,85,85,.2)}.post-type-site-review .wp-list-table :not(.status-pending)+tr.status-pending th.check-column{box-shadow:inset 0 1px 0 rgba(0,0,0,.07),inset 0 -1px 0 rgba(0,0,0,.07)}.post-type-site-review .wp-list-table :not(.status-pending)+tr.status-pending td:nth-child(2){box-shadow:inset 0 1px 0 rgba(0,0,0,.07)}.post-type-site-review .wp-list-table :not(.status-pending)+tr.status-pending:not(.is-expanded) td:nth-child(2){box-shadow:inset 0 1px 0 rgba(0,0,0,.07),inset 0 -1px 0 rgba(0,0,0,.07)}.post-type-site-review .wp-list-table tr.status-pending.is-expanded td:last-child,.post-type-site-review .wp-list-table tr.status-pending:not(.is-expanded) td:nth-child(2),.post-type-site-review .wp-list-table tr.status-pending th.check-column{box-shadow:inset 0 -1px 0 rgba(0,0,0,.07)}.post-type-site-review .wp-list-table tr.status-pending td,.post-type-site-review .wp-list-table tr.status-pending th.check-column{background-color:#fef7f1}.post-type-site-review .wp-list-table tr.status-pending th.check-column{position:relative;border-left:4px solid #d54e21;z-index:1}.post-type-site-review .wp-list-table tr.status-pending th.check-column input{margin-left:4px}@media screen and (min-width:783px){.post-type-site-review .wp-list-table :not(.status-pending)+tr.status-pending td{box-shadow:inset 0 1px 0 rgba(0,0,0,.07),inset 0 -1px 0 rgba(0,0,0,.07)}.post-type-site-review .wp-list-table tr.status-pending td{box-shadow:inset 0 -1px 0 rgba(0,0,0,.07)}.post-type-site-review .wp-list-table th.column-assigned_posts,.post-type-site-review .wp-list-table th.column-assigned_users,.post-type-site-review .wp-list-table th.column-ip_address{white-space:nowrap}.post-type-site-review .wp-list-table th.column-assigned_posts,.post-type-site-review .wp-list-table th.column-assigned_users,.post-type-site-review .wp-list-table th.column-name,.post-type-site-review .wp-list-table th.column-taxonomy-site-review-category,.post-type-site-review .wp-list-table th.column-type{width:120px}.post-type-site-review .wp-list-table th.column-is_pinned{width:45px}.post-type-site-review .wp-list-table th.column-is_pinned span.pinned-icon span{display:none}.post-type-site-review .wp-list-table th.column-is_pinned span.pinned-icon:after{display:inline-block;position:relative;content:"";font:normal 20px/1 dashicons;speak:none;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:16px;height:20px;line-height:22px;font-size:16px;text-align:center}.post-type-site-review .wp-list-table th.column-is_pinned .sorting-indicator{margin-left:3px}.post-type-site-review .wp-list-table td.column-is_pinned{padding:8px 6px}.post-type-site-review .wp-list-table td.column-is_pinned i{text-indent:0}}#available-widgets [class*=site-reviews] .widget-title:before{content:""}.glsr-no-margins{margin:0!important}::-moz-placeholder{color:#72777c!important;font-size:inherit!important;line-height:inherit!important;opacity:1}:-ms-input-placeholder{color:#72777c!important;font-size:inherit!important;line-height:inherit!important;opacity:1}::placeholder{color:#72777c!important;font-size:inherit!important;line-height:inherit!important;opacity:1}::-webkit-input-placeholder{color:#72777c!important;font-size:inherit!important;line-height:inherit!important;opacity:1}:-moz-placeholder,::-moz-placeholder{color:#72777c!important;font-size:inherit!important;line-height:inherit!important;opacity:1}:-ms-input-placeholder{color:#72777c!important;font-size:inherit!important;line-height:inherit!important;opacity:1}
config/forms/metabox-fields.php CHANGED
@@ -26,4 +26,9 @@ return [
26
  'label' => esc_html_x('Avatar', 'admin-text', 'site-reviews'),
27
  'type' => 'url',
28
  ],
 
 
 
 
 
29
  ];
26
  'label' => esc_html_x('Avatar', 'admin-text', 'site-reviews'),
27
  'type' => 'url',
28
  ],
29
+ 'terms' => [
30
+ 'label' => esc_html_x('Terms', 'admin-text', 'site-reviews'),
31
+ 'options' => [1 => _x('Terms Accepted', 'admin-text', 'site-reviews')],
32
+ 'type' => 'checkbox',
33
+ ],
34
  ];
languages/site-reviews-en_US.mo CHANGED
Binary file
languages/site-reviews-en_US.po CHANGED
@@ -78,15 +78,15 @@ msgstr "Tell us your email"
78
  msgid "This review is based on my own experience and is my genuine opinion."
79
  msgstr "This review is based on my own experience and is my genuine opinion."
80
 
81
- #: plugin/Blocks/SiteReviewsBlock.php:131, plugin/Modules/Html/Tags/ReviewContentTag.php:26
82
  msgid "Show more"
83
  msgstr "Show more"
84
 
85
- #: plugin/Commands/CreateReview.php:157
86
  msgid "Your review has been submitted!"
87
  msgstr "Your review has been submitted!"
88
 
89
- #: plugin/Commands/CreateReview.php:162, views/pages/documentation/support/common-problems-and-solutions.php:65
90
  msgid ""
91
  "Your review could not be submitted and the error has been logged. Please "
92
  "notify the site administrator."
@@ -1196,7 +1196,7 @@ msgctxt "admin-text"
1196
  msgid "Email"
1197
  msgstr "Email"
1198
 
1199
- #: config/settings.php:506
1200
  msgctxt "admin-text"
1201
  msgid "Terms"
1202
  msgstr "Terms"
@@ -1488,7 +1488,7 @@ msgstr ""
1488
  "The [%s] method has been deprecated and will be soon be removed, please use "
1489
  "the [%s] method instead."
1490
 
1491
- #: plugin/Review.php:327, plugin/Controllers/ListTableColumns/ColumnValueAuthorName.php:20
1492
  msgctxt "admin-text"
1493
  msgid "Unknown"
1494
  msgstr "Unknown"
@@ -1558,6 +1558,11 @@ msgctxt "admin-text"
1558
  msgid "Avatar"
1559
  msgstr "Avatar"
1560
 
 
 
 
 
 
1561
  #: plugin/Addons/Controller.php:70, plugin/Controllers/AdminController.php:48, plugin/Controllers/MenuController.php:51, views/pages/tools/sync.php:23
1562
  msgctxt "admin-text"
1563
  msgid "Settings"
@@ -1584,7 +1589,7 @@ msgctxt "admin-text"
1584
  msgid "License Keys"
1585
  msgstr "License Keys"
1586
 
1587
- #: plugin/Blocks/SiteReviewsBlock.php:105, plugin/Blocks/SiteReviewsFormBlock.php:98, plugin/Blocks/SiteReviewsSummaryBlock.php:89
1588
  msgctxt "admin-text"
1589
  msgid "You have hidden all of the fields for this block."
1590
  msgstr "You have hidden all of the fields for this block."
@@ -1993,7 +1998,7 @@ msgctxt "admin-text"
1993
  msgid "Save as Unapproved"
1994
  msgstr "Save as Unapproved"
1995
 
1996
- #: plugin/Controllers/WelcomeController.php:27, views/pages/documentation/index.php:6
1997
  msgctxt "admin-text"
1998
  msgid "About"
1999
  msgstr "About"
@@ -2593,7 +2598,7 @@ msgctxt "admin-text"
2593
  msgid "All types"
2594
  msgstr "All types"
2595
 
2596
- #: views/pages/addons/index.php:10
2597
  msgctxt "admin-text"
2598
  msgid ""
2599
  "All of the add-ons! Grab the special introductory discount while it still "
@@ -2602,32 +2607,32 @@ msgstr ""
2602
  "All of the add-ons! Grab the special introductory discount while it still "
2603
  "lasts..."
2604
 
2605
- #: views/pages/addons/index.php:12
2606
  msgctxt "admin-text"
2607
  msgid "Discover Premium"
2608
  msgstr "Discover Premium"
2609
 
2610
- #: views/pages/addons/index.php:20
2611
  msgctxt "admin-text"
2612
  msgid "Allow your website visitors to sort, filter by rating, and search reviews."
2613
  msgstr "Allow your website visitors to sort, filter by rating, and search reviews."
2614
 
2615
- #: views/pages/addons/index.php:22, views/pages/addons/index.php:32, views/pages/addons/index.php:42, views/pages/addons/index.php:62, views/pages/addons/index.php:72
2616
  msgctxt "admin-text"
2617
  msgid "View Add-on"
2618
  msgstr "View Add-on"
2619
 
2620
- #: views/pages/addons/index.php:30
2621
  msgctxt "admin-text"
2622
  msgid "Create unique review forms with custom fields and review templates."
2623
  msgstr "Create unique review forms with custom fields and review templates."
2624
 
2625
- #: views/pages/addons/index.php:40
2626
  msgctxt "admin-text"
2627
  msgid "Allow your website visitors to add images with captions to their reviews."
2628
  msgstr "Allow your website visitors to add images with captions to their reviews."
2629
 
2630
- #: views/pages/addons/index.php:50
2631
  msgctxt "admin-text"
2632
  msgid ""
2633
  "Create custom review designs, display reviews in a grid, change the rating "
@@ -2636,12 +2641,12 @@ msgstr ""
2636
  "Create custom review designs, display reviews in a grid, change the rating "
2637
  "images, and more. Early access available to Premium members only."
2638
 
2639
- #: views/pages/addons/index.php:52
2640
  msgctxt "admin-text"
2641
  msgid "Request Early Access"
2642
  msgstr "Request Early Access"
2643
 
2644
- #: views/pages/addons/index.php:60
2645
  msgctxt "admin-text"
2646
  msgid ""
2647
  "Integrate with the Trustalyze Confidence System and post reviews to the "
@@ -2650,7 +2655,7 @@ msgstr ""
2650
  "Integrate with the Trustalyze Confidence System and post reviews to the "
2651
  "blockchain."
2652
 
2653
- #: views/pages/addons/index.php:70
2654
  msgctxt "admin-text"
2655
  msgid "Integrate Site Reviews with your Woocommerce products."
2656
  msgstr "Integrate Site Reviews with your Woocommerce products."
@@ -2765,37 +2770,257 @@ msgctxt "admin-text"
2765
  msgid "Custom Translation"
2766
  msgstr "Custom Translation"
2767
 
2768
- #: views/pages/tools/console.php:7
2769
  msgctxt "admin-text"
2770
  msgid "Download Console"
2771
  msgstr "Download Console"
2772
 
2773
- #: views/pages/tools/console.php:13
2774
  msgctxt "admin-text"
2775
  msgid "Reloading..."
2776
  msgstr "Reloading..."
2777
 
2778
- #: views/pages/tools/console.php:13
2779
  msgctxt "admin-text"
2780
  msgid "Reload"
2781
  msgstr "Reload"
2782
 
2783
- #: views/pages/tools/console.php:20
2784
  msgctxt "admin-text"
2785
  msgid "Clearing..."
2786
  msgstr "Clearing..."
2787
 
2788
- #: views/pages/tools/console.php:20
2789
  msgctxt "admin-text"
2790
  msgid "Clear"
2791
  msgstr "Clear"
2792
 
2793
- #: views/pages/tools/general.php:6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2794
  msgctxt "admin-text"
2795
  msgid "Export Plugin Settings"
2796
  msgstr "Export Plugin Settings"
2797
 
2798
- #: views/pages/tools/general.php:8
2799
  msgctxt "admin-text"
2800
  msgid ""
2801
  "Export the Site Reviews settings for this site to a %s file. This allows "
@@ -2804,27 +3029,27 @@ msgstr ""
2804
  "Export the Site Reviews settings for this site to a %s file. This allows "
2805
  "you to easily import the plugin settings into another site."
2806
 
2807
- #: views/pages/tools/general.php:12
2808
  msgctxt "admin-text"
2809
  msgid "To export your reviews and categories, please use the WordPress %s tool."
2810
  msgstr "To export your reviews and categories, please use the WordPress %s tool."
2811
 
2812
- #: views/pages/tools/general.php:13
2813
  msgctxt "admin-text"
2814
  msgid "Export"
2815
  msgstr "Export"
2816
 
2817
- #: views/pages/tools/general.php:18
2818
  msgctxt "admin-text"
2819
  msgid "Export Settings"
2820
  msgstr "Export Settings"
2821
 
2822
- #: views/pages/tools/general.php:23
2823
  msgctxt "admin-text"
2824
  msgid "Import Plugin Settings"
2825
  msgstr "Import Plugin Settings"
2826
 
2827
- #: views/pages/tools/general.php:25
2828
  msgctxt "admin-text"
2829
  msgid ""
2830
  "Import the Site Reviews settings from a %s file. This file can be obtained "
@@ -2833,7 +3058,7 @@ msgstr ""
2833
  "Import the Site Reviews settings from a %s file. This file can be obtained "
2834
  "by exporting the settings on another site using the export tool below."
2835
 
2836
- #: views/pages/tools/general.php:29
2837
  msgctxt "admin-text"
2838
  msgid ""
2839
  "To import your reviews and categories from another website, please use the "
@@ -2842,27 +3067,27 @@ msgstr ""
2842
  "To import your reviews and categories from another website, please use the "
2843
  "WordPress %s tool."
2844
 
2845
- #: views/pages/tools/general.php:30
2846
  msgctxt "admin-text"
2847
  msgid "Import"
2848
  msgstr "Import"
2849
 
2850
- #: views/pages/tools/general.php:38
2851
  msgctxt "admin-text"
2852
  msgid "Importing settings, please wait..."
2853
  msgstr "Importing settings, please wait..."
2854
 
2855
- #: views/pages/tools/general.php:38
2856
  msgctxt "admin-text"
2857
  msgid "Import Settings"
2858
  msgstr "Import Settings"
2859
 
2860
- #: views/pages/tools/general.php:45
2861
  msgctxt "admin-text"
2862
  msgid "Import Third Party Reviews"
2863
  msgstr "Import Third Party Reviews"
2864
 
2865
- #: views/pages/tools/general.php:48, views/pages/tools/general.php:104
2866
  msgctxt "admin-text"
2867
  msgid ""
2868
  "Please backup your database before running this tool! You can use the %s "
@@ -2871,7 +3096,7 @@ msgstr ""
2871
  "Please backup your database before running this tool! You can use the %s "
2872
  "plugin to do this."
2873
 
2874
- #: views/pages/tools/general.php:53
2875
  msgctxt "admin-text"
2876
  msgid ""
2877
  "Here you can import third party reviews from a %s file. The CSV file should "
@@ -2882,87 +3107,87 @@ msgstr ""
2882
  "include a header row, use a comma as the delimiter, and may contain the "
2883
  "following columns:"
2884
 
2885
- #: views/pages/tools/general.php:57
2886
  msgctxt "admin-text"
2887
  msgid "The avatar URL of the reviewer"
2888
  msgstr "The avatar URL of the reviewer"
2889
 
2890
- #: views/pages/tools/general.php:58
2891
  msgctxt "admin-text"
2892
  msgid "The review"
2893
  msgstr "The review"
2894
 
2895
- #: views/pages/tools/general.php:58, views/pages/tools/general.php:59, views/pages/tools/general.php:64
2896
  msgctxt "admin-text"
2897
  msgid "required"
2898
  msgstr "required"
2899
 
2900
- #: views/pages/tools/general.php:59
2901
  msgctxt "admin-text"
2902
  msgid "The review date as %s or a timestamp"
2903
  msgstr "The review date as %s or a timestamp"
2904
 
2905
- #: views/pages/tools/general.php:60
2906
  msgctxt "admin-text"
2907
  msgid "The reviewer's email"
2908
  msgstr "The reviewer's email"
2909
 
2910
- #: views/pages/tools/general.php:61
2911
  msgctxt "admin-text"
2912
  msgid "The IP address of the reviewer"
2913
  msgstr "The IP address of the reviewer"
2914
 
2915
- #: views/pages/tools/general.php:62
2916
  msgctxt "admin-text"
2917
  msgid "TRUE or FALSE"
2918
  msgstr "TRUE or FALSE"
2919
 
2920
- #: views/pages/tools/general.php:63
2921
  msgctxt "admin-text"
2922
  msgid "The reviewer's name"
2923
  msgstr "The reviewer's name"
2924
 
2925
- #: views/pages/tools/general.php:64
2926
  msgctxt "admin-text"
2927
  msgid "A number from 0-%d"
2928
  msgstr "A number from 0-%d"
2929
 
2930
- #: views/pages/tools/general.php:65
2931
  msgctxt "admin-text"
2932
  msgid "The review response"
2933
  msgstr "The review response"
2934
 
2935
- #: views/pages/tools/general.php:66
2936
  msgctxt "admin-text"
2937
  msgid "The title of the review"
2938
  msgstr "The title of the review"
2939
 
2940
- #: views/pages/tools/general.php:68
2941
  msgctxt "admin-text"
2942
  msgid "Entries in the CSV file that do not contain required values will be skipped."
2943
  msgstr "Entries in the CSV file that do not contain required values will be skipped."
2944
 
2945
- #: views/pages/tools/general.php:75
2946
  msgctxt "admin-text"
2947
  msgid "Importing reviews, please wait..."
2948
  msgstr "Importing reviews, please wait..."
2949
 
2950
- #: views/pages/tools/general.php:75
2951
  msgctxt "admin-text"
2952
  msgid "Import Reviews"
2953
  msgstr "Import Reviews"
2954
 
2955
- #: views/pages/tools/general.php:82
2956
  msgctxt "admin-text"
2957
  msgid "Migrate Plugin"
2958
  msgstr "Migrate Plugin"
2959
 
2960
- #: views/pages/tools/general.php:84
2961
  msgctxt "admin-text"
2962
  msgid "Hold down the ALT/Option key to force-run all previous migrations."
2963
  msgstr "Hold down the ALT/Option key to force-run all previous migrations."
2964
 
2965
- #: views/pages/tools/general.php:86
2966
  msgctxt "admin-text"
2967
  msgid ""
2968
  "Run this tool if your reviews stopped working correctly after upgrading the "
@@ -2973,27 +3198,22 @@ msgstr ""
2973
  "plugin to the latest version (i.e. read-only reviews, zero-star ratings, "
2974
  "missing role capabilities, etc.)."
2975
 
2976
- #: views/pages/tools/general.php:93, views/partials/notices/migrate.php:10
2977
- msgctxt "admin-text"
2978
- msgid "Run All Migrations"
2979
- msgstr "Run All Migrations"
2980
-
2981
- #: views/pages/tools/general.php:93
2982
  msgctxt "admin-text"
2983
  msgid "Migrating, please wait..."
2984
  msgstr "Migrating, please wait..."
2985
 
2986
- #: views/pages/tools/general.php:93
2987
  msgctxt "admin-text"
2988
  msgid "Run Migration"
2989
  msgstr "Run Migration"
2990
 
2991
- #: views/pages/tools/general.php:100
2992
  msgctxt "admin-text"
2993
  msgid "Optimise Your Database Tables"
2994
  msgstr "Optimise Your Database Tables"
2995
 
2996
- #: views/pages/tools/general.php:139
2997
  msgctxt "admin-text"
2998
  msgid ""
2999
  "Optimisation is unnecessary because your database tables already use the "
@@ -3002,7 +3222,7 @@ msgstr ""
3002
  "Optimisation is unnecessary because your database tables already use the "
3003
  "InnoDB engine!"
3004
 
3005
- #: views/pages/tools/general.php:108
3006
  msgctxt "admin-text"
3007
  msgid ""
3008
  "The old MyISAM table engine in MySQL was replaced by the InnoDB engine as "
@@ -3015,7 +3235,7 @@ msgstr ""
3015
  "engine, you are missing out on substantial performance and reliability "
3016
  "gains that the InnoDB engine provides."
3017
 
3018
- #: views/pages/tools/general.php:109
3019
  msgctxt "admin-text"
3020
  msgid ""
3021
  "Site Reviews makes use of specific InnoDB engine features in order to "
@@ -3028,32 +3248,32 @@ msgstr ""
3028
  "(shown below) are still using the old MyISAM engine. If you convert these "
3029
  "tables to use the InnoDB engine, it will make Site Reviews perform faster."
3030
 
3031
- #: views/pages/tools/general.php:113
3032
  msgctxt "admin-text"
3033
  msgid "Table"
3034
  msgstr "Table"
3035
 
3036
- #: views/pages/tools/general.php:114
3037
  msgctxt "admin-text"
3038
  msgid "Engine"
3039
  msgstr "Engine"
3040
 
3041
- #: views/pages/tools/general.php:129
3042
  msgctxt "admin-text"
3043
  msgid "Converting, please wait..."
3044
  msgstr "Converting, please wait..."
3045
 
3046
- #: views/pages/tools/general.php:129
3047
  msgctxt "admin-text"
3048
  msgid "Convert table engine to InnoDB"
3049
  msgstr "Convert table engine to InnoDB"
3050
 
3051
- #: views/pages/tools/general.php:145
3052
  msgctxt "admin-text"
3053
  msgid "Reset Assigned Meta Values"
3054
  msgstr "Reset Assigned Meta Values"
3055
 
3056
- #: views/pages/tools/general.php:146
3057
  msgctxt "admin-text"
3058
  msgid ""
3059
  "Site Reviews stores the individual review count, average rating, and "
@@ -3066,22 +3286,22 @@ msgstr ""
3066
  "these meta values are incorrect (perhaps you cloned a page that had reviews "
3067
  "assigned to it), you may use this tool to recalculate them."
3068
 
3069
- #: views/pages/tools/general.php:152
3070
  msgctxt "admin-text"
3071
  msgid "Resetting values, please wait..."
3072
  msgstr "Resetting values, please wait..."
3073
 
3074
- #: views/pages/tools/general.php:152
3075
  msgctxt "admin-text"
3076
  msgid "Reset Meta Values"
3077
  msgstr "Reset Meta Values"
3078
 
3079
- #: views/pages/tools/general.php:159, views/pages/tools/general.php:171
3080
  msgctxt "admin-text"
3081
  msgid "Reset Permissions"
3082
  msgstr "Reset Permissions"
3083
 
3084
- #: views/pages/tools/general.php:161
3085
  msgctxt "admin-text"
3086
  msgid ""
3087
  "Hold down the ALT/Option key to perform a \"Hard Reset\"; this removes all "
@@ -3092,7 +3312,7 @@ msgstr ""
3092
  "Site Reviews capabilites from your Editor, Author, and Contributor roles "
3093
  "before re-adding them."
3094
 
3095
- #: views/pages/tools/general.php:163
3096
  msgctxt "admin-text"
3097
  msgid ""
3098
  "Site Reviews provides custom post_type capabilities that mirror the "
@@ -3105,7 +3325,7 @@ msgstr ""
3105
  "permission to edit others posts, then that role will also have permission "
3106
  "to edit other users reviews."
3107
 
3108
- #: views/pages/tools/general.php:164
3109
  msgctxt "admin-text"
3110
  msgid ""
3111
  "If you have changed the capabilities of your user roles (Administrator, "
@@ -3118,22 +3338,22 @@ msgstr ""
3118
  "working correctly due to your changes, you may use this tool to reset the "
3119
  "Site Reviews capabilities for your user roles."
3120
 
3121
- #: views/pages/tools/general.php:171
3122
  msgctxt "admin-text"
3123
  msgid "Hard Reset Permissions"
3124
  msgstr "Hard Reset Permissions"
3125
 
3126
- #: views/pages/tools/general.php:171
3127
  msgctxt "admin-text"
3128
  msgid "Resetting, please wait..."
3129
  msgstr "Resetting, please wait..."
3130
 
3131
- #: views/pages/tools/general.php:180
3132
  msgctxt "admin-text"
3133
  msgid "Test IP Address Detection"
3134
  msgstr "Test IP Address Detection"
3135
 
3136
- #: views/pages/tools/general.php:181
3137
  msgctxt "admin-text"
3138
  msgid ""
3139
  "When reviews are submitted on your website, Site Reviews detects the IP "
@@ -3148,7 +3368,7 @@ msgstr ""
3148
  "reviewers based on their IP address. The IP address is also used by Akismet "
3149
  "(if you have enabled the integration) to catch spam submissions."
3150
 
3151
- #: views/pages/tools/general.php:182
3152
  msgctxt "admin-text"
3153
  msgid ""
3154
  "If you are getting an \"unknown\" value for IP addresses in your reviews, "
@@ -3157,231 +3377,16 @@ msgstr ""
3157
  "If you are getting an \"unknown\" value for IP addresses in your reviews, "
3158
  "you may use this tool to check the visitor IP address detection."
3159
 
3160
- #: views/pages/tools/general.php:188
3161
  msgctxt "admin-text"
3162
  msgid "Testing, please wait..."
3163
  msgstr "Testing, please wait..."
3164
 
3165
- #: views/pages/tools/general.php:188
3166
  msgctxt "admin-text"
3167
  msgid "Test Detection"
3168
  msgstr "Test Detection"
3169
 
3170
- #: views/pages/tools/sync.php:9
3171
- msgctxt "admin-text"
3172
- msgid "Service"
3173
- msgstr "Service"
3174
-
3175
- #: views/pages/tools/sync.php:11, views/pages/tools/sync.php:34
3176
- msgctxt "admin-text"
3177
- msgid "Last Sync"
3178
- msgstr "Last Sync"
3179
-
3180
- #: views/pages/tools/sync.php:24
3181
- msgctxt "admin-text"
3182
- msgid "License"
3183
- msgstr "License"
3184
-
3185
- #: views/pages/tools/sync.php:25
3186
- msgctxt "admin-text"
3187
- msgid "Documentation"
3188
- msgstr "Documentation"
3189
-
3190
- #: views/pages/tools/sync.php:28
3191
- msgctxt "admin-text"
3192
- msgid "Show more details"
3193
- msgstr "Show more details"
3194
-
3195
- #: views/pages/tools/sync.php:43
3196
- msgctxt "admin-text"
3197
- msgid "Please wait..."
3198
- msgstr "Please wait..."
3199
-
3200
- #: views/pages/tools/sync.php:45, views/pages/tools/sync.php:48
3201
- msgctxt "admin-text"
3202
- msgid "Inactive"
3203
- msgstr "Inactive"
3204
-
3205
- #: views/pages/tools/sync.php:57
3206
- msgctxt "admin-text"
3207
- msgid "Syncing..."
3208
- msgstr "Syncing..."
3209
-
3210
- #: views/pages/tools/system-info.php:7
3211
- msgctxt "admin-text"
3212
- msgid "Download System Info"
3213
- msgstr "Download System Info"
3214
-
3215
- #: views/partials/addons/addon.php:19
3216
- msgctxt "admin-text"
3217
- msgid "Activate"
3218
- msgstr "Activate"
3219
-
3220
- #: views/partials/addons/addon.php:15
3221
- msgctxt "admin-text"
3222
- msgid "Installed"
3223
- msgstr "Installed"
3224
-
3225
- #: views/partials/addons/license-missing.php:4
3226
- msgctxt "admin-text"
3227
- msgid "Enter a valid license key for automatic updates."
3228
- msgstr "Enter a valid license key for automatic updates."
3229
-
3230
- #: views/partials/addons/support-notice.php:5
3231
- msgctxt "admin-text"
3232
- msgid "To receive support for this add-on, please %s to your Nifty Plugins account."
3233
- msgstr "To receive support for this add-on, please %s to your Nifty Plugins account."
3234
-
3235
- #: views/partials/addons/support-notice.php:6
3236
- msgctxt "admin-text"
3237
- msgid "login"
3238
- msgstr "login"
3239
-
3240
- #: views/partials/editor/assigned-entry.php:7
3241
- msgctxt "admin-text"
3242
- msgid "Remove assignment"
3243
- msgstr "Remove assignment"
3244
-
3245
- #: views/partials/editor/bulk-edit-assigned-posts.php:11, views/partials/editor/metabox-assigned-posts.php:6
3246
- msgctxt "admin-text"
3247
- msgid "Search by ID or title..."
3248
- msgstr "Search by ID or title..."
3249
-
3250
- #: views/partials/editor/bulk-edit-assigned-users.php:11, views/partials/editor/metabox-assigned-users.php:6
3251
- msgctxt "admin-text"
3252
- msgid "Search by ID or name..."
3253
- msgstr "Search by ID or name..."
3254
-
3255
- #: views/partials/editor/metabox-assigned-posts.php:9
3256
- msgctxt "admin-text"
3257
- msgid ""
3258
- "Search for a Page, Post, or <abbr title=\"Custom Post Type\">CPT</abbr> "
3259
- "that you would like to assign this review to."
3260
- msgstr ""
3261
- "Search for a Page, Post, or <abbr title=\"Custom Post Type\">CPT</abbr> "
3262
- "that you would like to assign this review to."
3263
-
3264
- #: views/partials/editor/metabox-assigned-users.php:9
3265
- msgctxt "admin-text"
3266
- msgid "Search for a user that you would like to assign this review to."
3267
- msgstr "Search for a user that you would like to assign this review to."
3268
-
3269
- #: views/partials/editor/metabox-categories.php:7
3270
- msgctxt "admin-text"
3271
- msgid "Most Used"
3272
- msgstr "Most Used"
3273
-
3274
- #: views/partials/editor/metabox-response.php:5
3275
- msgctxt "admin-text"
3276
- msgid "If you need to publicly respond to this review, enter your response here."
3277
- msgstr "If you need to publicly respond to this review, enter your response here."
3278
-
3279
- #: views/partials/editor/pinned.php:8
3280
- msgctxt "admin-text"
3281
- msgid "Edit pinned status"
3282
- msgstr "Edit pinned status"
3283
-
3284
- #: views/partials/editor/pinned.php:13
3285
- msgctxt "admin-text"
3286
- msgid "Pin"
3287
- msgstr "Pin"
3288
-
3289
- #: views/partials/editor/pinned.php:14
3290
- msgctxt "admin-text"
3291
- msgid "Unpin"
3292
- msgstr "Unpin"
3293
-
3294
- #: views/partials/editor/pinned.php:16
3295
- msgctxt "admin-text"
3296
- msgid "OK"
3297
- msgstr "OK"
3298
-
3299
- #: views/partials/editor/pinned.php:17
3300
- msgctxt "admin-text"
3301
- msgid "Cancel"
3302
- msgstr "Cancel"
3303
-
3304
- #: views/partials/editor/review.php:4
3305
- msgctxt "admin-text"
3306
- msgid "no title"
3307
- msgstr "no title"
3308
-
3309
- #: views/partials/editor/review.php:17
3310
- msgctxt "admin-text"
3311
- msgid "Toggle panel: Public Response"
3312
- msgstr "Toggle panel: Public Response"
3313
-
3314
- #: views/partials/editor/review.php:21
3315
- msgctxt "admin-text"
3316
- msgid "Public Response"
3317
- msgstr "Public Response"
3318
-
3319
- #: views/partials/notices/migrate.php:6
3320
- msgctxt "admin-text"
3321
- msgid "Database Update Required"
3322
- msgstr "Database Update Required"
3323
-
3324
- #: views/partials/notices/migrate.php:7
3325
- msgctxt "admin-text"
3326
- msgid ""
3327
- "Site Reviews needs to update the database and your reviews to the newest "
3328
- "version. If this notice keeps appearing, please read the %s section on the "
3329
- "Help page."
3330
- msgstr ""
3331
- "Site Reviews needs to update the database and your reviews to the newest "
3332
- "version. If this notice keeps appearing, please read the %s section on the "
3333
- "Help page."
3334
-
3335
- #: views/partials/notices/migrate.php:10
3336
- msgctxt "admin-text"
3337
- msgid "Updating, please wait..."
3338
- msgstr "Updating, please wait..."
3339
-
3340
- #: views/partials/notices/migrate.php:10
3341
- msgctxt "admin-text"
3342
- msgid "Update Database"
3343
- msgstr "Update Database"
3344
-
3345
- #: views/partials/notices/premium.php:10
3346
- msgctxt "admin-text"
3347
- msgid "Learn more"
3348
- msgstr "Learn more"
3349
-
3350
- #: views/partials/notices/welcome.php:4
3351
- msgctxt "admin-text"
3352
- msgid "See What's New"
3353
- msgstr "See What's New"
3354
-
3355
- #: views/partials/notices/welcome.php:6
3356
- msgctxt "admin-text"
3357
- msgid "Read the upgrade guide"
3358
- msgstr "Read the upgrade guide"
3359
-
3360
- #: views/partials/translations/plural.php:4, views/partials/translations/single.php:4
3361
- msgctxt "admin-text"
3362
- msgid "Show custom translation"
3363
- msgstr "Show custom translation"
3364
-
3365
- #: views/partials/translations/plural.php:11, views/partials/translations/single.php:10
3366
- msgctxt "admin-text"
3367
- msgid "Delete translation string"
3368
- msgstr "Delete translation string"
3369
-
3370
- #: views/partials/translations/plural.php:11, views/partials/translations/single.php:10
3371
- msgctxt "admin-text"
3372
- msgid "Delete"
3373
- msgstr "Delete"
3374
-
3375
- #: views/partials/translations/plural.php:19
3376
- msgctxt "admin-text"
3377
- msgid "singular"
3378
- msgstr "singular"
3379
-
3380
- #: views/partials/translations/plural.php:20
3381
- msgctxt "admin-text"
3382
- msgid "plural"
3383
- msgstr "plural"
3384
-
3385
  #: config/settings.php:218
3386
  msgctxt "avatar size (admin-text)"
3387
  msgid "pixels"
78
  msgid "This review is based on my own experience and is my genuine opinion."
79
  msgstr "This review is based on my own experience and is my genuine opinion."
80
 
81
+ #: plugin/Blocks/SiteReviewsBlock.php:135, plugin/Modules/Html/Tags/ReviewContentTag.php:26
82
  msgid "Show more"
83
  msgstr "Show more"
84
 
85
+ #: plugin/Commands/CreateReview.php:159
86
  msgid "Your review has been submitted!"
87
  msgstr "Your review has been submitted!"
88
 
89
+ #: plugin/Commands/CreateReview.php:164, views/pages/documentation/support/common-problems-and-solutions.php:65
90
  msgid ""
91
  "Your review could not be submitted and the error has been logged. Please "
92
  "notify the site administrator."
1196
  msgid "Email"
1197
  msgstr "Email"
1198
 
1199
+ #: config/settings.php:506, config/forms/metabox-fields.php:30
1200
  msgctxt "admin-text"
1201
  msgid "Terms"
1202
  msgstr "Terms"
1488
  "The [%s] method has been deprecated and will be soon be removed, please use "
1489
  "the [%s] method instead."
1490
 
1491
+ #: plugin/Review.php:328, plugin/Controllers/ListTableColumns/ColumnValueAuthorName.php:20
1492
  msgctxt "admin-text"
1493
  msgid "Unknown"
1494
  msgstr "Unknown"
1558
  msgid "Avatar"
1559
  msgstr "Avatar"
1560
 
1561
+ #: config/forms/metabox-fields.php:31
1562
+ msgctxt "admin-text"
1563
+ msgid "Terms Accepted"
1564
+ msgstr "Terms Accepted"
1565
+
1566
  #: plugin/Addons/Controller.php:70, plugin/Controllers/AdminController.php:48, plugin/Controllers/MenuController.php:51, views/pages/tools/sync.php:23
1567
  msgctxt "admin-text"
1568
  msgid "Settings"
1589
  msgid "License Keys"
1590
  msgstr "License Keys"
1591
 
1592
+ #: plugin/Blocks/SiteReviewsBlock.php:109, plugin/Blocks/SiteReviewsFormBlock.php:98, plugin/Blocks/SiteReviewsSummaryBlock.php:93
1593
  msgctxt "admin-text"
1594
  msgid "You have hidden all of the fields for this block."
1595
  msgstr "You have hidden all of the fields for this block."
1998
  msgid "Save as Unapproved"
1999
  msgstr "Save as Unapproved"
2000
 
2001
+ #: plugin/Controllers/WelcomeController.php:27, views/pages/addons/index.php:6, views/pages/documentation/index.php:6, views/pages/settings/index.php:6, views/pages/tools/index.php:6
2002
  msgctxt "admin-text"
2003
  msgid "About"
2004
  msgstr "About"
2598
  msgid "All types"
2599
  msgstr "All types"
2600
 
2601
+ #: views/pages/addons/index.php:13
2602
  msgctxt "admin-text"
2603
  msgid ""
2604
  "All of the add-ons! Grab the special introductory discount while it still "
2607
  "All of the add-ons! Grab the special introductory discount while it still "
2608
  "lasts..."
2609
 
2610
+ #: views/pages/addons/index.php:15
2611
  msgctxt "admin-text"
2612
  msgid "Discover Premium"
2613
  msgstr "Discover Premium"
2614
 
2615
+ #: views/pages/addons/index.php:23
2616
  msgctxt "admin-text"
2617
  msgid "Allow your website visitors to sort, filter by rating, and search reviews."
2618
  msgstr "Allow your website visitors to sort, filter by rating, and search reviews."
2619
 
2620
+ #: views/pages/addons/index.php:25, views/pages/addons/index.php:35, views/pages/addons/index.php:45, views/pages/addons/index.php:65, views/pages/addons/index.php:75
2621
  msgctxt "admin-text"
2622
  msgid "View Add-on"
2623
  msgstr "View Add-on"
2624
 
2625
+ #: views/pages/addons/index.php:33
2626
  msgctxt "admin-text"
2627
  msgid "Create unique review forms with custom fields and review templates."
2628
  msgstr "Create unique review forms with custom fields and review templates."
2629
 
2630
+ #: views/pages/addons/index.php:43
2631
  msgctxt "admin-text"
2632
  msgid "Allow your website visitors to add images with captions to their reviews."
2633
  msgstr "Allow your website visitors to add images with captions to their reviews."
2634
 
2635
+ #: views/pages/addons/index.php:53
2636
  msgctxt "admin-text"
2637
  msgid ""
2638
  "Create custom review designs, display reviews in a grid, change the rating "
2641
  "Create custom review designs, display reviews in a grid, change the rating "
2642
  "images, and more. Early access available to Premium members only."
2643
 
2644
+ #: views/pages/addons/index.php:55
2645
  msgctxt "admin-text"
2646
  msgid "Request Early Access"
2647
  msgstr "Request Early Access"
2648
 
2649
+ #: views/pages/addons/index.php:63
2650
  msgctxt "admin-text"
2651
  msgid ""
2652
  "Integrate with the Trustalyze Confidence System and post reviews to the "
2655
  "Integrate with the Trustalyze Confidence System and post reviews to the "
2656
  "blockchain."
2657
 
2658
+ #: views/pages/addons/index.php:73
2659
  msgctxt "admin-text"
2660
  msgid "Integrate Site Reviews with your Woocommerce products."
2661
  msgstr "Integrate Site Reviews with your Woocommerce products."
2770
  msgid "Custom Translation"
2771
  msgstr "Custom Translation"
2772
 
2773
+ #: views/pages/tools/console.php:8
2774
  msgctxt "admin-text"
2775
  msgid "Download Console"
2776
  msgstr "Download Console"
2777
 
2778
+ #: views/pages/tools/console.php:15
2779
  msgctxt "admin-text"
2780
  msgid "Reloading..."
2781
  msgstr "Reloading..."
2782
 
2783
+ #: views/pages/tools/console.php:15
2784
  msgctxt "admin-text"
2785
  msgid "Reload"
2786
  msgstr "Reload"
2787
 
2788
+ #: views/pages/tools/console.php:22
2789
  msgctxt "admin-text"
2790
  msgid "Clearing..."
2791
  msgstr "Clearing..."
2792
 
2793
+ #: views/pages/tools/console.php:22
2794
  msgctxt "admin-text"
2795
  msgid "Clear"
2796
  msgstr "Clear"
2797
 
2798
+ #: views/pages/tools/sync.php:9
2799
+ msgctxt "admin-text"
2800
+ msgid "Service"
2801
+ msgstr "Service"
2802
+
2803
+ #: views/pages/tools/sync.php:11, views/pages/tools/sync.php:34
2804
+ msgctxt "admin-text"
2805
+ msgid "Last Sync"
2806
+ msgstr "Last Sync"
2807
+
2808
+ #: views/pages/tools/sync.php:24
2809
+ msgctxt "admin-text"
2810
+ msgid "License"
2811
+ msgstr "License"
2812
+
2813
+ #: views/pages/tools/sync.php:25
2814
+ msgctxt "admin-text"
2815
+ msgid "Documentation"
2816
+ msgstr "Documentation"
2817
+
2818
+ #: views/pages/tools/sync.php:28
2819
+ msgctxt "admin-text"
2820
+ msgid "Show more details"
2821
+ msgstr "Show more details"
2822
+
2823
+ #: views/pages/tools/sync.php:43
2824
+ msgctxt "admin-text"
2825
+ msgid "Please wait..."
2826
+ msgstr "Please wait..."
2827
+
2828
+ #: views/pages/tools/sync.php:45, views/pages/tools/sync.php:48
2829
+ msgctxt "admin-text"
2830
+ msgid "Inactive"
2831
+ msgstr "Inactive"
2832
+
2833
+ #: views/pages/tools/sync.php:57
2834
+ msgctxt "admin-text"
2835
+ msgid "Syncing..."
2836
+ msgstr "Syncing..."
2837
+
2838
+ #: views/pages/tools/system-info.php:8
2839
+ msgctxt "admin-text"
2840
+ msgid "Download System Info"
2841
+ msgstr "Download System Info"
2842
+
2843
+ #: views/partials/addons/addon.php:19
2844
+ msgctxt "admin-text"
2845
+ msgid "Activate"
2846
+ msgstr "Activate"
2847
+
2848
+ #: views/partials/addons/addon.php:15
2849
+ msgctxt "admin-text"
2850
+ msgid "Installed"
2851
+ msgstr "Installed"
2852
+
2853
+ #: views/partials/addons/license-missing.php:4
2854
+ msgctxt "admin-text"
2855
+ msgid "Enter a valid license key for automatic updates."
2856
+ msgstr "Enter a valid license key for automatic updates."
2857
+
2858
+ #: views/partials/addons/support-notice.php:5
2859
+ msgctxt "admin-text"
2860
+ msgid "To receive support for this add-on, please %s to your Nifty Plugins account."
2861
+ msgstr "To receive support for this add-on, please %s to your Nifty Plugins account."
2862
+
2863
+ #: views/partials/addons/support-notice.php:6
2864
+ msgctxt "admin-text"
2865
+ msgid "login"
2866
+ msgstr "login"
2867
+
2868
+ #: views/partials/editor/assigned-entry.php:7
2869
+ msgctxt "admin-text"
2870
+ msgid "Remove assignment"
2871
+ msgstr "Remove assignment"
2872
+
2873
+ #: views/partials/editor/bulk-edit-assigned-posts.php:11, views/partials/editor/metabox-assigned-posts.php:6
2874
+ msgctxt "admin-text"
2875
+ msgid "Search by ID or title..."
2876
+ msgstr "Search by ID or title..."
2877
+
2878
+ #: views/partials/editor/bulk-edit-assigned-users.php:11, views/partials/editor/metabox-assigned-users.php:6
2879
+ msgctxt "admin-text"
2880
+ msgid "Search by ID or name..."
2881
+ msgstr "Search by ID or name..."
2882
+
2883
+ #: views/partials/editor/metabox-assigned-posts.php:9
2884
+ msgctxt "admin-text"
2885
+ msgid ""
2886
+ "Search for a Page, Post, or <abbr title=\"Custom Post Type\">CPT</abbr> "
2887
+ "that you would like to assign this review to."
2888
+ msgstr ""
2889
+ "Search for a Page, Post, or <abbr title=\"Custom Post Type\">CPT</abbr> "
2890
+ "that you would like to assign this review to."
2891
+
2892
+ #: views/partials/editor/metabox-assigned-users.php:9
2893
+ msgctxt "admin-text"
2894
+ msgid "Search for a user that you would like to assign this review to."
2895
+ msgstr "Search for a user that you would like to assign this review to."
2896
+
2897
+ #: views/partials/editor/metabox-categories.php:7
2898
+ msgctxt "admin-text"
2899
+ msgid "Most Used"
2900
+ msgstr "Most Used"
2901
+
2902
+ #: views/partials/editor/metabox-response.php:5
2903
+ msgctxt "admin-text"
2904
+ msgid "If you need to publicly respond to this review, enter your response here."
2905
+ msgstr "If you need to publicly respond to this review, enter your response here."
2906
+
2907
+ #: views/partials/editor/pinned.php:8
2908
+ msgctxt "admin-text"
2909
+ msgid "Edit pinned status"
2910
+ msgstr "Edit pinned status"
2911
+
2912
+ #: views/partials/editor/pinned.php:13
2913
+ msgctxt "admin-text"
2914
+ msgid "Pin"
2915
+ msgstr "Pin"
2916
+
2917
+ #: views/partials/editor/pinned.php:14
2918
+ msgctxt "admin-text"
2919
+ msgid "Unpin"
2920
+ msgstr "Unpin"
2921
+
2922
+ #: views/partials/editor/pinned.php:16
2923
+ msgctxt "admin-text"
2924
+ msgid "OK"
2925
+ msgstr "OK"
2926
+
2927
+ #: views/partials/editor/pinned.php:17
2928
+ msgctxt "admin-text"
2929
+ msgid "Cancel"
2930
+ msgstr "Cancel"
2931
+
2932
+ #: views/partials/editor/review.php:4
2933
+ msgctxt "admin-text"
2934
+ msgid "no title"
2935
+ msgstr "no title"
2936
+
2937
+ #: views/partials/editor/review.php:17
2938
+ msgctxt "admin-text"
2939
+ msgid "Toggle panel: Public Response"
2940
+ msgstr "Toggle panel: Public Response"
2941
+
2942
+ #: views/partials/editor/review.php:21
2943
+ msgctxt "admin-text"
2944
+ msgid "Public Response"
2945
+ msgstr "Public Response"
2946
+
2947
+ #: views/partials/notices/migrate.php:6
2948
+ msgctxt "admin-text"
2949
+ msgid "Database Update Required"
2950
+ msgstr "Database Update Required"
2951
+
2952
+ #: views/partials/notices/migrate.php:7
2953
+ msgctxt "admin-text"
2954
+ msgid ""
2955
+ "Site Reviews needs to update the database and your reviews to the newest "
2956
+ "version. If this notice keeps appearing, please read the %s section on the "
2957
+ "Help page."
2958
+ msgstr ""
2959
+ "Site Reviews needs to update the database and your reviews to the newest "
2960
+ "version. If this notice keeps appearing, please read the %s section on the "
2961
+ "Help page."
2962
+
2963
+ #: views/partials/notices/migrate.php:10, views/pages/tools/general/migrate-plugin.php:20
2964
+ msgctxt "admin-text"
2965
+ msgid "Run All Migrations"
2966
+ msgstr "Run All Migrations"
2967
+
2968
+ #: views/partials/notices/migrate.php:10
2969
+ msgctxt "admin-text"
2970
+ msgid "Updating, please wait..."
2971
+ msgstr "Updating, please wait..."
2972
+
2973
+ #: views/partials/notices/migrate.php:10
2974
+ msgctxt "admin-text"
2975
+ msgid "Update Database"
2976
+ msgstr "Update Database"
2977
+
2978
+ #: views/partials/notices/premium.php:10
2979
+ msgctxt "admin-text"
2980
+ msgid "Learn more"
2981
+ msgstr "Learn more"
2982
+
2983
+ #: views/partials/notices/welcome.php:4
2984
+ msgctxt "admin-text"
2985
+ msgid "See What's New"
2986
+ msgstr "See What's New"
2987
+
2988
+ #: views/partials/notices/welcome.php:6
2989
+ msgctxt "admin-text"
2990
+ msgid "Read the upgrade guide"
2991
+ msgstr "Read the upgrade guide"
2992
+
2993
+ #: views/partials/translations/plural.php:4, views/partials/translations/single.php:4
2994
+ msgctxt "admin-text"
2995
+ msgid "Show custom translation"
2996
+ msgstr "Show custom translation"
2997
+
2998
+ #: views/partials/translations/plural.php:11, views/partials/translations/single.php:10
2999
+ msgctxt "admin-text"
3000
+ msgid "Delete translation string"
3001
+ msgstr "Delete translation string"
3002
+
3003
+ #: views/partials/translations/plural.php:11, views/partials/translations/single.php:10
3004
+ msgctxt "admin-text"
3005
+ msgid "Delete"
3006
+ msgstr "Delete"
3007
+
3008
+ #: views/partials/translations/plural.php:19
3009
+ msgctxt "admin-text"
3010
+ msgid "singular"
3011
+ msgstr "singular"
3012
+
3013
+ #: views/partials/translations/plural.php:20
3014
+ msgctxt "admin-text"
3015
+ msgid "plural"
3016
+ msgstr "plural"
3017
+
3018
+ #: views/pages/tools/general/export-plugin-settings.php:6
3019
  msgctxt "admin-text"
3020
  msgid "Export Plugin Settings"
3021
  msgstr "Export Plugin Settings"
3022
 
3023
+ #: views/pages/tools/general/export-plugin-settings.php:12
3024
  msgctxt "admin-text"
3025
  msgid ""
3026
  "Export the Site Reviews settings for this site to a %s file. This allows "
3029
  "Export the Site Reviews settings for this site to a %s file. This allows "
3030
  "you to easily import the plugin settings into another site."
3031
 
3032
+ #: views/pages/tools/general/export-plugin-settings.php:16
3033
  msgctxt "admin-text"
3034
  msgid "To export your reviews and categories, please use the WordPress %s tool."
3035
  msgstr "To export your reviews and categories, please use the WordPress %s tool."
3036
 
3037
+ #: views/pages/tools/general/export-plugin-settings.php:17
3038
  msgctxt "admin-text"
3039
  msgid "Export"
3040
  msgstr "Export"
3041
 
3042
+ #: views/pages/tools/general/export-plugin-settings.php:23
3043
  msgctxt "admin-text"
3044
  msgid "Export Settings"
3045
  msgstr "Export Settings"
3046
 
3047
+ #: views/pages/tools/general/import-plugin-settings.php:6
3048
  msgctxt "admin-text"
3049
  msgid "Import Plugin Settings"
3050
  msgstr "Import Plugin Settings"
3051
 
3052
+ #: views/pages/tools/general/import-plugin-settings.php:12
3053
  msgctxt "admin-text"
3054
  msgid ""
3055
  "Import the Site Reviews settings from a %s file. This file can be obtained "
3058
  "Import the Site Reviews settings from a %s file. This file can be obtained "
3059
  "by exporting the settings on another site using the export tool below."
3060
 
3061
+ #: views/pages/tools/general/import-plugin-settings.php:16
3062
  msgctxt "admin-text"
3063
  msgid ""
3064
  "To import your reviews and categories from another website, please use the "
3067
  "To import your reviews and categories from another website, please use the "
3068
  "WordPress %s tool."
3069
 
3070
+ #: views/pages/tools/general/import-plugin-settings.php:17
3071
  msgctxt "admin-text"
3072
  msgid "Import"
3073
  msgstr "Import"
3074
 
3075
+ #: views/pages/tools/general/import-plugin-settings.php:26
3076
  msgctxt "admin-text"
3077
  msgid "Importing settings, please wait..."
3078
  msgstr "Importing settings, please wait..."
3079
 
3080
+ #: views/pages/tools/general/import-plugin-settings.php:26
3081
  msgctxt "admin-text"
3082
  msgid "Import Settings"
3083
  msgstr "Import Settings"
3084
 
3085
+ #: views/pages/tools/general/import-reviews.php:6
3086
  msgctxt "admin-text"
3087
  msgid "Import Third Party Reviews"
3088
  msgstr "Import Third Party Reviews"
3089
 
3090
+ #: views/pages/tools/general/import-reviews.php:13, views/pages/tools/general/optimise-db-tables.php:14
3091
  msgctxt "admin-text"
3092
  msgid ""
3093
  "Please backup your database before running this tool! You can use the %s "
3096
  "Please backup your database before running this tool! You can use the %s "
3097
  "plugin to do this."
3098
 
3099
+ #: views/pages/tools/general/import-reviews.php:18
3100
  msgctxt "admin-text"
3101
  msgid ""
3102
  "Here you can import third party reviews from a %s file. The CSV file should "
3107
  "include a header row, use a comma as the delimiter, and may contain the "
3108
  "following columns:"
3109
 
3110
+ #: views/pages/tools/general/import-reviews.php:22
3111
  msgctxt "admin-text"
3112
  msgid "The avatar URL of the reviewer"
3113
  msgstr "The avatar URL of the reviewer"
3114
 
3115
+ #: views/pages/tools/general/import-reviews.php:23
3116
  msgctxt "admin-text"
3117
  msgid "The review"
3118
  msgstr "The review"
3119
 
3120
+ #: views/pages/tools/general/import-reviews.php:23, views/pages/tools/general/import-reviews.php:24, views/pages/tools/general/import-reviews.php:29
3121
  msgctxt "admin-text"
3122
  msgid "required"
3123
  msgstr "required"
3124
 
3125
+ #: views/pages/tools/general/import-reviews.php:24
3126
  msgctxt "admin-text"
3127
  msgid "The review date as %s or a timestamp"
3128
  msgstr "The review date as %s or a timestamp"
3129
 
3130
+ #: views/pages/tools/general/import-reviews.php:25
3131
  msgctxt "admin-text"
3132
  msgid "The reviewer's email"
3133
  msgstr "The reviewer's email"
3134
 
3135
+ #: views/pages/tools/general/import-reviews.php:26
3136
  msgctxt "admin-text"
3137
  msgid "The IP address of the reviewer"
3138
  msgstr "The IP address of the reviewer"
3139
 
3140
+ #: views/pages/tools/general/import-reviews.php:27
3141
  msgctxt "admin-text"
3142
  msgid "TRUE or FALSE"
3143
  msgstr "TRUE or FALSE"
3144
 
3145
+ #: views/pages/tools/general/import-reviews.php:28
3146
  msgctxt "admin-text"
3147
  msgid "The reviewer's name"
3148
  msgstr "The reviewer's name"
3149
 
3150
+ #: views/pages/tools/general/import-reviews.php:29
3151
  msgctxt "admin-text"
3152
  msgid "A number from 0-%d"
3153
  msgstr "A number from 0-%d"
3154
 
3155
+ #: views/pages/tools/general/import-reviews.php:30
3156
  msgctxt "admin-text"
3157
  msgid "The review response"
3158
  msgstr "The review response"
3159
 
3160
+ #: views/pages/tools/general/import-reviews.php:31
3161
  msgctxt "admin-text"
3162
  msgid "The title of the review"
3163
  msgstr "The title of the review"
3164
 
3165
+ #: views/pages/tools/general/import-reviews.php:33
3166
  msgctxt "admin-text"
3167
  msgid "Entries in the CSV file that do not contain required values will be skipped."
3168
  msgstr "Entries in the CSV file that do not contain required values will be skipped."
3169
 
3170
+ #: views/pages/tools/general/import-reviews.php:41
3171
  msgctxt "admin-text"
3172
  msgid "Importing reviews, please wait..."
3173
  msgstr "Importing reviews, please wait..."
3174
 
3175
+ #: views/pages/tools/general/import-reviews.php:41
3176
  msgctxt "admin-text"
3177
  msgid "Import Reviews"
3178
  msgstr "Import Reviews"
3179
 
3180
+ #: views/pages/tools/general/migrate-plugin.php:6
3181
  msgctxt "admin-text"
3182
  msgid "Migrate Plugin"
3183
  msgstr "Migrate Plugin"
3184
 
3185
+ #: views/pages/tools/general/migrate-plugin.php:12
3186
  msgctxt "admin-text"
3187
  msgid "Hold down the ALT/Option key to force-run all previous migrations."
3188
  msgstr "Hold down the ALT/Option key to force-run all previous migrations."
3189
 
3190
+ #: views/pages/tools/general/migrate-plugin.php:14
3191
  msgctxt "admin-text"
3192
  msgid ""
3193
  "Run this tool if your reviews stopped working correctly after upgrading the "
3198
  "plugin to the latest version (i.e. read-only reviews, zero-star ratings, "
3199
  "missing role capabilities, etc.)."
3200
 
3201
+ #: views/pages/tools/general/migrate-plugin.php:20
 
 
 
 
 
3202
  msgctxt "admin-text"
3203
  msgid "Migrating, please wait..."
3204
  msgstr "Migrating, please wait..."
3205
 
3206
+ #: views/pages/tools/general/migrate-plugin.php:20
3207
  msgctxt "admin-text"
3208
  msgid "Run Migration"
3209
  msgstr "Run Migration"
3210
 
3211
+ #: views/pages/tools/general/optimise-db-tables.php:6
3212
  msgctxt "admin-text"
3213
  msgid "Optimise Your Database Tables"
3214
  msgstr "Optimise Your Database Tables"
3215
 
3216
+ #: views/pages/tools/general/optimise-db-tables.php:49
3217
  msgctxt "admin-text"
3218
  msgid ""
3219
  "Optimisation is unnecessary because your database tables already use the "
3222
  "Optimisation is unnecessary because your database tables already use the "
3223
  "InnoDB engine!"
3224
 
3225
+ #: views/pages/tools/general/optimise-db-tables.php:18
3226
  msgctxt "admin-text"
3227
  msgid ""
3228
  "The old MyISAM table engine in MySQL was replaced by the InnoDB engine as "
3235
  "engine, you are missing out on substantial performance and reliability "
3236
  "gains that the InnoDB engine provides."
3237
 
3238
+ #: views/pages/tools/general/optimise-db-tables.php:19
3239
  msgctxt "admin-text"
3240
  msgid ""
3241
  "Site Reviews makes use of specific InnoDB engine features in order to "
3248
  "(shown below) are still using the old MyISAM engine. If you convert these "
3249
  "tables to use the InnoDB engine, it will make Site Reviews perform faster."
3250
 
3251
+ #: views/pages/tools/general/optimise-db-tables.php:23
3252
  msgctxt "admin-text"
3253
  msgid "Table"
3254
  msgstr "Table"
3255
 
3256
+ #: views/pages/tools/general/optimise-db-tables.php:24
3257
  msgctxt "admin-text"
3258
  msgid "Engine"
3259
  msgstr "Engine"
3260
 
3261
+ #: views/pages/tools/general/optimise-db-tables.php:39
3262
  msgctxt "admin-text"
3263
  msgid "Converting, please wait..."
3264
  msgstr "Converting, please wait..."
3265
 
3266
+ #: views/pages/tools/general/optimise-db-tables.php:39
3267
  msgctxt "admin-text"
3268
  msgid "Convert table engine to InnoDB"
3269
  msgstr "Convert table engine to InnoDB"
3270
 
3271
+ #: views/pages/tools/general/reset-assigned-meta.php:6
3272
  msgctxt "admin-text"
3273
  msgid "Reset Assigned Meta Values"
3274
  msgstr "Reset Assigned Meta Values"
3275
 
3276
+ #: views/pages/tools/general/reset-assigned-meta.php:11
3277
  msgctxt "admin-text"
3278
  msgid ""
3279
  "Site Reviews stores the individual review count, average rating, and "
3286
  "these meta values are incorrect (perhaps you cloned a page that had reviews "
3287
  "assigned to it), you may use this tool to recalculate them."
3288
 
3289
+ #: views/pages/tools/general/reset-assigned-meta.php:16
3290
  msgctxt "admin-text"
3291
  msgid "Resetting values, please wait..."
3292
  msgstr "Resetting values, please wait..."
3293
 
3294
+ #: views/pages/tools/general/reset-assigned-meta.php:16
3295
  msgctxt "admin-text"
3296
  msgid "Reset Meta Values"
3297
  msgstr "Reset Meta Values"
3298
 
3299
+ #: views/pages/tools/general/reset-permissions.php:6, views/pages/tools/general/reset-permissions.php:21
3300
  msgctxt "admin-text"
3301
  msgid "Reset Permissions"
3302
  msgstr "Reset Permissions"
3303
 
3304
+ #: views/pages/tools/general/reset-permissions.php:12
3305
  msgctxt "admin-text"
3306
  msgid ""
3307
  "Hold down the ALT/Option key to perform a \"Hard Reset\"; this removes all "
3312
  "Site Reviews capabilites from your Editor, Author, and Contributor roles "
3313
  "before re-adding them."
3314
 
3315
+ #: views/pages/tools/general/reset-permissions.php:14
3316
  msgctxt "admin-text"
3317
  msgid ""
3318
  "Site Reviews provides custom post_type capabilities that mirror the "
3325
  "permission to edit others posts, then that role will also have permission "
3326
  "to edit other users reviews."
3327
 
3328
+ #: views/pages/tools/general/reset-permissions.php:15
3329
  msgctxt "admin-text"
3330
  msgid ""
3331
  "If you have changed the capabilities of your user roles (Administrator, "
3338
  "working correctly due to your changes, you may use this tool to reset the "
3339
  "Site Reviews capabilities for your user roles."
3340
 
3341
+ #: views/pages/tools/general/reset-permissions.php:21
3342
  msgctxt "admin-text"
3343
  msgid "Hard Reset Permissions"
3344
  msgstr "Hard Reset Permissions"
3345
 
3346
+ #: views/pages/tools/general/reset-permissions.php:21
3347
  msgctxt "admin-text"
3348
  msgid "Resetting, please wait..."
3349
  msgstr "Resetting, please wait..."
3350
 
3351
+ #: views/pages/tools/general/test-ip-detection.php:4
3352
  msgctxt "admin-text"
3353
  msgid "Test IP Address Detection"
3354
  msgstr "Test IP Address Detection"
3355
 
3356
+ #: views/pages/tools/general/test-ip-detection.php:9
3357
  msgctxt "admin-text"
3358
  msgid ""
3359
  "When reviews are submitted on your website, Site Reviews detects the IP "
3368
  "reviewers based on their IP address. The IP address is also used by Akismet "
3369
  "(if you have enabled the integration) to catch spam submissions."
3370
 
3371
+ #: views/pages/tools/general/test-ip-detection.php:10
3372
  msgctxt "admin-text"
3373
  msgid ""
3374
  "If you are getting an \"unknown\" value for IP addresses in your reviews, "
3377
  "If you are getting an \"unknown\" value for IP addresses in your reviews, "
3378
  "you may use this tool to check the visitor IP address detection."
3379
 
3380
+ #: views/pages/tools/general/test-ip-detection.php:15
3381
  msgctxt "admin-text"
3382
  msgid "Testing, please wait..."
3383
  msgstr "Testing, please wait..."
3384
 
3385
+ #: views/pages/tools/general/test-ip-detection.php:15
3386
  msgctxt "admin-text"
3387
  msgid "Test Detection"
3388
  msgstr "Test Detection"
3389
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3390
  #: config/settings.php:218
3391
  msgctxt "avatar size (admin-text)"
3392
  msgid "pixels"
languages/site-reviews.pot CHANGED
@@ -827,7 +827,7 @@ msgctxt "admin-text"
827
  msgid "Email"
828
  msgstr ""
829
 
830
- #: config/settings.php:506
831
  msgctxt "admin-text"
832
  msgid "Terms"
833
  msgstr ""
@@ -1067,7 +1067,7 @@ msgctxt "admin-text"
1067
  msgid "The [%s] method has been deprecated and will be soon be removed, please use the [%s] method instead."
1068
  msgstr ""
1069
 
1070
- #: plugin/Review.php:327, plugin/Controllers/ListTableColumns/ColumnValueAuthorName.php:20
1071
  msgctxt "admin-text"
1072
  msgid "Unknown"
1073
  msgstr ""
@@ -1141,6 +1141,11 @@ msgctxt "admin-text"
1141
  msgid "Avatar"
1142
  msgstr ""
1143
 
 
 
 
 
 
1144
  #: config/forms/review-form.php:5
1145
  msgid "Your overall rating"
1146
  msgstr ""
@@ -1201,20 +1206,20 @@ msgctxt "admin-text"
1201
  msgid "License Keys"
1202
  msgstr ""
1203
 
1204
- #: plugin/Blocks/SiteReviewsBlock.php:105, plugin/Blocks/SiteReviewsFormBlock.php:98, plugin/Blocks/SiteReviewsSummaryBlock.php:89
1205
  msgctxt "admin-text"
1206
  msgid "You have hidden all of the fields for this block."
1207
  msgstr ""
1208
 
1209
- #: plugin/Blocks/SiteReviewsBlock.php:131, plugin/Modules/Html/Tags/ReviewContentTag.php:26
1210
  msgid "Show more"
1211
  msgstr ""
1212
 
1213
- #: plugin/Commands/CreateReview.php:157
1214
  msgid "Your review has been submitted!"
1215
  msgstr ""
1216
 
1217
- #: plugin/Commands/CreateReview.php:162, views/pages/documentation/support/common-problems-and-solutions.php:65
1218
  msgid "Your review could not be submitted and the error has been logged. Please notify the site administrator."
1219
  msgstr ""
1220
 
@@ -1629,7 +1634,7 @@ msgctxt "admin-text"
1629
  msgid "Save as Unapproved"
1630
  msgstr ""
1631
 
1632
- #: plugin/Controllers/WelcomeController.php:27, views/pages/documentation/index.php:6
1633
  msgctxt "admin-text"
1634
  msgid "About"
1635
  msgstr ""
@@ -2455,52 +2460,52 @@ msgstr ""
2455
  msgid "You have already submitted a review."
2456
  msgstr ""
2457
 
2458
- #: views/pages/addons/index.php:10
2459
  msgctxt "admin-text"
2460
  msgid "All of the add-ons! Grab the special introductory discount while it still lasts..."
2461
  msgstr ""
2462
 
2463
- #: views/pages/addons/index.php:12
2464
  msgctxt "admin-text"
2465
  msgid "Discover Premium"
2466
  msgstr ""
2467
 
2468
- #: views/pages/addons/index.php:20
2469
  msgctxt "admin-text"
2470
  msgid "Allow your website visitors to sort, filter by rating, and search reviews."
2471
  msgstr ""
2472
 
2473
- #: views/pages/addons/index.php:22, views/pages/addons/index.php:32, views/pages/addons/index.php:42, views/pages/addons/index.php:62, views/pages/addons/index.php:72
2474
  msgctxt "admin-text"
2475
  msgid "View Add-on"
2476
  msgstr ""
2477
 
2478
- #: views/pages/addons/index.php:30
2479
  msgctxt "admin-text"
2480
  msgid "Create unique review forms with custom fields and review templates."
2481
  msgstr ""
2482
 
2483
- #: views/pages/addons/index.php:40
2484
  msgctxt "admin-text"
2485
  msgid "Allow your website visitors to add images with captions to their reviews."
2486
  msgstr ""
2487
 
2488
- #: views/pages/addons/index.php:50
2489
  msgctxt "admin-text"
2490
  msgid "Create custom review designs, display reviews in a grid, change the rating images, and more. Early access available to Premium members only."
2491
  msgstr ""
2492
 
2493
- #: views/pages/addons/index.php:52
2494
  msgctxt "admin-text"
2495
  msgid "Request Early Access"
2496
  msgstr ""
2497
 
2498
- #: views/pages/addons/index.php:60
2499
  msgctxt "admin-text"
2500
  msgid "Integrate with the Trustalyze Confidence System and post reviews to the blockchain."
2501
  msgstr ""
2502
 
2503
- #: views/pages/addons/index.php:70
2504
  msgctxt "admin-text"
2505
  msgid "Integrate Site Reviews with your Woocommerce products."
2506
  msgstr ""
@@ -2585,575 +2590,575 @@ msgctxt "admin-text"
2585
  msgid "Custom Translation"
2586
  msgstr ""
2587
 
2588
- #: views/pages/tools/console.php:7
2589
  msgctxt "admin-text"
2590
  msgid "Download Console"
2591
  msgstr ""
2592
 
2593
- #: views/pages/tools/console.php:13
2594
  msgctxt "admin-text"
2595
  msgid "Reloading..."
2596
  msgstr ""
2597
 
2598
- #: views/pages/tools/console.php:13
2599
  msgctxt "admin-text"
2600
  msgid "Reload"
2601
  msgstr ""
2602
 
2603
- #: views/pages/tools/console.php:20
2604
  msgctxt "admin-text"
2605
  msgid "Clearing..."
2606
  msgstr ""
2607
 
2608
- #: views/pages/tools/console.php:20
2609
  msgctxt "admin-text"
2610
  msgid "Clear"
2611
  msgstr ""
2612
 
2613
- #: views/pages/tools/general.php:6
2614
  msgctxt "admin-text"
2615
- msgid "Export Plugin Settings"
2616
  msgstr ""
2617
 
2618
- #: views/pages/tools/general.php:8
2619
  msgctxt "admin-text"
2620
- msgid "Export the Site Reviews settings for this site to a %s file. This allows you to easily import the plugin settings into another site."
2621
  msgstr ""
2622
 
2623
- #: views/pages/tools/general.php:12
2624
  msgctxt "admin-text"
2625
- msgid "To export your reviews and categories, please use the WordPress %s tool."
2626
  msgstr ""
2627
 
2628
- #: views/pages/tools/general.php:13
2629
  msgctxt "admin-text"
2630
- msgid "Export"
2631
  msgstr ""
2632
 
2633
- #: views/pages/tools/general.php:18
2634
  msgctxt "admin-text"
2635
- msgid "Export Settings"
2636
  msgstr ""
2637
 
2638
- #: views/pages/tools/general.php:23
2639
  msgctxt "admin-text"
2640
- msgid "Import Plugin Settings"
2641
  msgstr ""
2642
 
2643
- #: views/pages/tools/general.php:25
2644
  msgctxt "admin-text"
2645
- msgid "Import the Site Reviews settings from a %s file. This file can be obtained by exporting the settings on another site using the export tool below."
2646
  msgstr ""
2647
 
2648
- #: views/pages/tools/general.php:29
2649
  msgctxt "admin-text"
2650
- msgid "To import your reviews and categories from another website, please use the WordPress %s tool."
2651
  msgstr ""
2652
 
2653
- #: views/pages/tools/general.php:30
2654
  msgctxt "admin-text"
2655
- msgid "Import"
2656
  msgstr ""
2657
 
2658
- #: views/pages/tools/general.php:38
2659
  msgctxt "admin-text"
2660
- msgid "Importing settings, please wait..."
2661
  msgstr ""
2662
 
2663
- #: views/pages/tools/general.php:38
2664
  msgctxt "admin-text"
2665
- msgid "Import Settings"
2666
  msgstr ""
2667
 
2668
- #: views/pages/tools/general.php:45
2669
  msgctxt "admin-text"
2670
- msgid "Import Third Party Reviews"
2671
  msgstr ""
2672
 
2673
- #: views/pages/tools/general.php:48, views/pages/tools/general.php:104
2674
  msgctxt "admin-text"
2675
- msgid "Please backup your database before running this tool! You can use the %s plugin to do this."
2676
  msgstr ""
2677
 
2678
- #: views/pages/tools/general.php:53
2679
  msgctxt "admin-text"
2680
- msgid "Here you can import third party reviews from a %s file. The CSV file should include a header row, use a comma as the delimiter, and may contain the following columns:"
2681
  msgstr ""
2682
 
2683
- #: views/pages/tools/general.php:57
2684
  msgctxt "admin-text"
2685
- msgid "The avatar URL of the reviewer"
2686
  msgstr ""
2687
 
2688
- #: views/pages/tools/general.php:58
2689
  msgctxt "admin-text"
2690
- msgid "The review"
2691
  msgstr ""
2692
 
2693
- #: views/pages/tools/general.php:58, views/pages/tools/general.php:59, views/pages/tools/general.php:64
2694
  msgctxt "admin-text"
2695
- msgid "required"
2696
  msgstr ""
2697
 
2698
- #: views/pages/tools/general.php:59
2699
  msgctxt "admin-text"
2700
- msgid "The review date as %s or a timestamp"
2701
  msgstr ""
2702
 
2703
- #: views/pages/tools/general.php:60
2704
  msgctxt "admin-text"
2705
- msgid "The reviewer's email"
2706
  msgstr ""
2707
 
2708
- #: views/pages/tools/general.php:61
2709
  msgctxt "admin-text"
2710
- msgid "The IP address of the reviewer"
2711
  msgstr ""
2712
 
2713
- #: views/pages/tools/general.php:62
2714
  msgctxt "admin-text"
2715
- msgid "TRUE or FALSE"
2716
  msgstr ""
2717
 
2718
- #: views/pages/tools/general.php:63
2719
  msgctxt "admin-text"
2720
- msgid "The reviewer's name"
2721
  msgstr ""
2722
 
2723
- #: views/pages/tools/general.php:64
2724
  msgctxt "admin-text"
2725
- msgid "A number from 0-%d"
2726
  msgstr ""
2727
 
2728
- #: views/pages/tools/general.php:65
2729
  msgctxt "admin-text"
2730
- msgid "The review response"
2731
  msgstr ""
2732
 
2733
- #: views/pages/tools/general.php:66
2734
  msgctxt "admin-text"
2735
- msgid "The title of the review"
2736
  msgstr ""
2737
 
2738
- #: views/pages/tools/general.php:68
2739
  msgctxt "admin-text"
2740
- msgid "Entries in the CSV file that do not contain required values will be skipped."
2741
  msgstr ""
2742
 
2743
- #: views/pages/tools/general.php:75
2744
  msgctxt "admin-text"
2745
- msgid "Importing reviews, please wait..."
2746
  msgstr ""
2747
 
2748
- #: views/pages/tools/general.php:75
2749
  msgctxt "admin-text"
2750
- msgid "Import Reviews"
2751
  msgstr ""
2752
 
2753
- #: views/pages/tools/general.php:82
2754
  msgctxt "admin-text"
2755
- msgid "Migrate Plugin"
2756
  msgstr ""
2757
 
2758
- #: views/pages/tools/general.php:84
2759
  msgctxt "admin-text"
2760
- msgid "Hold down the ALT/Option key to force-run all previous migrations."
2761
  msgstr ""
2762
 
2763
- #: views/pages/tools/general.php:86
2764
  msgctxt "admin-text"
2765
- msgid "Run this tool if your reviews stopped working correctly after upgrading the plugin to the latest version (i.e. read-only reviews, zero-star ratings, missing role capabilities, etc.)."
2766
  msgstr ""
2767
 
2768
- #: views/pages/tools/general.php:93, views/partials/notices/migrate.php:10
2769
  msgctxt "admin-text"
2770
  msgid "Run All Migrations"
2771
  msgstr ""
2772
 
2773
- #: views/pages/tools/general.php:93
2774
  msgctxt "admin-text"
2775
- msgid "Migrating, please wait..."
2776
  msgstr ""
2777
 
2778
- #: views/pages/tools/general.php:93
2779
  msgctxt "admin-text"
2780
- msgid "Run Migration"
2781
  msgstr ""
2782
 
2783
- #: views/pages/tools/general.php:100
2784
  msgctxt "admin-text"
2785
- msgid "Optimise Your Database Tables"
2786
  msgstr ""
2787
 
2788
- #: views/pages/tools/general.php:139
2789
  msgctxt "admin-text"
2790
- msgid "Optimisation is unnecessary because your database tables already use the InnoDB engine!"
2791
  msgstr ""
2792
 
2793
- #: views/pages/tools/general.php:108
2794
  msgctxt "admin-text"
2795
- msgid "The old MyISAM table engine in MySQL was replaced by the InnoDB engine as the default over 10 years ago! If your database tables still use the MyISAM engine, you are missing out on substantial performance and reliability gains that the InnoDB engine provides."
2796
  msgstr ""
2797
 
2798
- #: views/pages/tools/general.php:109
2799
  msgctxt "admin-text"
2800
- msgid "Site Reviews makes use of specific InnoDB engine features in order to perform faster database queries. However, some of your database tables (shown below) are still using the old MyISAM engine. If you convert these tables to use the InnoDB engine, it will make Site Reviews perform faster."
2801
  msgstr ""
2802
 
2803
- #: views/pages/tools/general.php:113
2804
  msgctxt "admin-text"
2805
- msgid "Table"
2806
  msgstr ""
2807
 
2808
- #: views/pages/tools/general.php:114
2809
  msgctxt "admin-text"
2810
- msgid "Engine"
2811
  msgstr ""
2812
 
2813
- #: views/pages/tools/general.php:129
2814
  msgctxt "admin-text"
2815
- msgid "Converting, please wait..."
2816
  msgstr ""
2817
 
2818
- #: views/pages/tools/general.php:129
2819
  msgctxt "admin-text"
2820
- msgid "Convert table engine to InnoDB"
2821
  msgstr ""
2822
 
2823
- #: views/pages/tools/general.php:145
2824
- msgctxt "admin-text"
2825
- msgid "Reset Assigned Meta Values"
 
 
 
 
 
2826
  msgstr ""
2827
 
2828
- #: views/pages/tools/general.php:146
2829
- msgctxt "admin-text"
2830
- msgid "Site Reviews stores the individual review count, average rating, and ranking for each assigned post, category, and user. If you suspect that these meta values are incorrect (perhaps you cloned a page that had reviews assigned to it), you may use this tool to recalculate them."
2831
  msgstr ""
2832
 
2833
- #: views/pages/tools/general.php:152
2834
- msgctxt "admin-text"
2835
- msgid "Resetting values, please wait..."
2836
  msgstr ""
2837
 
2838
- #: views/pages/tools/general.php:152
2839
- msgctxt "admin-text"
2840
- msgid "Reset Meta Values"
2841
  msgstr ""
2842
 
2843
- #: views/pages/tools/general.php:159, views/pages/tools/general.php:171
2844
- msgctxt "admin-text"
2845
- msgid "Reset Permissions"
2846
  msgstr ""
2847
 
2848
- #: views/pages/tools/general.php:161
2849
- msgctxt "admin-text"
2850
- msgid "Hold down the ALT/Option key to perform a \"Hard Reset\"; this removes all Site Reviews capabilites from your Editor, Author, and Contributor roles before re-adding them."
2851
  msgstr ""
2852
 
2853
- #: views/pages/tools/general.php:163
2854
- msgctxt "admin-text"
2855
- msgid "Site Reviews provides custom post_type capabilities that mirror the capabilities of your posts by default. For example, if a user role has permission to edit others posts, then that role will also have permission to edit other users reviews."
2856
  msgstr ""
2857
 
2858
- #: views/pages/tools/general.php:164
2859
- msgctxt "admin-text"
2860
- msgid "If you have changed the capabilities of your user roles (Administrator, Editor, Author, and Contributor) and you suspect that Site Reviews is not working correctly due to your changes, you may use this tool to reset the Site Reviews capabilities for your user roles."
2861
  msgstr ""
2862
 
2863
- #: views/pages/tools/general.php:171
2864
- msgctxt "admin-text"
2865
- msgid "Hard Reset Permissions"
2866
  msgstr ""
2867
 
2868
- #: views/pages/tools/general.php:171
2869
- msgctxt "admin-text"
2870
- msgid "Resetting, please wait..."
2871
  msgstr ""
2872
 
2873
- #: views/pages/tools/general.php:180
2874
- msgctxt "admin-text"
2875
- msgid "Test IP Address Detection"
2876
  msgstr ""
2877
 
2878
- #: views/pages/tools/general.php:181
 
 
 
 
 
 
 
2879
  msgctxt "admin-text"
2880
- msgid "When reviews are submitted on your website, Site Reviews detects the IP address of the person submitting the review and saves it to the submitted review. This allows you to limit review submissions or to blacklist reviewers based on their IP address. The IP address is also used by Akismet (if you have enabled the integration) to catch spam submissions."
2881
  msgstr ""
2882
 
2883
- #: views/pages/tools/general.php:182
2884
  msgctxt "admin-text"
2885
- msgid "If you are getting an \"unknown\" value for IP addresses in your reviews, you may use this tool to check the visitor IP address detection."
2886
  msgstr ""
2887
 
2888
- #: views/pages/tools/general.php:188
2889
  msgctxt "admin-text"
2890
- msgid "Testing, please wait..."
2891
  msgstr ""
2892
 
2893
- #: views/pages/tools/general.php:188
2894
  msgctxt "admin-text"
2895
- msgid "Test Detection"
2896
  msgstr ""
2897
 
2898
- #: views/pages/tools/sync.php:9
2899
  msgctxt "admin-text"
2900
- msgid "Service"
2901
  msgstr ""
2902
 
2903
- #: views/pages/tools/sync.php:11, views/pages/tools/sync.php:34
2904
  msgctxt "admin-text"
2905
- msgid "Last Sync"
2906
  msgstr ""
2907
 
2908
- #: views/pages/tools/sync.php:24
2909
  msgctxt "admin-text"
2910
- msgid "License"
2911
  msgstr ""
2912
 
2913
- #: views/pages/tools/sync.php:25
2914
  msgctxt "admin-text"
2915
- msgid "Documentation"
2916
  msgstr ""
2917
 
2918
- #: views/pages/tools/sync.php:28
2919
  msgctxt "admin-text"
2920
- msgid "Show more details"
2921
  msgstr ""
2922
 
2923
- #: views/pages/tools/sync.php:43
2924
  msgctxt "admin-text"
2925
- msgid "Please wait..."
2926
  msgstr ""
2927
 
2928
- #: views/pages/tools/sync.php:45, views/pages/tools/sync.php:48
2929
  msgctxt "admin-text"
2930
- msgid "Inactive"
2931
  msgstr ""
2932
 
2933
- #: views/pages/tools/sync.php:57
2934
  msgctxt "admin-text"
2935
- msgid "Syncing..."
2936
  msgstr ""
2937
 
2938
- #: views/pages/tools/system-info.php:7
2939
  msgctxt "admin-text"
2940
- msgid "Download System Info"
2941
  msgstr ""
2942
 
2943
- #: views/partials/addons/addon.php:19
2944
  msgctxt "admin-text"
2945
- msgid "Activate"
2946
  msgstr ""
2947
 
2948
- #: views/partials/addons/addon.php:15
2949
  msgctxt "admin-text"
2950
- msgid "Installed"
2951
  msgstr ""
2952
 
2953
- #: views/partials/addons/license-missing.php:4
2954
  msgctxt "admin-text"
2955
- msgid "Enter a valid license key for automatic updates."
2956
  msgstr ""
2957
 
2958
- #: views/partials/addons/support-notice.php:5
2959
  msgctxt "admin-text"
2960
- msgid "To receive support for this add-on, please %s to your Nifty Plugins account."
2961
  msgstr ""
2962
 
2963
- #: views/partials/addons/support-notice.php:6
2964
  msgctxt "admin-text"
2965
- msgid "login"
2966
  msgstr ""
2967
 
2968
- #: views/partials/editor/assigned-entry.php:7
2969
  msgctxt "admin-text"
2970
- msgid "Remove assignment"
2971
  msgstr ""
2972
 
2973
- #: views/partials/editor/bulk-edit-assigned-posts.php:11, views/partials/editor/metabox-assigned-posts.php:6
2974
  msgctxt "admin-text"
2975
- msgid "Search by ID or title..."
2976
  msgstr ""
2977
 
2978
- #: views/partials/editor/bulk-edit-assigned-users.php:11, views/partials/editor/metabox-assigned-users.php:6
2979
  msgctxt "admin-text"
2980
- msgid "Search by ID or name..."
2981
  msgstr ""
2982
 
2983
- #: views/partials/editor/metabox-assigned-posts.php:9
2984
  msgctxt "admin-text"
2985
- msgid "Search for a Page, Post, or <abbr title=\"Custom Post Type\">CPT</abbr> that you would like to assign this review to."
2986
  msgstr ""
2987
 
2988
- #: views/partials/editor/metabox-assigned-users.php:9
2989
  msgctxt "admin-text"
2990
- msgid "Search for a user that you would like to assign this review to."
2991
  msgstr ""
2992
 
2993
- #: views/partials/editor/metabox-categories.php:7
2994
  msgctxt "admin-text"
2995
- msgid "Most Used"
2996
  msgstr ""
2997
 
2998
- #: views/partials/editor/metabox-response.php:5
2999
  msgctxt "admin-text"
3000
- msgid "If you need to publicly respond to this review, enter your response here."
3001
  msgstr ""
3002
 
3003
- #: views/partials/editor/pinned.php:8
3004
  msgctxt "admin-text"
3005
- msgid "Edit pinned status"
3006
  msgstr ""
3007
 
3008
- #: views/partials/editor/pinned.php:13
3009
  msgctxt "admin-text"
3010
- msgid "Pin"
3011
  msgstr ""
3012
 
3013
- #: views/partials/editor/pinned.php:14
3014
  msgctxt "admin-text"
3015
- msgid "Unpin"
3016
  msgstr ""
3017
 
3018
- #: views/partials/editor/pinned.php:16
3019
  msgctxt "admin-text"
3020
- msgid "OK"
3021
  msgstr ""
3022
 
3023
- #: views/partials/editor/pinned.php:17
3024
  msgctxt "admin-text"
3025
- msgid "Cancel"
3026
  msgstr ""
3027
 
3028
- #: views/partials/editor/review.php:4
3029
  msgctxt "admin-text"
3030
- msgid "no title"
3031
  msgstr ""
3032
 
3033
- #: views/partials/editor/review.php:17
3034
  msgctxt "admin-text"
3035
- msgid "Toggle panel: Public Response"
3036
  msgstr ""
3037
 
3038
- #: views/partials/editor/review.php:21
3039
  msgctxt "admin-text"
3040
- msgid "Public Response"
3041
  msgstr ""
3042
 
3043
- #: views/partials/notices/migrate.php:6
3044
  msgctxt "admin-text"
3045
- msgid "Database Update Required"
3046
  msgstr ""
3047
 
3048
- #: views/partials/notices/migrate.php:7
3049
  msgctxt "admin-text"
3050
- msgid "Site Reviews needs to update the database and your reviews to the newest version. If this notice keeps appearing, please read the %s section on the Help page."
3051
  msgstr ""
3052
 
3053
- #: views/partials/notices/migrate.php:10
3054
  msgctxt "admin-text"
3055
- msgid "Updating, please wait..."
3056
  msgstr ""
3057
 
3058
- #: views/partials/notices/migrate.php:10
3059
  msgctxt "admin-text"
3060
- msgid "Update Database"
3061
  msgstr ""
3062
 
3063
- #: views/partials/notices/premium.php:10
3064
  msgctxt "admin-text"
3065
- msgid "Learn more"
3066
  msgstr ""
3067
 
3068
- #: views/partials/notices/welcome.php:4
3069
  msgctxt "admin-text"
3070
- msgid "See What's New"
3071
  msgstr ""
3072
 
3073
- #: views/partials/notices/welcome.php:6
3074
  msgctxt "admin-text"
3075
- msgid "Read the upgrade guide"
3076
  msgstr ""
3077
 
3078
- #: views/partials/translations/plural.php:4, views/partials/translations/single.php:4
3079
  msgctxt "admin-text"
3080
- msgid "Show custom translation"
3081
  msgstr ""
3082
 
3083
- #: views/partials/translations/plural.php:11, views/partials/translations/single.php:10
3084
  msgctxt "admin-text"
3085
- msgid "Delete translation string"
3086
  msgstr ""
3087
 
3088
- #: views/partials/translations/plural.php:11, views/partials/translations/single.php:10
3089
  msgctxt "admin-text"
3090
- msgid "Delete"
3091
  msgstr ""
3092
 
3093
- #: views/partials/translations/plural.php:19
3094
  msgctxt "admin-text"
3095
- msgid "singular"
3096
  msgstr ""
3097
 
3098
- #: views/partials/translations/plural.php:20
3099
  msgctxt "admin-text"
3100
- msgid "plural"
3101
  msgstr ""
3102
 
3103
- #: plugin/Modules/Html/Fields/Rating.php:17
3104
- msgid "%s Star"
3105
- msgid_plural "%s Stars"
3106
- msgstr[0] ""
3107
- msgstr[1] ""
3108
-
3109
- #: plugin/Modules/Html/Fields/Rating.php:22
3110
- msgid "Select a Rating"
3111
  msgstr ""
3112
 
3113
- #: plugin/Modules/Html/Fields/YesNo.php:32
3114
- msgid "No"
 
3115
  msgstr ""
3116
 
3117
- #: plugin/Modules/Html/Fields/YesNo.php:33
3118
- msgid "Yes"
 
3119
  msgstr ""
3120
 
3121
- #: plugin/Modules/Html/Partials/Pagination.php:31
3122
- msgctxt "screen reader text"
3123
- msgid "Site Reviews navigation"
3124
  msgstr ""
3125
 
3126
- #: plugin/Modules/Html/Partials/StarRating.php:28
3127
- msgid "Rated <strong>%s</strong> out of %s based on %s ratings"
 
3128
  msgstr ""
3129
 
3130
- #: plugin/Modules/Html/Partials/StarRating.php:29
3131
- msgid "Rated <strong>%s</strong> out of %s"
 
3132
  msgstr ""
3133
 
3134
- #: plugin/Modules/Html/Tags/FormSubmitButtonTag.php:43
3135
- msgid "Submit your review"
 
3136
  msgstr ""
3137
 
3138
- #: plugin/Modules/Html/Tags/ReviewAssignedLinksTag.php:43
3139
- msgid "Review of %s"
 
3140
  msgstr ""
3141
 
3142
- #: plugin/Modules/Html/Tags/ReviewContentTag.php:25
3143
- msgid "Show less"
 
3144
  msgstr ""
3145
 
3146
- #: plugin/Modules/Html/Tags/ReviewResponseTag.php:15
3147
- msgid "Response from %s"
 
3148
  msgstr ""
3149
 
3150
- #: plugin/Modules/Html/Tags/ReviewTitleTag.php:15
3151
- msgid "No Title"
 
3152
  msgstr ""
3153
-
3154
- #: plugin/Modules/Html/Tags/SummaryTextTag.php:29
3155
- msgctxt "Do not translate {rating}, {max}, and {num}, they are template tags."
3156
- msgid "{rating} out of {max} stars (based on {num} review)"
3157
- msgid_plural "{rating} out of {max} stars (based on {num} reviews)"
3158
- msgstr[0] ""
3159
- msgstr[1] ""
827
  msgid "Email"
828
  msgstr ""
829
 
830
+ #: config/settings.php:506, config/forms/metabox-fields.php:30
831
  msgctxt "admin-text"
832
  msgid "Terms"
833
  msgstr ""
1067
  msgid "The [%s] method has been deprecated and will be soon be removed, please use the [%s] method instead."
1068
  msgstr ""
1069
 
1070
+ #: plugin/Review.php:328, plugin/Controllers/ListTableColumns/ColumnValueAuthorName.php:20
1071
  msgctxt "admin-text"
1072
  msgid "Unknown"
1073
  msgstr ""
1141
  msgid "Avatar"
1142
  msgstr ""
1143
 
1144
+ #: config/forms/metabox-fields.php:31
1145
+ msgctxt "admin-text"
1146
+ msgid "Terms Accepted"
1147
+ msgstr ""
1148
+
1149
  #: config/forms/review-form.php:5
1150
  msgid "Your overall rating"
1151
  msgstr ""
1206
  msgid "License Keys"
1207
  msgstr ""
1208
 
1209
+ #: plugin/Blocks/SiteReviewsBlock.php:109, plugin/Blocks/SiteReviewsFormBlock.php:98, plugin/Blocks/SiteReviewsSummaryBlock.php:93
1210
  msgctxt "admin-text"
1211
  msgid "You have hidden all of the fields for this block."
1212
  msgstr ""
1213
 
1214
+ #: plugin/Blocks/SiteReviewsBlock.php:135, plugin/Modules/Html/Tags/ReviewContentTag.php:26
1215
  msgid "Show more"
1216
  msgstr ""
1217
 
1218
+ #: plugin/Commands/CreateReview.php:159
1219
  msgid "Your review has been submitted!"
1220
  msgstr ""
1221
 
1222
+ #: plugin/Commands/CreateReview.php:164, views/pages/documentation/support/common-problems-and-solutions.php:65
1223
  msgid "Your review could not be submitted and the error has been logged. Please notify the site administrator."
1224
  msgstr ""
1225
 
1634
  msgid "Save as Unapproved"
1635
  msgstr ""
1636
 
1637
+ #: plugin/Controllers/WelcomeController.php:27, views/pages/addons/index.php:6, views/pages/documentation/index.php:6, views/pages/settings/index.php:6, views/pages/tools/index.php:6
1638
  msgctxt "admin-text"
1639
  msgid "About"
1640
  msgstr ""
2460
  msgid "You have already submitted a review."
2461
  msgstr ""
2462
 
2463
+ #: views/pages/addons/index.php:13
2464
  msgctxt "admin-text"
2465
  msgid "All of the add-ons! Grab the special introductory discount while it still lasts..."
2466
  msgstr ""
2467
 
2468
+ #: views/pages/addons/index.php:15
2469
  msgctxt "admin-text"
2470
  msgid "Discover Premium"
2471
  msgstr ""
2472
 
2473
+ #: views/pages/addons/index.php:23
2474
  msgctxt "admin-text"
2475
  msgid "Allow your website visitors to sort, filter by rating, and search reviews."
2476
  msgstr ""
2477
 
2478
+ #: views/pages/addons/index.php:25, views/pages/addons/index.php:35, views/pages/addons/index.php:45, views/pages/addons/index.php:65, views/pages/addons/index.php:75
2479
  msgctxt "admin-text"
2480
  msgid "View Add-on"
2481
  msgstr ""
2482
 
2483
+ #: views/pages/addons/index.php:33
2484
  msgctxt "admin-text"
2485
  msgid "Create unique review forms with custom fields and review templates."
2486
  msgstr ""
2487
 
2488
+ #: views/pages/addons/index.php:43
2489
  msgctxt "admin-text"
2490
  msgid "Allow your website visitors to add images with captions to their reviews."
2491
  msgstr ""
2492
 
2493
+ #: views/pages/addons/index.php:53
2494
  msgctxt "admin-text"
2495
  msgid "Create custom review designs, display reviews in a grid, change the rating images, and more. Early access available to Premium members only."
2496
  msgstr ""
2497
 
2498
+ #: views/pages/addons/index.php:55
2499
  msgctxt "admin-text"
2500
  msgid "Request Early Access"
2501
  msgstr ""
2502
 
2503
+ #: views/pages/addons/index.php:63
2504
  msgctxt "admin-text"
2505
  msgid "Integrate with the Trustalyze Confidence System and post reviews to the blockchain."
2506
  msgstr ""
2507
 
2508
+ #: views/pages/addons/index.php:73
2509
  msgctxt "admin-text"
2510
  msgid "Integrate Site Reviews with your Woocommerce products."
2511
  msgstr ""
2590
  msgid "Custom Translation"
2591
  msgstr ""
2592
 
2593
+ #: views/pages/tools/console.php:8
2594
  msgctxt "admin-text"
2595
  msgid "Download Console"
2596
  msgstr ""
2597
 
2598
+ #: views/pages/tools/console.php:15
2599
  msgctxt "admin-text"
2600
  msgid "Reloading..."
2601
  msgstr ""
2602
 
2603
+ #: views/pages/tools/console.php:15
2604
  msgctxt "admin-text"
2605
  msgid "Reload"
2606
  msgstr ""
2607
 
2608
+ #: views/pages/tools/console.php:22
2609
  msgctxt "admin-text"
2610
  msgid "Clearing..."
2611
  msgstr ""
2612
 
2613
+ #: views/pages/tools/console.php:22
2614
  msgctxt "admin-text"
2615
  msgid "Clear"
2616
  msgstr ""
2617
 
2618
+ #: views/pages/tools/sync.php:9
2619
  msgctxt "admin-text"
2620
+ msgid "Service"
2621
  msgstr ""
2622
 
2623
+ #: views/pages/tools/sync.php:11, views/pages/tools/sync.php:34
2624
  msgctxt "admin-text"
2625
+ msgid "Last Sync"
2626
  msgstr ""
2627
 
2628
+ #: views/pages/tools/sync.php:24
2629
  msgctxt "admin-text"
2630
+ msgid "License"
2631
  msgstr ""
2632
 
2633
+ #: views/pages/tools/sync.php:25
2634
  msgctxt "admin-text"
2635
+ msgid "Documentation"
2636
  msgstr ""
2637
 
2638
+ #: views/pages/tools/sync.php:28
2639
  msgctxt "admin-text"
2640
+ msgid "Show more details"
2641
  msgstr ""
2642
 
2643
+ #: views/pages/tools/sync.php:43
2644
  msgctxt "admin-text"
2645
+ msgid "Please wait..."
2646
  msgstr ""
2647
 
2648
+ #: views/pages/tools/sync.php:45, views/pages/tools/sync.php:48
2649
  msgctxt "admin-text"
2650
+ msgid "Inactive"
2651
  msgstr ""
2652
 
2653
+ #: views/pages/tools/sync.php:57
2654
  msgctxt "admin-text"
2655
+ msgid "Syncing..."
2656
  msgstr ""
2657
 
2658
+ #: views/pages/tools/system-info.php:8
2659
  msgctxt "admin-text"
2660
+ msgid "Download System Info"
2661
  msgstr ""
2662
 
2663
+ #: views/partials/addons/addon.php:19
2664
  msgctxt "admin-text"
2665
+ msgid "Activate"
2666
  msgstr ""
2667
 
2668
+ #: views/partials/addons/addon.php:15
2669
  msgctxt "admin-text"
2670
+ msgid "Installed"
2671
  msgstr ""
2672
 
2673
+ #: views/partials/addons/license-missing.php:4
2674
  msgctxt "admin-text"
2675
+ msgid "Enter a valid license key for automatic updates."
2676
  msgstr ""
2677
 
2678
+ #: views/partials/addons/support-notice.php:5
2679
  msgctxt "admin-text"
2680
+ msgid "To receive support for this add-on, please %s to your Nifty Plugins account."
2681
  msgstr ""
2682
 
2683
+ #: views/partials/addons/support-notice.php:6
2684
  msgctxt "admin-text"
2685
+ msgid "login"
2686
  msgstr ""
2687
 
2688
+ #: views/partials/editor/assigned-entry.php:7
2689
  msgctxt "admin-text"
2690
+ msgid "Remove assignment"
2691
  msgstr ""
2692
 
2693
+ #: views/partials/editor/bulk-edit-assigned-posts.php:11, views/partials/editor/metabox-assigned-posts.php:6
2694
  msgctxt "admin-text"
2695
+ msgid "Search by ID or title..."
2696
  msgstr ""
2697
 
2698
+ #: views/partials/editor/bulk-edit-assigned-users.php:11, views/partials/editor/metabox-assigned-users.php:6
2699
  msgctxt "admin-text"
2700
+ msgid "Search by ID or name..."
2701
  msgstr ""
2702
 
2703
+ #: views/partials/editor/metabox-assigned-posts.php:9
2704
  msgctxt "admin-text"
2705
+ msgid "Search for a Page, Post, or <abbr title=\"Custom Post Type\">CPT</abbr> that you would like to assign this review to."
2706
  msgstr ""
2707
 
2708
+ #: views/partials/editor/metabox-assigned-users.php:9
2709
  msgctxt "admin-text"
2710
+ msgid "Search for a user that you would like to assign this review to."
2711
  msgstr ""
2712
 
2713
+ #: views/partials/editor/metabox-categories.php:7
2714
  msgctxt "admin-text"
2715
+ msgid "Most Used"
2716
  msgstr ""
2717
 
2718
+ #: views/partials/editor/metabox-response.php:5
2719
  msgctxt "admin-text"
2720
+ msgid "If you need to publicly respond to this review, enter your response here."
2721
  msgstr ""
2722
 
2723
+ #: views/partials/editor/pinned.php:8
2724
  msgctxt "admin-text"
2725
+ msgid "Edit pinned status"
2726
  msgstr ""
2727
 
2728
+ #: views/partials/editor/pinned.php:13
2729
  msgctxt "admin-text"
2730
+ msgid "Pin"
2731
  msgstr ""
2732
 
2733
+ #: views/partials/editor/pinned.php:14
2734
  msgctxt "admin-text"
2735
+ msgid "Unpin"
2736
  msgstr ""
2737
 
2738
+ #: views/partials/editor/pinned.php:16
2739
  msgctxt "admin-text"
2740
+ msgid "OK"
2741
  msgstr ""
2742
 
2743
+ #: views/partials/editor/pinned.php:17
2744
  msgctxt "admin-text"
2745
+ msgid "Cancel"
2746
  msgstr ""
2747
 
2748
+ #: views/partials/editor/review.php:4
2749
  msgctxt "admin-text"
2750
+ msgid "no title"
2751
  msgstr ""
2752
 
2753
+ #: views/partials/editor/review.php:17
2754
  msgctxt "admin-text"
2755
+ msgid "Toggle panel: Public Response"
2756
  msgstr ""
2757
 
2758
+ #: views/partials/editor/review.php:21
2759
  msgctxt "admin-text"
2760
+ msgid "Public Response"
2761
  msgstr ""
2762
 
2763
+ #: views/partials/notices/migrate.php:6
2764
  msgctxt "admin-text"
2765
+ msgid "Database Update Required"
2766
  msgstr ""
2767
 
2768
+ #: views/partials/notices/migrate.php:7
2769
  msgctxt "admin-text"
2770
+ msgid "Site Reviews needs to update the database and your reviews to the newest version. If this notice keeps appearing, please read the %s section on the Help page."
2771
  msgstr ""
2772
 
2773
+ #: views/partials/notices/migrate.php:10, views/pages/tools/general/migrate-plugin.php:20
2774
  msgctxt "admin-text"
2775
  msgid "Run All Migrations"
2776
  msgstr ""
2777
 
2778
+ #: views/partials/notices/migrate.php:10
2779
  msgctxt "admin-text"
2780
+ msgid "Updating, please wait..."
2781
  msgstr ""
2782
 
2783
+ #: views/partials/notices/migrate.php:10
2784
  msgctxt "admin-text"
2785
+ msgid "Update Database"
2786
  msgstr ""
2787
 
2788
+ #: views/partials/notices/premium.php:10
2789
  msgctxt "admin-text"
2790
+ msgid "Learn more"
2791
  msgstr ""
2792
 
2793
+ #: views/partials/notices/welcome.php:4
2794
  msgctxt "admin-text"
2795
+ msgid "See What's New"
2796
  msgstr ""
2797
 
2798
+ #: views/partials/notices/welcome.php:6
2799
  msgctxt "admin-text"
2800
+ msgid "Read the upgrade guide"
2801
  msgstr ""
2802
 
2803
+ #: views/partials/translations/plural.php:4, views/partials/translations/single.php:4
2804
  msgctxt "admin-text"
2805
+ msgid "Show custom translation"
2806
  msgstr ""
2807
 
2808
+ #: views/partials/translations/plural.php:11, views/partials/translations/single.php:10
2809
  msgctxt "admin-text"
2810
+ msgid "Delete translation string"
2811
  msgstr ""
2812
 
2813
+ #: views/partials/translations/plural.php:11, views/partials/translations/single.php:10
2814
  msgctxt "admin-text"
2815
+ msgid "Delete"
2816
  msgstr ""
2817
 
2818
+ #: views/partials/translations/plural.php:19
2819
  msgctxt "admin-text"
2820
+ msgid "singular"
2821
  msgstr ""
2822
 
2823
+ #: views/partials/translations/plural.php:20
2824
  msgctxt "admin-text"
2825
+ msgid "plural"
2826
  msgstr ""
2827
 
2828
+ #: plugin/Modules/Html/Fields/Rating.php:17
2829
+ msgid "%s Star"
2830
+ msgid_plural "%s Stars"
2831
+ msgstr[0] ""
2832
+ msgstr[1] ""
2833
+
2834
+ #: plugin/Modules/Html/Fields/Rating.php:22
2835
+ msgid "Select a Rating"
2836
  msgstr ""
2837
 
2838
+ #: plugin/Modules/Html/Fields/YesNo.php:32
2839
+ msgid "No"
 
2840
  msgstr ""
2841
 
2842
+ #: plugin/Modules/Html/Fields/YesNo.php:33
2843
+ msgid "Yes"
 
2844
  msgstr ""
2845
 
2846
+ #: plugin/Modules/Html/Partials/Pagination.php:31
2847
+ msgctxt "screen reader text"
2848
+ msgid "Site Reviews navigation"
2849
  msgstr ""
2850
 
2851
+ #: plugin/Modules/Html/Partials/StarRating.php:28
2852
+ msgid "Rated <strong>%s</strong> out of %s based on %s ratings"
 
2853
  msgstr ""
2854
 
2855
+ #: plugin/Modules/Html/Partials/StarRating.php:29
2856
+ msgid "Rated <strong>%s</strong> out of %s"
 
2857
  msgstr ""
2858
 
2859
+ #: plugin/Modules/Html/Tags/FormSubmitButtonTag.php:43
2860
+ msgid "Submit your review"
 
2861
  msgstr ""
2862
 
2863
+ #: plugin/Modules/Html/Tags/ReviewAssignedLinksTag.php:43
2864
+ msgid "Review of %s"
 
2865
  msgstr ""
2866
 
2867
+ #: plugin/Modules/Html/Tags/ReviewContentTag.php:25
2868
+ msgid "Show less"
 
2869
  msgstr ""
2870
 
2871
+ #: plugin/Modules/Html/Tags/ReviewResponseTag.php:15
2872
+ msgid "Response from %s"
 
2873
  msgstr ""
2874
 
2875
+ #: plugin/Modules/Html/Tags/ReviewTitleTag.php:15
2876
+ msgid "No Title"
 
2877
  msgstr ""
2878
 
2879
+ #: plugin/Modules/Html/Tags/SummaryTextTag.php:29
2880
+ msgctxt "Do not translate {rating}, {max}, and {num}, they are template tags."
2881
+ msgid "{rating} out of {max} stars (based on {num} review)"
2882
+ msgid_plural "{rating} out of {max} stars (based on {num} reviews)"
2883
+ msgstr[0] ""
2884
+ msgstr[1] ""
2885
+
2886
+ #: views/pages/tools/general/export-plugin-settings.php:6
2887
  msgctxt "admin-text"
2888
+ msgid "Export Plugin Settings"
2889
  msgstr ""
2890
 
2891
+ #: views/pages/tools/general/export-plugin-settings.php:12
2892
  msgctxt "admin-text"
2893
+ msgid "Export the Site Reviews settings for this site to a %s file. This allows you to easily import the plugin settings into another site."
2894
  msgstr ""
2895
 
2896
+ #: views/pages/tools/general/export-plugin-settings.php:16
2897
  msgctxt "admin-text"
2898
+ msgid "To export your reviews and categories, please use the WordPress %s tool."
2899
  msgstr ""
2900
 
2901
+ #: views/pages/tools/general/export-plugin-settings.php:17
2902
  msgctxt "admin-text"
2903
+ msgid "Export"
2904
  msgstr ""
2905
 
2906
+ #: views/pages/tools/general/export-plugin-settings.php:23
2907
  msgctxt "admin-text"
2908
+ msgid "Export Settings"
2909
  msgstr ""
2910
 
2911
+ #: views/pages/tools/general/import-plugin-settings.php:6
2912
  msgctxt "admin-text"
2913
+ msgid "Import Plugin Settings"
2914
  msgstr ""
2915
 
2916
+ #: views/pages/tools/general/import-plugin-settings.php:12
2917
  msgctxt "admin-text"
2918
+ msgid "Import the Site Reviews settings from a %s file. This file can be obtained by exporting the settings on another site using the export tool below."
2919
  msgstr ""
2920
 
2921
+ #: views/pages/tools/general/import-plugin-settings.php:16
2922
  msgctxt "admin-text"
2923
+ msgid "To import your reviews and categories from another website, please use the WordPress %s tool."
2924
  msgstr ""
2925
 
2926
+ #: views/pages/tools/general/import-plugin-settings.php:17
2927
  msgctxt "admin-text"
2928
+ msgid "Import"
2929
  msgstr ""
2930
 
2931
+ #: views/pages/tools/general/import-plugin-settings.php:26
2932
  msgctxt "admin-text"
2933
+ msgid "Importing settings, please wait..."
2934
  msgstr ""
2935
 
2936
+ #: views/pages/tools/general/import-plugin-settings.php:26
2937
  msgctxt "admin-text"
2938
+ msgid "Import Settings"
2939
  msgstr ""
2940
 
2941
+ #: views/pages/tools/general/import-reviews.php:6
2942
  msgctxt "admin-text"
2943
+ msgid "Import Third Party Reviews"
2944
  msgstr ""
2945
 
2946
+ #: views/pages/tools/general/import-reviews.php:13, views/pages/tools/general/optimise-db-tables.php:14
2947
  msgctxt "admin-text"
2948
+ msgid "Please backup your database before running this tool! You can use the %s plugin to do this."
2949
  msgstr ""
2950
 
2951
+ #: views/pages/tools/general/import-reviews.php:18
2952
  msgctxt "admin-text"
2953
+ msgid "Here you can import third party reviews from a %s file. The CSV file should include a header row, use a comma as the delimiter, and may contain the following columns:"
2954
  msgstr ""
2955
 
2956
+ #: views/pages/tools/general/import-reviews.php:22
2957
  msgctxt "admin-text"
2958
+ msgid "The avatar URL of the reviewer"
2959
  msgstr ""
2960
 
2961
+ #: views/pages/tools/general/import-reviews.php:23
2962
  msgctxt "admin-text"
2963
+ msgid "The review"
2964
  msgstr ""
2965
 
2966
+ #: views/pages/tools/general/import-reviews.php:23, views/pages/tools/general/import-reviews.php:24, views/pages/tools/general/import-reviews.php:29
2967
  msgctxt "admin-text"
2968
+ msgid "required"
2969
  msgstr ""
2970
 
2971
+ #: views/pages/tools/general/import-reviews.php:24
2972
  msgctxt "admin-text"
2973
+ msgid "The review date as %s or a timestamp"
2974
  msgstr ""
2975
 
2976
+ #: views/pages/tools/general/import-reviews.php:25
2977
  msgctxt "admin-text"
2978
+ msgid "The reviewer's email"
2979
  msgstr ""
2980
 
2981
+ #: views/pages/tools/general/import-reviews.php:26
2982
  msgctxt "admin-text"
2983
+ msgid "The IP address of the reviewer"
2984
  msgstr ""
2985
 
2986
+ #: views/pages/tools/general/import-reviews.php:27
2987
  msgctxt "admin-text"
2988
+ msgid "TRUE or FALSE"
2989
  msgstr ""
2990
 
2991
+ #: views/pages/tools/general/import-reviews.php:28
2992
  msgctxt "admin-text"
2993
+ msgid "The reviewer's name"
2994
  msgstr ""
2995
 
2996
+ #: views/pages/tools/general/import-reviews.php:29
2997
  msgctxt "admin-text"
2998
+ msgid "A number from 0-%d"
2999
  msgstr ""
3000
 
3001
+ #: views/pages/tools/general/import-reviews.php:30
3002
  msgctxt "admin-text"
3003
+ msgid "The review response"
3004
  msgstr ""
3005
 
3006
+ #: views/pages/tools/general/import-reviews.php:31
3007
  msgctxt "admin-text"
3008
+ msgid "The title of the review"
3009
  msgstr ""
3010
 
3011
+ #: views/pages/tools/general/import-reviews.php:33
3012
  msgctxt "admin-text"
3013
+ msgid "Entries in the CSV file that do not contain required values will be skipped."
3014
  msgstr ""
3015
 
3016
+ #: views/pages/tools/general/import-reviews.php:41
3017
  msgctxt "admin-text"
3018
+ msgid "Importing reviews, please wait..."
3019
  msgstr ""
3020
 
3021
+ #: views/pages/tools/general/import-reviews.php:41
3022
  msgctxt "admin-text"
3023
+ msgid "Import Reviews"
3024
  msgstr ""
3025
 
3026
+ #: views/pages/tools/general/migrate-plugin.php:6
3027
  msgctxt "admin-text"
3028
+ msgid "Migrate Plugin"
3029
  msgstr ""
3030
 
3031
+ #: views/pages/tools/general/migrate-plugin.php:12
3032
  msgctxt "admin-text"
3033
+ msgid "Hold down the ALT/Option key to force-run all previous migrations."
3034
  msgstr ""
3035
 
3036
+ #: views/pages/tools/general/migrate-plugin.php:14
3037
  msgctxt "admin-text"
3038
+ msgid "Run this tool if your reviews stopped working correctly after upgrading the plugin to the latest version (i.e. read-only reviews, zero-star ratings, missing role capabilities, etc.)."
3039
  msgstr ""
3040
 
3041
+ #: views/pages/tools/general/migrate-plugin.php:20
3042
  msgctxt "admin-text"
3043
+ msgid "Migrating, please wait..."
3044
  msgstr ""
3045
 
3046
+ #: views/pages/tools/general/migrate-plugin.php:20
3047
  msgctxt "admin-text"
3048
+ msgid "Run Migration"
3049
  msgstr ""
3050
 
3051
+ #: views/pages/tools/general/optimise-db-tables.php:6
3052
  msgctxt "admin-text"
3053
+ msgid "Optimise Your Database Tables"
3054
  msgstr ""
3055
 
3056
+ #: views/pages/tools/general/optimise-db-tables.php:49
3057
  msgctxt "admin-text"
3058
+ msgid "Optimisation is unnecessary because your database tables already use the InnoDB engine!"
3059
  msgstr ""
3060
 
3061
+ #: views/pages/tools/general/optimise-db-tables.php:18
3062
  msgctxt "admin-text"
3063
+ msgid "The old MyISAM table engine in MySQL was replaced by the InnoDB engine as the default over 10 years ago! If your database tables still use the MyISAM engine, you are missing out on substantial performance and reliability gains that the InnoDB engine provides."
3064
  msgstr ""
3065
 
3066
+ #: views/pages/tools/general/optimise-db-tables.php:19
3067
  msgctxt "admin-text"
3068
+ msgid "Site Reviews makes use of specific InnoDB engine features in order to perform faster database queries. However, some of your database tables (shown below) are still using the old MyISAM engine. If you convert these tables to use the InnoDB engine, it will make Site Reviews perform faster."
3069
  msgstr ""
3070
 
3071
+ #: views/pages/tools/general/optimise-db-tables.php:23
3072
  msgctxt "admin-text"
3073
+ msgid "Table"
3074
  msgstr ""
3075
 
3076
+ #: views/pages/tools/general/optimise-db-tables.php:24
3077
  msgctxt "admin-text"
3078
+ msgid "Engine"
3079
  msgstr ""
3080
 
3081
+ #: views/pages/tools/general/optimise-db-tables.php:39
3082
  msgctxt "admin-text"
3083
+ msgid "Converting, please wait..."
3084
  msgstr ""
3085
 
3086
+ #: views/pages/tools/general/optimise-db-tables.php:39
3087
  msgctxt "admin-text"
3088
+ msgid "Convert table engine to InnoDB"
3089
  msgstr ""
3090
 
3091
+ #: views/pages/tools/general/reset-assigned-meta.php:6
3092
  msgctxt "admin-text"
3093
+ msgid "Reset Assigned Meta Values"
3094
  msgstr ""
3095
 
3096
+ #: views/pages/tools/general/reset-assigned-meta.php:11
3097
  msgctxt "admin-text"
3098
+ msgid "Site Reviews stores the individual review count, average rating, and ranking for each assigned post, category, and user. If you suspect that these meta values are incorrect (perhaps you cloned a page that had reviews assigned to it), you may use this tool to recalculate them."
3099
  msgstr ""
3100
 
3101
+ #: views/pages/tools/general/reset-assigned-meta.php:16
3102
  msgctxt "admin-text"
3103
+ msgid "Resetting values, please wait..."
3104
  msgstr ""
3105
 
3106
+ #: views/pages/tools/general/reset-assigned-meta.php:16
3107
  msgctxt "admin-text"
3108
+ msgid "Reset Meta Values"
3109
  msgstr ""
3110
 
3111
+ #: views/pages/tools/general/reset-permissions.php:6, views/pages/tools/general/reset-permissions.php:21
3112
+ msgctxt "admin-text"
3113
+ msgid "Reset Permissions"
 
 
 
 
 
3114
  msgstr ""
3115
 
3116
+ #: views/pages/tools/general/reset-permissions.php:12
3117
+ msgctxt "admin-text"
3118
+ msgid "Hold down the ALT/Option key to perform a \"Hard Reset\"; this removes all Site Reviews capabilites from your Editor, Author, and Contributor roles before re-adding them."
3119
  msgstr ""
3120
 
3121
+ #: views/pages/tools/general/reset-permissions.php:14
3122
+ msgctxt "admin-text"
3123
+ msgid "Site Reviews provides custom post_type capabilities that mirror the capabilities of your posts by default. For example, if a user role has permission to edit others posts, then that role will also have permission to edit other users reviews."
3124
  msgstr ""
3125
 
3126
+ #: views/pages/tools/general/reset-permissions.php:15
3127
+ msgctxt "admin-text"
3128
+ msgid "If you have changed the capabilities of your user roles (Administrator, Editor, Author, and Contributor) and you suspect that Site Reviews is not working correctly due to your changes, you may use this tool to reset the Site Reviews capabilities for your user roles."
3129
  msgstr ""
3130
 
3131
+ #: views/pages/tools/general/reset-permissions.php:21
3132
+ msgctxt "admin-text"
3133
+ msgid "Hard Reset Permissions"
3134
  msgstr ""
3135
 
3136
+ #: views/pages/tools/general/reset-permissions.php:21
3137
+ msgctxt "admin-text"
3138
+ msgid "Resetting, please wait..."
3139
  msgstr ""
3140
 
3141
+ #: views/pages/tools/general/test-ip-detection.php:4
3142
+ msgctxt "admin-text"
3143
+ msgid "Test IP Address Detection"
3144
  msgstr ""
3145
 
3146
+ #: views/pages/tools/general/test-ip-detection.php:9
3147
+ msgctxt "admin-text"
3148
+ msgid "When reviews are submitted on your website, Site Reviews detects the IP address of the person submitting the review and saves it to the submitted review. This allows you to limit review submissions or to blacklist reviewers based on their IP address. The IP address is also used by Akismet (if you have enabled the integration) to catch spam submissions."
3149
  msgstr ""
3150
 
3151
+ #: views/pages/tools/general/test-ip-detection.php:10
3152
+ msgctxt "admin-text"
3153
+ msgid "If you are getting an \"unknown\" value for IP addresses in your reviews, you may use this tool to check the visitor IP address detection."
3154
  msgstr ""
3155
 
3156
+ #: views/pages/tools/general/test-ip-detection.php:15
3157
+ msgctxt "admin-text"
3158
+ msgid "Testing, please wait..."
3159
  msgstr ""
3160
 
3161
+ #: views/pages/tools/general/test-ip-detection.php:15
3162
+ msgctxt "admin-text"
3163
+ msgid "Test Detection"
3164
  msgstr ""
 
 
 
 
 
 
 
migration.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ use GeminiLabs\SiteReviews\Database;
4
+
5
+ defined('ABSPATH') || die;
6
+
7
+ /**
8
+ * @return array
9
+ * @since 5.9
10
+ */
11
+ function glsr_migration_5_9_db_version_1_1(array $values) {
12
+ if (!glsr(Database::class)->version('1.1')) {
13
+ unset($values['terms']);
14
+ }
15
+ return $values;
16
+ }
17
+ add_filter('site-reviews/config/forms/metabox-fields', 'glsr_migration_5_9_db_version_1_1');
18
+ add_filter('site-reviews/defaults/rating', 'glsr_migration_5_9_db_version_1_1');
19
+ add_filter('site-reviews/defaults/reviews', 'glsr_migration_5_9_db_version_1_1');
plugin/Application.php CHANGED
@@ -13,6 +13,7 @@ use GeminiLabs\SiteReviews\Install;
13
  * @property array $addons
14
  * @property string $capability
15
  * @property string $cron_event
 
16
  * @property array $defaults
17
  * @property string $export_key
18
  * @property string $file
@@ -35,6 +36,7 @@ final class Application extends Container
35
  use Session;
36
  use Storage;
37
 
 
38
  const EXPORT_KEY = '_glsr_export';
39
  const ID = 'site-reviews';
40
  const PAGED_HANDLE = 'pagination_request';
13
  * @property array $addons
14
  * @property string $capability
15
  * @property string $cron_event
16
+ * @property array $db_version
17
  * @property array $defaults
18
  * @property string $export_key
19
  * @property string $file
36
  use Session;
37
  use Storage;
38
 
39
+ const DB_VERSION = '1.1';
40
  const EXPORT_KEY = '_glsr_export';
41
  const ID = 'site-reviews';
42
  const PAGED_HANDLE = 'pagination_request';
plugin/Blocks/SiteReviewsBlock.php CHANGED
@@ -64,6 +64,10 @@ class SiteReviewsBlock extends Block
64
  'default' => false,
65
  'type' => 'boolean',
66
  ],
 
 
 
 
67
  'type' => [
68
  'default' => 'local',
69
  'type' => 'string',
64
  'default' => false,
65
  'type' => 'boolean',
66
  ],
67
+ 'terms' => [
68
+ 'default' => '',
69
+ 'type' => 'string',
70
+ ],
71
  'type' => [
72
  'default' => 'local',
73
  'type' => 'string',
plugin/Blocks/SiteReviewsSummaryBlock.php CHANGED
@@ -52,6 +52,10 @@ class SiteReviewsSummaryBlock extends Block
52
  'default' => false,
53
  'type' => 'boolean',
54
  ],
 
 
 
 
55
  'type' => [
56
  'default' => 'local',
57
  'type' => 'string',
52
  'default' => false,
53
  'type' => 'boolean',
54
  ],
55
+ 'terms' => [
56
+ 'default' => '',
57
+ 'type' => 'string',
58
+ ],
59
  'type' => [
60
  'default' => 'local',
61
  'type' => 'string',
plugin/Commands/CreateReview.php CHANGED
@@ -36,6 +36,8 @@ class CreateReview implements Contract
36
  public $referer;
37
  public $request;
38
  public $response;
 
 
39
  public $title;
40
  public $type;
41
  public $url;
36
  public $referer;
37
  public $request;
38
  public $response;
39
+ public $terms;
40
+ public $terms_exist;
41
  public $title;
42
  public $type;
43
  public $url;
plugin/Controllers/ReviewController.php CHANGED
@@ -382,6 +382,7 @@ class ReviewController extends Controller
382
  $submittedValues = Helper::filterInputArray(glsr()->id);
383
  if (Arr::get($submittedValues, 'is_editing_review')) {
384
  $submittedValues['rating'] = Arr::get($submittedValues, 'rating');
 
385
  glsr(ReviewManager::class)->update($review->ID, $submittedValues);
386
  glsr(ReviewManager::class)->updateCustom($review->ID, $submittedValues);
387
  }
382
  $submittedValues = Helper::filterInputArray(glsr()->id);
383
  if (Arr::get($submittedValues, 'is_editing_review')) {
384
  $submittedValues['rating'] = Arr::get($submittedValues, 'rating');
385
+ $submittedValues['terms'] = Arr::get($submittedValues, 'terms', 0);
386
  glsr(ReviewManager::class)->update($review->ID, $submittedValues);
387
  glsr(ReviewManager::class)->updateCustom($review->ID, $submittedValues);
388
  }
plugin/Database.php CHANGED
@@ -393,4 +393,16 @@ class Database
393
  glsr(Query::class)->sql($this->db->last_query); // for logging use only
394
  return $this->logErrors($result);
395
  }
 
 
 
 
 
 
 
 
 
 
 
 
396
  }
393
  glsr(Query::class)->sql($this->db->last_query); // for logging use only
394
  return $this->logErrors($result);
395
  }
396
+
397
+ /**
398
+ * @param string $compareToVersion
399
+ * @return bool|string
400
+ */
401
+ public function version($compareToVersion = null)
402
+ {
403
+ $dbVersion = Cast::toString(get_option(glsr()->prefix.'db_version'));
404
+ return isset($compareToVersion)
405
+ ? version_compare($dbVersion, Cast::toString($compareToVersion), '>=')
406
+ : $dbVersion;
407
+ }
408
  }
plugin/Database/NormalizeQueryArgs.php CHANGED
@@ -25,6 +25,7 @@ use GeminiLabs\SiteReviews\Helpers\Str;
25
  * @property int[] $post__not_in;
26
  * @property int $rating;
27
  * @property string $status;
 
28
  * @property string $type;
29
  * @property int[] $user__in;
30
  * @property int[] $user__not_in;
25
  * @property int[] $post__not_in;
26
  * @property int $rating;
27
  * @property string $status;
28
+ * @property string $terms;
29
  * @property string $type;
30
  * @property int[] $user__in;
31
  * @property int[] $user__not_in;
plugin/Database/Sql.php CHANGED
@@ -2,8 +2,10 @@
2
 
3
  namespace GeminiLabs\SiteReviews\Database;
4
 
 
5
  use GeminiLabs\SiteReviews\Helper;
6
  use GeminiLabs\SiteReviews\Helpers\Arr;
 
7
  use GeminiLabs\SiteReviews\Helpers\Str;
8
 
9
  trait Sql
@@ -25,10 +27,13 @@ trait Sql
25
  public function clauses($clause, array $values = [])
26
  {
27
  $prefix = Str::restrictTo('and,join', $clause);
28
- foreach (array_keys($this->args) as $key) {
29
  $method = Helper::buildMethodName($key, 'clause-'.$prefix);
30
- if (method_exists($this, $method)) {
31
- $values[$key] = call_user_func([$this, $method]);
 
 
 
32
  }
33
  }
34
  return $values;
@@ -127,6 +132,7 @@ trait Sql
127
  {
128
  $and = $this->clauses('and');
129
  $and = glsr()->filterArrayUnique('query/sql/and', $and, $this->sqlHandle(), $this);
 
130
  return 'WHERE 1=1 '.implode(' ', $and);
131
  }
132
 
@@ -143,23 +149,26 @@ trait Sql
143
  */
144
  protected function clauseAndAssignedPosts()
145
  {
146
- $clauses = [];
147
- if ($postIds = $this->args['assigned_posts']) {
148
- $clauses[] = sprintf('(apt.post_id IN (%s) AND apt.is_published = 1)', implode(',', $postIds));
149
- }
150
- if ($termIds = $this->args['assigned_terms']) {
151
- $clauses[] = sprintf('(att.term_id IN (%s))', implode(',', $termIds));
152
- }
153
- if ($userIds = $this->args['assigned_users']) {
154
- $clauses[] = sprintf('(aut.user_id IN (%s))', implode(',', $userIds));
155
- }
156
- $operator = glsr()->filterString('query/sql/clause/operator', 'OR', $clauses, $this->args);
157
- $operator = strtoupper($operator);
158
- $operator = Helper::ifTrue(in_array($operator, ['AND', 'OR']), $operator, 'OR');
159
- if ($clauses = implode(" {$operator} ", $clauses)) {
160
- return "AND ($clauses)";
161
- }
162
- return '';
 
 
 
163
  }
164
 
165
  /**
@@ -191,9 +200,7 @@ trait Sql
191
  */
192
  protected function clauseAndEmail()
193
  {
194
- return Helper::ifTrue(!empty($this->args['email']),
195
- $this->db->prepare('AND r.email = %s', $this->args['email'])
196
- );
197
  }
198
 
199
  /**
@@ -201,9 +208,7 @@ trait Sql
201
  */
202
  protected function clauseAndIpAddress()
203
  {
204
- return Helper::ifTrue(!empty($this->args['ip_address']),
205
- $this->db->prepare('AND r.ip_address = %s', $this->args['ip_address'])
206
- );
207
  }
208
 
209
  /**
@@ -211,9 +216,7 @@ trait Sql
211
  */
212
  protected function clauseAndPostIn()
213
  {
214
- return Helper::ifTrue(!empty($this->args['post__in']),
215
- $this->db->prepare('AND r.review_id IN (%s)', implode(',', $this->args['post__in']))
216
- );
217
  }
218
 
219
  /**
@@ -221,9 +224,7 @@ trait Sql
221
  */
222
  protected function clauseAndPostNotIn()
223
  {
224
- return Helper::ifTrue(!empty($this->args['post__not_in']),
225
- $this->db->prepare('AND r.review_id NOT IN (%s)', implode(',', $this->args['post__not_in']))
226
- );
227
  }
228
 
229
  /**
@@ -231,7 +232,7 @@ trait Sql
231
  */
232
  protected function clauseAndRating()
233
  {
234
- return Helper::ifTrue(!empty($this->args['rating']),
235
  $this->db->prepare('AND r.rating > %d', --$this->args['rating'])
236
  );
237
  }
@@ -241,9 +242,15 @@ trait Sql
241
  */
242
  protected function clauseAndStatus()
243
  {
244
- return Helper::ifTrue(!Helper::isEmpty($this->args['status']),
245
- $this->db->prepare('AND r.is_approved = %d', $this->args['status'])
246
- );
 
 
 
 
 
 
247
  }
248
 
249
  /**
@@ -251,9 +258,7 @@ trait Sql
251
  */
252
  protected function clauseAndType()
253
  {
254
- return Helper::ifTrue(!empty($this->args['type']),
255
- $this->db->prepare('AND r.type = %s', $this->args['type'])
256
- );
257
  }
258
 
259
  /**
@@ -261,9 +266,7 @@ trait Sql
261
  */
262
  protected function clauseAndUserIn()
263
  {
264
- return Helper::ifTrue(!empty($this->args['user__in']),
265
- $this->db->prepare('AND p.post_author IN (%s)', implode(',', $this->args['user__in']))
266
- );
267
  }
268
 
269
  /**
@@ -271,9 +274,7 @@ trait Sql
271
  */
272
  protected function clauseAndUserNotIn()
273
  {
274
- return Helper::ifTrue(!empty($this->args['user__not_in']),
275
- $this->db->prepare('AND p.post_author NOT IN (%s)', implode(',', $this->args['user__not_in']))
276
- );
277
  }
278
 
279
  /**
@@ -281,9 +282,7 @@ trait Sql
281
  */
282
  protected function clauseJoinAssignedPosts()
283
  {
284
- return Helper::ifTrue(!empty($this->args['assigned_posts']),
285
- "INNER JOIN {$this->table('assigned_posts')} AS apt ON r.ID = apt.rating_id"
286
- );
287
  }
288
 
289
  /**
@@ -291,9 +290,7 @@ trait Sql
291
  */
292
  protected function clauseJoinAssignedTerms()
293
  {
294
- return Helper::ifTrue(!empty($this->args['assigned_terms']),
295
- "INNER JOIN {$this->table('assigned_terms')} AS att ON r.ID = att.rating_id"
296
- );
297
  }
298
 
299
  /**
@@ -301,9 +298,7 @@ trait Sql
301
  */
302
  protected function clauseJoinAssignedUsers()
303
  {
304
- return Helper::ifTrue(!empty($this->args['assigned_users']),
305
- "INNER JOIN {$this->table('assigned_users')} AS aut ON r.ID = aut.rating_id"
306
- );
307
  }
308
 
309
  /**
@@ -321,9 +316,7 @@ trait Sql
321
  */
322
  protected function clauseJoinUserIn()
323
  {
324
- return Helper::ifTrue(!empty($this->args['user__in']),
325
- "INNER JOIN {$this->db->posts} AS p ON r.review_id = p.ID"
326
- );
327
  }
328
 
329
  /**
@@ -331,9 +324,7 @@ trait Sql
331
  */
332
  protected function clauseJoinUserNotIn()
333
  {
334
- return Helper::ifTrue(!empty($this->args['user__not_in']),
335
- "INNER JOIN {$this->db->posts} AS p ON r.review_id = p.ID"
336
- );
337
  }
338
 
339
  /**
@@ -346,6 +337,27 @@ trait Sql
346
  );
347
  }
348
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
349
  /**
350
  * @param int $depth
351
  * @return string
2
 
3
  namespace GeminiLabs\SiteReviews\Database;
4
 
5
+ use GeminiLabs\SiteReviews\Database;
6
  use GeminiLabs\SiteReviews\Helper;
7
  use GeminiLabs\SiteReviews\Helpers\Arr;
8
+ use GeminiLabs\SiteReviews\Helpers\Cast;
9
  use GeminiLabs\SiteReviews\Helpers\Str;
10
 
11
  trait Sql
27
  public function clauses($clause, array $values = [])
28
  {
29
  $prefix = Str::restrictTo('and,join', $clause);
30
+ foreach ($this->args as $key => $value) {
31
  $method = Helper::buildMethodName($key, 'clause-'.$prefix);
32
+ if (!method_exists($this, $method) || Helper::isEmpty($value)) {
33
+ continue;
34
+ }
35
+ if ($statement = call_user_func([$this, $method])) {
36
+ $values[$key] = $statement;
37
  }
38
  }
39
  return $values;
132
  {
133
  $and = $this->clauses('and');
134
  $and = glsr()->filterArrayUnique('query/sql/and', $and, $this->sqlHandle(), $this);
135
+ $and = $this->normalizeAndClauses($and);
136
  return 'WHERE 1=1 '.implode(' ', $and);
137
  }
138
 
149
  */
150
  protected function clauseAndAssignedPosts()
151
  {
152
+ $postIds = implode(',', $this->args['assigned_posts']);
153
+ return sprintf('(apt.post_id IN (%s) AND apt.is_published = 1)', $postIds);
154
+ }
155
+
156
+ /**
157
+ * @return string
158
+ */
159
+ protected function clauseAndAssignedTerms()
160
+ {
161
+ $termIds = implode(',', $this->args['assigned_terms']);
162
+ return sprintf('(att.term_id IN (%s))', $termIds);
163
+ }
164
+
165
+ /**
166
+ * @return string
167
+ */
168
+ protected function clauseAndAssignedUsers()
169
+ {
170
+ $userIds = implode(',', $this->args['assigned_users']);
171
+ return sprintf('(aut.user_id IN (%s))', $userIds);
172
  }
173
 
174
  /**
200
  */
201
  protected function clauseAndEmail()
202
  {
203
+ return $this->db->prepare('AND r.email = %s', $this->args['email']);
 
 
204
  }
205
 
206
  /**
208
  */
209
  protected function clauseAndIpAddress()
210
  {
211
+ return $this->db->prepare('AND r.ip_address = %s', $this->args['ip_address']);
 
 
212
  }
213
 
214
  /**
216
  */
217
  protected function clauseAndPostIn()
218
  {
219
+ return $this->db->prepare('AND r.review_id IN (%s)', implode(',', $this->args['post__in']));
 
 
220
  }
221
 
222
  /**
224
  */
225
  protected function clauseAndPostNotIn()
226
  {
227
+ return $this->db->prepare('AND r.review_id NOT IN (%s)', implode(',', $this->args['post__not_in']));
 
 
228
  }
229
 
230
  /**
232
  */
233
  protected function clauseAndRating()
234
  {
235
+ return Helper::ifTrue($this->args['rating'] > 0,
236
  $this->db->prepare('AND r.rating > %d', --$this->args['rating'])
237
  );
238
  }
242
  */
243
  protected function clauseAndStatus()
244
  {
245
+ return $this->db->prepare('AND r.is_approved = %d', $this->args['status']);
246
+ }
247
+
248
+ /**
249
+ * @return string
250
+ */
251
+ protected function clauseAndTerms()
252
+ {
253
+ return $this->db->prepare('AND r.terms = %d', Cast::toBool($this->args['terms']));
254
  }
255
 
256
  /**
258
  */
259
  protected function clauseAndType()
260
  {
261
+ return $this->db->prepare('AND r.type = %s', $this->args['type']);
 
 
262
  }
263
 
264
  /**
266
  */
267
  protected function clauseAndUserIn()
268
  {
269
+ return $this->db->prepare('AND p.post_author IN (%s)', implode(',', $this->args['user__in']));
 
 
270
  }
271
 
272
  /**
274
  */
275
  protected function clauseAndUserNotIn()
276
  {
277
+ return $this->db->prepare('AND p.post_author NOT IN (%s)', implode(',', $this->args['user__not_in']));
 
 
278
  }
279
 
280
  /**
282
  */
283
  protected function clauseJoinAssignedPosts()
284
  {
285
+ return "INNER JOIN {$this->table('assigned_posts')} AS apt ON r.ID = apt.rating_id";
 
 
286
  }
287
 
288
  /**
290
  */
291
  protected function clauseJoinAssignedTerms()
292
  {
293
+ return "INNER JOIN {$this->table('assigned_terms')} AS att ON r.ID = att.rating_id";
 
 
294
  }
295
 
296
  /**
298
  */
299
  protected function clauseJoinAssignedUsers()
300
  {
301
+ return "INNER JOIN {$this->table('assigned_users')} AS aut ON r.ID = aut.rating_id";
 
 
302
  }
303
 
304
  /**
316
  */
317
  protected function clauseJoinUserIn()
318
  {
319
+ return "INNER JOIN {$this->db->posts} AS p ON r.review_id = p.ID";
 
 
320
  }
321
 
322
  /**
324
  */
325
  protected function clauseJoinUserNotIn()
326
  {
327
+ return "INNER JOIN {$this->db->posts} AS p ON r.review_id = p.ID";
 
 
328
  }
329
 
330
  /**
337
  );
338
  }
339
 
340
+ /**
341
+ * @return array
342
+ */
343
+ protected function normalizeAndClauses(array $and)
344
+ {
345
+ $clauses = [];
346
+ foreach ($and as $key => $value) {
347
+ if (Str::startsWith('assigned_', $key)) {
348
+ $clauses[] = $value;
349
+ unset($and[$key]);
350
+ }
351
+ }
352
+ $operator = glsr()->filterString('query/sql/clause/operator', 'OR', $clauses, $this->args);
353
+ $operator = strtoupper($operator);
354
+ $operator = Helper::ifTrue(in_array($operator, ['AND', 'OR']), $operator, 'OR');
355
+ if ($clauses = implode(" {$operator} ", $clauses)) {
356
+ $and['assigned'] = "AND ($clauses)";
357
+ }
358
+ return $and;
359
+ }
360
+
361
  /**
362
  * @param int $depth
363
  * @return string
plugin/Database/SqlSchema.php CHANGED
@@ -3,6 +3,7 @@
3
  namespace GeminiLabs\SiteReviews\Database;
4
 
5
  use GeminiLabs\SiteReviews\Database;
 
6
  use GeminiLabs\SiteReviews\Helpers\Str;
7
 
8
  class SqlSchema
@@ -121,6 +122,7 @@ class SqlSchema
121
  if ($this->foreignConstraintExists($constraint, $foreignTable)) {
122
  return false;
123
  }
 
124
  return glsr(Database::class)->dbQuery(glsr(Query::class)->sql("
125
  ALTER TABLE {$table}
126
  ADD CONSTRAINT {$constraint}
@@ -143,6 +145,14 @@ class SqlSchema
143
  }
144
  }
145
 
 
 
 
 
 
 
 
 
146
  /**
147
  * @param string $table
148
  * @return bool|int
@@ -262,9 +272,6 @@ class SqlSchema
262
  $this->createAssignedTermsTable();
263
  $this->createAssignedUsersTable();
264
  $this->createRatingTable();
265
- if ($this->tablesExist()) {
266
- add_option(glsr()->prefix.'db_version', '1.0');
267
- }
268
  }
269
 
270
  /**
@@ -284,6 +291,20 @@ class SqlSchema
284
  "));
285
  }
286
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
287
  /**
288
  * This method expects the fully formed foreign constraint key
289
  * @param string $constraint
@@ -338,17 +359,21 @@ class SqlSchema
338
  }
339
 
340
  /**
341
- * @param string $constraint
342
- * @return string
 
 
 
343
  */
344
- public function foreignConstraint($constraint)
345
  {
346
- $constraint = Str::prefix($constraint, glsr()->prefix);
347
- $constraint = Str::suffix($constraint, '_foreign');
348
- if (is_multisite() && $this->db->blogid > 1) {
349
- return Str::suffix($constraint, '_'.$this->db->blogid);
350
- }
351
- return $constraint;
 
352
  }
353
 
354
  /**
3
  namespace GeminiLabs\SiteReviews\Database;
4
 
5
  use GeminiLabs\SiteReviews\Database;
6
+ use GeminiLabs\SiteReviews\Helpers\Cast;
7
  use GeminiLabs\SiteReviews\Helpers\Str;
8
 
9
  class SqlSchema
122
  if ($this->foreignConstraintExists($constraint, $foreignTable)) {
123
  return false;
124
  }
125
+ $this->removeOrphanedRows($table, $foreignKey, $foreignTable, $foreignColumn);
126
  return glsr(Database::class)->dbQuery(glsr(Query::class)->sql("
127
  ALTER TABLE {$table}
128
  ADD CONSTRAINT {$constraint}
145
  }
146
  }
147
 
148
+ public function columnExists($table, $column)
149
+ {
150
+ $result = glsr(Database::class)->dbQuery(
151
+ glsr(Query::class)->sql("SHOW COLUMNS FROM {$this->table($table)} LIKE '{$column}'")
152
+ );
153
+ return Cast::toBool($result);
154
+ }
155
+
156
  /**
157
  * @param string $table
158
  * @return bool|int
272
  $this->createAssignedTermsTable();
273
  $this->createAssignedUsersTable();
274
  $this->createRatingTable();
 
 
 
275
  }
276
 
277
  /**
291
  "));
292
  }
293
 
294
+ /**
295
+ * @param string $constraint
296
+ * @return string
297
+ */
298
+ public function foreignConstraint($constraint)
299
+ {
300
+ $constraint = Str::prefix($constraint, glsr()->prefix);
301
+ $constraint = Str::suffix($constraint, '_foreign');
302
+ if (is_multisite() && $this->db->blogid > 1) {
303
+ return Str::suffix($constraint, '_'.$this->db->blogid);
304
+ }
305
+ return $constraint;
306
+ }
307
+
308
  /**
309
  * This method expects the fully formed foreign constraint key
310
  * @param string $constraint
359
  }
360
 
361
  /**
362
+ * @param string $table
363
+ * @param string $foreignKey
364
+ * @param string $foreignTable
365
+ * @param string $foreignColumn
366
+ * @return int|bool
367
  */
368
+ public function removeOrphanedRows($table, $foreignKey, $foreignTable, $foreignColumn)
369
  {
370
+ // Remove all rows from the custom table where the referenced foreign table row does not exist
371
+ return glsr(Database::class)->dbQuery(glsr(Query::class)->sql("
372
+ DELETE t
373
+ FROM {$this->table($table)} AS t
374
+ LEFT JOIN {$this->table($foreignTable)} AS ft ON t.{$foreignKey} = ft.{$foreignColumn}
375
+ WHERE ft.{$foreignColumn} IS NULL
376
+ "));
377
  }
378
 
379
  /**
plugin/Defaults/CreateReviewDefaults.php CHANGED
@@ -3,6 +3,7 @@
3
  namespace GeminiLabs\SiteReviews\Defaults;
4
 
5
  use GeminiLabs\SiteReviews\Defaults\DefaultsAbstract as Defaults;
 
6
 
7
  class CreateReviewDefaults extends Defaults
8
  {
@@ -38,6 +39,8 @@ class CreateReviewDefaults extends Defaults
38
  'rating' => 'int',
39
  'referer' => 'text',
40
  'response' => 'text',
 
 
41
  'title' => 'text',
42
  'type' => 'text',
43
  'url' => 'url',
@@ -59,15 +62,28 @@ class CreateReviewDefaults extends Defaults
59
  'email' => '',
60
  'form_id' => '',
61
  'ip_address' => '',
62
- 'is_pinned' => '',
63
  'name' => '',
64
  'post_id' => '',
65
  'rating' => '',
66
  'referer' => '',
67
  'response' => '',
 
 
68
  'title' => '',
69
  'type' => '',
70
  'url' => '',
71
  ];
72
  }
 
 
 
 
 
 
 
 
 
 
 
73
  }
3
  namespace GeminiLabs\SiteReviews\Defaults;
4
 
5
  use GeminiLabs\SiteReviews\Defaults\DefaultsAbstract as Defaults;
6
+ use GeminiLabs\SiteReviews\Helpers\Cast;
7
 
8
  class CreateReviewDefaults extends Defaults
9
  {
39
  'rating' => 'int',
40
  'referer' => 'text',
41
  'response' => 'text',
42
+ 'terms' => 'bool',
43
+ 'terms_exist' => 'bool',
44
  'title' => 'text',
45
  'type' => 'text',
46
  'url' => 'url',
62
  'email' => '',
63
  'form_id' => '',
64
  'ip_address' => '',
65
+ 'is_pinned' => false,
66
  'name' => '',
67
  'post_id' => '',
68
  'rating' => '',
69
  'referer' => '',
70
  'response' => '',
71
+ 'terms' => true,
72
+ 'terms_exist' => false,
73
  'title' => '',
74
  'type' => '',
75
  'url' => '',
76
  ];
77
  }
78
+
79
+ /**
80
+ * @return array
81
+ */
82
+ protected function normalize(array $values = [])
83
+ {
84
+ if (Cast::toBool(glsr_get($values, 'terms_exist', false))) {
85
+ $values['terms'] = !empty($values['terms']);
86
+ }
87
+ return $values;
88
+ }
89
  }
plugin/Defaults/RatingDefaults.php CHANGED
@@ -26,6 +26,7 @@ class RatingDefaults extends Defaults
26
  'name' => 'text',
27
  'rating' => 'int',
28
  'review_id' => 'int',
 
29
  'type' => 'text',
30
  'url' => 'url',
31
  ];
@@ -45,6 +46,7 @@ class RatingDefaults extends Defaults
45
  'name' => '',
46
  'rating' => '',
47
  'review_id' => '',
 
48
  'type' => '',
49
  'url' => '',
50
  ];
26
  'name' => 'text',
27
  'rating' => 'int',
28
  'review_id' => 'int',
29
+ 'terms' => 'bool',
30
  'type' => 'text',
31
  'url' => 'url',
32
  ];
46
  'name' => '',
47
  'rating' => '',
48
  'review_id' => '',
49
+ 'terms' => true,
50
  'type' => '',
51
  'url' => '',
52
  ];
plugin/Defaults/ReviewDefaults.php CHANGED
@@ -16,6 +16,7 @@ class ReviewDefaults extends Defaults
16
  'is_pinned' => 'bool',
17
  'rating' => 'int',
18
  'rating_id' => 'int',
 
19
  ];
20
 
21
  /**
@@ -64,6 +65,7 @@ class ReviewDefaults extends Defaults
64
  'rating_id' => '',
65
  'response' => '',
66
  'status' => '',
 
67
  'title' => '',
68
  'type' => '',
69
  'url' => '',
16
  'is_pinned' => 'bool',
17
  'rating' => 'int',
18
  'rating_id' => 'int',
19
+ 'terms' => 'bool',
20
  ];
21
 
22
  /**
65
  'rating_id' => '',
66
  'response' => '',
67
  'status' => '',
68
+ 'terms' => true,
69
  'title' => '',
70
  'type' => '',
71
  'url' => '',
plugin/Defaults/ReviewsDefaults.php CHANGED
@@ -67,6 +67,7 @@ class ReviewsDefaults extends Defaults
67
  'post__not_in' => [],
68
  'rating' => '',
69
  'status' => 'approved',
 
70
  'type' => '',
71
  'user__in' => [],
72
  'user__not_in' => [],
67
  'post__not_in' => [],
68
  'rating' => '',
69
  'status' => 'approved',
70
+ 'terms' => '',
71
  'type' => '',
72
  'user__in' => [],
73
  'user__not_in' => [],
plugin/Defaults/SiteReviewsDefaults.php CHANGED
@@ -64,6 +64,7 @@ class SiteReviewsDefaults extends Defaults
64
  'pagination' => false,
65
  'rating' => 0,
66
  'schema' => false,
 
67
  'title' => '',
68
  'type' => 'local',
69
  ];
64
  'pagination' => false,
65
  'rating' => 0,
66
  'schema' => false,
67
+ 'terms' => '',
68
  'title' => '',
69
  'type' => 'local',
70
  ];
plugin/Defaults/SiteReviewsSummaryDefaults.php CHANGED
@@ -56,6 +56,7 @@ class SiteReviewsSummaryDefaults extends Defaults
56
  'labels' => '',
57
  'rating' => 1,
58
  'schema' => false,
 
59
  'text' => '',
60
  'title' => '',
61
  'type' => 'local',
56
  'labels' => '',
57
  'rating' => 1,
58
  'schema' => false,
59
+ 'terms' => '',
60
  'text' => '',
61
  'title' => '',
62
  'type' => 'local',
plugin/Helper.php CHANGED
@@ -185,6 +185,9 @@ class Helper
185
  */
186
  public static function isEmpty($value)
187
  {
 
 
 
188
  return !is_numeric($value) && !is_bool($value) && empty($value);
189
  }
190
 
185
  */
186
  public static function isEmpty($value)
187
  {
188
+ if (is_string($value)) {
189
+ return trim($value) === '';
190
+ }
191
  return !is_numeric($value) && !is_bool($value) && empty($value);
192
  }
193
 
plugin/Install.php CHANGED
@@ -86,6 +86,17 @@ class Install
86
  restore_current_blog();
87
  }
88
 
 
 
 
 
 
 
 
 
 
 
 
89
  /**
90
  * @return void
91
  */
@@ -101,6 +112,9 @@ class Install
101
  {
102
  glsr(SqlSchema::class)->createTables();
103
  glsr(SqlSchema::class)->addForeignConstraints();
 
 
 
104
  }
105
 
106
  /**
@@ -123,17 +137,6 @@ class Install
123
  $this->deleteInvalidAssignments();
124
  }
125
 
126
- /**
127
- * @return array
128
- */
129
- protected function sites()
130
- {
131
- return get_sites([
132
- 'fields' => 'ids',
133
- 'network_id' => get_current_network_id(),
134
- ]);
135
- }
136
-
137
  /**
138
  * @return array
139
  */
86
  restore_current_blog();
87
  }
88
 
89
+ /**
90
+ * @return array
91
+ */
92
+ public function sites()
93
+ {
94
+ return get_sites([
95
+ 'fields' => 'ids',
96
+ 'network_id' => get_current_network_id(),
97
+ ]);
98
+ }
99
+
100
  /**
101
  * @return void
102
  */
112
  {
113
  glsr(SqlSchema::class)->createTables();
114
  glsr(SqlSchema::class)->addForeignConstraints();
115
+ if (glsr(SqlSchema::class)->tablesExist() && empty(get_option(glsr()->prefix.'db_version'))) {
116
+ add_option(glsr()->prefix.'db_version', Application::DB_VERSION);
117
+ }
118
  }
119
 
120
  /**
137
  $this->deleteInvalidAssignments();
138
  }
139
 
 
 
 
 
 
 
 
 
 
 
 
140
  /**
141
  * @return array
142
  */
plugin/Modules/Html/Tags/FormFieldsTag.php CHANGED
@@ -3,6 +3,7 @@
3
  namespace GeminiLabs\SiteReviews\Modules\Html\Tags;
4
 
5
  use GeminiLabs\SiteReviews\Helpers\Arr;
 
6
  use GeminiLabs\SiteReviews\Modules\Honeypot;
7
  use GeminiLabs\SiteReviews\Modules\Html\Attributes;
8
  use GeminiLabs\SiteReviews\Modules\Html\Builder;
@@ -58,6 +59,7 @@ class FormFieldsTag extends FormTag
58
  'assigned_users' => $this->args->assigned_users,
59
  'excluded' => $this->args->hide,
60
  'form_id' => $this->args->id,
 
61
  ];
62
  foreach ($hiddenFields as $name => $value) {
63
  $fields[$name] = new Field([
3
  namespace GeminiLabs\SiteReviews\Modules\Html\Tags;
4
 
5
  use GeminiLabs\SiteReviews\Helpers\Arr;
6
+ use GeminiLabs\SiteReviews\Helpers\Cast;
7
  use GeminiLabs\SiteReviews\Modules\Honeypot;
8
  use GeminiLabs\SiteReviews\Modules\Html\Attributes;
9
  use GeminiLabs\SiteReviews\Modules\Html\Builder;
59
  'assigned_users' => $this->args->assigned_users,
60
  'excluded' => $this->args->hide,
61
  'form_id' => $this->args->id,
62
+ 'terms_exist' => Cast::toInt(!in_array('terms', $this->args->hide)),
63
  ];
64
  foreach ($hiddenFields as $name => $value) {
65
  $fields[$name] = new Field([
plugin/Modules/Migrate.php CHANGED
@@ -86,7 +86,7 @@ class Migrate
86
  if (is_dir($dir)) {
87
  $iterator = new DirectoryIterator($dir);
88
  foreach ($iterator as $fileinfo) {
89
- if ($fileinfo->isFile()) {
90
  $migrations[] = str_replace('.php', '', $fileinfo->getFilename());
91
  }
92
  }
@@ -147,9 +147,12 @@ class Migrate
147
  glsr()->action('migration/start', $migrations);
148
  foreach ($this->pendingMigrations($migrations) as $migration) {
149
  if (class_exists($classname = __NAMESPACE__.'\Migrations\\'.$migration)) {
150
- glsr($classname)->run();
151
- $migrations[$migration] = true;
152
- glsr_log()->debug("[$migration] has run successfully.");
 
 
 
153
  }
154
  }
155
  $this->storeMigrations($migrations);
86
  if (is_dir($dir)) {
87
  $iterator = new DirectoryIterator($dir);
88
  foreach ($iterator as $fileinfo) {
89
+ if ('file' === $fileinfo->getType()) {
90
  $migrations[] = str_replace('.php', '', $fileinfo->getFilename());
91
  }
92
  }
147
  glsr()->action('migration/start', $migrations);
148
  foreach ($this->pendingMigrations($migrations) as $migration) {
149
  if (class_exists($classname = __NAMESPACE__.'\Migrations\\'.$migration)) {
150
+ if (glsr($classname)->run()) {
151
+ $migrations[$migration] = true;
152
+ glsr_log()->debug("[$migration] has run successfully");
153
+ continue;
154
+ }
155
+ glsr_log()->error("[$migration] was unsuccessful");
156
  }
157
  }
158
  $this->storeMigrations($migrations);
plugin/Modules/Migrations/Migrate_3_0_0.php CHANGED
@@ -81,11 +81,12 @@ class Migrate_3_0_0
81
  }
82
 
83
  /**
84
- * @return void
85
  */
86
  public function run()
87
  {
88
  $this->migrateSettings();
 
89
  }
90
 
91
  /**
@@ -93,7 +94,7 @@ class Migrate_3_0_0
93
  */
94
  protected function getNewSettings()
95
  {
96
- return Arr::flatten(Arr::consolidate(OptionManager::databaseKey(3)));
97
  }
98
 
99
  /**
81
  }
82
 
83
  /**
84
+ * @return bool
85
  */
86
  public function run()
87
  {
88
  $this->migrateSettings();
89
+ return true;
90
  }
91
 
92
  /**
94
  */
95
  protected function getNewSettings()
96
  {
97
+ return Arr::flatten(Arr::consolidate(OptionManager::databaseKey(3)));
98
  }
99
 
100
  /**
plugin/Modules/Migrations/Migrate_4_0_2.php CHANGED
@@ -62,7 +62,7 @@ class Migrate_4_0_2
62
  }
63
 
64
  /**
65
- * @return void
66
  */
67
  public function run()
68
  {
@@ -70,5 +70,6 @@ class Migrate_4_0_2
70
  $this->protectMetaKeys();
71
  $this->deleteSessions();
72
  delete_transient(glsr()->id.'_cloudflare_ips');
 
73
  }
74
  }
62
  }
63
 
64
  /**
65
+ * @return bool
66
  */
67
  public function run()
68
  {
70
  $this->protectMetaKeys();
71
  $this->deleteSessions();
72
  delete_transient(glsr()->id.'_cloudflare_ips');
73
+ return true;
74
  }
75
  }
plugin/Modules/Migrations/Migrate_4_4_0.php CHANGED
@@ -7,10 +7,11 @@ use GeminiLabs\SiteReviews\Role;
7
  class Migrate_4_4_0
8
  {
9
  /**
10
- * @return void
11
  */
12
  public function run()
13
  {
14
  glsr(Role::class)->resetAll();
 
15
  }
16
  }
7
  class Migrate_4_4_0
8
  {
9
  /**
10
+ * @return bool
11
  */
12
  public function run()
13
  {
14
  glsr(Role::class)->resetAll();
15
+ return true;
16
  }
17
  }
plugin/Modules/Migrations/Migrate_4_5_0.php CHANGED
@@ -62,12 +62,13 @@ class Migrate_4_5_0
62
  }
63
 
64
  /**
65
- * @return void
66
  */
67
  public function run()
68
  {
69
  $this->migrateOptions();
70
  $this->migrateSettings();
71
  $this->migrateUserMeta();
 
72
  }
73
  }
62
  }
63
 
64
  /**
65
+ * @return bool
66
  */
67
  public function run()
68
  {
69
  $this->migrateOptions();
70
  $this->migrateSettings();
71
  $this->migrateUserMeta();
72
+ return true;
73
  }
74
  }
plugin/Modules/Migrations/Migrate_5_0_0.php CHANGED
@@ -51,7 +51,7 @@ class Migrate_5_0_0
51
  }
52
 
53
  /**
54
- * @return void
55
  */
56
  public function run()
57
  {
@@ -59,5 +59,6 @@ class Migrate_5_0_0
59
  $this->migrateWpOptions();
60
  glsr(MigrateSidebars::class)->run();
61
  glsr(MigrateReviews::class)->run();
 
62
  }
63
  }
51
  }
52
 
53
  /**
54
+ * @return bool
55
  */
56
  public function run()
57
  {
59
  $this->migrateWpOptions();
60
  glsr(MigrateSidebars::class)->run();
61
  glsr(MigrateReviews::class)->run();
62
+ return true;
63
  }
64
  }
plugin/Modules/Migrations/Migrate_5_1_0.php DELETED
@@ -1,21 +0,0 @@
1
- <?php
2
-
3
- namespace GeminiLabs\SiteReviews\Modules\Migrations;
4
-
5
- use GeminiLabs\SiteReviews\Database\SqlSchema;
6
- use GeminiLabs\SiteReviews\Modules\Console;
7
-
8
- class Migrate_5_1_0
9
- {
10
- /**
11
- * @return void
12
- */
13
- public function run()
14
- {
15
- if (!glsr(SqlSchema::class)->isInnodb('posts')
16
- || !glsr(SqlSchema::class)->isInnodb('terms')
17
- || !glsr(SqlSchema::class)->isInnodb('users')) {
18
- glsr(Console::class)->clear(); // clear all of the contraint errors
19
- }
20
- }
21
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
plugin/Modules/Migrations/Migrate_5_2_0.php CHANGED
@@ -5,10 +5,11 @@ namespace GeminiLabs\SiteReviews\Modules\Migrations;
5
  class Migrate_5_2_0
6
  {
7
  /**
8
- * @return void
9
  */
10
  public function run()
11
  {
12
  wp_clear_scheduled_hook('site-reviews/schedule/session/purge');
 
13
  }
14
  }
5
  class Migrate_5_2_0
6
  {
7
  /**
8
+ * @return bool
9
  */
10
  public function run()
11
  {
12
  wp_clear_scheduled_hook('site-reviews/schedule/session/purge');
13
+ return true;
14
  }
15
  }
plugin/Modules/Migrations/Migrate_5_3_0.php CHANGED
@@ -7,9 +7,29 @@ use GeminiLabs\SiteReviews\Application;
7
  class Migrate_5_3_0
8
  {
9
  /**
10
- * @return void
11
  */
12
  public function run()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  {
14
  require_once ABSPATH.'/wp-admin/includes/plugin.php';
15
  if (!is_plugin_active_for_network(plugin_basename(glsr()->file))) {
@@ -26,15 +46,4 @@ class Migrate_5_3_0
26
  restore_current_blog();
27
  }
28
  }
29
-
30
- /**
31
- * @return void
32
- */
33
- protected function fixDatabaseVersion()
34
- {
35
- $databaseVersion = get_option(Application::PREFIX.'db_version');
36
- if ('5.2' === $databaseVersion) {
37
- update_option(Application::PREFIX.'db_version', '1.0');
38
- }
39
- }
40
  }
7
  class Migrate_5_3_0
8
  {
9
  /**
10
+ * @return bool
11
  */
12
  public function run()
13
+ {
14
+ $this->migrateDatabase();
15
+ return true;
16
+ }
17
+
18
+ /**
19
+ * @return void
20
+ */
21
+ protected function fixDatabaseVersion()
22
+ {
23
+ $databaseVersion = get_option(glsr()->prefix.'db_version');
24
+ if ('5.2' === $databaseVersion) {
25
+ update_option(glsr()->prefix.'db_version', '1.0');
26
+ }
27
+ }
28
+
29
+ /**
30
+ * @return void
31
+ */
32
+ protected function migrateDatabase()
33
  {
34
  require_once ABSPATH.'/wp-admin/includes/plugin.php';
35
  if (!is_plugin_active_for_network(plugin_basename(glsr()->file))) {
46
  restore_current_blog();
47
  }
48
  }
 
 
 
 
 
 
 
 
 
 
 
49
  }
plugin/Modules/Migrations/Migrate_5_6_0.php DELETED
@@ -1,16 +0,0 @@
1
- <?php
2
-
3
- namespace GeminiLabs\SiteReviews\Modules\Migrations;
4
-
5
- use GeminiLabs\SiteReviews\Database\CountManager;
6
-
7
- class Migrate_5_6_0
8
- {
9
- /**
10
- * @return void
11
- */
12
- public function run()
13
- {
14
- glsr(CountManager::class)->recalculate();
15
- }
16
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
plugin/Modules/Migrations/Migrate_5_9_0.php ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace GeminiLabs\SiteReviews\Modules\Migrations;
4
+
5
+ use GeminiLabs\SiteReviews\Database;
6
+ use GeminiLabs\SiteReviews\Database\CountManager;
7
+ use GeminiLabs\SiteReviews\Database\Query;
8
+ use GeminiLabs\SiteReviews\Database\SqlSchema;
9
+ use GeminiLabs\SiteReviews\Install;
10
+
11
+ class Migrate_5_9_0
12
+ {
13
+ /**
14
+ * @return bool
15
+ */
16
+ public function migrateDatabase()
17
+ {
18
+ $table = glsr(SqlSchema::class)->table('ratings');
19
+ if ($this->isDatabaseVersionUpdated()) {
20
+ return true;
21
+ }
22
+ glsr(Database::class)->dbQuery(glsr(Query::class)->sql("
23
+ ALTER TABLE {$table}
24
+ ADD terms tinyint(1) NOT NULL DEFAULT '1'
25
+ AFTER url
26
+ "));
27
+ if ($this->isDatabaseVersionUpdated()) {
28
+ return true;
29
+ }
30
+ glsr_log()->error(sprintf('Database table [%s] could not be altered, column [terms] not added.', $table));
31
+ return false;
32
+ }
33
+
34
+ /**
35
+ * @return void
36
+ */
37
+ public function repairDatabase()
38
+ {
39
+ require_once ABSPATH.'/wp-admin/includes/plugin.php';
40
+ if (is_plugin_active_for_network(plugin_basename(glsr()->file))) {
41
+ foreach (glsr(Install::class)->sites() as $siteId) {
42
+ switch_to_blog($siteId);
43
+ $this->install();
44
+ restore_current_blog();
45
+ }
46
+ return;
47
+ }
48
+ $this->install();
49
+ }
50
+
51
+ /**
52
+ * @return bool
53
+ */
54
+ public function run()
55
+ {
56
+ $this->repairDatabase(); // fix orphaned rows and foreign indexes
57
+ glsr(CountManager::class)->recalculate();
58
+ return $this->migrateDatabase();
59
+ }
60
+
61
+ /**
62
+ * @return void
63
+ */
64
+ protected function install()
65
+ {
66
+ glsr(SqlSchema::class)->createTables();
67
+ glsr(SqlSchema::class)->addForeignConstraints();
68
+ glsr(Database::class)->deleteInvalidPostAssignments();
69
+ glsr(Database::class)->deleteInvalidTermAssignments();
70
+ glsr(Database::class)->deleteInvalidUserAssignments();
71
+ }
72
+
73
+ /**
74
+ * @return bool
75
+ */
76
+ protected function isDatabaseVersionUpdated()
77
+ {
78
+ $table = glsr(SqlSchema::class)->table('ratings');
79
+ if (glsr(SqlSchema::class)->columnExists($table, 'terms')) {
80
+ if (!glsr(Database::class)->version('1.1')) {
81
+ update_option(glsr()->prefix.'db_version', '1.1');
82
+ }
83
+ return true;
84
+ }
85
+ return false;
86
+ }
87
+
88
+ }
plugin/Modules/Sanitizer.php CHANGED
@@ -122,6 +122,7 @@ class Sanitizer
122
  }
123
 
124
  /**
 
125
  * @param mixed $value
126
  * @return string
127
  */
@@ -130,6 +131,17 @@ class Sanitizer
130
  return Str::snakeCase(sanitize_key($this->sanitizeText($value)));
131
  }
132
 
 
 
 
 
 
 
 
 
 
 
 
133
  /**
134
  * @param mixed $value
135
  * @return string
122
  }
123
 
124
  /**
125
+ * This allows lowercase alphannumeric, dash, and underscore characters
126
  * @param mixed $value
127
  * @return string
128
  */
131
  return Str::snakeCase(sanitize_key($this->sanitizeText($value)));
132
  }
133
 
134
+ /**
135
+ * This allows lowercase alpha and underscore characters
136
+ * @param mixed $value
137
+ * @return string
138
+ */
139
+ public function sanitizeName($value)
140
+ {
141
+ $value = Str::snakeCase($this->sanitizeText($value));
142
+ return preg_replace('/[^a-z_]/', '', $value);
143
+ }
144
+
145
  /**
146
  * @param mixed $value
147
  * @return string
plugin/Review.php CHANGED
@@ -36,6 +36,7 @@ use GeminiLabs\SiteReviews\Modules\Html\ReviewHtml;
36
  * @property int $rating_id
37
  * @property string $response
38
  * @property string $status
 
39
  * @property string $title
40
  * @property string $type
41
  * @property string $url
36
  * @property int $rating_id
37
  * @property string $response
38
  * @property string $status
39
+ * @property bool $terms
40
  * @property string $title
41
  * @property string $type
42
  * @property string $url
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: reviews, ratings, testimonials, woocommerce, product reviews
5
  Tested up to: 5.7
6
  Requires at least: 5.5
7
  Requires PHP: 5.6
8
- Stable tag: 5.8.5
9
  License: GPLv3
10
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -15,7 +15,7 @@ Site Reviews allows you to easily receive and display reviews for your website,
15
 
16
  Site Reviews allows your visitors to submit reviews with a 1-5 star rating on your website, similar to the way you would on TripAdvisor or Yelp. The plugin provides blocks, shortcodes, and widgets, along with full documentation.
17
 
18
- You can pin your best reviews so that they are always shown first, require approval before new review submissions are published, require visitors to be logged-in in order to write a review, send custom notifications on a new submission, and much more.
19
 
20
  __Site Reviews provides full Woocommerce integration__ with the free [Woocommerce Reviews](https://niftyplugins.com/plugins/woocommerce-reviews/) add-on.
21
 
@@ -58,7 +58,7 @@ __Site Reviews provides full Woocommerce integration__ with the free [Woocommerc
58
 
59
  ### Site Reviews Add-ons
60
 
61
- Site Reviews provides a ton of absolutely free features, possibly more than any other review plugin! But when those features are not enough, Site Reviews provides additional features (both free and premium) through add-ons. Current add-ons include:
62
 
63
  - __[Review Forms](https://niftyplugins.com/plugins/site-reviews-forms/) (premium)__: Create custom review forms with over 20 field types and individual review templates.
64
  - __[Review Filters](https://niftyplugins.com/plugins/site-reviews-filters/) (premium)__: Sort, filter, and search your reviews.
@@ -103,36 +103,46 @@ All documentation can be found in the "Help" page of the plugin. If your questio
103
 
104
  1. The "All Reviews" page.
105
 
106
- 2. The "Edit Review" page.
107
 
108
- 3. Site Reviews has full support for the new Blocks Editor and includes custom blocks for each of the shortcodes.
109
 
110
- 4. If you are still using the Classic page editor, you can use the Site Reviews dropdown button to easily add any of the shortcodes.
111
 
112
- 5. Site Reviews includes three widgets.
113
 
114
- 6. Site Reviews includes a Help page with answers to frequently asked questions and complete documentation for all available shortcode options.
115
 
116
- 7. The "General" settings page.
117
 
118
- 8. The "Reviews" settings page.
119
 
120
- 9. The "Submissions" settings page.
121
 
122
- 10. The "Schema" settings page.
123
 
124
- 11. Easily add a custom translation for any text in the plugin.
125
 
126
- 12. Export/import the plugin settings, and perform various other tasks.
127
 
128
- 13. If you experience any issues with the plugin, the console logger is the first pace to look.
129
 
130
- 14. View information about the configuration of your server, your website, and the Site Reviews plugin.
131
 
132
- 15. This is what the Slack notifications look like.
 
 
133
 
134
  ## Changelog
135
 
 
 
 
 
 
 
 
 
136
  = 5.8.5 (2021-04-17) =
137
 
138
  - Fixed anonymous reviews from inheriting the author ID of the logged in user after being edited
5
  Tested up to: 5.7
6
  Requires at least: 5.5
7
  Requires PHP: 5.6
8
+ Stable tag: 5.9.0
9
  License: GPLv3
10
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
11
 
15
 
16
  Site Reviews allows your visitors to submit reviews with a 1-5 star rating on your website, similar to the way you would on TripAdvisor or Yelp. The plugin provides blocks, shortcodes, and widgets, along with full documentation.
17
 
18
+ You can pin your best reviews so that they are always shown first, require approval before new review submissions are published, require visitors to be logged-in in order to write a review, send custom notifications on a new submission, and a whole lot more!
19
 
20
  __Site Reviews provides full Woocommerce integration__ with the free [Woocommerce Reviews](https://niftyplugins.com/plugins/woocommerce-reviews/) add-on.
21
 
58
 
59
  ### Site Reviews Add-ons
60
 
61
+ Site Reviews provides a ton of absolutely free features, possibly more than any other review plugin! But when those features are not enough, Site Reviews provides additional features through add-ons. Current add-ons include:
62
 
63
  - __[Review Forms](https://niftyplugins.com/plugins/site-reviews-forms/) (premium)__: Create custom review forms with over 20 field types and individual review templates.
64
  - __[Review Filters](https://niftyplugins.com/plugins/site-reviews-filters/) (premium)__: Sort, filter, and search your reviews.
103
 
104
  1. The "All Reviews" page.
105
 
106
+ 2. Add-ons provide additional functionality to Site Reviews
107
 
108
+ 3. The "Edit Review" page.
109
 
110
+ 4. Site Reviews has full support for the new Blocks Editor and includes custom blocks for each of the shortcodes.
111
 
112
+ 5. If you are still using the Classic page editor, you can use the Site Reviews dropdown button to easily add any of the shortcodes.
113
 
114
+ 6. Site Reviews includes three widgets.
115
 
116
+ 7. Site Reviews includes a Help page with answers to frequently asked questions and complete documentation for all available shortcode options.
117
 
118
+ 8. The "General" settings page.
119
 
120
+ 9. The "Reviews" settings page.
121
 
122
+ 10. The "Submissions" settings page.
123
 
124
+ 11. The "Schema" settings page.
125
 
126
+ 12. Easily add a custom translation for any text in the plugin.
127
 
128
+ 13. Export/import the plugin settings, and perform various other tasks.
129
 
130
+ 14. If you experience any issues with the plugin, the console logger is the first pace to look.
131
 
132
+ 15. View information about the configuration of your server, your website, and the Site Reviews plugin.
133
+
134
+ 16. This is what the Slack notifications look like.
135
 
136
  ## Changelog
137
 
138
+ = 5.9.0 (2021-04-24) =
139
+
140
+ - Added a "Compatibility Issues" section to the Help page to document incompatible plugins along with possible workarounds.
141
+ - Added a "terms" option to the shortcodes which allow you to only display reviews where the terms field was accepted in the form. All reviews that were submitted before this update will have their terms set as accepted.
142
+ - Fixed database foreign table constraints
143
+ - Fixed settings tabs on touch devices
144
+ - Improved the Tools page
145
+
146
  = 5.8.5 (2021-04-17) =
147
 
148
  - Fixed anonymous reviews from inheriting the author ID of the logged in user after being edited
site-reviews.php CHANGED
@@ -7,7 +7,7 @@
7
  * Plugin Name: Site Reviews
8
  * Plugin URI: https://wordpress.org/plugins/site-reviews
9
  * Description: Receive and display reviews on your website
10
- * Version: 5.8.5
11
  * Author: Paul Ryley
12
  * Author URI: https://geminilabs.io
13
  * License: GPL2
@@ -27,6 +27,7 @@ if ((new GL_Plugin_Check_v5(__FILE__))->canProceed()) {
27
  require_once __DIR__.'/compatibility.php';
28
  require_once __DIR__.'/deprecated.php';
29
  require_once __DIR__.'/helpers.php';
 
30
  $app = GeminiLabs\SiteReviews\Application::load();
31
  $app->make('Provider')->register($app);
32
  register_deactivation_hook(__FILE__, array($app, 'deactivate'));
7
  * Plugin Name: Site Reviews
8
  * Plugin URI: https://wordpress.org/plugins/site-reviews
9
  * Description: Receive and display reviews on your website
10
+ * Version: 5.9.0
11
  * Author: Paul Ryley
12
  * Author URI: https://geminilabs.io
13
  * License: GPL2
27
  require_once __DIR__.'/compatibility.php';
28
  require_once __DIR__.'/deprecated.php';
29
  require_once __DIR__.'/helpers.php';
30
+ require_once __DIR__.'/migration.php';
31
  $app = GeminiLabs\SiteReviews\Application::load();
32
  $app->make('Provider')->register($app);
33
  register_deactivation_hook(__FILE__, array($app, 'deactivate'));
views/pages/addons/index.php CHANGED
@@ -1,7 +1,10 @@
1
  <?php defined('ABSPATH') || die; ?>
2
 
3
  <div class="wrap">
4
- <h1 class="wp-heading-inline"><?= esc_html(get_admin_page_title()); ?></h1>
 
 
 
5
  <?= $notices; ?>
6
  <div class="glsr-addons">
7
  <?php
1
  <?php defined('ABSPATH') || die; ?>
2
 
3
  <div class="wrap">
4
+ <h1 class="wp-heading-inline">
5
+ <?= esc_html(get_admin_page_title()); ?>
6
+ <a href="<?= admin_url('index.php?page='.glsr()->id.'-welcome'); ?>" class="page-title-action"><?= _x('About', 'admin-text', 'site-reviews'); ?></a>
7
+ </h1>
8
  <?= $notices; ?>
9
  <div class="glsr-addons">
10
  <?php
views/pages/documentation/faq/ipaddress-incorrectly-detected.php CHANGED
@@ -8,7 +8,7 @@
8
  <div id="faq-ipaddress-incorrectly-detected" class="inside">
9
  <p>If you are getting identical IP addresses for all your reviews (or if they are "unknown"), then your web server may be behind a CDN, firewall, or reverse proxy.</p>
10
  <p>If this is the case, you will need to provide Site Reviews with the HTTP request header that contains the real visitor IP address. If you are unsure what this means or how to find out which custom header is needed, please contact your hosting provider, server administrator, or the support team of your CDN or firewall service for assistance.</p>
11
- <p>Once you know the custom HTTP request header to use, you may add it with the following code snippet and then test it using the <a href="<?= admin_url('edit.php?post_type='.glsr()->post_type.'&page=tools#tab-general'); ?>"><code>Test IP Address Detection</code></a> tool.</p>
12
  <pre><code class="language-php">/**
13
  * Add a custom HTTP request header to fix IP address detection
14
  * @param \Geminilabs\Vectorface\Whip $whip
8
  <div id="faq-ipaddress-incorrectly-detected" class="inside">
9
  <p>If you are getting identical IP addresses for all your reviews (or if they are "unknown"), then your web server may be behind a CDN, firewall, or reverse proxy.</p>
10
  <p>If this is the case, you will need to provide Site Reviews with the HTTP request header that contains the real visitor IP address. If you are unsure what this means or how to find out which custom header is needed, please contact your hosting provider, server administrator, or the support team of your CDN or firewall service for assistance.</p>
11
+ <p>Once you know the custom HTTP request header to use, you may add it with the following code snippet and then test it using the <a href="<?= admin_url('edit.php?post_type='.glsr()->post_type.'&page=tools#tab-general'); ?>" data-expand="#tools-ip-detection"><code>Test IP Address Detection</code></a> tool.</p>
12
  <pre><code class="language-php">/**
13
  * Add a custom HTTP request header to fix IP address detection
14
  * @param \Geminilabs\Vectorface\Whip $whip
views/pages/documentation/functions/glsr_create_review.php CHANGED
@@ -25,6 +25,7 @@
25
  * - 'is_pinned' => false,
26
  * - 'name' => '',
27
  * - 'rating' => '',
 
28
  * - 'title' => '',
29
  * - 'url' => '',
30
  * @return \GeminiLabs\SiteReviews\Review|false
25
  * - 'is_pinned' => false,
26
  * - 'name' => '',
27
  * - 'rating' => '',
28
+ * - 'terms' => true,
29
  * - 'title' => '',
30
  * - 'url' => '',
31
  * @return \GeminiLabs\SiteReviews\Review|false
views/pages/documentation/shortcodes/site_reviews.php CHANGED
@@ -25,6 +25,7 @@
25
  trailingslashit(__DIR__).'site_reviews/pagination.php',
26
  trailingslashit(__DIR__).'site_reviews/rating.php',
27
  trailingslashit(__DIR__).'site_reviews/schema.php',
 
28
  ];
29
  $filename = pathinfo(__FILE__, PATHINFO_FILENAME);
30
  $options = glsr()->filterArrayUnique('documentation/shortcodes/'.$filename, $options);
25
  trailingslashit(__DIR__).'site_reviews/pagination.php',
26
  trailingslashit(__DIR__).'site_reviews/rating.php',
27
  trailingslashit(__DIR__).'site_reviews/schema.php',
28
+ trailingslashit(__DIR__).'site_reviews/terms.php',
29
  ];
30
  $filename = pathinfo(__FILE__, PATHINFO_FILENAME);
31
  $options = glsr()->filterArrayUnique('documentation/shortcodes/'.$filename, $options);
views/pages/documentation/shortcodes/site_reviews/terms.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <p class="glsr-heading">terms</p>
2
+ <p>Include the "terms" option to display reviews where the terms were either accepted or not accepted. Accepted value is either <code>true</code> or <code>false</code>.</p>
3
+ <p>The default terms value is: <code>""</code></p>
4
+ <div class="shortcode-example">
5
+ <input type="text" readonly class="code" value='[site_reviews terms="true"]'>
6
+ <pre><code class="syntax-shortcode"><span class="tag">[site_reviews</span> <span class="attr-name">terms</span>=<span class="attr-value">"true"</span><span class="tag">]</span></code></pre>
7
+ </div>
views/pages/documentation/shortcodes/site_reviews_summary.php CHANGED
@@ -22,6 +22,7 @@
22
  trailingslashit(__DIR__).'site_reviews_summary/labels.php',
23
  trailingslashit(__DIR__).'site_reviews_summary/rating.php',
24
  trailingslashit(__DIR__).'site_reviews_summary/schema.php',
 
25
  trailingslashit(__DIR__).'site_reviews_summary/text.php',
26
  ];
27
  $filename = pathinfo(__FILE__, PATHINFO_FILENAME);
22
  trailingslashit(__DIR__).'site_reviews_summary/labels.php',
23
  trailingslashit(__DIR__).'site_reviews_summary/rating.php',
24
  trailingslashit(__DIR__).'site_reviews_summary/schema.php',
25
+ trailingslashit(__DIR__).'site_reviews_summary/terms.php',
26
  trailingslashit(__DIR__).'site_reviews_summary/text.php',
27
  ];
28
  $filename = pathinfo(__FILE__, PATHINFO_FILENAME);
views/pages/documentation/shortcodes/site_reviews_summary/terms.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <p class="glsr-heading">terms</p>
2
+ <p>Include the "terms" option to limit reviews to those where the terms were either accepted or not accepted. Accepted value is either <code>true</code> or <code>false</code>.</p>
3
+ <p>The default terms value is: <code>""</code></p>
4
+ <div class="shortcode-example">
5
+ <input type="text" readonly class="code" value='[site_reviews_summary terms="true"]'>
6
+ <pre><code class="syntax-shortcode"><span class="tag">[site_reviews_summary</span> <span class="attr-name">terms</span>=<span class="attr-value">"true"</span><span class="tag">]</span></code></pre>
7
+ </div>
views/pages/documentation/support.php CHANGED
@@ -3,6 +3,7 @@
3
  $sections = [
4
  trailingslashit(__DIR__).'support/basic-troubleshooting.php',
5
  trailingslashit(__DIR__).'support/common-problems-and-solutions.php',
 
6
  trailingslashit(__DIR__).'support/contact-support.php',
7
  trailingslashit(__DIR__).'support/upgrade-guide.php',
8
  ];
3
  $sections = [
4
  trailingslashit(__DIR__).'support/basic-troubleshooting.php',
5
  trailingslashit(__DIR__).'support/common-problems-and-solutions.php',
6
+ trailingslashit(__DIR__).'support/compatibility-issues.php',
7
  trailingslashit(__DIR__).'support/contact-support.php',
8
  trailingslashit(__DIR__).'support/upgrade-guide.php',
9
  ];
views/pages/documentation/support/common-problems-and-solutions.php CHANGED
@@ -20,7 +20,7 @@
20
  <p>You may be using a caching plugin which is caching the database and preventing Site Reviews from storing the migration status. To fix this, you will need to flush your database cache and/or object cache and then try again.</p>
21
  </li>
22
  <li>
23
- <p>You may have 3rd-party reviews that were not imported correctly. You can verify this by looking for reviews on the <a href="<?= admin_url('edit.php?post_type='.glsr()->post_type); ?>">All Reviews</a> page that do not have any stars. Clicking on these reviews will show a read-only editor and a notice alerting you that the review is an, "Unsupported Review Type". To fix this, please delete the invalid reviews and use the provided <a href="<?= admin_url('edit.php?post_type='.glsr()->post_type.'&page=tools#tab-general'); ?>">Import Third Party Reviews</a> tool to re-import them.</p>
24
  </li>
25
  </ol>
26
  <h3>The review form is not working, the submit button just spins.</h3>
20
  <p>You may be using a caching plugin which is caching the database and preventing Site Reviews from storing the migration status. To fix this, you will need to flush your database cache and/or object cache and then try again.</p>
21
  </li>
22
  <li>
23
+ <p>You may have 3rd-party reviews that were not imported correctly. You can verify this by looking for reviews on the <a href="<?= admin_url('edit.php?post_type='.glsr()->post_type); ?>">All Reviews</a> page that do not have any stars. Clicking on these reviews will show a read-only editor and a notice alerting you that the review is an, "Unsupported Review Type". To fix this, please delete the invalid reviews and use the provided <a href="<?= admin_url('edit.php?post_type='.glsr()->post_type.'&page=tools#tab-general'); ?>" data-expand="#tools-import-reviews">Import Third Party Reviews</a> tool to re-import them.</p>
24
  </li>
25
  </ol>
26
  <h3>The review form is not working, the submit button just spins.</h3>
views/pages/documentation/support/compatibility-issues.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="glsr-card postbox">
2
+ <h3 class="glsr-card-heading">
3
+ <button type="button" class="glsr-accordion-trigger" aria-expanded="false" aria-controls="support-compatibility-issues">
4
+ <span class="title">Compatibility Issues</span>
5
+ <span class="icon"></span>
6
+ </button>
7
+ </h3>
8
+ <div id="support-compatibility-issues" class="inside">
9
+ <h3>Custom Content Shortcodes</h3>
10
+ <p>The <a href="https://wordpress.org/plugins/custom-content-shortcode/">Custom Content Shortcodes</a> plugin provides a [content] shortcode which conflicts with the Site Reviews Gutenberg blocks, and with the shortcodes when they are used with page builder plugins. For a more detailed explaination of this issue, please see this <a href="https://wordpress.org/support/topic/conflict-with-name-attributes-in-form-field/">support forum topic</a>.</p>
11
+ <p>Here is a workaround to fix the problem:</p>
12
+ <ol>
13
+ <li>
14
+ <p>Go to the <a href="<?= admin_url('options-general.php?page=ccs_reference&tab=settings'); ?>">Custom Content Shortcodes settings</a> page.</p>
15
+ </li>
16
+ <li>
17
+ <p>Disable the <code>[raw] shortcode</code> setting.</p>
18
+ </li>
19
+ <li>
20
+ <p>In the Advanced section, add <code>content</code> to the "Deactivate shortcodes" setting to disable the [content] shortcode.</p>
21
+ </li>
22
+ </ol>
23
+ </div>
24
+ </div>
views/pages/settings/index.php CHANGED
@@ -1,7 +1,10 @@
1
  <?php defined('ABSPATH') || die; ?>
2
 
3
  <div class="wrap">
4
- <h1 class="wp-heading-inline"><?= esc_html(get_admin_page_title()); ?></h1>
 
 
 
5
  <?= $notices; ?>
6
  <nav class="glsr-nav-tab-wrapper nav-tab-wrapper">
7
  <?php foreach ($tabs as $id => $title) : ?>
1
  <?php defined('ABSPATH') || die; ?>
2
 
3
  <div class="wrap">
4
+ <h1 class="wp-heading-inline">
5
+ <?= esc_html(get_admin_page_title()); ?>
6
+ <a href="<?= admin_url('index.php?page='.glsr()->id.'-welcome'); ?>" class="page-title-action"><?= _x('About', 'admin-text', 'site-reviews'); ?></a>
7
+ </h1>
8
  <?= $notices; ?>
9
  <nav class="glsr-nav-tab-wrapper nav-tab-wrapper">
10
  <?php foreach ($tabs as $id => $title) : ?>
views/pages/tools/console.php CHANGED
@@ -4,19 +4,21 @@
4
  <form method="post" class="glsr-float-left">
5
  <input type="hidden" name="{{ id }}[_action]" value="download-console">
6
  <?php wp_nonce_field('download-console'); ?>
7
- <?php submit_button(_x('Download Console', 'admin-text', 'site-reviews'), 'primary', '', false); ?>
 
 
8
  </form>
9
  <form method="post" class="glsr-float-left">
10
  <input type="hidden" name="{{ id }}[_action]" value="fetch-console">
11
  <?php wp_nonce_field('fetch-console'); ?>
12
- <button type="submit" class="glsr-button button" id="fetch-console">
13
  <span data-loading="<?= esc_attr_x('Reloading...', 'admin-text', 'site-reviews'); ?>"><?= _x('Reload', 'admin-text', 'site-reviews'); ?></span>
14
  </button>
15
  </form>
16
  <form method="post">
17
  <input type="hidden" name="{{ id }}[_action]" value="clear-console">
18
  <?php wp_nonce_field('clear-console'); ?>
19
- <button type="submit" class="glsr-button button" id="clear-console">
20
  <span data-loading="<?= esc_attr_x('Clearing...', 'admin-text', 'site-reviews'); ?>"><?= _x('Clear', 'admin-text', 'site-reviews'); ?></span>
21
  </button>
22
  </form>
4
  <form method="post" class="glsr-float-left">
5
  <input type="hidden" name="{{ id }}[_action]" value="download-console">
6
  <?php wp_nonce_field('download-console'); ?>
7
+ <button type="submit" class="components-button is-primary" id="download-console">
8
+ <?= _x('Download Console', 'admin-text', 'site-reviews'); ?>
9
+ </button>
10
  </form>
11
  <form method="post" class="glsr-float-left">
12
  <input type="hidden" name="{{ id }}[_action]" value="fetch-console">
13
  <?php wp_nonce_field('fetch-console'); ?>
14
+ <button type="submit" class="glsr-button components-button is-secondary" id="fetch-console">
15
  <span data-loading="<?= esc_attr_x('Reloading...', 'admin-text', 'site-reviews'); ?>"><?= _x('Reload', 'admin-text', 'site-reviews'); ?></span>
16
  </button>
17
  </form>
18
  <form method="post">
19
  <input type="hidden" name="{{ id }}[_action]" value="clear-console">
20
  <?php wp_nonce_field('clear-console'); ?>
21
+ <button type="submit" class="glsr-button components-button is-secondary" id="clear-console">
22
  <span data-loading="<?= esc_attr_x('Clearing...', 'admin-text', 'site-reviews'); ?>"><?= _x('Clear', 'admin-text', 'site-reviews'); ?></span>
23
  </button>
24
  </form>
views/pages/tools/general.php CHANGED
@@ -1,192 +1,17 @@
1
- <?php defined('ABSPATH') || exit; ?>
2
-
3
- <?php if (glsr()->hasPermission('settings')) { ?>
4
-
5
- <div class="glsr-card card">
6
- <h3><?= _x('Export Plugin Settings', 'admin-text', 'site-reviews'); ?></h3>
7
- <p><?= sprintf(
8
- _x('Export the Site Reviews settings for this site to a %s file. This allows you to easily import the plugin settings into another site.', 'admin-text', 'site-reviews'),
9
- '<code>*.json</code>'
10
- ); ?></p>
11
- <p><?= sprintf(
12
- _x('To export your reviews and categories, please use the WordPress %s tool.', 'admin-text', 'site-reviews'),
13
- sprintf('<a href="%s">%s</a>', admin_url('export.php'), _x('Export', 'admin-text', 'site-reviews'))
14
- ); ?></p>
15
- <form method="post">
16
- <?php wp_nonce_field('export-settings'); ?>
17
- <input type="hidden" name="{{ id }}[_action]" value="export-settings">
18
- <?php submit_button(_x('Export Settings', 'admin-text', 'site-reviews'), 'secondary'); ?>
19
- </form>
20
- </div>
21
-
22
- <div class="glsr-card card">
23
- <h3><?= _x('Import Plugin Settings', 'admin-text', 'site-reviews'); ?></h3>
24
- <p><?= sprintf(
25
- _x('Import the Site Reviews settings from a %s file. This file can be obtained by exporting the settings on another site using the export tool below.', 'admin-text', 'site-reviews'),
26
- '<code>*.json</code>'
27
- ); ?></p>
28
- <p><?= sprintf(
29
- _x('To import your reviews and categories from another website, please use the WordPress %s tool.', 'admin-text', 'site-reviews'),
30
- sprintf('<a href="%s">%s</a>', admin_url('import.php'), _x('Import', 'admin-text', 'site-reviews'))
31
- ); ?></p>
32
- <form method="post" enctype="multipart/form-data" onsubmit="submit.disabled = true;">
33
- <?php wp_nonce_field('import-settings'); ?>
34
- <input type="file" name="import-file" accept="application/json">
35
- <input type="hidden" name="{{ id }}[_action]" value="import-settings">
36
- <p class="submit">
37
- <button type="submit" class="glsr-button button" name="submit" id="import-settings">
38
- <span data-loading="<?= esc_attr_x('Importing settings, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Import Settings', 'admin-text', 'site-reviews'); ?></span>
39
- </button>
40
- </p>
41
- </form>
42
- </div>
43
-
44
- <div class="glsr-card card">
45
- <h3><?= _x('Import Third Party Reviews', 'admin-text', 'site-reviews'); ?></h3>
46
- <div class="components-notice is-warning">
47
- <p class="components-notice__content"><?= sprintf(
48
- _x('Please backup your database before running this tool! You can use the %s plugin to do this.', 'admin-text', 'site-reviews'),
49
- '<a href="https://wordpress.org/plugins/updraftplus/">UpdraftPlus</a>'
50
- ); ?></p>
51
- </div>
52
- <p><?= sprintf(
53
- _x('Here you can import third party reviews from a %s file. The CSV file should include a header row, use a comma as the delimiter, and may contain the following columns:', 'admin-text', 'site-reviews'),
54
- '<code>*.CSV</code>'
55
- ); ?></p>
56
- <p>
57
- <code>avatar</code> <?= _x('The avatar URL of the reviewer', 'admin-text', 'site-reviews'); ?><br>
58
- <code>content</code> <?= sprintf('%s (<span class="required">%s</span>)', _x('The review', 'admin-text', 'site-reviews'), _x('required', 'admin-text', 'site-reviews')); ?><br>
59
- <code>date</code> <?= sprintf('%s (<span class="required">%s</span>)', sprintf(_x('The review date as %s or a timestamp', 'admin-text', 'site-reviews'), '<span class="code"><strong>yyyy-mm-dd</strong></span>'), _x('required', 'admin-text', 'site-reviews')); ?><br>
60
- <code>email</code> <?= _x('The reviewer\'s email', 'admin-text', 'site-reviews'); ?><br>
61
- <code>ip_address</code> <?= _x('The IP address of the reviewer', 'admin-text', 'site-reviews'); ?><br>
62
- <code>is_pinned</code> <?= _x('TRUE or FALSE', 'admin-text', 'site-reviews'); ?><br>
63
- <code>name</code> <?= _x('The reviewer\'s name', 'admin-text', 'site-reviews'); ?><br>
64
- <code>rating</code> <?= sprintf('%s (<span class="required">%s</span>)', sprintf(_x('A number from 0-%d', 'admin-text', 'site-reviews'), glsr()->constant('MAX_RATING', 'GeminiLabs\SiteReviews\Modules\Rating')), _x('required', 'admin-text', 'site-reviews')); ?><br>
65
- <code>response</code> <?= _x('The review response', 'admin-text', 'site-reviews'); ?><br>
66
- <code>title</code> <?= _x('The title of the review', 'admin-text', 'site-reviews'); ?><br>
67
- </p>
68
- <p><?= _x('Entries in the CSV file that do not contain required values will be skipped.', 'admin-text', 'site-reviews'); ?></p>
69
- <form method="post" enctype="multipart/form-data" onsubmit="submit.disabled = true;">
70
- <?php wp_nonce_field('import-reviews'); ?>
71
- <input type="file" name="import-file" accept="text/csv">
72
- <input type="hidden" name="{{ id }}[_action]" value="import-reviews">
73
- <p class="submit">
74
- <button type="submit" class="glsr-button button" name="submit" id="import-reviews">
75
- <span data-loading="<?= esc_attr_x('Importing reviews, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Import Reviews', 'admin-text', 'site-reviews'); ?></span>
76
- </button>
77
- </p>
78
- </form>
79
- </div>
80
-
81
- <div class="glsr-card card">
82
- <h3><?= _x('Migrate Plugin', 'admin-text', 'site-reviews'); ?></h3>
83
- <div class="components-notice is-info">
84
- <p class="components-notice__content"><?= _x('Hold down the ALT/Option key to force-run all previous migrations.', 'admin-text', 'site-reviews'); ?></p>
85
- </div>
86
- <p><?= _x('Run this tool if your reviews stopped working correctly after upgrading the plugin to the latest version (i.e. read-only reviews, zero-star ratings, missing role capabilities, etc.).', 'admin-text', 'site-reviews'); ?></p>
87
- <form method="post">
88
- <?php wp_nonce_field('migrate-plugin'); ?>
89
- <input type="hidden" name="{{ id }}[_action]" value="migrate-plugin">
90
- <input type="hidden" name="{{ id }}[alt]" value="0" data-alt>
91
- <p class="submit">
92
- <button type="submit" class="glsr-button button" name="migrate-plugin" id="migrate-plugin" data-ajax-click data-ajax-scroll data-remove-notice="migrate">
93
- <span data-alt-text="<?= esc_attr_x('Run All Migrations', 'admin-text', 'site-reviews'); ?>" data-loading="<?= esc_attr_x('Migrating, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Run Migration', 'admin-text', 'site-reviews'); ?></span>
94
- </button>
95
- </p>
96
- </form>
97
- </div>
98
-
99
- <div class="glsr-card card">
100
- <h3><?= _x('Optimise Your Database Tables', 'admin-text', 'site-reviews'); ?></h3>
101
- <?php if (!empty($myisam_tables)) { ?>
102
- <div class="components-notice is-warning">
103
- <p class="components-notice__content"><?= sprintf(
104
- _x('Please backup your database before running this tool! You can use the %s plugin to do this.', 'admin-text', 'site-reviews'),
105
- '<a href="https://wordpress.org/plugins/updraftplus/">UpdraftPlus</a>'
106
- ); ?></p>
107
- </div>
108
- <p><?= _x('The old MyISAM table engine in MySQL was replaced by the InnoDB engine as the default over 10 years ago! If your database tables still use the MyISAM engine, you are missing out on substantial performance and reliability gains that the InnoDB engine provides.', 'admin-text', 'site-reviews'); ?></p>
109
- <p><?= _x('Site Reviews makes use of specific InnoDB engine features in order to perform faster database queries. However, some of your database tables (shown below) are still using the old MyISAM engine. If you convert these tables to use the InnoDB engine, it will make Site Reviews perform faster.', 'admin-text', 'site-reviews'); ?></p>
110
- <table class="wp-list-table widefat striped" style="margin-bottom:1em;">
111
- <thead>
112
- <tr>
113
- <th scope="col"><strong><?= _x('Table', 'admin-text', 'site-reviews'); ?></strong></th>
114
- <th scope="col"><strong><?= _x('Engine', 'admin-text', 'site-reviews'); ?></strong></th>
115
- <th scope="col"></th>
116
- </tr>
117
- </thead>
118
- <tbody>
119
- <?php foreach ($myisam_tables as $table) { ?>
120
- <tr data-ajax-hide>
121
- <td style="vertical-align:middle;"><?= $table; ?></td>
122
- <td style="vertical-align:middle;">MyISAM</td>
123
- <td style="text-align:right;">
124
- <form method="post">
125
- <?php wp_nonce_field('convert-table-engine'); ?>
126
- <input type="hidden" name="{{ id }}[_action]" value="convert-table-engine">
127
- <input type="hidden" name="{{ id }}[table]" value="<?= $table; ?>">
128
- <button type="submit" class="glsr-button glsr-button components-button is-secondary is-small" name="convert-table-engine" data-ajax-click>
129
- <span data-loading="<?= esc_attr_x('Converting, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Convert table engine to InnoDB', 'admin-text', 'site-reviews'); ?></span>
130
- </button>
131
- </form>
132
- </td>
133
- </tr>
134
- <?php } ?>
135
- </tbody>
136
- </table>
137
- <?php } else { ?>
138
- <div class="components-notice is-success" style="margin-bottom:1em;">
139
- <p class="components-notice__content"><?= _x('Optimisation is unnecessary because your database tables already use the InnoDB engine!', 'admin-text', 'site-reviews'); ?> ✨</p>
140
- </div>
141
- <?php } ?>
142
- </div>
143
-
144
- <div class="glsr-card card">
145
- <h3><?= _x('Reset Assigned Meta Values', 'admin-text', 'site-reviews'); ?></h3>
146
- <p><?= _x('Site Reviews stores the individual review count, average rating, and ranking for each assigned post, category, and user. If you suspect that these meta values are incorrect (perhaps you cloned a page that had reviews assigned to it), you may use this tool to recalculate them.', 'admin-text', 'site-reviews'); ?></p>
147
- <form method="post">
148
- <?php wp_nonce_field('reset-assigned-meta'); ?>
149
- <input type="hidden" name="{{ id }}[_action]" value="reset-assigned-meta">
150
- <p class="submit">
151
- <button type="submit" class="glsr-button button" name="reset-assigned-meta" id="reset-assigned-meta" data-ajax-click data-ajax-scroll>
152
- <span data-loading="<?= esc_attr_x('Resetting values, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Reset Meta Values', 'admin-text', 'site-reviews'); ?></span>
153
- </button>
154
- </p>
155
- </form>
156
- </div>
157
-
158
- <div class="glsr-card card">
159
- <h3><?= _x('Reset Permissions', 'admin-text', 'site-reviews'); ?></h3>
160
- <div class="components-notice is-info">
161
- <p class="components-notice__content"><?= _x('Hold down the ALT/Option key to perform a "Hard Reset"; this removes all Site Reviews capabilites from your Editor, Author, and Contributor roles before re-adding them.', 'admin-text', 'site-reviews'); ?></p>
162
- </div>
163
- <p><?= _x('Site Reviews provides custom post_type capabilities that mirror the capabilities of your posts by default. For example, if a user role has permission to edit others posts, then that role will also have permission to edit other users reviews.', 'admin-text', 'site-reviews'); ?></p>
164
- <p><?= _x('If you have changed the capabilities of your user roles (Administrator, Editor, Author, and Contributor) and you suspect that Site Reviews is not working correctly due to your changes, you may use this tool to reset the Site Reviews capabilities for your user roles.', 'admin-text', 'site-reviews'); ?></p>
165
- <form method="post">
166
- <?php wp_nonce_field('reset-permissions'); ?>
167
- <input type="hidden" name="{{ id }}[_action]" value="reset-permissions">
168
- <input type="hidden" name="{{ id }}[alt]" value="0" data-alt>
169
- <p class="submit">
170
- <button type="submit" class="glsr-button button" name="reset-permissions" id="reset-permissions" data-ajax-click data-ajax-scroll>
171
- <span data-alt-text="<?= esc_attr_x('Hard Reset Permissions', 'admin-text', 'site-reviews'); ?>" data-loading="<?= esc_attr_x('Resetting, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Reset Permissions', 'admin-text', 'site-reviews'); ?></span>
172
- </button>
173
- </p>
174
- </form>
175
- </div>
176
-
177
- <?php } ?>
178
-
179
- <div class="glsr-card card">
180
- <h3><?= _x('Test IP Address Detection', 'admin-text', 'site-reviews'); ?></h3>
181
- <p><?= _x('When reviews are submitted on your website, Site Reviews detects the IP address of the person submitting the review and saves it to the submitted review. This allows you to limit review submissions or to blacklist reviewers based on their IP address. The IP address is also used by Akismet (if you have enabled the integration) to catch spam submissions.', 'admin-text', 'site-reviews'); ?></p>
182
- <p><?= _x('If you are getting an "unknown" value for IP addresses in your reviews, you may use this tool to check the visitor IP address detection.', 'admin-text', 'site-reviews'); ?></p>
183
- <form method="post">
184
- <?php wp_nonce_field('detect-ip-address'); ?>
185
- <input type="hidden" name="{{ id }}[_action]" value="detect-ip-address">
186
- <p class="submit">
187
- <button type="submit" class="glsr-button button" name="detect-ip-address" id="detect-ip-address" data-ajax-click data-ajax-scroll>
188
- <span data-loading="<?= esc_attr_x('Testing, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Test Detection', 'admin-text', 'site-reviews'); ?></span>
189
- </button>
190
- </p>
191
- </form>
192
- </div>
1
+ <?php defined('ABSPATH') || die;
2
+
3
+ $sections = [
4
+ trailingslashit(__DIR__).'general/export-plugin-settings.php',
5
+ trailingslashit(__DIR__).'general/import-plugin-settings.php',
6
+ trailingslashit(__DIR__).'general/import-reviews.php',
7
+ trailingslashit(__DIR__).'general/migrate-plugin.php',
8
+ trailingslashit(__DIR__).'general/optimise-db-tables.php',
9
+ trailingslashit(__DIR__).'general/reset-assigned-meta.php',
10
+ trailingslashit(__DIR__).'general/reset-permissions.php',
11
+ trailingslashit(__DIR__).'general/test-ip-detection.php',
12
+ ];
13
+ $filename = pathinfo(__FILE__, PATHINFO_FILENAME);
14
+ $sections = glsr()->filterArrayUnique('tools/'.$filename, $sections);
15
+ foreach ($sections as $section) {
16
+ include $section;
17
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
views/pages/tools/general/export-plugin-settings.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php glsr()->hasPermission('settings') || die; ?>
2
+
3
+ <div class="glsr-card postbox">
4
+ <h3 class="glsr-card-heading">
5
+ <button type="button" class="glsr-accordion-trigger" aria-expanded="false" aria-controls="tools-export-plugin-settings">
6
+ <span class="title dashicons-before dashicons-admin-tools"><?= _x('Export Plugin Settings', 'admin-text', 'site-reviews'); ?></span>
7
+ <span class="icon"></span>
8
+ </button>
9
+ </h3>
10
+ <div id="tools-export-plugin-settings" class="inside">
11
+ <p><?= sprintf(
12
+ _x('Export the Site Reviews settings for this site to a %s file. This allows you to easily import the plugin settings into another site.', 'admin-text', 'site-reviews'),
13
+ '<code>*.json</code>'
14
+ ); ?></p>
15
+ <p><?= sprintf(
16
+ _x('To export your reviews and categories, please use the WordPress %s tool.', 'admin-text', 'site-reviews'),
17
+ sprintf('<a href="%s">%s</a>', admin_url('export.php'), _x('Export', 'admin-text', 'site-reviews'))
18
+ ); ?></p>
19
+ <form method="post">
20
+ <?php wp_nonce_field('export-settings'); ?>
21
+ <input type="hidden" name="{{ id }}[_action]" value="export-settings">
22
+ <button type="submit" class="components-button is-secondary" id="export-settings">
23
+ <?= _x('Export Settings', 'admin-text', 'site-reviews'); ?>
24
+ </button>
25
+ </form>
26
+ </div>
27
+ </div>
views/pages/tools/general/import-plugin-settings.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php glsr()->hasPermission('settings') || die; ?>
2
+
3
+ <div class="glsr-card postbox">
4
+ <h3 class="glsr-card-heading">
5
+ <button type="button" class="glsr-accordion-trigger" aria-expanded="false" aria-controls="tools-import-plugin-settings">
6
+ <span class="title dashicons-before dashicons-admin-tools"><?= _x('Import Plugin Settings', 'admin-text', 'site-reviews'); ?></span>
7
+ <span class="icon"></span>
8
+ </button>
9
+ </h3>
10
+ <div id="tools-import-plugin-settings" class="inside">
11
+ <p><?= sprintf(
12
+ _x('Import the Site Reviews settings from a %s file. This file can be obtained by exporting the settings on another site using the export tool below.', 'admin-text', 'site-reviews'),
13
+ '<code>*.json</code>'
14
+ ); ?></p>
15
+ <p><?= sprintf(
16
+ _x('To import your reviews and categories from another website, please use the WordPress %s tool.', 'admin-text', 'site-reviews'),
17
+ sprintf('<a href="%s">%s</a>', admin_url('import.php'), _x('Import', 'admin-text', 'site-reviews'))
18
+ ); ?></p>
19
+ <form method="post" enctype="multipart/form-data" onsubmit="submit.disabled = true;">
20
+ <?php wp_nonce_field('import-settings'); ?>
21
+ <input type="hidden" name="{{ id }}[_action]" value="import-settings">
22
+ <p>
23
+ <input type="file" name="import-file" accept="application/json">
24
+ </p>
25
+ <button type="submit" class="glsr-button components-button is-secondary" id="import-settings" data-expand="#tools-import-plugin-settings">
26
+ <span data-loading="<?= esc_attr_x('Importing settings, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Import Settings', 'admin-text', 'site-reviews'); ?></span>
27
+ </button>
28
+ </form>
29
+ </div>
30
+ </div>
views/pages/tools/general/import-reviews.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php glsr()->hasPermission('settings') || die; ?>
2
+
3
+ <div class="glsr-card postbox">
4
+ <h3 class="glsr-card-heading">
5
+ <button type="button" class="glsr-accordion-trigger" aria-expanded="false" aria-controls="tools-import-reviews">
6
+ <span class="title dashicons-before dashicons-admin-tools"><?= _x('Import Third Party Reviews', 'admin-text', 'site-reviews'); ?></span>
7
+ <span class="icon"></span>
8
+ </button>
9
+ </h3>
10
+ <div id="tools-import-reviews" class="inside">
11
+ <div class="components-notice is-warning">
12
+ <p class="components-notice__content"><?= sprintf(
13
+ _x('Please backup your database before running this tool! You can use the %s plugin to do this.', 'admin-text', 'site-reviews'),
14
+ '<a href="https://wordpress.org/plugins/updraftplus/">UpdraftPlus</a>'
15
+ ); ?></p>
16
+ </div>
17
+ <p><?= sprintf(
18
+ _x('Here you can import third party reviews from a %s file. The CSV file should include a header row, use a comma as the delimiter, and may contain the following columns:', 'admin-text', 'site-reviews'),
19
+ '<code>*.CSV</code>'
20
+ ); ?></p>
21
+ <p>
22
+ <code>avatar</code> <?= _x('The avatar URL of the reviewer', 'admin-text', 'site-reviews'); ?><br>
23
+ <code>content</code> <?= sprintf('%s (<span class="required">%s</span>)', _x('The review', 'admin-text', 'site-reviews'), _x('required', 'admin-text', 'site-reviews')); ?><br>
24
+ <code>date</code> <?= sprintf('%s (<span class="required">%s</span>)', sprintf(_x('The review date as %s or a timestamp', 'admin-text', 'site-reviews'), '<span class="code"><strong>yyyy-mm-dd</strong></span>'), _x('required', 'admin-text', 'site-reviews')); ?><br>
25
+ <code>email</code> <?= _x('The reviewer\'s email', 'admin-text', 'site-reviews'); ?><br>
26
+ <code>ip_address</code> <?= _x('The IP address of the reviewer', 'admin-text', 'site-reviews'); ?><br>
27
+ <code>is_pinned</code> <?= _x('TRUE or FALSE', 'admin-text', 'site-reviews'); ?><br>
28
+ <code>name</code> <?= _x('The reviewer\'s name', 'admin-text', 'site-reviews'); ?><br>
29
+ <code>rating</code> <?= sprintf('%s (<span class="required">%s</span>)', sprintf(_x('A number from 0-%d', 'admin-text', 'site-reviews'), glsr()->constant('MAX_RATING', 'GeminiLabs\SiteReviews\Modules\Rating')), _x('required', 'admin-text', 'site-reviews')); ?><br>
30
+ <code>response</code> <?= _x('The review response', 'admin-text', 'site-reviews'); ?><br>
31
+ <code>title</code> <?= _x('The title of the review', 'admin-text', 'site-reviews'); ?><br>
32
+ </p>
33
+ <p><?= _x('Entries in the CSV file that do not contain required values will be skipped.', 'admin-text', 'site-reviews'); ?></p>
34
+ <form method="post" enctype="multipart/form-data" onsubmit="submit.disabled = true;">
35
+ <?php wp_nonce_field('import-reviews'); ?>
36
+ <input type="hidden" name="{{ id }}[_action]" value="import-reviews">
37
+ <p>
38
+ <input type="file" name="import-file" accept="text/csv">
39
+ </p>
40
+ <button type="submit" class="glsr-button components-button is-secondary" id="import-reviews" data-expand="#tools-import-reviews">
41
+ <span data-loading="<?= esc_attr_x('Importing reviews, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Import Reviews', 'admin-text', 'site-reviews'); ?></span>
42
+ </button>
43
+ </form>
44
+ </div>
45
+ </div>
views/pages/tools/general/migrate-plugin.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php glsr()->hasPermission('settings') || die; ?>
2
+
3
+ <div class="glsr-card postbox">
4
+ <h3 class="glsr-card-heading">
5
+ <button type="button" class="glsr-accordion-trigger" aria-expanded="false" aria-controls="tools-migrate-plugin">
6
+ <span class="title dashicons-before dashicons-admin-tools"><?= _x('Migrate Plugin', 'admin-text', 'site-reviews'); ?></span>
7
+ <span class="icon"></span>
8
+ </button>
9
+ </h3>
10
+ <div id="tools-migrate-plugin" class="inside">
11
+ <div class="components-notice is-info">
12
+ <p class="components-notice__content"><?= _x('Hold down the ALT/Option key to force-run all previous migrations.', 'admin-text', 'site-reviews'); ?></p>
13
+ </div>
14
+ <p><?= _x('Run this tool if your reviews stopped working correctly after upgrading the plugin to the latest version (i.e. read-only reviews, zero-star ratings, missing role capabilities, etc.).', 'admin-text', 'site-reviews'); ?></p>
15
+ <form method="post">
16
+ <?php wp_nonce_field('migrate-plugin'); ?>
17
+ <input type="hidden" name="{{ id }}[_action]" value="migrate-plugin">
18
+ <input type="hidden" name="{{ id }}[alt]" value="0" data-alt>
19
+ <button type="submit" class="glsr-button components-button is-secondary" id="migrate-plugin" data-ajax-click data-ajax-scroll data-remove-notice="migrate">
20
+ <span data-alt-text="<?= esc_attr_x('Run All Migrations', 'admin-text', 'site-reviews'); ?>" data-loading="<?= esc_attr_x('Migrating, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Run Migration', 'admin-text', 'site-reviews'); ?></span>
21
+ </button>
22
+ </form>
23
+ </div>
24
+ </div>
views/pages/tools/general/optimise-db-tables.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php glsr()->hasPermission('settings') || die; ?>
2
+
3
+ <div class="glsr-card postbox">
4
+ <h3 class="glsr-card-heading">
5
+ <button type="button" class="glsr-accordion-trigger" aria-expanded="false" aria-controls="tools-optimise-db-tables">
6
+ <span class="title dashicons-before dashicons-admin-tools"><?= _x('Optimise Your Database Tables', 'admin-text', 'site-reviews'); ?></span>
7
+ <span class="icon"></span>
8
+ </button>
9
+ </h3>
10
+ <div id="tools-optimise-db-tables" class="inside">
11
+ <?php if (!empty($myisam_tables)) { ?>
12
+ <div class="components-notice is-warning">
13
+ <p class="components-notice__content"><?= sprintf(
14
+ _x('Please backup your database before running this tool! You can use the %s plugin to do this.', 'admin-text', 'site-reviews'),
15
+ '<a href="https://wordpress.org/plugins/updraftplus/">UpdraftPlus</a>'
16
+ ); ?></p>
17
+ </div>
18
+ <p><?= _x('The old MyISAM table engine in MySQL was replaced by the InnoDB engine as the default over 10 years ago! If your database tables still use the MyISAM engine, you are missing out on substantial performance and reliability gains that the InnoDB engine provides.', 'admin-text', 'site-reviews'); ?></p>
19
+ <p><?= _x('Site Reviews makes use of specific InnoDB engine features in order to perform faster database queries. However, some of your database tables (shown below) are still using the old MyISAM engine. If you convert these tables to use the InnoDB engine, it will make Site Reviews perform faster.', 'admin-text', 'site-reviews'); ?></p>
20
+ <table class="wp-list-table widefat striped" style="margin-bottom:1em;">
21
+ <thead>
22
+ <tr>
23
+ <th scope="col"><strong><?= _x('Table', 'admin-text', 'site-reviews'); ?></strong></th>
24
+ <th scope="col"><strong><?= _x('Engine', 'admin-text', 'site-reviews'); ?></strong></th>
25
+ <th scope="col"></th>
26
+ </tr>
27
+ </thead>
28
+ <tbody>
29
+ <?php foreach ($myisam_tables as $table) { ?>
30
+ <tr data-ajax-hide>
31
+ <td style="vertical-align:middle;"><?= $table; ?></td>
32
+ <td style="vertical-align:middle;">MyISAM</td>
33
+ <td style="text-align:right;">
34
+ <form method="post">
35
+ <?php wp_nonce_field('convert-table-engine'); ?>
36
+ <input type="hidden" name="{{ id }}[_action]" value="convert-table-engine">
37
+ <input type="hidden" name="{{ id }}[table]" value="<?= $table; ?>">
38
+ <button type="submit" class="glsr-button components-button is-secondary is-small" data-ajax-click>
39
+ <span data-loading="<?= esc_attr_x('Converting, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Convert table engine to InnoDB', 'admin-text', 'site-reviews'); ?></span>
40
+ </button>
41
+ </form>
42
+ </td>
43
+ </tr>
44
+ <?php } ?>
45
+ </tbody>
46
+ </table>
47
+ <?php } else { ?>
48
+ <div class="components-notice is-success" style="margin-bottom:1em;">
49
+ <p class="components-notice__content"><?= _x('Optimisation is unnecessary because your database tables already use the InnoDB engine!', 'admin-text', 'site-reviews'); ?> ✨</p>
50
+ </div>
51
+ <?php } ?>
52
+ </div>
53
+ </div>
views/pages/tools/general/reset-assigned-meta.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php glsr()->hasPermission('settings') || die; ?>
2
+
3
+ <div class="glsr-card postbox">
4
+ <h3 class="glsr-card-heading">
5
+ <button type="button" class="glsr-accordion-trigger" aria-expanded="false" aria-controls="tools-reset-assigned-meta">
6
+ <span class="title dashicons-before dashicons-admin-tools"><?= _x('Reset Assigned Meta Values', 'admin-text', 'site-reviews'); ?></span>
7
+ <span class="icon"></span>
8
+ </button>
9
+ </h3>
10
+ <div id="tools-reset-assigned-meta" class="inside">
11
+ <p><?= _x('Site Reviews stores the individual review count, average rating, and ranking for each assigned post, category, and user. If you suspect that these meta values are incorrect (perhaps you cloned a page that had reviews assigned to it), you may use this tool to recalculate them.', 'admin-text', 'site-reviews'); ?></p>
12
+ <form method="post">
13
+ <?php wp_nonce_field('reset-assigned-meta'); ?>
14
+ <input type="hidden" name="{{ id }}[_action]" value="reset-assigned-meta">
15
+ <button type="submit" class="glsr-button components-button is-secondary" id="reset-assigned-meta" data-ajax-click data-ajax-scroll>
16
+ <span data-loading="<?= esc_attr_x('Resetting values, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Reset Meta Values', 'admin-text', 'site-reviews'); ?></span>
17
+ </button>
18
+ </form>
19
+ </div>
20
+ </div>
views/pages/tools/general/reset-permissions.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php glsr()->hasPermission('settings') || die; ?>
2
+
3
+ <div class="glsr-card postbox">
4
+ <h3 class="glsr-card-heading">
5
+ <button type="button" class="glsr-accordion-trigger" aria-expanded="false" aria-controls="tools-reset-permissions">
6
+ <span class="title dashicons-before dashicons-admin-tools"><?= _x('Reset Permissions', 'admin-text', 'site-reviews'); ?></span>
7
+ <span class="icon"></span>
8
+ </button>
9
+ </h3>
10
+ <div id="tools-reset-permissions" class="inside">
11
+ <div class="components-notice is-info">
12
+ <p class="components-notice__content"><?= _x('Hold down the ALT/Option key to perform a "Hard Reset"; this removes all Site Reviews capabilites from your Editor, Author, and Contributor roles before re-adding them.', 'admin-text', 'site-reviews'); ?></p>
13
+ </div>
14
+ <p><?= _x('Site Reviews provides custom post_type capabilities that mirror the capabilities of your posts by default. For example, if a user role has permission to edit others posts, then that role will also have permission to edit other users reviews.', 'admin-text', 'site-reviews'); ?></p>
15
+ <p><?= _x('If you have changed the capabilities of your user roles (Administrator, Editor, Author, and Contributor) and you suspect that Site Reviews is not working correctly due to your changes, you may use this tool to reset the Site Reviews capabilities for your user roles.', 'admin-text', 'site-reviews'); ?></p>
16
+ <form method="post">
17
+ <?php wp_nonce_field('reset-permissions'); ?>
18
+ <input type="hidden" name="{{ id }}[_action]" value="reset-permissions">
19
+ <input type="hidden" name="{{ id }}[alt]" value="0" data-alt>
20
+ <button type="submit" class="glsr-button components-button is-secondary" id="reset-permissions" data-ajax-click data-ajax-scroll>
21
+ <span data-alt-text="<?= esc_attr_x('Hard Reset Permissions', 'admin-text', 'site-reviews'); ?>" data-loading="<?= esc_attr_x('Resetting, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Reset Permissions', 'admin-text', 'site-reviews'); ?></span>
22
+ </button>
23
+ </form>
24
+ </div>
25
+ </div>
views/pages/tools/general/test-ip-detection.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="glsr-card postbox">
2
+ <h3 class="glsr-card-heading">
3
+ <button type="button" class="glsr-accordion-trigger" aria-expanded="false" aria-controls="tools-ip-detection">
4
+ <span class="title dashicons-before dashicons-admin-tools"><?= _x('Test IP Address Detection', 'admin-text', 'site-reviews'); ?></span>
5
+ <span class="icon"></span>
6
+ </button>
7
+ </h3>
8
+ <div id="tools-ip-detection" class="inside">
9
+ <p><?= _x('When reviews are submitted on your website, Site Reviews detects the IP address of the person submitting the review and saves it to the submitted review. This allows you to limit review submissions or to blacklist reviewers based on their IP address. The IP address is also used by Akismet (if you have enabled the integration) to catch spam submissions.', 'admin-text', 'site-reviews'); ?></p>
10
+ <p><?= _x('If you are getting an "unknown" value for IP addresses in your reviews, you may use this tool to check the visitor IP address detection.', 'admin-text', 'site-reviews'); ?></p>
11
+ <form method="post">
12
+ <?php wp_nonce_field('detect-ip-address'); ?>
13
+ <input type="hidden" name="{{ id }}[_action]" value="detect-ip-address">
14
+ <button type="submit" class="glsr-button components-button is-secondary" id="detect-ip-address" data-ajax-click data-ajax-scroll>
15
+ <span data-loading="<?= esc_attr_x('Testing, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Test Detection', 'admin-text', 'site-reviews'); ?></span>
16
+ </button>
17
+ </form>
18
+ </div>
19
+ </div>
views/pages/tools/index.php CHANGED
@@ -1,7 +1,10 @@
1
  <?php defined('ABSPATH') || die; ?>
2
 
3
  <div class="wrap">
4
- <h1 class="wp-heading-inline"><?= esc_html(get_admin_page_title()); ?></h1>
 
 
 
5
  <?= $notices; ?>
6
  <nav class="glsr-nav-tab-wrapper nav-tab-wrapper">
7
  <?php foreach ($tabs as $id => $title) : ?>
1
  <?php defined('ABSPATH') || die; ?>
2
 
3
  <div class="wrap">
4
+ <h1 class="wp-heading-inline">
5
+ <?= esc_html(get_admin_page_title()); ?>
6
+ <a href="<?= admin_url('index.php?page='.glsr()->id.'-welcome'); ?>" class="page-title-action"><?= _x('About', 'admin-text', 'site-reviews'); ?></a>
7
+ </h1>
8
  <?= $notices; ?>
9
  <nav class="glsr-nav-tab-wrapper nav-tab-wrapper">
10
  <?php foreach ($tabs as $id => $title) : ?>
views/pages/tools/system-info.php CHANGED
@@ -4,5 +4,7 @@
4
  <textarea class="large-text code glsr-code glsr-code-large" name="{{ id }}[system-info]" rows="20" onclick="this.select()" readonly>{{ system }}</textarea>
5
  <input type="hidden" name="{{ id }}[_action]" value="download-system-info">
6
  <?php wp_nonce_field('download-system-info'); ?>
7
- <?php submit_button(_x('Download System Info', 'admin-text', 'site-reviews'), 'primary', '', false); ?>
 
 
8
  </form>
4
  <textarea class="large-text code glsr-code glsr-code-large" name="{{ id }}[system-info]" rows="20" onclick="this.select()" readonly>{{ system }}</textarea>
5
  <input type="hidden" name="{{ id }}[_action]" value="download-system-info">
6
  <?php wp_nonce_field('download-system-info'); ?>
7
+ <button type="submit" class="components-button is-primary" id="download-system-info">
8
+ <?= _x('Download System Info', 'admin-text', 'site-reviews'); ?>
9
+ </button>
10
  </form>
views/pages/welcome/getting-started.php CHANGED
@@ -32,7 +32,7 @@
32
  <p>Enable avatars to generate images using the WordPress Gravatar service.</p>
33
  </li>
34
  <li class="glsr-column">
35
- <h3><a href="<?= admin_url('edit.php?post_type='.glsr()->post_type.'&page=tools#tab-general'); ?>">Backup/Restore</a></h3>
36
  <p>Backup and restore your plugin settings as needed.</p>
37
  </li>
38
  <li class="glsr-column">
32
  <p>Enable avatars to generate images using the WordPress Gravatar service.</p>
33
  </li>
34
  <li class="glsr-column">
35
+ <h3><a href="<?= admin_url('edit.php?post_type='.glsr()->post_type.'&page=tools#tab-general'); ?>" data-expand="#tools-export-plugin-settings">Backup/Restore</a></h3>
36
  <p>Backup and restore your plugin settings as needed.</p>
37
  </li>
38
  <li class="glsr-column">
views/pages/welcome/whatsnew.php CHANGED
@@ -4,6 +4,7 @@
4
  <div class="is-fullwidth">
5
  <div class="glsr-flex-row">
6
  <div class="glsr-column">
 
7
  <?php include trailingslashit(__DIR__).'whatsnew/v58.php'; ?>
8
  <?php include trailingslashit(__DIR__).'whatsnew/v57.php'; ?>
9
  <?php include trailingslashit(__DIR__).'whatsnew/v56.php'; ?>
4
  <div class="is-fullwidth">
5
  <div class="glsr-flex-row">
6
  <div class="glsr-column">
7
+ <?php include trailingslashit(__DIR__).'whatsnew/v59.php'; ?>
8
  <?php include trailingslashit(__DIR__).'whatsnew/v58.php'; ?>
9
  <?php include trailingslashit(__DIR__).'whatsnew/v57.php'; ?>
10
  <?php include trailingslashit(__DIR__).'whatsnew/v56.php'; ?>
views/pages/welcome/whatsnew/v58.php CHANGED
@@ -1,6 +1,6 @@
1
- <div class="glsr-card postbox is-fullwidth open">
2
  <h3 class="glsr-card-heading">
3
- <button type="button" class="glsr-accordion-trigger" aria-expanded="true" aria-controls="welcome-v580">
4
  <span class="title">Version 5.8</span>
5
  <span class="icon"></span>
6
  </button>
1
+ <div class="glsr-card postbox is-fullwidth">
2
  <h3 class="glsr-card-heading">
3
+ <button type="button" class="glsr-accordion-trigger" aria-expanded="false" aria-controls="welcome-v580">
4
  <span class="title">Version 5.8</span>
5
  <span class="icon"></span>
6
  </button>
views/pages/welcome/whatsnew/v59.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="glsr-card postbox is-fullwidth open">
2
+ <h3 class="glsr-card-heading">
3
+ <button type="button" class="glsr-accordion-trigger" aria-expanded="true" aria-controls="welcome-v590">
4
+ <span class="title">Version 5.9</span>
5
+ <span class="icon"></span>
6
+ </button>
7
+ </h3>
8
+ <div id="welcome-v590" class="inside">
9
+ <p><em>Initial Release Date &mdash; April 24th, 2021</em></p>
10
+ <h4>✨ New Features</h4>
11
+ <ul>
12
+ <li>Added a "Compatibility Issues" section to the Help page to document incompatible plugins along with possible workarounds.</li>
13
+ <li>Added a "terms" option to the shortcodes which allow you to only display reviews where the terms field was accepted in the form. All reviews that were submitted before this update will have their terms set as accepted.</li>
14
+ </ul>
15
+ <h4>🛠 Tweaks</h4>
16
+ <ul>
17
+ <li>Improved the Tools page</li>
18
+ </ul>
19
+ <h4>🐞 Bugs Fixed</h4>
20
+ <ul>
21
+ <li>Fixed database foreign table constraints</li>
22
+ <li>Fixed settings tabs on touch devices</li>
23
+ </ul>
24
+ </div>
25
+ </div>
views/partials/notices/migrate.php CHANGED
@@ -6,7 +6,7 @@
6
  <p><strong><?= _x('Database Update Required', 'admin-text', 'site-reviews'); ?></strong></p>
7
  <p><?= sprintf(_x('Site Reviews needs to update the database and your reviews to the newest version. If this notice keeps appearing, please read the %s section on the Help page.', 'admin-text', 'site-reviews'), $action); ?></p>
8
  <p>
9
- <button type="submit" class="components-button is-secondary glsr-button" name="migrate-plugin" id="migrate-plugin" data-ajax-click data-remove-notice="migrate">
10
  <span data-alt-text="<?= esc_attr_x('Run All Migrations', 'admin-text', 'site-reviews'); ?>" data-loading="<?= esc_attr_x('Updating, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Update Database', 'admin-text', 'site-reviews'); ?></span>
11
  </button>
12
  </p>
6
  <p><strong><?= _x('Database Update Required', 'admin-text', 'site-reviews'); ?></strong></p>
7
  <p><?= sprintf(_x('Site Reviews needs to update the database and your reviews to the newest version. If this notice keeps appearing, please read the %s section on the Help page.', 'admin-text', 'site-reviews'), $action); ?></p>
8
  <p>
9
+ <button type="submit" class="glsr-button components-button is-secondary" data-ajax-click data-remove-notice="migrate">
10
  <span data-alt-text="<?= esc_attr_x('Run All Migrations', 'admin-text', 'site-reviews'); ?>" data-loading="<?= esc_attr_x('Updating, please wait...', 'admin-text', 'site-reviews'); ?>"><?= _x('Update Database', 'admin-text', 'site-reviews'); ?></span>
11
  </button>
12
  </p>