1"use strict";(self.webpackChunknodebb=self.webpackChunknodebb||[]).push([[1091,26832,34271,56418,61462,99127],{26832:((y,d,r)=>{var f,g;f=[r(29930),r(49897),r(92619)],g=(function(m,D,p){const s={};s.init=function(){Promise.all([r.e(20056),r.e(6411),r.e(60419),r.e(38636)]).then(function(){var o=[r(38636)];(function(i){$('[component="chat/nav-wrapper"]').on("click",'[component="chat/recent/room"], [component="chat/public/room"]',function(a){a.stopPropagation(),a.preventDefault();const l=this.getAttribute("data-roomid");i.switchChat(l)}).on("click",".mark-read",function(a){a.stopPropagation();const l=this.closest("[data-roomid]");p.toggleReadState(l)}),$('[component="chat/recent"]').on("scroll",utils.debounce(function(){const a=$(this),l=(a[0].scrollHeight-a.height())*.9;a.scrollTop()>l&&u()},100))}).apply(null,o)}).catch(r.oe)};async function u(){const o=$('[component="chat/recent"]');o.attr("loading")||(o.attr("loading",1),D.get("/chats",{uid:ajaxify.data.uid,start:o.attr("data-nextstart")}).then(({rooms:i,nextStart:a})=>{i.length?A({rooms:i,nextStart:a},function(){o.removeAttr("loading"),o.attr("data-nextstart",a)}):o.removeAttr("loading")}).catch(m.error))}function A(o,i){if(!o.rooms.length)return i();o.loadingMore=!0,app.parseAndTranslate("chats","rooms",o,function(a){$('[component="chat/recent"]').append(a),a.find(".timeago").timeago(),i()})}return s}).apply(d,f),g!==void 0&&(y.exports=g)}),49897:((y,d,r)=>{r.r(d),r.d(d,{del:()=>O,get:()=>A,head:()=>o,patch:()=>a,post:()=>i,put:()=>l});var f=r(91749),g=r.n(f),m=r(33530),D=r.n(m);const p=config.relative_path+"/api/v3";async function s(t,e){if(t.url=t.url.startsWith("/api")?config.relative_path+t.url:p+t.url,typeof e=="function"){u(t).then(n=>e(null,n),n=>e(n));return}try{return await u(t)}catch(n){if(n.message==="A valid login session was not found. Please log in and try again."){const{url:h}=await(0,f.fire)("filter:admin.reauth",{url:"login"});return(0,m.confirm)("[[error:api.reauth-required]]",E=>{E&&ajaxify.go(h)})}throw n}}async function u(t){const{url:e}=t;delete t.url,t.data&&!(t.data instanceof FormData)&&(t.data=JSON.stringify(t.data||{}),t.headers["content-type"]="application/json; charset=utf-8"),{options:t}=await(0,f.fire)("filter:api.options",{options:t}),t.data&&(t.body=t.data,delete t.data);const n=await fetch(e,t),{headers:h}=n;if(h.get("x-redirect"))return u({url:h.get("x-redirect"),...t});const E=h.get("content-type"),P=E&&E.startsWith("application/json");let c;if(t.method!=="HEAD"&&(P?c=await n.json():c=await n.text()),!n.ok)throw c?new Error(P?c.status.message:c):new Error(n.statusText);return P&&c&&c.hasOwnProperty("status")&&c.hasOwnProperty("response")?c.response:c}function A(t,e,n){return s({url:t+(e&&Object.keys(e).length?"?"+$.param(e):"")},n)}function o(t,e,n){return s({url:t+(e&&Object.keys(e).length?"?"+$.param(e):""),method:"HEAD"},n)}function i(t,e,n){return s({url:t,method:"POST",data:e,headers:{"x-csrf-token":config.csrf_token}},n)}function a(t,e,n){return s({url:t,method:"PATCH",data:e,headers:{"x-csrf-token":config.csrf_token}},n)}function l(t,e,n){return s({url:t,method:"PUT",data:e,headers:{"x-csrf-token":config.csrf_token}},n)}function O(t,e,n){return s({url:t,method:"DELETE",data:e,headers:{"x-csrf-token":config.csrf_token}},n)}})}]);
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.