1"use strict";(self.webpackChunknodebb=self.webpackChunknodebb||[]).push([[1091,13417,18314,22067,34271,43602,49897,56227,62010,87212,99127],{58836(O,D,u){var m,p;m=[u(49897),u(29930),u(34405),u(72513),u(65303),u(81335)],p=(function(s,f,c,P,T,v){const y={};y.init=function(e,r){let n;r.on("click",async function(){let i=[];app.user.isAdmin&&({groups:i}=await s.get("/admin/groups"),i.sort((w,x)=>x.system-w.system).map(w=>{const{name:x,displayName:h}=w;return{name:x,displayName:h}}),Array.isArray(ajaxify.data.groups)&&i.forEach(w=>{w.selected=ajaxify.data.groups.includes(w.name)}));const g=await v.render("modals/manage-room",{groups:i,user:app.user,room:ajaxify.data});n=await T.dialog({title:"[[modules:chat.manage-room]]",size:"large",message:g,onEscape:!0}),n.attr("component","chat/manage-modal"),t(e,n),l(e,n),A(e,n);const a=n.find('[component="chat/manage/user/list"]'),d=n.find('[component="chat/manage/user/list/search"]');P.addSearchHandler(e,d,async w=>{d.val()?a.html(await app.parseAndTranslate("partials/chats/manage-room-users",w)):t(e,n)}),P.addInfiniteScrollHandler(e,a,async(w,x)=>{w.append(await app.parseAndTranslate("partials/chats/manage-room-users",x))});const o=n.find('[component="chat/manage/user/add/search"]'),E=n.find(".text-danger");c.user(o,function(w,x){E.text(""),s.post(`/chats/${e}/users`,{uids:[x.item.user.uid]}).then(h=>{t(e,n,h),o.val("")}).catch(h=>{E.translateText(h.message)})}),n.find('[component="chat/manage/save"]').on("click",()=>{const w=n.find('[component="chat/room/notification/setting"]'),x=n.find('[component="chat/room/join-leave-messages"]');s.put(`/chats/${e}`,{groups:n.find('[component="chat/room/groups"]').val(),notificationSetting:w.val(),joinLeaveMessages:x.is(":checked")?1:0}).then(h=>{ajaxify.data.groups=h.groups,ajaxify.data.notificationSetting=h.notificationSetting,ajaxify.data.joinLeaveMessages=h.joinLeaveMessages;const M=h.notificationOptions[0];$('[component="chat/notification/setting"] [data-icon]').first().attr("data-icon",M.icon),$('[component="chat/notification/setting/sub-label"]').translateText(M.subLabel),M.selected&&$('[component="chat/notification/setting/icon"]').attr("class",`fa ${M.icon}`),n.modal("hide")}).catch(f.error)})})};function l(e,r){r.on("click",'[data-action="kick"]',function(){const n=encodeURIComponent(this.getAttribute("data-uid"));s.del(`/chats/${e}/users/${n}`,{}).then(i=>{t(e,r,i)}).catch(f.error)})}function A(e,r){r.on("click",'[data-action="toggleOwner"]',async function(){const n=String(this.getAttribute("data-uid")),i=r.get(0).querySelector(`[component="chat/manage/user/list"] > [data-uid="${n}"] [component="chat/manage/user/owner/icon"]`),g=!i.classList.contains("hidden");if(!utils.isNumber(n))return f.error("[[error:invalid-uid]]");await s[g?"del":"put"](`/chats/${e}/owners/${n}`),i.classList.toggle("hidden")})}async function t(e,r,n){const i=r.find('[component="chat/manage/user/list"]');if(!n)try{n=await s.get(`/chats/${e}/users`,{})}catch(g){console.error(g),i.find("li").translateText("[[error:invalid-data]]")}i.find('[data-bs-toggle="tooltip"]').tooltip("dispose"),i.html(await app.parseAndTranslate("partials/chats/manage-room-users",n)),i.find('[data-bs-toggle="tooltip"]').tooltip()}return y}).apply(D,m),p!==void 0&&(O.exports=p)},72513(O,D,u){var m,p;m=[u(49897)],p=(function(s){const f={};let c=0;f.init=function(y,l){const A=l.find('[component="chat/user/list"]');if(!A.length)return;const t=l.find('[component="chat/messages/pinned/container"]');l.find('[component="chat/user/list/btn"]').on("click",()=>{A.toggleClass("hidden"),A.hasClass("hidden")?T():(t.addClass("hidden"),P(y,A))}),$(window).off("action:ajaxify.start",T).one("action:ajaxify.start",T),f.addInfiniteScrollHandler(y,A,async(e,r)=>{e.append(await app.parseAndTranslate("partials/chats/user-list","users",r))})};function P(y,l){c&&clearInterval(c),c=setInterval(()=>{v(y,l)},5e3)}function T(){c&&(clearInterval(c),c=0)}async function v(y,l){if(ajaxify.data.template.chats&&app.isFocused&&l.scrollTop()===0&&!l.hasClass("hidden")){const A=await s.get(`/chats/${y}/users`,{start:0});l.find('[data-bs-toggle="tooltip"]').tooltip("dispose"),l.html(await app.parseAndTranslate("partials/chats/user-list","users",A)),l.find('[data-bs-toggle="tooltip"]').tooltip()}}return f.addInfiniteScrollHandler=function(y,l,A){l.on("scroll",utils.debounce(async()=>{const t=(l[0].scrollHeight-l.height())*.85;
1if(l.scrollTop()>t){const e=l.find("[data-index]").last().attr("data-index"),r=await s.get(`/chats/${y}/users`,{start:parseInt(e,10)+1});r&&r.users.length&&A(l,r)}},200))},f.addSearchHandler=function(y,l,A){l.on("keyup",utils.debounce(async()=>{const t=l.val(),e=await s.get(`/search/chats/${y}/users`,{query:t});A(e)},200))},f}).apply(D,m),p!==void 0&&(O.exports=p)},49897(O,D,u){u.r(D),u.d(D,{del:()=>i,get:()=>A,head:()=>t,patch:()=>r,post:()=>e,put:()=>n});var m=u(91749),p=u.n(m),s=u(65303),f=u(17459),c=u.n(f),P=u(68636),T=u.n(P);const v=config.relative_path+"/api/v3";async function y(a,d){if(a.url=a.url.startsWith("/api")?config.relative_path+a.url:v+a.url,a.headers=a.headers||{},a.headers["x-return-to"]||(a.headers["x-return-to"]=`${window.location.pathname.slice(config.relative_path.length)}${window.location.search}`),typeof d=="function"){l(a).then(o=>d(null,o),o=>d(o));return}try{return await l(a)}catch(o){if(o.message===await f.translate("[[error:api.401]]",config.userLang)){const{url:E}=await(0,m.fire)("filter:admin.reauth",{url:"login"}),w=await f.translate("[[error:api.reauth-required]]",config.userLang);(0,s.confirm)(w,x=>{x&&(P.setItem("location-hash",window.location.hash),ajaxify.go(E))})}throw o}}async function l(a){const{url:d}=a;delete a.url,a.data&&!(a.data instanceof FormData)&&(a.data=JSON.stringify(a.data||{}),a.headers["content-type"]="application/json; charset=utf-8"),{options:a}=await(0,m.fire)("filter:api.options",{options:a}),a.data&&(a.body=a.data,delete a.data);const o=await fetch(d,a),{headers:E}=o;if(E.get("x-redirect"))return l({url:E.get("x-redirect"),...a});const w=E.get("content-type"),x=w&&w.startsWith("application/json");let h;if(a.method!=="HEAD"&&(x?h=await o.json():h=await o.text()),!o.ok){if(h){const M=x&&(h.status?.message||h.error||""),_=typeof h=="string"?h:o.statusText||`[[error:api.${o.status}]]`;throw new Error(x&&M?M:_)}throw new Error(o.statusText)}return x&&h&&h.hasOwnProperty("status")&&h.hasOwnProperty("response")?h.response:h}function A(a,d,o){return y({url:a+(d&&Object.keys(d).length?"?"+$.param(d):"")},o)}function t(a,d,o){return y({url:a+(d&&Object.keys(d).length?"?"+$.param(d):""),method:"HEAD"},o)}function e(a,d,o,E){return g("POST",a,d,o,E)}function r(a,d,o,E){return g("PATCH",a,d,o,E)}function n(a,d,o,E){return g("PUT",a,d,o,E)}function i(a,d,o,E){return g("DELETE",a,d,o,E)}function g(a,d,o,E,w){return typeof E=="function"&&(w=E,E={}),y({url:d,method:a,data:o,headers:{"x-csrf-token":config.csrf_token,...E}},w)}},34405(O,D,u){var m,p;m=[u(49897),u(29930),u(36e3),u(9787),u(35786)],p=(function(s,f,{Textcomplete:c},{TextareaEditor:P},{ContenteditableEditor:T}){const v={},y={delay:200,appendTo:null};v.init=t=>{const e={...y,...t},{input:r,onSelect:n}=e;app.loadJQueryUI(function(){r.autocomplete({position:l(),...e,open:function(){$(this).autocomplete("widget").css("z-index",100005)},select:function(i,g){A(r,n,i,g)}})})},v.user=function(t,e,r){typeof e=="function"&&(r=e,e={}),e=e||{},v.init({input:t,onSelect:r,source:(n,i)=>{e.query=n.term,s.get("/api/users",e,function(g,a){if(g)return f.error(g);if(a&&a.users){const d=a.users.map(function(o){return o&&{label:o.username,value:o.username,user:{uid:o.uid,name:o.username,slug:o.userslug,username:o.username,userslug:o.userslug,displayname:o.displayname,picture:o.picture,banned:o.banned,"icon:text":o["icon:text"],"icon:bgColor":o["icon:bgColor"]}}});i(d)}$(".ui-autocomplete a").attr("data-ajaxify","false")})}})},v.group=function(t,e){v.init({input:t,onSelect:e,source:(r,n)=>{s.get("/groups",{query:r.term},function(i,g){if(i)return f.error(i);if(g&&g.groups.length){const a=g.groups.map(function(d){return d&&{label:d.name,value:d.name,group:d}});n(a)}$(".ui-autocomplete a").attr("data-ajaxify","false")})}})},v.tag=function(t,e){v.init({input:t,onSelect:e,delay:100,source:(r,n)=>{socket.emit("topics.autocompleteTags",{query:r.term,cid:ajaxify.data.cid||0},function(i,g){if(i)return f.error(i);g&&n(g),$(".ui-autocomplete a").attr("data-ajaxify","false")})}})};function l(){const t=document.querySelector("html").getAttribute("data-dir")==="rtl"?"right":"left";return{my:`${t} top`,at:`${t} bottom`,collision:"none"}}function A(t,e,r,n){e=e||function(){};const i=jQuery.Event("keypress");
1i.which=13,i.keyCode=13,setTimeout(function(){t.trigger(i)},100),e(r,n)}return v.setup=function({element:t,strategies:e,options:r}){const n=t.get(0);if(!n)return;let i;if(n.nodeName==="TEXTAREA"||n.nodeName==="INPUT"?i=new P(n):n.nodeName==="DIV"&&n.getAttribute("contenteditable")==="true"&&(i=new T(n)),!i)throw new Error("unknown target element type");n.setAttribute("dir",document.querySelector("html").getAttribute("data-dir"));const g=new c(i,e,{dropdown:r});return g.on("rendered",function(){g.dropdown.items.length&&g.dropdown.items[0].activate()}),g},v}).apply(D,m),p!==void 0&&(O.exports=p)},65303(O,D,u){u.r(D),u.d(D,{alert:()=>P,confirm:()=>T,dialog:()=>c,prompt:()=>v,promptPassword:()=>y});var m=u(33530),p=u.n(m),s=u(17459),f=u.n(s);m.setDefaults({locale:config.userLang}),s.translateKeys(["modules:bootbox.ok","modules:bootbox.cancel","modules:bootbox.confirm"]).then(t=>{m.addLocale(config.userLang,{OK:t[0],CANCEL:t[1],CONFIRM:t[2]}),m.setLocale(config.userLang)});async function c(t){const[e,r,n]=await Promise.all([s.translate(t.title||""),l(t)||"",A(t.buttons)]);return m.dialog({...t,title:e,message:r,buttons:n})}async function P(t,e){const[r,n]=await Promise.all([t&&t.title?s.translate(t.title):null,l(t)]);return e=typeof e=="function"?e:t.callback,m.alert({...t,title:r,message:n,callback:e})}async function T(t,e){const[r,n]=await Promise.all([t&&t.title?s.translate(t.title):null,l(t)]);return e=typeof e=="function"?e:t.callback,m.confirm({...t,title:r,message:n,callback:e})}async function v(t,e){const[r,n]=await Promise.all([s.translate(typeof t=="string"?t:t.title),t&&t.message?l(t):null]);return e=typeof e=="function"?e:t.callback,m.prompt({...t,title:r,message:n,callback:e})}async function y(t){return typeof t=="string"&&(t={title:t}),t=t||{title:"[[user:current-password]]",message:"[[user:emailUpdate.password-challenge]]"},await new Promise(e=>{v({...t,inputType:"password",required:!0,value:"",callback:e})})}function l(t){const e=t&&t.message?t.message:t;return e instanceof jQuery?e:s.translate(e||"")}async function A(t){if(!Object.keys(t||{}).length)return;const e=Object.values(t);return await Promise.all(e.map(async r=>({...r,label:await s.translateKey(r.label)})))}},68636(O,D,u){var m;m=(function(){function p(){this._store={},this._keys=[]}p.prototype.isMock=!0,p.prototype.setItem=function(c,P){c=String(c),this._keys.indexOf(c)===-1&&this._keys.push(c),this._store[c]=P},p.prototype.getItem=function(c){return c=String(c),this._keys.indexOf(c)===-1?null:this._store[c]},p.prototype.removeItem=function(c){c=String(c),this._keys=this._keys.filter(function(P){return P!==c}),this._store[c]=null},p.prototype.clear=function(){this._keys=[],this._store={}},p.prototype.key=function(c){return c=parseInt(c,10)||0,this._keys[c]},Object.defineProperty&&Object.defineProperty(p.prototype,"length",{get:function(){return this._keys.length}});let s;const f=Date.now().toString();try{if(s=window.localStorage,s.setItem(f,f),s.getItem(f)!==f)throw Error("localStorage behaved unexpectedly");return s.removeItem(f),s}catch(c){console.warn(c),console.warn("localStorage failed, falling back on sessionStorage");try{if(s=window.sessionStorage,s.setItem(f,f),s.getItem(f)!==f)throw Error("sessionStorage behaved unexpectedly");return s.removeItem(f),s}catch(P){return console.warn(P),console.warn("sessionStorage failed, falling back on memory storage"),new p}}}).call(D,u,D,O),m!==void 0&&(O.exports=m)}}]);
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.