1"use strict";(self.webpackChunknodebb=self.webpackChunknodebb||[]).push([[8399,18470,22067,43602,61396,98463],{26519(R,C,l){l.r(C),l.d(C,{show:()=>o,start:()=>v});var p=l(65303),A=l(17459),m=l.n(A);let O=0,h=!1,y;function v(n){if(r(),n<=0)return;y||(0,A.translate)("[[login:logged-out-due-to-inactivity]]",function(e){y=e});const t=n*6e4;O=setTimeout(o,t)}function o(){h||((0,p.alert)({closeButton:!1,message:y,callback:function(){window.location.reload()}}),h=!0)}function r(){O&&clearTimeout(O)}},54222(R,C,l){var p,A;p=[l(24187),l(6411),l(91749),l(29930),l(70012),l(89336),l(26519),l(30076)],A=(function(m,O,h,y,v,o,r,n){const t={};t.populateTOC=function(){const s=$(".settings-header"),c=$('[component="settings/toc"]'),u=$('[component="settings/toc/list"]'),f=$('[component="settings/main/header"]');if(s.length>1&&u.length){s.each(function(S){const P=$(this),E=P.text(),x=P.parent().attr("id")||`section${S+1}`;x.startsWith("section")&&P.parent().attr("id",x),u.append(`<a class="btn btn-ghost btn-sm text-xs text-start text-decoration-none" href="#${n.escape(x)}">${n.escape(E)}</a>`)});const d=f.outerHeight(!0);u.find("a").on("click",function(){const S=$(this).attr("href"),P=$(S);if(P.length)return P.get(0).scrollIntoView(!0),window.location.hash=S,scrollBy(0,-d),setTimeout(()=>{u.find("a").removeClass("active"),$(this).addClass("active")},10),!1}),new o.ScrollSpy($("#spy-container")[0],{target:"#settings-navbar",rootMargin:"-10% 0px -70%",smoothScroll:!0});const g=$(`${window.location.hash}`);g.length&&$("html, body").animate({scrollTop:g.offset().top-d+"px"},400),c.removeClass("hidden")}},t.prepare=function(s){const c=$("#content [data-field]"),u=c.length,f=$("#save"),d=$("#revert");let g,S,P,E;c.on("change",function(){app.flags=app.flags||{},app.flags._unsaved=!0});const x=["text","hidden","password","textarea","number","color"];for(g=0;g<u;g+=1)if(E=c.eq(g),S=E.attr("data-field"),P=E.attr("type"),app.config.hasOwnProperty(S))if(E.is("input")&&P==="checkbox"){const D=parseInt(app.config[S],10)===1;E.prop("checked",D)}else(E.is("textarea")||E.is("select")||E.is("input")&&x.indexOf(P)!==-1)&&E.val(app.config[S]);d.off("click").on("click",function(){ajaxify.refresh()}),f.off("click").on("click",function(D){D.preventDefault(),v.check(document.querySelectorAll("#content [data-field]"))&&a(c,function(T){if(T)return y.alert({alert_id:"config_status",timeout:1e4,title:"[[admin/admin:changes-not-saved]]",message:`[[admin/admin:changes-not-saved-message, ${T.message}]]`,type:"danger"});app.flags._unsaved=!1,t.toggleSaveSuccess(f),h.fire("action:admin.settingsSaved")})}),O.bind("ctrl+s",function(D){f.click(),D.preventDefault()}),e(),i(),$("#clear-sitemap-cache").off("click").on("click",function(){return socket.emit("admin.settings.clearSitemapCache",function(){y.success("Sitemap Cache Cleared!")}),!1}),typeof s=="function"&&s(),setTimeout(function(){h.fire("action:admin.settingsLoaded")},0)},t.toggleSaveSuccess=function(s){const c=s.get(0);c&&(c.classList.toggle("saved",!0),setTimeout(()=>{c.classList.toggle("saved",!1)},1500))};function e(){$('#content input[data-action="upload"]').each(function(){const s=$(this);s.on("click",function(){m.show({title:s.attr("data-title"),description:s.attr("data-description"),route:s.attr("data-route"),params:{},showHelp:s.attr("data-help")?s.attr("data-help")===1:void 0,accept:s.attr("data-accept")},function(c){$("#"+s.attr("data-target")).val(c)})})})}function i(){$('[data-field-type="tagsinput"]').tagsinput({tagClass:"badge bg-info",confirmKeys:[13,44],trimValue:!0}),app.flags._unsaved=!1}t.remove=function(s){socket.emit("admin.config.remove",s)};function a(s,c){const u={};s.each(function(){const f=$(this),d=f.attr("data-field");let g,S;if(f.is("input"))switch(S=f.attr("type"),S){case"text":case"password":case"hidden":case"textarea":case"number":case"color":g=f.val();break;case"checkbox":g=f.prop("checked")?"1":"0";break}else(f.is("textarea")||f.is("select"))&&(g=f.val());u[d]=g}),socket.emit("admin.config.setMultiple",u,function(f){if(f)return c(f);for(const[d,g]of Object.entries(u))app.config[d]=g,d==="adminReloginDuration"&&r.start(parseInt(g,10));c()})}return t}).apply(C,p),A!==void 0&&(R.exports=A)},65303(R,C,l){l.r(C),l.d(C,{alert:()=>y,confirm:()=>v,dialog:()=>h,prompt:()=>o,promptPassword:()=>r});var p=l(33530),A=l.n(p),m=l(17459),O=l.n(m);p.setDefaults({locale:config.userLang}),m.translateKeys(["modules:bootbox.ok","modules:bootbox.cancel","modules:bootbox.confirm"]).then(e=>{p.addLocale(config.userLang,{OK:e[0],CANCEL:e[1],CONFIRM:e[2]}),p.setLocale(config.userLang)});async function h(e){const[i,a,s]=await Promise.all([m.translate(e.title||""),n(e)||"",t(e.buttons)]);return p.dialog({...e,title:i,message:a,buttons:s})}async function y(e,i){const[a,s]=await Promise.all([e&&e.title?m.translate(e.title):null,n(e)]);return i=typeof i=="function"?i:e.callback,p.alert({...e,title:a,message:s,callback:i})}async function v(e,i){const[a,s]=await Promise.all([e&&e.title?m.translate(e.title):null,n(e)]);return i=typeof i=="function"?i:e.callback,p.confirm({...e,title:a,message:s,callback:i})}async function o(e,i){const[a,s]=await Promise.all([m.translate(typeof e=="string"?e:e.title),e&&e.message?n(e):null]);return i=typeof i=="function"?i:e.callback,p.prompt({...e,title:a,message:s,callback:i})}async function r(e){return typeof e=="string"&&(e={title:e}),e=e||{title:"[[user:current-password]]",message:"[[user:emailUpdate.password-challenge]]"},await new Promise(i=>{o({...e,inputType:"password",required:!0,value:"",callback:i})})}function n(e){const i=e&&e.message?e.message:e;return i instanceof jQuery?i:m.translate(i||"")}async function t(e){if(!Object.keys(e||{}).length)return;const i=Object.values(e);return await Promise.all(i.map(async a=>({...a,label:await m.translateKey(a.label)})))}},70012(R,C,l){var p,A;p=[l(91749),l(29930)],A=(function(m,O){let h=[],y=0;
1function v(n,t){typeof n!="string"&&(n=$(n),n=n.data("type")||n.attr("type")||n.prop("tagName"));const e=r.plugins[n.toLowerCase()];if(e==null)return;const i=e[t];return typeof i=="function"?i:null}const o={deepClone:function(n){return typeof n=="object"?JSON.parse(JSON.stringify(n)):n},createElement:function(n,t,e){const i=document.createElement(n);for(const[a,s]of Object.entries(t))i.setAttribute(a,s);return e&&i.appendChild(document.createTextNode(e)),i},initElement:function(n){const t=v(n,"init");t?.call(r,$(n))},destructElement:function(n){const t=v(n,"destruct");t?.call(r,$(n))},createElementOfType:function(n,t,e){let i;const a=v(n,"create");return a!=null?i=$(a.call(r,n,t,e)):(e==null&&(e={}),n!=null&&(e.type=n),i=$(o.createElement(t||"input",e))),i.data("type",n),o.initElement(i),i},cleanArray:function(n,t,e){const i=[];if(!t&&e)return n;for(let a=0;a<n.length;a+=1){let s=n[a];t&&(s===!!s?s=+s:s&&typeof s.trim=="function"&&(s=s.trim())),(e||s!=null&&s.length)&&i.push(s)}return i},isTrue:function(n){return n==="true"||+n==1},isFalse:function(n){return n==="false"||+n==0},readValue:function(n){let t=!o.isFalse(n.data("empty"));const e=!o.isFalse(n.data("trim")),i=n.data("split"),a=v(n,"get");let s;if(a!=null)return a.call(r,n,e,t);if(i!=null){t=o.isTrue(n.data("empty")),s=n.val();const c=s!=null&&s.split(i||",")||[];return o.cleanArray(c,e,t)}if(s=n.val(),e&&s!=null&&typeof s.trim=="function"&&(s=s.trim()),t||s!==void 0&&(s==null||s.length!==0))return s},fillField:function(n,t){const e=v(n,"set");let i=n.data("trim");if(i=i!=="false"&&+i!=0,e!=null)return e.call(r,n,t,i);t instanceof Array&&(t=t.join(n.data("split")||(i?", ":","))),i&&t&&typeof t.trim=="function"?(t=t.trim(),typeof t.toString=="function"&&(t=t.toString())):t!=null?(typeof t.toString=="function"&&(t=t.toString()),i&&(t=t.trim())):t="",t!==void 0&&n.val(t)},initFields:function(n){$("[data-key]",n).each(function(t,e){e=$(e);const i=v(e,"init"),a=e.data("key").split(".");let s=r.get();i?.call(r,e);for(let c=0;c<a.length;c+=1){const u=a[c];u&&s!=null&&(s=s[u])}o.fillField(e,s)})},registerReadyJobs:function(n){return y+=n,y},beforeReadyJobsDecreased:function(n){if(n==null&&(n=1),y>0&&(y-=n,y<=0)){for(let t=0;t<h.length;t+=1)h[t]();h=[]}},whenReady:function(n){y<=0?n():h.push(n)},serializeForm:function(n){const t=n.serializeObject();return n.find('input[type="checkbox"]').each(function(e,i){i=$(i),i.is(":checked")||(t[i.attr("name")]="off")}),n.find("select[multiple]").each(function(e,i){i=$(i),t[i.attr("name")]=JSON.stringify(i.val())}),t},persistSettings:function(n,t,e,i){t!=null&&t._!=null&&typeof t._!="string"&&(t=o.deepClone(t),t._=JSON.stringify(t._)),socket.emit("admin.settings.set",{hash:n,values:t},function(a){e&&(a?O.alert({title:"[[admin/admin:changes-not-saved]]",type:"danger",message:`[[admin/admin/changes-not-saved-message, ${a.message}]]`,timeout:5e3}):O.alert({title:"[[admin/admin:changes-saved]]",type:"success",message:"[[admin/admin:changes-saved-message]]",timeout:2500})),typeof i=="function"&&i(a)})},use:function(n){try{n._=JSON.parse(n._)}catch(t){console.error(t)}r.cfg=n}},r={helper:o,plugins:{},cfg:{},get:function(){return r.cfg!=null&&r.cfg._!==void 0?r.cfg._:r.cfg},registerPlugin:function(n,t){t==null?t=n.types:n.types=t,typeof n.use=="function"&&n.use.call(r);for(let e=0;e<t.length;e+=1){const i=t[e].toLowerCase();r.plugins[i]==null&&(r.plugins[i]=n)}},set:function(n,t,e,i,a){a==null&&(a=!0),o.whenReady(function(){o.use(t),o.initFields(e||"form"),o.persistSettings(n,t,a,i)})},sync:function(n,t,e){socket.emit("admin.settings.get",{hash:n},function(i,a){i?typeof e=="function"&&e(i):o.whenReady(function(){o.use(a),o.initFields(t||"form"),typeof e=="function"&&e()})})},persist:function(n,t,e,i){const a=[],s=$("[data-key]",t||"form").toArray();i==null&&(i=!0);for(let c=0;c<s.length;c+=1){const u=$(s[c]),f=o.readValue(u);let d=r.get();const g=u.data("key").split("."),S=g[g.length-1];if(g.length>1)for(let P=0;P<g.length-1;P+=1){const E=g[P];E&&d!=null&&(d=d[E])}d!=null?f!=null?d[S]=f:delete d[S]:a.push(u.data("key"))}a.length&&O.alert({title:"Attributes Not Saved",message:"'"+a.join(", ")+"' could not be saved. Please contact the plugin-author!",type:"danger",timeout:5e3}),o.persistSettings(n,r.cfg,i,e)},load:function(n,t,e){e=e||function(){};const i=t.attr("data-socket-get");socket.emit(i||"admin.settings.get",{hash:n},function(a,s){if(a)return e(a);$(t).find("select[multiple]").each(function(u,f){const d=$(f).attr("name");if(d&&s.hasOwnProperty(d))try{s[d]=JSON.parse(s[d])}catch(g){console.error(g)}}),ajaxify.data[i?n:"settings"]=s,o.whenReady(function(){$(t).find("[data-sorted-list]").each(function(u,f){v(f,"get").call(r,$(f),n)})}),$(t).deserialize(s),m.fire("action:admin.settingsLoaded"),$(t).on("change","input, select, textarea",function(){app.flags=app.flags||{},app.flags._unsaved=!0});const c=document.getElementById("save");
1c&&l.e(6411).then(function(){var u=[l(6411)];(function(f){f.bind("ctrl+s",function(d){c.click(),d.preventDefault()})}).apply(null,u)}).catch(l.oe),e(null,s)})},save:function(n,t,e){t=$(t);const i=t.get(0).elements;if(r.check(i)&&t.length){const s=o.serializeForm(t);o.whenReady(function(){const u=t.find("[data-sorted-list]");u.length&&u.each((f,d)=>{v(d,"set").call(r,$(d),s)})});const c=t.attr("data-socket-set");socket.emit(c||"admin.settings.set",{hash:n,values:s},function(u){if(app.flags._unsaved=!1,ajaxify.data[c?n:"settings"]=s,typeof e=="function")e(u);else if(u)O.alert({title:"[[admin/admin:changes-not-saved]]",message:`[[admin/admin:changes-not-saved-message, ${u.message}]]`,type:"error",timeout:5e3});else{const f=document.getElementById("save");f.classList.toggle("saved",!0),setTimeout(()=>{f.classList.toggle("saved",!1)},1500)}})}},check:function(n){const t=e=>{const i=e.target.closest(".form-group");i&&i.classList.add("has-error"),e.target.removeEventListener("invalid",t)};return Array.prototype.map.call(n,e=>{const i=e.closest(".form-group");return i&&i.classList.remove("has-error"),e.addEventListener("invalid",t),e.reportValidity()}).every(Boolean)}};return o.registerReadyJobs(1),Promise.all([l.e(23662),l.e(65285),l.e(19308)]).then(function(){var n=[l(75210),l(474),l(50397),l(71575),l(40054),l(17708),l(46700),l(59175)];(function(){for(let t=0;t<arguments.length;t+=1)r.registerPlugin(arguments[t]);o.beforeReadyJobsDecreased()}).apply(null,n)}).catch(l.oe),r}).apply(C,p),A!==void 0&&(R.exports=A)},24187(R,C,l){var p,A;p=[l(64061)],A=(function(){const m={};m.show=function(o,r){const n=o.hasOwnProperty("fileSize")&&o.fileSize!==void 0?parseInt(o.fileSize,10):!1;app.parseAndTranslate("modals/upload-file",{showHelp:o.hasOwnProperty("showHelp")&&o.showHelp!==void 0?o.showHelp:!0,fileSize:n,title:o.title||"[[global:upload-file]]",description:o.description||"",button:o.button||"[[global:upload]]",accept:o.accept?o.accept.replace(/,/g,", "):""},function(t){t.modal("show"),t.on("hidden.bs.modal",function(){t.remove()});const e=t.find("#uploadForm");e.attr("action",o.route),e.find("#params").val(JSON.stringify(o.params)),t.find("#fileUploadSubmitBtn").on("click",function(){$(this).addClass("disabled"),e.submit()}),e.submit(function(){return O(t,n,r),!1})})},m.hideAlerts=function(o){$(o).find("#alert-status, #alert-success, #alert-error, #upload-progress-box").addClass("hide")};function O(o,r,n){h(o,"status","[[uploads:uploading-file]]"),o.find("#upload-progress-bar").css("width","0%"),o.find("#upload-progress-box").show().removeClass("hide");const t=o.find("#fileInput");if(!t.val())return h(o,"error","[[uploads:select-file-to-upload]]");if(!v(t[0],r))return h(o,"error","[[error:file-too-big, "+r+"]]");m.ajaxSubmit(o,n)}function h(o,r,n){m.hideAlerts(o),r==="error"&&o.find("#fileUploadSubmitBtn").removeClass("disabled"),n=n.replace(/&#44/g,","),o.find("#alert-"+r).translateText(n).removeClass("hide")}m.ajaxSubmit=function(o,r){o.find("#uploadForm").ajaxSubmit({headers:{"x-csrf-token":config.csrf_token},error:function(t){t=y(t),h(o,"error",t.responseJSON?.status?.message||t.responseJSON?.error||`[[error:upload-error-fallback, ${t.status} ${t.statusText}]]`)},uploadProgress:function(t,e,i,a){o.find("#upload-progress-bar").css("width",a+"%")},success:function(t){let e=y(t);t.hasOwnProperty("response")&&t.hasOwnProperty("status")&&t.status.code==="ok"&&(e=t.response.images),r(e[0].url),h(o,"success","[[uploads:upload-success]]"),setTimeout(function(){m.hideAlerts(o),o.modal("hide")},750)}})};function y(o){if(typeof o=="string")try{return JSON.parse(o)}catch(r){return console.error(r),{error:"[[error:parse-error]]"}}return o}function v(o,r){return window.FileReader&&r?o.files[0].size<=r*1e3:!0}return m}).apply(C,p),A!==void 0&&(R.exports=A)}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.