diff --git a/.env b/.env index bfb90dc2..4743d40c 100644 --- a/.env +++ b/.env @@ -1,5 +1,5 @@ API_ID=1025907 API_HASH=452b0359b988148995f22ff0f4229750 -VERSION=1.4.1 -VERSION_FULL=1.4.1 (160) -BUILD=160 +VERSION=1.4.2 +VERSION_FULL=1.4.2 (161) +BUILD=161 diff --git a/CHANGELOG.md b/CHANGELOG.md index 84640895..5ca26c5a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,19 @@ +### 1.4.2 (161) +* The Video Player now supports **Picture-in-Picture** mode – keep messaging and switching chats while watching videos. Open a video, then click or tap the icon in the bottom right corner. +* The **Audio Player** has been packed with two new features for music lovers: set your favorite song to **repeat** or change the **playback order** for playlists. It will also **remember** your playback settings __(volume, repeat, and speed)__. +* Replies in Forwarded Messages – reply previews are now included when **forwarding messages** to other chats, so everyone can see the full context of your inside jokes. +* From your chat list, hit the `ESC` key and instantly start typing in Search. +* Search inputs now transliterate between Latin and Cyrillic keyboards – when searching for your friend __Ivan__ you can type __Шмфт__ and the app will know what you meant. +* Along with other Telegram apps, WebK now shows `FAKE` and `SCAM` badges for suspicious chats. + +* `Monospace text` has an improved font with a cleaner look. You can also copy with a tap or click instantly. +* Using the ⬇️ button to jump to the end of a chat now has an animated transition. +* Try the reworked **Chat Backgrounds**: dark patterns now render faster and instantly resize. + +* Issues with messages marked as read automatically and deleting voice messages in Shared Media have been fixed. + +**WebK** now has an [official channel](http://t.me/WebK_en) – where we will cover important news, updates and more about the app in English (For Russian, [press 2](http://t.me/WebK_ru)). + ### 1.4.1 (144) * Supported Emoji 14. * Improved connection stability. diff --git a/CHANGELOG_ru.md b/CHANGELOG_ru.md new file mode 100644 index 00000000..9b103565 --- /dev/null +++ b/CHANGELOG_ru.md @@ -0,0 +1,15 @@ +### 1.4.2 (161) +* Видеопроигрыватель теперь поддерживает режим **«картинка в картинке»** – видео останется перед глазами, даже если Вы перейдёте в другую беседу. Для вызова режима откройте видео, далее кликните или коснитесь кнопки в правом нижнем углу проигрывателя. +* Любителей слушать музыку в Telegram порадуют два нововведения музыкального проигрывателя – **режим повтора песни** и возможность воспроизводить плейлисты в **обратном порядке**. Кроме того, проигрыватель теперь **запоминает** Ваши предпочтения __(уровень громкости, режим повтора, а также скорость воспроизведения)__. +* Сохранение ответов при пересылке – возможность быстро переместиться к исходному сообщению появилась и при **пересылке ответа** в другие чаты. Шутку не придется объяснять, если сразу добавить контекст. +* В настольных браузерах касание кнопки `ESC` откроет поиск – начинайте набор моментально. +* Не беда, если забыли переключиться с латиницы на кириллицу при поиске, WebK поймёт, что __Bdfy – это Иван__. +* Как и в остальных приложениях Telegram, метки `SCAM` и `FAKE` теперь отображаются на подозрительных чатах и каналах. + +* `Моноширинный текст` получил новый шрифт. Моментально копируйте текст с таким форматированием по клику или касанию. +* Прокрутка истории чата вниз через кнопку ⬇️ теперь анимируется. +* **Фоны для чатов** были улучшены – узоры в тёмных фонах быстрее отрисовываются и моментально перестраиваются, если Вы меняете размер окна браузера. + +* Исправлены недоработки с автоматическим прочтением сообщений и удалением голосовых заметок из вкладки Общие Медиа. + +У **WebK** появился [официальный канал](http://t.me/WebK_ru) – в нём рассказываем о приложении на русском языке (For English, [press 1](http://t.me/WebK_en)). diff --git a/public/1.1fbe64f8013ab3be0499.chunk.js b/public/1.f63fd3ceb28384c193a9.chunk.js similarity index 98% rename from public/1.1fbe64f8013ab3be0499.chunk.js rename to public/1.f63fd3ceb28384c193a9.chunk.js index be9235cf..f1592339 100644 --- a/public/1.1fbe64f8013ab3be0499.chunk.js +++ b/public/1.f63fd3ceb28384c193a9.chunk.js @@ -1,2 +1,2 @@ -(this.webpackJsonp=this.webpackJsonp||[]).push([[1],{111:function(t,e,n){"use strict";function i(t,e){const n=new Event(e,{bubbles:!0,cancelable:!0});t.dispatchEvent(n)}n.d(e,"a",(function(){return i}))},138:function(t,e,n){"use strict";var i=n(35),s=n(10),o=n(1),a=n(102);const r=new class{constructor(){this.promises={},this.raf=i.b.bind(null),this.scheduled=!1}do(t,e){let n=this.promises[t];return n||(this.scheduleFlush(),n=this.promises[t]=Object(s.a)()),void 0!==e&&n.then(()=>e()),n}measure(t){return this.do("read",t)}mutate(t){return this.do("write",t)}mutateElement(t,e){const n=Object(a.a)(t),i=n?this.mutate():Promise.resolve();return void 0!==e&&(n?e():i.then(()=>e())),i}scheduleFlush(){this.scheduled||(this.scheduled=!0,this.raf(()=>{this.promises.read&&this.promises.read.resolve(),this.promises.write&&this.promises.write.resolve(),this.scheduled=!1,this.promises={}}))}};o.a&&(o.a.sequentialDom=r),e.a=r},164:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var i=n(2);function s(t){return i.f&&t instanceof TouchEvent&&t.touches[0].clientX<30}},56:function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return a})),n.d(e,"c",(function(){return r})),n.d(e,"d",(function(){return c}));var i=n(14),s=n(111);const o=i.a?"mousedown":"click";function a(t,e,n={}){const i=n.listenerSetter?n.listenerSetter.add(t):t.addEventListener.bind(t);n.touchMouseDown=!0,i(o,e,n)}function r(t,e,n){t.removeEventListener(o,e,n)}function c(t){Object(s.a)(t,o)}},57:function(t,e,n){"use strict";var i=n(7),s=n(75);e.a=(t,e={})=>{const n=document.createElement(e.asDiv?"div":"button");return n.className=t+(e.icon?" tgico-"+e.icon:""),e.noRipple||(e.rippleSquare&&n.classList.add("rp-square"),Object(s.a)(n)),e.onlyMobile&&n.classList.add("only-handhelds"),e.disabled&&n.setAttribute("disabled","true"),e.text&&n.append(Object(i.d)(e.text)),n}},60:function(t,e,n){"use strict";n.d(e,"f",(function(){return u})),n.d(e,"g",(function(){return h})),n.d(e,"c",(function(){return v})),n.d(e,"d",(function(){return w})),n.d(e,"e",(function(){return L})),n.d(e,"b",(function(){return x})),n.d(e,"a",(function(){return T}));var i=n(1),s=n(32),o=n(56),a=n(61),r=n(14),c=n(2),d=n(0),l=n(84);function u(t,e=!1){const n='\n \n \n ';if(e){const e=document.createElement("div");return e.classList.add("preloader"),e.innerHTML=n,t&&t.appendChild(e),e}return t.insertAdjacentHTML("beforeend",n),t.lastElementChild}function h(t,e="check"){return t.classList.remove("tgico-"+e),t.disabled=!0,u(t),()=>{t.innerHTML="",t.classList.add("tgico-"+e),t.removeAttribute("disabled")}}i.a.putPreloader=u;let m=t=>{let e=g.getBoundingClientRect(),{clientX:n,clientY:i}=t,s=n>=e.right?n-e.right:e.left-n,o=i>=e.bottom?i-e.bottom:e.top-i;(s>=100||o>=100)&&v()};const p=t=>{v()},v=()=>{g&&(g.classList.remove("active"),g.parentElement.classList.remove("menu-open"),b&&b.remove(),g=null,d.a.dispatchEvent("context_menu_toggle",!1)),f&&(f(),f=null),r.a||(window.removeEventListener("mousemove",m),window.removeEventListener("contextmenu",p)),document.removeEventListener(o.a,p),c.f||l.a.removeByType("menu")};window.addEventListener("resize",()=>{g&&v()});let g=null,f=null,b=null;function w(t,e){v(),c.f||l.a.pushItem({type:"menu",onPop:t=>{v()}}),g=t,g.classList.add("active"),g.parentElement.classList.add("menu-open"),b||(b=document.createElement("div"),b.classList.add("btn-menu-overlay"),b.addEventListener(o.a,t=>{Object(s.a)(t),p()})),g.parentElement.insertBefore(b,g),f=e,r.a||(window.addEventListener("mousemove",m),window.addEventListener("contextmenu",p,{once:!0})),document.addEventListener(o.a,p),d.a.dispatchEvent("context_menu_toggle",!0)}function L({pageX:t,pageY:e},n,i,s){const o=Array.from(n.children).find(t=>t.classList.contains("btn-menu-item")&&!t.classList.contains("hide"))||n;let{scrollWidth:r}=o,{scrollHeight:c}=n;const d=document.body.getBoundingClientRect(),l=d.width,u=d.height;let h=8,m=8,p=8,v=8;s&&(s.top&&(h+=s.top),s.right&&(m+=s.right),s.bottom&&(p+=s.bottom),s.left&&(v+=s.left)),i=a.b.isMobile?"right":"left";let g="top";const f=u-c-p,b=l-r-m,w=v,L={x:{left:t,right:Math.min(b,t-r)},intermediateX:"right"===i?w:b,y:{top:e,bottom:e-c},intermediateY:f},E={left:L.x.left+r+m<=l,right:L.x.right>=v},y={top:L.y.top+c+p<=u,bottom:L.y.bottom-p>=p};{let t;t=E[i]?L.x[i]:(i="center",L.intermediateX),n.style.left=t+"px"}{let t;t=y[g]?L.y[g]:(g="center",L.intermediateY),n.style.top=t+"px"}return n.className=n.className.replace(/(top|center|bottom)-(left|center|right)/g,""),n.classList.add(("center"===g?g:"bottom")+"-"+("center"===i?i:"left"===i?"right":"left")),{width:r,height:c}}let E=!1,y=0;function x(){y&&clearTimeout(y),y=window.setTimeout(()=>{y=0,E=!1},400),E=!0}function T(t,e,n){const i=n?n.add(t):t.addEventListener.bind(t),o=n?n.removeManual.bind(n,t):t.removeEventListener.bind(t);if(c.b&&r.a){let n;const a={capture:!0},r=()=>{clearTimeout(n),o("touchmove",r,a),o("touchend",r,a),o("touchcancel",r,a)};i("touchstart",o=>{o.touches.length>1?r():(i("touchmove",r,a),i("touchend",r,a),i("touchcancel",r,a),n=window.setTimeout(()=>{E?r():(e(o.touches[0]),r(),g&&t.addEventListener("touchend",s.a,{once:!0}))},400))})}else i("contextmenu",r.a?n=>{e(n),g&&t.addEventListener("touchend",s.a,{once:!0})}:e)}},75:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var i=n(33),s=n(138),o=n(14),a=n(0),r=n(113);let c=0;function d(t,e=(()=>Promise.resolve()),n=null,d=!1,l=t){if(t.querySelector(".c-ripple"))return;t.classList.add("rp");let u=document.createElement("div");u.classList.add("c-ripple");let h;t.classList.contains("rp-square")&&u.classList.add("is-square"),t[d?"prepend":"append"](u);const m=(t,i)=>{const a=Date.now(),r=document.createElement("div"),d=c++,l=1e3*+window.getComputedStyle(u).getPropertyValue("--ripple-duration").replace("s","");h=()=>{let t=Date.now()-a;const e=()=>{s.a.mutate(()=>{r.remove()}),n&&n(d)};if(tr.classList.add("hiding"),Math.max(n-l/2,0)),setTimeout(e,n)}else r.classList.add("hiding"),setTimeout(e,l/2);o.a||window.removeEventListener("contextmenu",h),h=null,v=!1},e&&e(d),window.requestAnimationFrame(()=>{const e=u.getBoundingClientRect();r.classList.add("c-ripple__circle");const n=t-e.left,s=i-e.top,o=Math.sqrt(Math.pow(Math.abs(s-e.height/2)+e.height/2,2)+Math.pow(Math.abs(n-e.width/2)+e.width/2,2)),a=n-o/2,c=s-o/2;r.style.width=r.style.height=o+"px",r.style.left=a+"px",r.style.top=c+"px",u.append(r)})},p=e=>e.target!==t&&(["BUTTON","A"].includes(e.target.tagName)||Object(i.a)(e.target,"c-ripple")!==u)&&(l===t||!Object(r.a)(e.target,l));let v=!1;if(o.a){let t=()=>{h&&h()};l.addEventListener("touchstart",e=>{if(!a.a.settings.animationsEnabled)return;if(e.touches.length>1||v||p(e))return;v=!0;let{clientX:n,clientY:i}=e.touches[0];m(n,i),l.addEventListener("touchend",t,{once:!0}),window.addEventListener("touchmove",e=>{e.cancelBubble=!0,e.stopPropagation(),t(),l.removeEventListener("touchend",t)},{once:!0})},{passive:!0})}else l.addEventListener("mousedown",t=>{if(![0,2].includes(t.button))return;if(!a.a.settings.animationsEnabled)return;if("0"===l.dataset.ripple||p(t))return;if(v)return void(v=!1);let{clientX:e,clientY:n}=t;m(e,n),window.addEventListener("mouseup",h,{once:!0,passive:!0}),window.addEventListener("contextmenu",h,{once:!0,passive:!0})},{passive:!0})}},84:function(t,e,n){"use strict";var i=n(1),s=n(2),o=n(4),a=n(37),r=n(32),c=n(164),d=n(74);const l=new class{constructor(){this.navigations=[],this.id=Date.now(),this.manual=!1,this.log=Object(o.b)("NC"),this.debug=!0,this.currentHash=window.location.hash;let t=!1;if(window.addEventListener("popstate",e=>{if(this.debug&&this.log("popstate",e,t),window.location.hash!==this.currentHash)return this.onHashChange&&this.onHashChange(),void this.replaceState();this.currentHash=window.location.hash;if(e.state!==this.id)return void this.pushState();const n=this.navigations.pop();n?(this.manual=!t,this.handleItem(n)):this.pushState()}),window.addEventListener("keydown",t=>{const e=this.navigations[this.navigations.length-1];e&&("Escape"!==t.key||e.onEscape&&!e.onEscape()||(Object(r.a)(t),this.back(e.type)))},{capture:!0,passive:!1}),s.f){const e={passive:!0};window.addEventListener("touchstart",e=>{e.touches.length>1||(this.debug&&this.log("touchstart"),Object(c.a)(e)&&(t=!0,window.addEventListener("touchend",()=>{setTimeout(()=>{t=!1},100)},{passive:!0,once:!0})))},e)}history.scrollRestoration="manual",this.pushState()}handleItem(t){const e=t.onPop(!!this.manual&&void 0);this.debug&&this.log("popstate, navigation:",t,this.navigations),!1===e?this.pushItem(t):t.noBlurOnPop||Object(a.a)(),this.manual=!1}findItemByType(t){for(let e=this.navigations.length-1;e>=0;--e){const n=this.navigations[e];if(n.type===t)return{item:n,index:e}}}back(t){if(t){const e=this.findItemByType(t);if(e)return void this.backByItem(e.item,e.index)}history.back()}backByItem(t,e=this.navigations.indexOf(t)){this.manual=!0,this.navigations.splice(e,1),this.handleItem(t)}onItemAdded(t){this.debug&&this.log("pushstate",t,this.navigations),t.noHistory||this.pushState()}pushItem(t){this.navigations.push(t),this.onItemAdded(t)}unshiftItem(t){this.navigations.unshift(t),this.onItemAdded(t)}pushState(){this.manual=!1,history.pushState(this.id,"")}replaceState(){history.replaceState(this.id,"",location.origin+location.pathname)}removeItem(t){t&&Object(d.a)(this.navigations,t)}removeByType(t,e=!1){for(let n=this.navigations.length-1;n>=0;--n){if(this.navigations[n].type===t&&(this.navigations.splice(n,1),e))break}}};i.a.appNavigationController=l,e.a=l}}]); -//# sourceMappingURL=1.1fbe64f8013ab3be0499.chunk.js.map \ No newline at end of file +(this.webpackJsonp=this.webpackJsonp||[]).push([[1],{111:function(t,e,n){"use strict";function i(t,e){const n=new Event(e,{bubbles:!0,cancelable:!0});t.dispatchEvent(n)}n.d(e,"a",(function(){return i}))},138:function(t,e,n){"use strict";var i=n(35),s=n(10),o=n(1),a=n(102);const r=new class{constructor(){this.promises={},this.raf=i.b.bind(null),this.scheduled=!1}do(t,e){let n=this.promises[t];return n||(this.scheduleFlush(),n=this.promises[t]=Object(s.a)()),void 0!==e&&n.then(()=>e()),n}measure(t){return this.do("read",t)}mutate(t){return this.do("write",t)}mutateElement(t,e){const n=Object(a.a)(t),i=n?this.mutate():Promise.resolve();return void 0!==e&&(n?e():i.then(()=>e())),i}scheduleFlush(){this.scheduled||(this.scheduled=!0,this.raf(()=>{this.promises.read&&this.promises.read.resolve(),this.promises.write&&this.promises.write.resolve(),this.scheduled=!1,this.promises={}}))}};o.a&&(o.a.sequentialDom=r),e.a=r},165:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var i=n(2);function s(t){return i.f&&t instanceof TouchEvent&&t.touches[0].clientX<30}},56:function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return a})),n.d(e,"c",(function(){return r})),n.d(e,"d",(function(){return c}));var i=n(14),s=n(111);const o=i.a?"mousedown":"click";function a(t,e,n={}){const i=n.listenerSetter?n.listenerSetter.add(t):t.addEventListener.bind(t);n.touchMouseDown=!0,i(o,e,n)}function r(t,e,n){t.removeEventListener(o,e,n)}function c(t){Object(s.a)(t,o)}},57:function(t,e,n){"use strict";var i=n(7),s=n(75);e.a=(t,e={})=>{const n=document.createElement(e.asDiv?"div":"button");return n.className=t+(e.icon?" tgico-"+e.icon:""),e.noRipple||(e.rippleSquare&&n.classList.add("rp-square"),Object(s.a)(n)),e.onlyMobile&&n.classList.add("only-handhelds"),e.disabled&&n.setAttribute("disabled","true"),e.text&&n.append(Object(i.d)(e.text)),n}},60:function(t,e,n){"use strict";n.d(e,"f",(function(){return u})),n.d(e,"g",(function(){return h})),n.d(e,"c",(function(){return v})),n.d(e,"d",(function(){return w})),n.d(e,"e",(function(){return L})),n.d(e,"b",(function(){return x})),n.d(e,"a",(function(){return T}));var i=n(1),s=n(32),o=n(56),a=n(61),r=n(14),c=n(2),d=n(0),l=n(84);function u(t,e=!1){const n='\n \n \n ';if(e){const e=document.createElement("div");return e.classList.add("preloader"),e.innerHTML=n,t&&t.appendChild(e),e}return t.insertAdjacentHTML("beforeend",n),t.lastElementChild}function h(t,e="check"){return t.classList.remove("tgico-"+e),t.disabled=!0,u(t),()=>{t.innerHTML="",t.classList.add("tgico-"+e),t.removeAttribute("disabled")}}i.a.putPreloader=u;let m=t=>{let e=g.getBoundingClientRect(),{clientX:n,clientY:i}=t,s=n>=e.right?n-e.right:e.left-n,o=i>=e.bottom?i-e.bottom:e.top-i;(s>=100||o>=100)&&v()};const p=t=>{v()},v=()=>{g&&(g.classList.remove("active"),g.parentElement.classList.remove("menu-open"),b&&b.remove(),g=null,d.a.dispatchEvent("context_menu_toggle",!1)),f&&(f(),f=null),r.a||(window.removeEventListener("mousemove",m),window.removeEventListener("contextmenu",p)),document.removeEventListener(o.a,p),c.f||l.a.removeByType("menu")};window.addEventListener("resize",()=>{g&&v()});let g=null,f=null,b=null;function w(t,e){v(),c.f||l.a.pushItem({type:"menu",onPop:t=>{v()}}),g=t,g.classList.add("active"),g.parentElement.classList.add("menu-open"),b||(b=document.createElement("div"),b.classList.add("btn-menu-overlay"),b.addEventListener(o.a,t=>{Object(s.a)(t),p()})),g.parentElement.insertBefore(b,g),f=e,r.a||(window.addEventListener("mousemove",m),window.addEventListener("contextmenu",p,{once:!0})),document.addEventListener(o.a,p),d.a.dispatchEvent("context_menu_toggle",!0)}function L({pageX:t,pageY:e},n,i,s){const o=Array.from(n.children).find(t=>t.classList.contains("btn-menu-item")&&!t.classList.contains("hide"))||n;let{scrollWidth:r}=o,{scrollHeight:c}=n;const d=document.body.getBoundingClientRect(),l=d.width,u=d.height;let h=8,m=8,p=8,v=8;s&&(s.top&&(h+=s.top),s.right&&(m+=s.right),s.bottom&&(p+=s.bottom),s.left&&(v+=s.left)),i=a.b.isMobile?"right":"left";let g="top";const f=u-c-p,b=l-r-m,w=v,L={x:{left:t,right:Math.min(b,t-r)},intermediateX:"right"===i?w:b,y:{top:e,bottom:e-c},intermediateY:f},E={left:L.x.left+r+m<=l,right:L.x.right>=v},y={top:L.y.top+c+p<=u,bottom:L.y.bottom-p>=p};{let t;t=E[i]?L.x[i]:(i="center",L.intermediateX),n.style.left=t+"px"}{let t;t=y[g]?L.y[g]:(g="center",L.intermediateY),n.style.top=t+"px"}return n.className=n.className.replace(/(top|center|bottom)-(left|center|right)/g,""),n.classList.add(("center"===g?g:"bottom")+"-"+("center"===i?i:"left"===i?"right":"left")),{width:r,height:c}}let E=!1,y=0;function x(){y&&clearTimeout(y),y=window.setTimeout(()=>{y=0,E=!1},400),E=!0}function T(t,e,n){const i=n?n.add(t):t.addEventListener.bind(t),o=n?n.removeManual.bind(n,t):t.removeEventListener.bind(t);if(c.b&&r.a){let n;const a={capture:!0},r=()=>{clearTimeout(n),o("touchmove",r,a),o("touchend",r,a),o("touchcancel",r,a)};i("touchstart",o=>{o.touches.length>1?r():(i("touchmove",r,a),i("touchend",r,a),i("touchcancel",r,a),n=window.setTimeout(()=>{E?r():(e(o.touches[0]),r(),g&&t.addEventListener("touchend",s.a,{once:!0}))},400))})}else i("contextmenu",r.a?n=>{e(n),g&&t.addEventListener("touchend",s.a,{once:!0})}:e)}},75:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var i=n(33),s=n(138),o=n(14),a=n(0),r=n(113);let c=0;function d(t,e=(()=>Promise.resolve()),n=null,d=!1,l=t){if(t.querySelector(".c-ripple"))return;t.classList.add("rp");let u=document.createElement("div");u.classList.add("c-ripple");let h;t.classList.contains("rp-square")&&u.classList.add("is-square"),t[d?"prepend":"append"](u);const m=(t,i)=>{const a=Date.now(),r=document.createElement("div"),d=c++,l=1e3*+window.getComputedStyle(u).getPropertyValue("--ripple-duration").replace("s","");h=()=>{let t=Date.now()-a;const e=()=>{s.a.mutate(()=>{r.remove()}),n&&n(d)};if(tr.classList.add("hiding"),Math.max(n-l/2,0)),setTimeout(e,n)}else r.classList.add("hiding"),setTimeout(e,l/2);o.a||window.removeEventListener("contextmenu",h),h=null,v=!1},e&&e(d),window.requestAnimationFrame(()=>{const e=u.getBoundingClientRect();r.classList.add("c-ripple__circle");const n=t-e.left,s=i-e.top,o=Math.sqrt(Math.pow(Math.abs(s-e.height/2)+e.height/2,2)+Math.pow(Math.abs(n-e.width/2)+e.width/2,2)),a=n-o/2,c=s-o/2;r.style.width=r.style.height=o+"px",r.style.left=a+"px",r.style.top=c+"px",u.append(r)})},p=e=>e.target!==t&&(["BUTTON","A"].includes(e.target.tagName)||Object(i.a)(e.target,"c-ripple")!==u)&&(l===t||!Object(r.a)(e.target,l));let v=!1;if(o.a){let t=()=>{h&&h()};l.addEventListener("touchstart",e=>{if(!a.a.settings.animationsEnabled)return;if(e.touches.length>1||v||p(e))return;v=!0;let{clientX:n,clientY:i}=e.touches[0];m(n,i),l.addEventListener("touchend",t,{once:!0}),window.addEventListener("touchmove",e=>{e.cancelBubble=!0,e.stopPropagation(),t(),l.removeEventListener("touchend",t)},{once:!0})},{passive:!0})}else l.addEventListener("mousedown",t=>{if(![0,2].includes(t.button))return;if(!a.a.settings.animationsEnabled)return;if("0"===l.dataset.ripple||p(t))return;if(v)return void(v=!1);let{clientX:e,clientY:n}=t;m(e,n),window.addEventListener("mouseup",h,{once:!0,passive:!0}),window.addEventListener("contextmenu",h,{once:!0,passive:!0})},{passive:!0})}},84:function(t,e,n){"use strict";var i=n(1),s=n(2),o=n(4),a=n(37),r=n(32),c=n(165),d=n(74);const l=new class{constructor(){this.navigations=[],this.id=Date.now(),this.manual=!1,this.log=Object(o.b)("NC"),this.debug=!0,this.currentHash=window.location.hash;let t=!1;if(window.addEventListener("popstate",e=>{if(this.debug&&this.log("popstate",e,t),window.location.hash!==this.currentHash)return this.onHashChange&&this.onHashChange(),void this.replaceState();this.currentHash=window.location.hash;if(e.state!==this.id)return void this.pushState();const n=this.navigations.pop();n?(this.manual=!t,this.handleItem(n)):this.pushState()}),window.addEventListener("keydown",t=>{const e=this.navigations[this.navigations.length-1];e&&("Escape"!==t.key||e.onEscape&&!e.onEscape()||(Object(r.a)(t),this.back(e.type)))},{capture:!0,passive:!1}),s.f){const e={passive:!0};window.addEventListener("touchstart",e=>{e.touches.length>1||(this.debug&&this.log("touchstart"),Object(c.a)(e)&&(t=!0,window.addEventListener("touchend",()=>{setTimeout(()=>{t=!1},100)},{passive:!0,once:!0})))},e)}history.scrollRestoration="manual",this.pushState()}handleItem(t){const e=t.onPop(!!this.manual&&void 0);this.debug&&this.log("popstate, navigation:",t,this.navigations),!1===e?this.pushItem(t):t.noBlurOnPop||Object(a.a)(),this.manual=!1}findItemByType(t){for(let e=this.navigations.length-1;e>=0;--e){const n=this.navigations[e];if(n.type===t)return{item:n,index:e}}}back(t){if(t){const e=this.findItemByType(t);if(e)return void this.backByItem(e.item,e.index)}history.back()}backByItem(t,e=this.navigations.indexOf(t)){this.manual=!0,this.navigations.splice(e,1),this.handleItem(t)}onItemAdded(t){this.debug&&this.log("pushstate",t,this.navigations),t.noHistory||this.pushState()}pushItem(t){this.navigations.push(t),this.onItemAdded(t)}unshiftItem(t){this.navigations.unshift(t),this.onItemAdded(t)}pushState(){this.manual=!1,history.pushState(this.id,"")}replaceState(){history.replaceState(this.id,"",location.origin+location.pathname)}removeItem(t){t&&Object(d.a)(this.navigations,t)}removeByType(t,e=!1){for(let n=this.navigations.length-1;n>=0;--n){if(this.navigations[n].type===t&&(this.navigations.splice(n,1),e))break}}};i.a.appNavigationController=l,e.a=l}}]); +//# sourceMappingURL=1.f63fd3ceb28384c193a9.chunk.js.map \ No newline at end of file diff --git a/public/1.1fbe64f8013ab3be0499.chunk.js.map b/public/1.f63fd3ceb28384c193a9.chunk.js.map similarity index 86% rename from public/1.1fbe64f8013ab3be0499.chunk.js.map rename to public/1.f63fd3ceb28384c193a9.chunk.js.map index 35a8651e..ada52a8d 100644 --- a/public/1.1fbe64f8013ab3be0499.chunk.js.map +++ b/public/1.f63fd3ceb28384c193a9.chunk.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/helpers/dom/dispatchEvent.ts","webpack:///./src/helpers/sequentialDom.ts","webpack:///./src/helpers/dom/isSwipingBackSafari.ts","webpack:///./src/helpers/dom/clickEvent.ts","webpack:///./src/components/button.ts","webpack:///./src/components/misc.ts","webpack:///./src/components/ripple.ts","webpack:///./src/components/appNavigationController.ts"],"names":["simulateEvent","elem","name","event","Event","bubbles","cancelable","dispatchEvent","sequentialDom","promises","raf","bind","scheduled","kind","callback","promise","this","scheduleFlush","undefined","then","do","element","isConnected","mutate","Promise","resolve","read","write","isSwipingBackSafari","e","TouchEvent","touches","clientX","CLICK_EVENT_NAME","attachClickEvent","options","add","listenerSetter","addEventListener","touchMouseDown","detachClickEvent","removeEventListener","simulateClickEvent","className","button","document","createElement","asDiv","icon","noRipple","rippleSquare","classList","onlyMobile","disabled","setAttribute","text","append","putPreloader","returnDiv","html","div","innerHTML","appendChild","insertAdjacentHTML","lastElementChild","setButtonLoader","remove","removeAttribute","onMouseMove","rect","openedMenu","getBoundingClientRect","clientY","diffX","right","left","diffY","bottom","top","closeBtnMenu","onClick","parentElement","menuOverlay","openedMenuOnClose","window","removeByType","openBtnMenu","menuElement","onClose","pushItem","type","onPop","canAnimate","insertBefore","once","positionMenu","pageX","pageY","side","additionalPadding","getScrollWidthFromElement","Array","from","children","find","contains","scrollWidth","menuWidth","scrollHeight","menuHeight","body","windowWidth","width","windowHeight","height","paddingTop","paddingRight","paddingBottom","paddingLeft","isMobile","verticalSide","maxTop","maxLeft","minLeft","sides","x","Math","min","intermediateX","y","intermediateY","possibleSides","style","replace","_cancelContextMenuOpening","_cancelContextMenuOpeningTimeout","cancelContextMenuOpening","clearTimeout","setTimeout","attachContextMenuListener","removeManual","timeout","capture","onCancel","length","rippleClickId","ripple","onEnd","prepend","attachListenerTo","querySelector","r","handler","drawRipple","startTime","Date","now","clickId","duration","getComputedStyle","getPropertyValue","elapsedTime","cb","delay","max","touchStartFired","requestAnimationFrame","clickX","clickY","size","sqrt","abs","isRippleUnneeded","target","includes","tagName","touchEnd","settings","animationsEnabled","cancelBubble","stopPropagation","passive","dataset","appNavigationController","navigations","id","manual","log","debug","currentHash","location","hash","isPossibleSwipe","onHashChange","replaceState","state","pushState","item","pop","handleItem","key","onEscape","back","history","scrollRestoration","good","noBlurOnPop","i","index","ret","findItemByType","backByItem","indexOf","splice","noHistory","push","onItemAdded","unshift","origin","pathname","single"],"mappings":"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","file":"1.1fbe64f8013ab3be0499.chunk.js","sourcesContent":["export default function simulateEvent(elem: EventTarget, name: string) {\n const event = new Event(name, {bubbles: true, cancelable: true});\n elem.dispatchEvent(event);\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { fastRaf } from \"./schedulers\";\r\nimport deferredPromise, { CancellablePromise } from \"./cancellablePromise\";\r\nimport { MOUNT_CLASS_TO } from \"../config/debug\";\r\nimport isInDOM from \"./dom/isInDOM\";\r\n\r\nclass SequentialDom {\r\n private promises: Partial<{\r\n read: CancellablePromise,\r\n write: CancellablePromise\r\n }> = {};\r\n private raf = fastRaf.bind(null);\r\n private scheduled = false;\r\n\r\n private do(kind: keyof SequentialDom['promises'], callback?: VoidFunction) {\r\n let promise = this.promises[kind];\r\n if(!promise) {\r\n this.scheduleFlush();\r\n promise = this.promises[kind] = deferredPromise();\r\n }\r\n\r\n if(callback !== undefined) {\r\n promise.then(() => callback());\r\n }\r\n \r\n return promise;\r\n }\r\n\r\n public measure(callback?: VoidFunction) {\r\n return this.do('read', callback);\r\n }\r\n\r\n public mutate(callback?: VoidFunction) {\r\n return this.do('write', callback);\r\n }\r\n\r\n /**\r\n * Will fire instantly if element is not connected\r\n * @param element \r\n * @param callback \r\n */\r\n public mutateElement(element: HTMLElement, callback?: VoidFunction) {\r\n const isConnected = isInDOM(element);\r\n const promise = isConnected ? this.mutate() : Promise.resolve();\r\n\r\n if(callback !== undefined) {\r\n if(isConnected) {\r\n callback();\r\n } else {\r\n promise.then(() => callback());\r\n }\r\n }\r\n\r\n return promise;\r\n }\r\n\r\n private scheduleFlush() {\r\n if(!this.scheduled) {\r\n this.scheduled = true;\r\n\r\n this.raf(() => {\r\n this.promises.read && this.promises.read.resolve();\r\n this.promises.write && this.promises.write.resolve();\r\n\r\n this.scheduled = false;\r\n this.promises = {};\r\n });\r\n }\r\n }\r\n}\r\n\r\nconst sequentialDom = new SequentialDom();\r\nMOUNT_CLASS_TO && (MOUNT_CLASS_TO.sequentialDom = sequentialDom);\r\nexport default sequentialDom;\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport { IS_MOBILE_SAFARI } from \"../../environment/userAgent\";\n\nexport default function isSwipingBackSafari(e: TouchEvent | MouseEvent) {\n return IS_MOBILE_SAFARI && e instanceof TouchEvent && e.touches[0].clientX < 30;\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport type ListenerSetter from \"../listenerSetter\";\r\nimport { IS_TOUCH_SUPPORTED } from \"../../environment/touchSupport\";\r\nimport simulateEvent from \"./dispatchEvent\";\r\n\r\nexport const CLICK_EVENT_NAME: 'mousedown' /* | 'touchend' */ | 'click' = (IS_TOUCH_SUPPORTED ? 'mousedown' : 'click') as any;\r\nexport type AttachClickOptions = AddEventListenerOptions & Partial<{listenerSetter: ListenerSetter, touchMouseDown: true}>;\r\nexport function attachClickEvent(elem: HTMLElement | Window, callback: (e: /* TouchEvent | */MouseEvent) => void, options: AttachClickOptions = {}) {\r\n const add = options.listenerSetter ? options.listenerSetter.add(elem) : elem.addEventListener.bind(elem);\r\n // const remove = options.listenerSetter ? options.listenerSetter.removeManual.bind(options.listenerSetter, elem) : elem.removeEventListener.bind(elem);\r\n\r\n options.touchMouseDown = true;\r\n /* if(options.touchMouseDown && CLICK_EVENT_NAME === 'touchend') {\r\n add('mousedown', callback, options);\r\n } else if(CLICK_EVENT_NAME === 'touchend') {\r\n const o = {...options, once: true};\r\n\r\n const onTouchStart = (e: TouchEvent) => {\r\n const onTouchMove = (e: TouchEvent) => {\r\n remove('touchmove', onTouchMove, o);\r\n remove('touchend', onTouchEnd, o);\r\n };\r\n \r\n const onTouchEnd = (e: TouchEvent) => {\r\n remove('touchmove', onTouchMove, o);\r\n callback(e);\r\n if(options.once) {\r\n remove('touchstart', onTouchStart);\r\n }\r\n };\r\n \r\n add('touchend', onTouchEnd, o);\r\n add('touchmove', onTouchMove, o);\r\n };\r\n\r\n add('touchstart', onTouchStart);\r\n } else {\r\n add(CLICK_EVENT_NAME, callback, options);\r\n } */\r\n add(CLICK_EVENT_NAME, callback, options);\r\n}\r\n\r\nexport function detachClickEvent(elem: HTMLElement, callback: (e: /* TouchEvent | */MouseEvent) => void, options?: AddEventListenerOptions) {\r\n // if(CLICK_EVENT_NAME === 'touchend') {\r\n // elem.removeEventListener('touchstart', callback, options);\r\n // } else {\r\n elem.removeEventListener(CLICK_EVENT_NAME, callback, options);\r\n // }\r\n}\r\n\r\nexport function simulateClickEvent(elem: HTMLElement) {\r\n simulateEvent(elem, CLICK_EVENT_NAME);\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { i18n, LangPackKey } from \"../lib/langPack\";\r\nimport ripple from \"./ripple\";\r\n\r\nexport type ButtonOptions = Partial<{\r\n noRipple: true, \r\n onlyMobile: true, \r\n icon: string, \r\n rippleSquare: true, \r\n text: LangPackKey, \r\n disabled: boolean,\r\n asDiv: boolean\r\n}>;\r\n\r\nconst Button = (className: string, options: ButtonOptions = {}) => {\r\n const button: HTMLButtonElement = document.createElement(options.asDiv ? 'div' : 'button') as any;\r\n button.className = className + (options.icon ? ' tgico-' + options.icon : '');\r\n\r\n if(!options.noRipple) {\r\n if(options.rippleSquare) {\r\n button.classList.add('rp-square');\r\n }\r\n\r\n ripple(button);\r\n }\r\n\r\n if(options.onlyMobile) {\r\n button.classList.add('only-handhelds');\r\n }\r\n\r\n if(options.disabled) {\r\n button.setAttribute('disabled', 'true');\r\n }\r\n\r\n if(options.text) {\r\n button.append(i18n(options.text));\r\n }\r\n\r\n return button;\r\n};\r\n\r\nexport default Button;\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { MOUNT_CLASS_TO } from \"../config/debug\";\r\nimport cancelEvent from \"../helpers/dom/cancelEvent\";\r\nimport { CLICK_EVENT_NAME } from \"../helpers/dom/clickEvent\";\r\nimport ListenerSetter from \"../helpers/listenerSetter\";\r\nimport mediaSizes from \"../helpers/mediaSizes\";\r\nimport { IS_TOUCH_SUPPORTED } from \"../environment/touchSupport\";\r\nimport { IS_APPLE, IS_MOBILE_SAFARI } from \"../environment/userAgent\";\r\nimport rootScope from \"../lib/rootScope\";\r\nimport appNavigationController from \"./appNavigationController\";\r\n\r\nexport function putPreloader(elem: Element, returnDiv = false): HTMLElement {\r\n const html = `\r\n \r\n \r\n `;\r\n\r\n if(returnDiv) {\r\n const div = document.createElement('div');\r\n div.classList.add('preloader');\r\n div.innerHTML = html;\r\n\r\n if(elem) {\r\n elem.appendChild(div);\r\n }\r\n\r\n return div;\r\n }\r\n \r\n elem.insertAdjacentHTML('beforeend', html);\r\n return elem.lastElementChild as HTMLElement;\r\n}\r\n\r\nMOUNT_CLASS_TO.putPreloader = putPreloader;\r\n\r\nexport function setButtonLoader(elem: HTMLButtonElement, icon = 'check') {\r\n elem.classList.remove('tgico-' + icon);\r\n elem.disabled = true;\r\n putPreloader(elem);\r\n\r\n return () => {\r\n elem.innerHTML = '';\r\n elem.classList.add('tgico-' + icon);\r\n elem.removeAttribute('disabled');\r\n };\r\n}\r\n\r\n/* export function parseMenuButtonsTo(to: {[name: string]: HTMLElement}, elements: HTMLCollection | NodeListOf) {\r\n Array.from(elements).forEach(el => {\r\n const match = el.className.match(/(?:^|\\s)menu-(.+?)(?:$|\\s)/);\r\n if(!match) return;\r\n to[match[1]] = el as HTMLElement;\r\n });\r\n} */\r\n\r\nlet onMouseMove = (e: MouseEvent) => {\r\n let rect = openedMenu.getBoundingClientRect();\r\n let {clientX, clientY} = e;\r\n \r\n let diffX = clientX >= rect.right ? clientX - rect.right : rect.left - clientX;\r\n let diffY = clientY >= rect.bottom ? clientY - rect.bottom : rect.top - clientY;\r\n \r\n if(diffX >= 100 || diffY >= 100) {\r\n closeBtnMenu();\r\n //openedMenu.parentElement.click();\r\n }\r\n //console.log('mousemove', diffX, diffY);\r\n};\r\n\r\nconst onClick = (e: MouseEvent | TouchEvent) => {\r\n //cancelEvent(e);\r\n closeBtnMenu();\r\n};\r\n\r\n// ! no need in this due to the same handler in appNavigationController\r\n/* const onKeyDown = (e: KeyboardEvent) => {\r\n if(e.key === 'Escape') {\r\n closeBtnMenu();\r\n cancelEvent(e);\r\n }\r\n}; */\r\n\r\nexport const closeBtnMenu = () => {\r\n if(openedMenu) {\r\n openedMenu.classList.remove('active');\r\n openedMenu.parentElement.classList.remove('menu-open');\r\n //openedMenu.previousElementSibling.remove(); // remove overlay\r\n if(menuOverlay) menuOverlay.remove();\r\n openedMenu = null;\r\n\r\n rootScope.dispatchEvent('context_menu_toggle', false);\r\n }\r\n \r\n if(openedMenuOnClose) {\r\n openedMenuOnClose();\r\n openedMenuOnClose = null;\r\n }\r\n\r\n if(!IS_TOUCH_SUPPORTED) {\r\n window.removeEventListener('mousemove', onMouseMove);\r\n //window.removeEventListener('keydown', onKeyDown, {capture: true});\r\n window.removeEventListener('contextmenu', onClick);\r\n }\r\n\r\n document.removeEventListener(CLICK_EVENT_NAME, onClick);\r\n\r\n if(!IS_MOBILE_SAFARI) {\r\n appNavigationController.removeByType('menu');\r\n }\r\n};\r\n\r\nwindow.addEventListener('resize', () => {\r\n if(openedMenu) {\r\n closeBtnMenu();\r\n }\r\n \r\n /* if(openedMenu && (openedMenu.style.top || openedMenu.style.left)) {\r\n const rect = openedMenu.getBoundingClientRect();\r\n const {innerWidth, innerHeight} = window;\r\n\r\n console.log(innerWidth, innerHeight, rect);\r\n } */\r\n});\r\n\r\nlet openedMenu: HTMLElement = null, openedMenuOnClose: () => void = null, menuOverlay: HTMLElement = null;\r\nexport function openBtnMenu(menuElement: HTMLElement, onClose?: () => void) {\r\n closeBtnMenu();\r\n\r\n if(!IS_MOBILE_SAFARI) {\r\n appNavigationController.pushItem({\r\n type: 'menu',\r\n onPop: (canAnimate) => {\r\n closeBtnMenu();\r\n }\r\n });\r\n }\r\n \r\n openedMenu = menuElement;\r\n openedMenu.classList.add('active');\r\n openedMenu.parentElement.classList.add('menu-open');\r\n\r\n if(!menuOverlay) {\r\n menuOverlay = document.createElement('div');\r\n menuOverlay.classList.add('btn-menu-overlay');\r\n\r\n // ! because this event must be canceled, and can't cancel on menu click (below)\r\n menuOverlay.addEventListener(CLICK_EVENT_NAME, (e) => {\r\n cancelEvent(e);\r\n onClick(e);\r\n });\r\n }\r\n\r\n openedMenu.parentElement.insertBefore(menuOverlay, openedMenu);\r\n\r\n //document.body.classList.add('disable-hover');\r\n \r\n openedMenuOnClose = onClose;\r\n\r\n if(!IS_TOUCH_SUPPORTED) {\r\n window.addEventListener('mousemove', onMouseMove);\r\n //window.addEventListener('keydown', onKeyDown, {capture: true});\r\n window.addEventListener('contextmenu', onClick, {once: true});\r\n }\r\n\r\n /* // ! because this event must be canceled, and can't cancel on menu click (below)\r\n overlay.addEventListener(CLICK_EVENT_NAME, (e) => {\r\n cancelEvent(e);\r\n onClick(e);\r\n }); */\r\n \r\n // ! safari iOS doesn't handle window click event on overlay, idk why\r\n document.addEventListener(CLICK_EVENT_NAME, onClick);\r\n\r\n rootScope.dispatchEvent('context_menu_toggle', true);\r\n}\r\n\r\nexport type MenuPositionPadding = {\r\n top?: number, \r\n right?: number, \r\n bottom?: number, \r\n left?: number\r\n};\r\n\r\nconst PADDING_TOP = 8;\r\nconst PADDING_BOTTOM = PADDING_TOP;\r\nconst PADDING_LEFT = 8;\r\nconst PADDING_RIGHT = PADDING_LEFT;\r\nexport function positionMenu({pageX, pageY}: MouseEvent | Touch, elem: HTMLElement, side?: 'left' | 'right' | 'center', additionalPadding?: MenuPositionPadding) {\r\n //let {clientX, clientY} = e;\r\n\r\n // * side mean the OPEN side\r\n\r\n const getScrollWidthFromElement = (Array.from(elem.children) as HTMLElement[]).find(element => element.classList.contains('btn-menu-item') && !element.classList.contains('hide')) || elem;\r\n\r\n let {scrollWidth: menuWidth} = getScrollWidthFromElement;\r\n let {scrollHeight: menuHeight} = elem;\r\n //let {innerWidth: windowWidth, innerHeight: windowHeight} = window;\r\n const rect = document.body.getBoundingClientRect();\r\n const windowWidth = rect.width;\r\n const windowHeight = rect.height;\r\n\r\n let paddingTop = PADDING_TOP, paddingRight = PADDING_RIGHT, paddingBottom = PADDING_BOTTOM, paddingLeft = PADDING_LEFT;\r\n if(additionalPadding) {\r\n if(additionalPadding.top) paddingTop += additionalPadding.top;\r\n if(additionalPadding.right) paddingRight += additionalPadding.right;\r\n if(additionalPadding.bottom) paddingBottom += additionalPadding.bottom;\r\n if(additionalPadding.left) paddingLeft += additionalPadding.left;\r\n }\r\n\r\n side = mediaSizes.isMobile ? 'right' : 'left';\r\n let verticalSide: 'top' /* | 'bottom' */ | 'center' = 'top';\r\n\r\n const maxTop = windowHeight - menuHeight - paddingBottom;\r\n const maxLeft = windowWidth - menuWidth - paddingRight;\r\n const minTop = paddingTop;\r\n const minLeft = paddingLeft;\r\n\r\n const getSides = () => {\r\n return {\r\n x: {\r\n left: pageX,\r\n right: Math.min(maxLeft, pageX - menuWidth)\r\n },\r\n intermediateX: side === 'right' ? minLeft : maxLeft,\r\n //intermediateX: clientX < windowWidth / 2 ? PADDING_LEFT : windowWidth - menuWidth - PADDING_LEFT,\r\n y: {\r\n top: pageY,\r\n bottom: pageY - menuHeight\r\n },\r\n //intermediateY: verticalSide === 'top' ? paddingTop : windowHeight - menuHeight - paddingTop,\r\n // intermediateY: pageY < (windowHeight / 2) ? paddingTop : windowHeight - menuHeight - paddingBottom,\r\n intermediateY: maxTop,\r\n };\r\n };\r\n\r\n const sides = getSides();\r\n\r\n const possibleSides = {\r\n x: {\r\n left: (sides.x.left + menuWidth + paddingRight) <= windowWidth,\r\n right: sides.x.right >= paddingLeft\r\n },\r\n y: {\r\n top: (sides.y.top + menuHeight + paddingBottom) <= windowHeight,\r\n bottom: (sides.y.bottom - paddingBottom) >= paddingBottom\r\n }\r\n };\r\n\r\n /* if(side === undefined) {\r\n if((clientX + menuWidth + PADDING_LEFT) > windowWidth) {\r\n side = 'right';\r\n }\r\n } */\r\n\r\n {\r\n /* const x = sides.x;\r\n\r\n const s = Object.keys(x) as (keyof typeof possibleSides.x)[];\r\n if(side) {\r\n s.findAndSplice(s => s === side);\r\n s.unshift(side);\r\n }\r\n\r\n const possibleSide = s.find(s => possibleSides.x[s]); */\r\n let left: number;\r\n /* if(possibleSide) {\r\n left = x[possibleSide];\r\n side = possibleSide;\r\n } else {\r\n left = sides.intermediateX;\r\n side = undefined;\r\n } */\r\n left = possibleSides.x[side] ? sides.x[side] : (side = 'center', sides.intermediateX);\r\n \r\n elem.style.left = left + 'px';\r\n }\r\n\r\n /* if((clientY + menuHeight + PADDING_TOP) > windowHeight) {\r\n elem.style.top = clamp(clientY - menuHeight, PADDING_TOP, windowHeight - menuHeight - PADDING_TOP) + 'px';\r\n // elem.style.top = (innerHeight - scrollHeight - PADDING_TOP) + 'px';\r\n verticalSide = 'bottom';\r\n } else {\r\n elem.style.top = Math.max(PADDING_TOP, clientY) + 'px';\r\n verticalSide = 'top';\r\n } */\r\n\r\n {\r\n let top: number;\r\n\r\n top = possibleSides.y[verticalSide] ? sides.y[verticalSide] : (verticalSide = 'center', sides.intermediateY);\r\n \r\n elem.style.top = top + 'px';\r\n }\r\n \r\n elem.className = elem.className.replace(/(top|center|bottom)-(left|center|right)/g, '');\r\n elem.classList.add(\r\n //(verticalSide === 'center' ? verticalSide : (verticalSide === 'bottom' ? 'top' : 'bottom')) +\r\n (verticalSide === 'center' ? verticalSide : 'bottom') +\r\n '-' +\r\n (side === 'center' ? side : (side === 'left' ? 'right' : 'left')));\r\n\r\n return {\r\n width: menuWidth,\r\n height: menuHeight\r\n };\r\n}\r\n\r\nlet _cancelContextMenuOpening = false, _cancelContextMenuOpeningTimeout = 0;\r\nexport function cancelContextMenuOpening() {\r\n if(_cancelContextMenuOpeningTimeout) {\r\n clearTimeout(_cancelContextMenuOpeningTimeout);\r\n }\r\n \r\n _cancelContextMenuOpeningTimeout = window.setTimeout(() => {\r\n _cancelContextMenuOpeningTimeout = 0;\r\n _cancelContextMenuOpening = false;\r\n }, .4e3);\r\n\r\n _cancelContextMenuOpening = true;\r\n}\r\n\r\nexport function attachContextMenuListener(element: HTMLElement, callback: (e: Touch | MouseEvent) => void, listenerSetter?: ListenerSetter) {\r\n const add = listenerSetter ? listenerSetter.add(element) : element.addEventListener.bind(element);\r\n const remove = listenerSetter ? listenerSetter.removeManual.bind(listenerSetter, element) : element.removeEventListener.bind(element);\r\n\r\n if(IS_APPLE && IS_TOUCH_SUPPORTED) {\r\n let timeout: number;\r\n\r\n const options: EventListenerOptions = {capture: true};\r\n\r\n const onCancel = () => {\r\n clearTimeout(timeout);\r\n // @ts-ignore\r\n remove('touchmove', onCancel, options);\r\n // @ts-ignore\r\n remove('touchend', onCancel, options);\r\n // @ts-ignore\r\n remove('touchcancel', onCancel, options);\r\n };\r\n\r\n add('touchstart', (e: TouchEvent) => {\r\n if(e.touches.length > 1) {\r\n onCancel();\r\n return;\r\n }\r\n \r\n add('touchmove', onCancel, options);\r\n add('touchend', onCancel, options);\r\n add('touchcancel', onCancel, options);\r\n\r\n timeout = window.setTimeout(() => {\r\n if(_cancelContextMenuOpening) {\r\n onCancel();\r\n return;\r\n }\r\n\r\n callback(e.touches[0]);\r\n onCancel();\r\n\r\n if(openedMenu) {\r\n element.addEventListener('touchend', cancelEvent, {once: true}); // * fix instant closing\r\n }\r\n }, .4e3);\r\n });\r\n\r\n /* if(!isSafari) {\r\n add('contextmenu', (e: any) => {\r\n cancelEvent(e);\r\n }, {passive: false, capture: true});\r\n } */\r\n } else {\r\n add('contextmenu', IS_TOUCH_SUPPORTED ? (e: any) => {\r\n callback(e);\r\n\r\n if(openedMenu) {\r\n element.addEventListener('touchend', cancelEvent, {once: true}); // * fix instant closing\r\n }\r\n } : callback);\r\n }\r\n};\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport findUpClassName from \"../helpers/dom/findUpClassName\";\r\nimport sequentialDom from \"../helpers/sequentialDom\";\r\nimport { IS_TOUCH_SUPPORTED } from \"../environment/touchSupport\";\r\nimport rootScope from \"../lib/rootScope\";\r\nimport findUpAsChild from \"../helpers/dom/findUpAsChild\";\r\n\r\nlet rippleClickId = 0;\r\nexport default function ripple(\r\n elem: HTMLElement, \r\n callback: (id: number) => Promise = () => Promise.resolve(), \r\n onEnd: (id: number) => void = null, \r\n prepend = false,\r\n attachListenerTo = elem\r\n) {\r\n //return;\r\n if(elem.querySelector('.c-ripple')) return;\r\n elem.classList.add('rp');\r\n \r\n let r = document.createElement('div');\r\n r.classList.add('c-ripple');\r\n\r\n const isSquare = elem.classList.contains('rp-square');\r\n if(isSquare) {\r\n r.classList.add('is-square');\r\n }\r\n\r\n elem[prepend ? 'prepend' : 'append'](r);\r\n\r\n let handler: () => void;\r\n //let animationEndPromise: Promise;\r\n const drawRipple = (clientX: number, clientY: number) => {\r\n const startTime = Date.now();\r\n const elem = document.createElement('div');\r\n\r\n const clickId = rippleClickId++;\r\n \r\n //console.log('ripple drawRipple');\r\n \r\n const duration = +window.getComputedStyle(r).getPropertyValue('--ripple-duration').replace('s', '') * 1000;\r\n //console.log('ripple duration', duration);\r\n\r\n handler = () => {\r\n //handler = () => animationEndPromise.then((duration) => {\r\n //console.log('ripple animation was:', duration);\r\n\r\n //const duration = isSquare || mediaSizes.isMobile ? 200 : 700;\r\n //return;\r\n let elapsedTime = Date.now() - startTime;\r\n const cb = () => {\r\n //console.log('ripple elapsedTime total pre-remove:', Date.now() - startTime);\r\n sequentialDom.mutate(() => {\r\n elem.remove();\r\n });\r\n \r\n if(onEnd) onEnd(clickId);\r\n };\r\n if(elapsedTime < duration) {\r\n let delay = Math.max(duration - elapsedTime, duration / 2);\r\n setTimeout(() => elem.classList.add('hiding'), Math.max(delay - duration / 2, 0));\r\n\r\n setTimeout(cb, delay);\r\n } else {\r\n elem.classList.add('hiding');\r\n setTimeout(cb, duration / 2);\r\n }\r\n\r\n if(!IS_TOUCH_SUPPORTED) {\r\n window.removeEventListener('contextmenu', handler);\r\n }\r\n\r\n handler = null;\r\n touchStartFired = false;\r\n };\r\n //});\r\n\r\n callback && callback(clickId);\r\n\r\n /* callback().then((bad) => {\r\n if(bad) {\r\n span.remove();\r\n return;\r\n } */\r\n \r\n //console.log('ripple after promise', Date.now() - startTime);\r\n //console.log('ripple tooSlow:', tooSlow);\r\n /* if(tooSlow) {\r\n span.remove();\r\n return;\r\n } */\r\n\r\n window.requestAnimationFrame(() => {\r\n const rect = r.getBoundingClientRect();\r\n elem.classList.add('c-ripple__circle');\r\n\r\n const clickX = clientX - rect.left;\r\n const clickY = clientY - rect.top;\r\n\r\n const radius = Math.sqrt((Math.abs(clickY - rect.height / 2) + rect.height / 2) ** 2 + (Math.abs(clickX - rect.width / 2) + rect.width / 2) ** 2);\r\n const size = radius;\r\n\r\n // center of circle\r\n const x = clickX - size / 2;\r\n const y = clickY - size / 2;\r\n\r\n //console.log('ripple click', offsetFromCenter, size, clickX, clickY);\r\n\r\n elem.style.width = elem.style.height = size + 'px';\r\n elem.style.left = x + 'px';\r\n elem.style.top = y + 'px';\r\n\r\n // нижний код выполняется с задержкой\r\n /* animationEndPromise = new Promise((resolve) => {\r\n span.addEventListener('animationend', () => {\r\n // 713 -> 700\r\n resolve(((Date.now() - startTime) / 100 | 0) * 100);\r\n }, {once: true});\r\n }); */\r\n \r\n // нижний код не всегда включает анимацию ПРИ КЛИКЕ НА ТАЧПАД БЕЗ ТАПТИК ЭНЖИНА\r\n /* span.style.display = 'none';\r\n r.append(span);\r\n duration = +window.getComputedStyle(span).getPropertyValue('animation-duration').replace('s', '') * 1000;\r\n span.style.display = ''; */\r\n\r\n r.append(elem);\r\n\r\n //r.classList.add('active');\r\n //handler();\r\n });\r\n //});\r\n };\r\n\r\n const isRippleUnneeded = (e: Event) => e.target !== elem && (\r\n ['BUTTON', 'A'].includes((e.target as HTMLElement).tagName) \r\n || findUpClassName(e.target as HTMLElement, 'c-ripple') !== r\r\n ) && (\r\n attachListenerTo === elem \r\n || !findUpAsChild(e.target, attachListenerTo)\r\n );\r\n\r\n // TODO: rename this variable\r\n let touchStartFired = false;\r\n if(IS_TOUCH_SUPPORTED) {\r\n let touchEnd = () => {\r\n handler && handler();\r\n };\r\n \r\n attachListenerTo.addEventListener('touchstart', (e) => {\r\n if(!rootScope.settings.animationsEnabled) {\r\n return;\r\n }\r\n\r\n //console.log('ripple touchstart', e);\r\n if(e.touches.length > 1 || touchStartFired || isRippleUnneeded(e)) {\r\n return;\r\n }\r\n \r\n //console.log('touchstart', e);\r\n touchStartFired = true;\r\n \r\n let {clientX, clientY} = e.touches[0];\r\n drawRipple(clientX, clientY);\r\n attachListenerTo.addEventListener('touchend', touchEnd, {once: true});\r\n \r\n window.addEventListener('touchmove', (e) => {\r\n e.cancelBubble = true;\r\n e.stopPropagation();\r\n touchEnd();\r\n attachListenerTo.removeEventListener('touchend', touchEnd);\r\n }, {once: true});\r\n }, {passive: true});\r\n } else {\r\n attachListenerTo.addEventListener('mousedown', (e) => {\r\n if(![0, 2].includes(e.button)) { // only left and right buttons\r\n return;\r\n }\r\n\r\n if(!rootScope.settings.animationsEnabled) {\r\n return;\r\n }\r\n //console.log('ripple mousedown', e, e.target, findUpClassName(e.target as HTMLElement, 'c-ripple') === r);\r\n\r\n if(attachListenerTo.dataset.ripple === '0' || isRippleUnneeded(e)) {\r\n return;\r\n } else if(touchStartFired) {\r\n touchStartFired = false;\r\n return;\r\n }\r\n \r\n let {clientX, clientY} = e;\r\n drawRipple(clientX, clientY);\r\n window.addEventListener('mouseup', handler, {once: true, passive: true});\r\n window.addEventListener('contextmenu', handler, {once: true, passive: true});\r\n }, {passive: true});\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { MOUNT_CLASS_TO } from \"../config/debug\";\r\nimport { IS_MOBILE_SAFARI } from \"../environment/userAgent\";\r\nimport { logger } from \"../lib/logger\";\r\nimport blurActiveElement from \"../helpers/dom/blurActiveElement\";\r\nimport cancelEvent from \"../helpers/dom/cancelEvent\";\r\nimport isSwipingBackSafari from \"../helpers/dom/isSwipingBackSafari\";\r\nimport indexOfAndSplice from \"../helpers/array/indexOfAndSplice\";\r\n\r\nexport type NavigationItem = {\r\n type: 'left' | 'right' | 'im' | 'chat' | 'popup' | 'media' | 'menu' | \r\n 'esg' | 'multiselect' | 'input-helper' | 'autocomplete-helper' | 'markup' | \r\n 'global-search' | 'voice' | 'mobile-search' | 'filters',\r\n onPop: (canAnimate: boolean) => boolean | void,\r\n onEscape?: () => boolean,\r\n noHistory?: boolean,\r\n noBlurOnPop?: boolean,\r\n};\r\n\r\nexport class AppNavigationController {\r\n private navigations: Array = [];\r\n private id = Date.now();\r\n private manual = false;\r\n private log = logger('NC');\r\n private debug = true;\r\n private currentHash = window.location.hash;\r\n public onHashChange: () => void;\r\n\r\n constructor() {\r\n let isPossibleSwipe = false;\r\n window.addEventListener('popstate', (e) => {\r\n this.debug && this.log('popstate', e, isPossibleSwipe);\r\n\r\n if(window.location.hash !== this.currentHash) {\r\n this.onHashChange && this.onHashChange();\r\n this.replaceState();\r\n return;\r\n }\r\n this.currentHash = window.location.hash;\r\n\r\n const id: number = e.state;\r\n if(id !== this.id/* && !this.navigations.length */) {\r\n this.pushState();\r\n return;\r\n }\r\n\r\n const item = this.navigations.pop();\r\n if(!item) {\r\n this.pushState();\r\n return;\r\n }\r\n\r\n this.manual = !isPossibleSwipe;\r\n this.handleItem(item);\r\n //this.pushState(); // * prevent adding forward arrow\r\n });\r\n\r\n window.addEventListener('keydown', (e) => {\r\n const item = this.navigations[this.navigations.length - 1];\r\n if(!item) return;\r\n if(e.key === 'Escape' && (item.onEscape ? item.onEscape() : true)) {\r\n cancelEvent(e);\r\n this.back(item.type);\r\n }\r\n }, {capture: true, passive: false});\r\n\r\n if(IS_MOBILE_SAFARI) {\r\n const options = {passive: true};\r\n window.addEventListener('touchstart', (e) => {\r\n if(e.touches.length > 1) return;\r\n this.debug && this.log('touchstart');\r\n\r\n if(isSwipingBackSafari(e)) {\r\n isPossibleSwipe = true;\r\n\r\n window.addEventListener('touchend', () => {\r\n setTimeout(() => {\r\n isPossibleSwipe = false;\r\n }, 100);\r\n }, {passive: true, once: true});\r\n }\r\n\r\n /* const detach = () => {\r\n window.removeEventListener('touchend', onTouchEnd);\r\n window.removeEventListener('touchmove', onTouchMove);\r\n };\r\n\r\n let moved = false;\r\n const onTouchMove = (e: TouchEvent) => {\r\n this.debug && this.log('touchmove');\r\n if(e.touches.length > 1) {\r\n detach();\r\n return;\r\n }\r\n\r\n moved = true;\r\n };\r\n\r\n const onTouchEnd = (e: TouchEvent) => {\r\n this.debug && this.log('touchend');\r\n if(e.touches.length > 1 || !moved) {\r\n detach();\r\n return;\r\n }\r\n\r\n isPossibleSwipe = true;\r\n doubleRaf().then(() => {\r\n isPossibleSwipe = false;\r\n });\r\n\r\n detach();\r\n };\r\n\r\n window.addEventListener('touchend', onTouchEnd, options);\r\n window.addEventListener('touchmove', onTouchMove, options); */\r\n }, options);\r\n }\r\n\r\n history.scrollRestoration = 'manual';\r\n\r\n this.pushState(); // * push init state\r\n }\r\n\r\n private handleItem(item: NavigationItem) {\r\n const good = item.onPop(!this.manual ? false : undefined);\r\n this.debug && this.log('popstate, navigation:', item, this.navigations);\r\n if(good === false) {\r\n this.pushItem(item);\r\n } else if(!item.noBlurOnPop) {\r\n blurActiveElement(); // no better place for it\r\n }\r\n\r\n this.manual = false;\r\n }\r\n\r\n public findItemByType(type: NavigationItem['type']) {\r\n for(let i = this.navigations.length - 1; i >= 0; --i) {\r\n const item = this.navigations[i];\r\n if(item.type === type) {\r\n return {item, index: i};\r\n }\r\n }\r\n }\r\n\r\n public back(type?: NavigationItem['type']) {\r\n if(type) {\r\n const ret = this.findItemByType(type);\r\n if(ret) {\r\n this.backByItem(ret.item, ret.index);\r\n return;\r\n }\r\n }\r\n\r\n history.back();\r\n }\r\n\r\n public backByItem(item: NavigationItem, index = this.navigations.indexOf(item)) {\r\n this.manual = true;\r\n // ! commented because 'popstate' event will be fired with delay\r\n //if(index !== (this.navigations.length - 1)) {\r\n this.navigations.splice(index, 1);\r\n this.handleItem(item);\r\n //}\r\n }\r\n\r\n private onItemAdded(item: NavigationItem) {\r\n this.debug && this.log('pushstate', item, this.navigations);\r\n\r\n if(!item.noHistory) {\r\n this.pushState();\r\n }\r\n }\r\n\r\n public pushItem(item: NavigationItem) {\r\n this.navigations.push(item);\r\n this.onItemAdded(item);\r\n }\r\n\r\n public unshiftItem(item: NavigationItem) {\r\n this.navigations.unshift(item);\r\n this.onItemAdded(item);\r\n }\r\n\r\n private pushState() {\r\n this.manual = false;\r\n history.pushState(this.id, '');\r\n }\r\n\r\n public replaceState() {\r\n history.replaceState(this.id, '', location.origin + location.pathname);\r\n }\r\n\r\n public removeItem(item: NavigationItem) {\r\n if(!item) {\r\n return;\r\n }\r\n \r\n indexOfAndSplice(this.navigations, item);\r\n }\r\n\r\n public removeByType(type: NavigationItem['type'], single = false) {\r\n for(let i = this.navigations.length - 1; i >= 0; --i) {\r\n const item = this.navigations[i];\r\n if(item.type === type) {\r\n this.navigations.splice(i, 1);\r\n\r\n if(single) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst appNavigationController = new AppNavigationController();\r\nMOUNT_CLASS_TO.appNavigationController = appNavigationController;\r\nexport default appNavigationController;\r\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/helpers/dom/dispatchEvent.ts","webpack:///./src/helpers/sequentialDom.ts","webpack:///./src/helpers/dom/isSwipingBackSafari.ts","webpack:///./src/helpers/dom/clickEvent.ts","webpack:///./src/components/button.ts","webpack:///./src/components/misc.ts","webpack:///./src/components/ripple.ts","webpack:///./src/components/appNavigationController.ts"],"names":["simulateEvent","elem","name","event","Event","bubbles","cancelable","dispatchEvent","sequentialDom","promises","raf","bind","scheduled","kind","callback","promise","this","scheduleFlush","undefined","then","do","element","isConnected","mutate","Promise","resolve","read","write","isSwipingBackSafari","e","TouchEvent","touches","clientX","CLICK_EVENT_NAME","attachClickEvent","options","add","listenerSetter","addEventListener","touchMouseDown","detachClickEvent","removeEventListener","simulateClickEvent","className","button","document","createElement","asDiv","icon","noRipple","rippleSquare","classList","onlyMobile","disabled","setAttribute","text","append","putPreloader","returnDiv","html","div","innerHTML","appendChild","insertAdjacentHTML","lastElementChild","setButtonLoader","remove","removeAttribute","onMouseMove","rect","openedMenu","getBoundingClientRect","clientY","diffX","right","left","diffY","bottom","top","closeBtnMenu","onClick","parentElement","menuOverlay","openedMenuOnClose","window","removeByType","openBtnMenu","menuElement","onClose","pushItem","type","onPop","canAnimate","insertBefore","once","positionMenu","pageX","pageY","side","additionalPadding","getScrollWidthFromElement","Array","from","children","find","contains","scrollWidth","menuWidth","scrollHeight","menuHeight","body","windowWidth","width","windowHeight","height","paddingTop","paddingRight","paddingBottom","paddingLeft","isMobile","verticalSide","maxTop","maxLeft","minLeft","sides","x","Math","min","intermediateX","y","intermediateY","possibleSides","style","replace","_cancelContextMenuOpening","_cancelContextMenuOpeningTimeout","cancelContextMenuOpening","clearTimeout","setTimeout","attachContextMenuListener","removeManual","timeout","capture","onCancel","length","rippleClickId","ripple","onEnd","prepend","attachListenerTo","querySelector","r","handler","drawRipple","startTime","Date","now","clickId","duration","getComputedStyle","getPropertyValue","elapsedTime","cb","delay","max","touchStartFired","requestAnimationFrame","clickX","clickY","size","sqrt","abs","isRippleUnneeded","target","includes","tagName","touchEnd","settings","animationsEnabled","cancelBubble","stopPropagation","passive","dataset","appNavigationController","navigations","id","manual","log","debug","currentHash","location","hash","isPossibleSwipe","onHashChange","replaceState","state","pushState","item","pop","handleItem","key","onEscape","back","history","scrollRestoration","good","noBlurOnPop","i","index","ret","findItemByType","backByItem","indexOf","splice","noHistory","push","onItemAdded","unshift","origin","pathname","single"],"mappings":"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","file":"1.f63fd3ceb28384c193a9.chunk.js","sourcesContent":["export default function simulateEvent(elem: EventTarget, name: string) {\n const event = new Event(name, {bubbles: true, cancelable: true});\n elem.dispatchEvent(event);\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { fastRaf } from \"./schedulers\";\r\nimport deferredPromise, { CancellablePromise } from \"./cancellablePromise\";\r\nimport { MOUNT_CLASS_TO } from \"../config/debug\";\r\nimport isInDOM from \"./dom/isInDOM\";\r\n\r\nclass SequentialDom {\r\n private promises: Partial<{\r\n read: CancellablePromise,\r\n write: CancellablePromise\r\n }> = {};\r\n private raf = fastRaf.bind(null);\r\n private scheduled = false;\r\n\r\n private do(kind: keyof SequentialDom['promises'], callback?: VoidFunction) {\r\n let promise = this.promises[kind];\r\n if(!promise) {\r\n this.scheduleFlush();\r\n promise = this.promises[kind] = deferredPromise();\r\n }\r\n\r\n if(callback !== undefined) {\r\n promise.then(() => callback());\r\n }\r\n \r\n return promise;\r\n }\r\n\r\n public measure(callback?: VoidFunction) {\r\n return this.do('read', callback);\r\n }\r\n\r\n public mutate(callback?: VoidFunction) {\r\n return this.do('write', callback);\r\n }\r\n\r\n /**\r\n * Will fire instantly if element is not connected\r\n * @param element \r\n * @param callback \r\n */\r\n public mutateElement(element: HTMLElement, callback?: VoidFunction) {\r\n const isConnected = isInDOM(element);\r\n const promise = isConnected ? this.mutate() : Promise.resolve();\r\n\r\n if(callback !== undefined) {\r\n if(isConnected) {\r\n callback();\r\n } else {\r\n promise.then(() => callback());\r\n }\r\n }\r\n\r\n return promise;\r\n }\r\n\r\n private scheduleFlush() {\r\n if(!this.scheduled) {\r\n this.scheduled = true;\r\n\r\n this.raf(() => {\r\n this.promises.read && this.promises.read.resolve();\r\n this.promises.write && this.promises.write.resolve();\r\n\r\n this.scheduled = false;\r\n this.promises = {};\r\n });\r\n }\r\n }\r\n}\r\n\r\nconst sequentialDom = new SequentialDom();\r\nMOUNT_CLASS_TO && (MOUNT_CLASS_TO.sequentialDom = sequentialDom);\r\nexport default sequentialDom;\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport { IS_MOBILE_SAFARI } from \"../../environment/userAgent\";\n\nexport default function isSwipingBackSafari(e: TouchEvent | MouseEvent) {\n return IS_MOBILE_SAFARI && e instanceof TouchEvent && e.touches[0].clientX < 30;\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport type ListenerSetter from \"../listenerSetter\";\r\nimport { IS_TOUCH_SUPPORTED } from \"../../environment/touchSupport\";\r\nimport simulateEvent from \"./dispatchEvent\";\r\n\r\nexport const CLICK_EVENT_NAME: 'mousedown' /* | 'touchend' */ | 'click' = (IS_TOUCH_SUPPORTED ? 'mousedown' : 'click') as any;\r\nexport type AttachClickOptions = AddEventListenerOptions & Partial<{listenerSetter: ListenerSetter, touchMouseDown: true}>;\r\nexport function attachClickEvent(elem: HTMLElement | Window, callback: (e: /* TouchEvent | */MouseEvent) => void, options: AttachClickOptions = {}) {\r\n const add = options.listenerSetter ? options.listenerSetter.add(elem) : elem.addEventListener.bind(elem);\r\n // const remove = options.listenerSetter ? options.listenerSetter.removeManual.bind(options.listenerSetter, elem) : elem.removeEventListener.bind(elem);\r\n\r\n options.touchMouseDown = true;\r\n /* if(options.touchMouseDown && CLICK_EVENT_NAME === 'touchend') {\r\n add('mousedown', callback, options);\r\n } else if(CLICK_EVENT_NAME === 'touchend') {\r\n const o = {...options, once: true};\r\n\r\n const onTouchStart = (e: TouchEvent) => {\r\n const onTouchMove = (e: TouchEvent) => {\r\n remove('touchmove', onTouchMove, o);\r\n remove('touchend', onTouchEnd, o);\r\n };\r\n \r\n const onTouchEnd = (e: TouchEvent) => {\r\n remove('touchmove', onTouchMove, o);\r\n callback(e);\r\n if(options.once) {\r\n remove('touchstart', onTouchStart);\r\n }\r\n };\r\n \r\n add('touchend', onTouchEnd, o);\r\n add('touchmove', onTouchMove, o);\r\n };\r\n\r\n add('touchstart', onTouchStart);\r\n } else {\r\n add(CLICK_EVENT_NAME, callback, options);\r\n } */\r\n add(CLICK_EVENT_NAME, callback, options);\r\n}\r\n\r\nexport function detachClickEvent(elem: HTMLElement, callback: (e: /* TouchEvent | */MouseEvent) => void, options?: AddEventListenerOptions) {\r\n // if(CLICK_EVENT_NAME === 'touchend') {\r\n // elem.removeEventListener('touchstart', callback, options);\r\n // } else {\r\n elem.removeEventListener(CLICK_EVENT_NAME, callback, options);\r\n // }\r\n}\r\n\r\nexport function simulateClickEvent(elem: HTMLElement) {\r\n simulateEvent(elem, CLICK_EVENT_NAME);\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { i18n, LangPackKey } from \"../lib/langPack\";\r\nimport ripple from \"./ripple\";\r\n\r\nexport type ButtonOptions = Partial<{\r\n noRipple: true, \r\n onlyMobile: true, \r\n icon: string, \r\n rippleSquare: true, \r\n text: LangPackKey, \r\n disabled: boolean,\r\n asDiv: boolean\r\n}>;\r\n\r\nconst Button = (className: string, options: ButtonOptions = {}) => {\r\n const button: HTMLButtonElement = document.createElement(options.asDiv ? 'div' : 'button') as any;\r\n button.className = className + (options.icon ? ' tgico-' + options.icon : '');\r\n\r\n if(!options.noRipple) {\r\n if(options.rippleSquare) {\r\n button.classList.add('rp-square');\r\n }\r\n\r\n ripple(button);\r\n }\r\n\r\n if(options.onlyMobile) {\r\n button.classList.add('only-handhelds');\r\n }\r\n\r\n if(options.disabled) {\r\n button.setAttribute('disabled', 'true');\r\n }\r\n\r\n if(options.text) {\r\n button.append(i18n(options.text));\r\n }\r\n\r\n return button;\r\n};\r\n\r\nexport default Button;\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { MOUNT_CLASS_TO } from \"../config/debug\";\r\nimport cancelEvent from \"../helpers/dom/cancelEvent\";\r\nimport { CLICK_EVENT_NAME } from \"../helpers/dom/clickEvent\";\r\nimport ListenerSetter from \"../helpers/listenerSetter\";\r\nimport mediaSizes from \"../helpers/mediaSizes\";\r\nimport { IS_TOUCH_SUPPORTED } from \"../environment/touchSupport\";\r\nimport { IS_APPLE, IS_MOBILE_SAFARI } from \"../environment/userAgent\";\r\nimport rootScope from \"../lib/rootScope\";\r\nimport appNavigationController from \"./appNavigationController\";\r\n\r\nexport function putPreloader(elem: Element, returnDiv = false): HTMLElement {\r\n const html = `\r\n \r\n \r\n `;\r\n\r\n if(returnDiv) {\r\n const div = document.createElement('div');\r\n div.classList.add('preloader');\r\n div.innerHTML = html;\r\n\r\n if(elem) {\r\n elem.appendChild(div);\r\n }\r\n\r\n return div;\r\n }\r\n \r\n elem.insertAdjacentHTML('beforeend', html);\r\n return elem.lastElementChild as HTMLElement;\r\n}\r\n\r\nMOUNT_CLASS_TO.putPreloader = putPreloader;\r\n\r\nexport function setButtonLoader(elem: HTMLButtonElement, icon = 'check') {\r\n elem.classList.remove('tgico-' + icon);\r\n elem.disabled = true;\r\n putPreloader(elem);\r\n\r\n return () => {\r\n elem.innerHTML = '';\r\n elem.classList.add('tgico-' + icon);\r\n elem.removeAttribute('disabled');\r\n };\r\n}\r\n\r\n/* export function parseMenuButtonsTo(to: {[name: string]: HTMLElement}, elements: HTMLCollection | NodeListOf) {\r\n Array.from(elements).forEach(el => {\r\n const match = el.className.match(/(?:^|\\s)menu-(.+?)(?:$|\\s)/);\r\n if(!match) return;\r\n to[match[1]] = el as HTMLElement;\r\n });\r\n} */\r\n\r\nlet onMouseMove = (e: MouseEvent) => {\r\n let rect = openedMenu.getBoundingClientRect();\r\n let {clientX, clientY} = e;\r\n \r\n let diffX = clientX >= rect.right ? clientX - rect.right : rect.left - clientX;\r\n let diffY = clientY >= rect.bottom ? clientY - rect.bottom : rect.top - clientY;\r\n \r\n if(diffX >= 100 || diffY >= 100) {\r\n closeBtnMenu();\r\n //openedMenu.parentElement.click();\r\n }\r\n //console.log('mousemove', diffX, diffY);\r\n};\r\n\r\nconst onClick = (e: MouseEvent | TouchEvent) => {\r\n //cancelEvent(e);\r\n closeBtnMenu();\r\n};\r\n\r\n// ! no need in this due to the same handler in appNavigationController\r\n/* const onKeyDown = (e: KeyboardEvent) => {\r\n if(e.key === 'Escape') {\r\n closeBtnMenu();\r\n cancelEvent(e);\r\n }\r\n}; */\r\n\r\nexport const closeBtnMenu = () => {\r\n if(openedMenu) {\r\n openedMenu.classList.remove('active');\r\n openedMenu.parentElement.classList.remove('menu-open');\r\n //openedMenu.previousElementSibling.remove(); // remove overlay\r\n if(menuOverlay) menuOverlay.remove();\r\n openedMenu = null;\r\n\r\n rootScope.dispatchEvent('context_menu_toggle', false);\r\n }\r\n \r\n if(openedMenuOnClose) {\r\n openedMenuOnClose();\r\n openedMenuOnClose = null;\r\n }\r\n\r\n if(!IS_TOUCH_SUPPORTED) {\r\n window.removeEventListener('mousemove', onMouseMove);\r\n //window.removeEventListener('keydown', onKeyDown, {capture: true});\r\n window.removeEventListener('contextmenu', onClick);\r\n }\r\n\r\n document.removeEventListener(CLICK_EVENT_NAME, onClick);\r\n\r\n if(!IS_MOBILE_SAFARI) {\r\n appNavigationController.removeByType('menu');\r\n }\r\n};\r\n\r\nwindow.addEventListener('resize', () => {\r\n if(openedMenu) {\r\n closeBtnMenu();\r\n }\r\n \r\n /* if(openedMenu && (openedMenu.style.top || openedMenu.style.left)) {\r\n const rect = openedMenu.getBoundingClientRect();\r\n const {innerWidth, innerHeight} = window;\r\n\r\n console.log(innerWidth, innerHeight, rect);\r\n } */\r\n});\r\n\r\nlet openedMenu: HTMLElement = null, openedMenuOnClose: () => void = null, menuOverlay: HTMLElement = null;\r\nexport function openBtnMenu(menuElement: HTMLElement, onClose?: () => void) {\r\n closeBtnMenu();\r\n\r\n if(!IS_MOBILE_SAFARI) {\r\n appNavigationController.pushItem({\r\n type: 'menu',\r\n onPop: (canAnimate) => {\r\n closeBtnMenu();\r\n }\r\n });\r\n }\r\n \r\n openedMenu = menuElement;\r\n openedMenu.classList.add('active');\r\n openedMenu.parentElement.classList.add('menu-open');\r\n\r\n if(!menuOverlay) {\r\n menuOverlay = document.createElement('div');\r\n menuOverlay.classList.add('btn-menu-overlay');\r\n\r\n // ! because this event must be canceled, and can't cancel on menu click (below)\r\n menuOverlay.addEventListener(CLICK_EVENT_NAME, (e) => {\r\n cancelEvent(e);\r\n onClick(e);\r\n });\r\n }\r\n\r\n openedMenu.parentElement.insertBefore(menuOverlay, openedMenu);\r\n\r\n //document.body.classList.add('disable-hover');\r\n \r\n openedMenuOnClose = onClose;\r\n\r\n if(!IS_TOUCH_SUPPORTED) {\r\n window.addEventListener('mousemove', onMouseMove);\r\n //window.addEventListener('keydown', onKeyDown, {capture: true});\r\n window.addEventListener('contextmenu', onClick, {once: true});\r\n }\r\n\r\n /* // ! because this event must be canceled, and can't cancel on menu click (below)\r\n overlay.addEventListener(CLICK_EVENT_NAME, (e) => {\r\n cancelEvent(e);\r\n onClick(e);\r\n }); */\r\n \r\n // ! safari iOS doesn't handle window click event on overlay, idk why\r\n document.addEventListener(CLICK_EVENT_NAME, onClick);\r\n\r\n rootScope.dispatchEvent('context_menu_toggle', true);\r\n}\r\n\r\nexport type MenuPositionPadding = {\r\n top?: number, \r\n right?: number, \r\n bottom?: number, \r\n left?: number\r\n};\r\n\r\nconst PADDING_TOP = 8;\r\nconst PADDING_BOTTOM = PADDING_TOP;\r\nconst PADDING_LEFT = 8;\r\nconst PADDING_RIGHT = PADDING_LEFT;\r\nexport function positionMenu({pageX, pageY}: MouseEvent | Touch, elem: HTMLElement, side?: 'left' | 'right' | 'center', additionalPadding?: MenuPositionPadding) {\r\n //let {clientX, clientY} = e;\r\n\r\n // * side mean the OPEN side\r\n\r\n const getScrollWidthFromElement = (Array.from(elem.children) as HTMLElement[]).find(element => element.classList.contains('btn-menu-item') && !element.classList.contains('hide')) || elem;\r\n\r\n let {scrollWidth: menuWidth} = getScrollWidthFromElement;\r\n let {scrollHeight: menuHeight} = elem;\r\n //let {innerWidth: windowWidth, innerHeight: windowHeight} = window;\r\n const rect = document.body.getBoundingClientRect();\r\n const windowWidth = rect.width;\r\n const windowHeight = rect.height;\r\n\r\n let paddingTop = PADDING_TOP, paddingRight = PADDING_RIGHT, paddingBottom = PADDING_BOTTOM, paddingLeft = PADDING_LEFT;\r\n if(additionalPadding) {\r\n if(additionalPadding.top) paddingTop += additionalPadding.top;\r\n if(additionalPadding.right) paddingRight += additionalPadding.right;\r\n if(additionalPadding.bottom) paddingBottom += additionalPadding.bottom;\r\n if(additionalPadding.left) paddingLeft += additionalPadding.left;\r\n }\r\n\r\n side = mediaSizes.isMobile ? 'right' : 'left';\r\n let verticalSide: 'top' /* | 'bottom' */ | 'center' = 'top';\r\n\r\n const maxTop = windowHeight - menuHeight - paddingBottom;\r\n const maxLeft = windowWidth - menuWidth - paddingRight;\r\n const minTop = paddingTop;\r\n const minLeft = paddingLeft;\r\n\r\n const getSides = () => {\r\n return {\r\n x: {\r\n left: pageX,\r\n right: Math.min(maxLeft, pageX - menuWidth)\r\n },\r\n intermediateX: side === 'right' ? minLeft : maxLeft,\r\n //intermediateX: clientX < windowWidth / 2 ? PADDING_LEFT : windowWidth - menuWidth - PADDING_LEFT,\r\n y: {\r\n top: pageY,\r\n bottom: pageY - menuHeight\r\n },\r\n //intermediateY: verticalSide === 'top' ? paddingTop : windowHeight - menuHeight - paddingTop,\r\n // intermediateY: pageY < (windowHeight / 2) ? paddingTop : windowHeight - menuHeight - paddingBottom,\r\n intermediateY: maxTop,\r\n };\r\n };\r\n\r\n const sides = getSides();\r\n\r\n const possibleSides = {\r\n x: {\r\n left: (sides.x.left + menuWidth + paddingRight) <= windowWidth,\r\n right: sides.x.right >= paddingLeft\r\n },\r\n y: {\r\n top: (sides.y.top + menuHeight + paddingBottom) <= windowHeight,\r\n bottom: (sides.y.bottom - paddingBottom) >= paddingBottom\r\n }\r\n };\r\n\r\n /* if(side === undefined) {\r\n if((clientX + menuWidth + PADDING_LEFT) > windowWidth) {\r\n side = 'right';\r\n }\r\n } */\r\n\r\n {\r\n /* const x = sides.x;\r\n\r\n const s = Object.keys(x) as (keyof typeof possibleSides.x)[];\r\n if(side) {\r\n s.findAndSplice(s => s === side);\r\n s.unshift(side);\r\n }\r\n\r\n const possibleSide = s.find(s => possibleSides.x[s]); */\r\n let left: number;\r\n /* if(possibleSide) {\r\n left = x[possibleSide];\r\n side = possibleSide;\r\n } else {\r\n left = sides.intermediateX;\r\n side = undefined;\r\n } */\r\n left = possibleSides.x[side] ? sides.x[side] : (side = 'center', sides.intermediateX);\r\n \r\n elem.style.left = left + 'px';\r\n }\r\n\r\n /* if((clientY + menuHeight + PADDING_TOP) > windowHeight) {\r\n elem.style.top = clamp(clientY - menuHeight, PADDING_TOP, windowHeight - menuHeight - PADDING_TOP) + 'px';\r\n // elem.style.top = (innerHeight - scrollHeight - PADDING_TOP) + 'px';\r\n verticalSide = 'bottom';\r\n } else {\r\n elem.style.top = Math.max(PADDING_TOP, clientY) + 'px';\r\n verticalSide = 'top';\r\n } */\r\n\r\n {\r\n let top: number;\r\n\r\n top = possibleSides.y[verticalSide] ? sides.y[verticalSide] : (verticalSide = 'center', sides.intermediateY);\r\n \r\n elem.style.top = top + 'px';\r\n }\r\n \r\n elem.className = elem.className.replace(/(top|center|bottom)-(left|center|right)/g, '');\r\n elem.classList.add(\r\n //(verticalSide === 'center' ? verticalSide : (verticalSide === 'bottom' ? 'top' : 'bottom')) +\r\n (verticalSide === 'center' ? verticalSide : 'bottom') +\r\n '-' +\r\n (side === 'center' ? side : (side === 'left' ? 'right' : 'left')));\r\n\r\n return {\r\n width: menuWidth,\r\n height: menuHeight\r\n };\r\n}\r\n\r\nlet _cancelContextMenuOpening = false, _cancelContextMenuOpeningTimeout = 0;\r\nexport function cancelContextMenuOpening() {\r\n if(_cancelContextMenuOpeningTimeout) {\r\n clearTimeout(_cancelContextMenuOpeningTimeout);\r\n }\r\n \r\n _cancelContextMenuOpeningTimeout = window.setTimeout(() => {\r\n _cancelContextMenuOpeningTimeout = 0;\r\n _cancelContextMenuOpening = false;\r\n }, .4e3);\r\n\r\n _cancelContextMenuOpening = true;\r\n}\r\n\r\nexport function attachContextMenuListener(element: HTMLElement, callback: (e: Touch | MouseEvent) => void, listenerSetter?: ListenerSetter) {\r\n const add = listenerSetter ? listenerSetter.add(element) : element.addEventListener.bind(element);\r\n const remove = listenerSetter ? listenerSetter.removeManual.bind(listenerSetter, element) : element.removeEventListener.bind(element);\r\n\r\n if(IS_APPLE && IS_TOUCH_SUPPORTED) {\r\n let timeout: number;\r\n\r\n const options: EventListenerOptions = {capture: true};\r\n\r\n const onCancel = () => {\r\n clearTimeout(timeout);\r\n // @ts-ignore\r\n remove('touchmove', onCancel, options);\r\n // @ts-ignore\r\n remove('touchend', onCancel, options);\r\n // @ts-ignore\r\n remove('touchcancel', onCancel, options);\r\n };\r\n\r\n add('touchstart', (e: TouchEvent) => {\r\n if(e.touches.length > 1) {\r\n onCancel();\r\n return;\r\n }\r\n \r\n add('touchmove', onCancel, options);\r\n add('touchend', onCancel, options);\r\n add('touchcancel', onCancel, options);\r\n\r\n timeout = window.setTimeout(() => {\r\n if(_cancelContextMenuOpening) {\r\n onCancel();\r\n return;\r\n }\r\n\r\n callback(e.touches[0]);\r\n onCancel();\r\n\r\n if(openedMenu) {\r\n element.addEventListener('touchend', cancelEvent, {once: true}); // * fix instant closing\r\n }\r\n }, .4e3);\r\n });\r\n\r\n /* if(!isSafari) {\r\n add('contextmenu', (e: any) => {\r\n cancelEvent(e);\r\n }, {passive: false, capture: true});\r\n } */\r\n } else {\r\n add('contextmenu', IS_TOUCH_SUPPORTED ? (e: any) => {\r\n callback(e);\r\n\r\n if(openedMenu) {\r\n element.addEventListener('touchend', cancelEvent, {once: true}); // * fix instant closing\r\n }\r\n } : callback);\r\n }\r\n};\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport findUpClassName from \"../helpers/dom/findUpClassName\";\r\nimport sequentialDom from \"../helpers/sequentialDom\";\r\nimport { IS_TOUCH_SUPPORTED } from \"../environment/touchSupport\";\r\nimport rootScope from \"../lib/rootScope\";\r\nimport findUpAsChild from \"../helpers/dom/findUpAsChild\";\r\n\r\nlet rippleClickId = 0;\r\nexport default function ripple(\r\n elem: HTMLElement, \r\n callback: (id: number) => Promise = () => Promise.resolve(), \r\n onEnd: (id: number) => void = null, \r\n prepend = false,\r\n attachListenerTo = elem\r\n) {\r\n //return;\r\n if(elem.querySelector('.c-ripple')) return;\r\n elem.classList.add('rp');\r\n \r\n let r = document.createElement('div');\r\n r.classList.add('c-ripple');\r\n\r\n const isSquare = elem.classList.contains('rp-square');\r\n if(isSquare) {\r\n r.classList.add('is-square');\r\n }\r\n\r\n elem[prepend ? 'prepend' : 'append'](r);\r\n\r\n let handler: () => void;\r\n //let animationEndPromise: Promise;\r\n const drawRipple = (clientX: number, clientY: number) => {\r\n const startTime = Date.now();\r\n const elem = document.createElement('div');\r\n\r\n const clickId = rippleClickId++;\r\n \r\n //console.log('ripple drawRipple');\r\n \r\n const duration = +window.getComputedStyle(r).getPropertyValue('--ripple-duration').replace('s', '') * 1000;\r\n //console.log('ripple duration', duration);\r\n\r\n handler = () => {\r\n //handler = () => animationEndPromise.then((duration) => {\r\n //console.log('ripple animation was:', duration);\r\n\r\n //const duration = isSquare || mediaSizes.isMobile ? 200 : 700;\r\n //return;\r\n let elapsedTime = Date.now() - startTime;\r\n const cb = () => {\r\n //console.log('ripple elapsedTime total pre-remove:', Date.now() - startTime);\r\n sequentialDom.mutate(() => {\r\n elem.remove();\r\n });\r\n \r\n if(onEnd) onEnd(clickId);\r\n };\r\n if(elapsedTime < duration) {\r\n let delay = Math.max(duration - elapsedTime, duration / 2);\r\n setTimeout(() => elem.classList.add('hiding'), Math.max(delay - duration / 2, 0));\r\n\r\n setTimeout(cb, delay);\r\n } else {\r\n elem.classList.add('hiding');\r\n setTimeout(cb, duration / 2);\r\n }\r\n\r\n if(!IS_TOUCH_SUPPORTED) {\r\n window.removeEventListener('contextmenu', handler);\r\n }\r\n\r\n handler = null;\r\n touchStartFired = false;\r\n };\r\n //});\r\n\r\n callback && callback(clickId);\r\n\r\n /* callback().then((bad) => {\r\n if(bad) {\r\n span.remove();\r\n return;\r\n } */\r\n \r\n //console.log('ripple after promise', Date.now() - startTime);\r\n //console.log('ripple tooSlow:', tooSlow);\r\n /* if(tooSlow) {\r\n span.remove();\r\n return;\r\n } */\r\n\r\n window.requestAnimationFrame(() => {\r\n const rect = r.getBoundingClientRect();\r\n elem.classList.add('c-ripple__circle');\r\n\r\n const clickX = clientX - rect.left;\r\n const clickY = clientY - rect.top;\r\n\r\n const radius = Math.sqrt((Math.abs(clickY - rect.height / 2) + rect.height / 2) ** 2 + (Math.abs(clickX - rect.width / 2) + rect.width / 2) ** 2);\r\n const size = radius;\r\n\r\n // center of circle\r\n const x = clickX - size / 2;\r\n const y = clickY - size / 2;\r\n\r\n //console.log('ripple click', offsetFromCenter, size, clickX, clickY);\r\n\r\n elem.style.width = elem.style.height = size + 'px';\r\n elem.style.left = x + 'px';\r\n elem.style.top = y + 'px';\r\n\r\n // нижний код выполняется с задержкой\r\n /* animationEndPromise = new Promise((resolve) => {\r\n span.addEventListener('animationend', () => {\r\n // 713 -> 700\r\n resolve(((Date.now() - startTime) / 100 | 0) * 100);\r\n }, {once: true});\r\n }); */\r\n \r\n // нижний код не всегда включает анимацию ПРИ КЛИКЕ НА ТАЧПАД БЕЗ ТАПТИК ЭНЖИНА\r\n /* span.style.display = 'none';\r\n r.append(span);\r\n duration = +window.getComputedStyle(span).getPropertyValue('animation-duration').replace('s', '') * 1000;\r\n span.style.display = ''; */\r\n\r\n r.append(elem);\r\n\r\n //r.classList.add('active');\r\n //handler();\r\n });\r\n //});\r\n };\r\n\r\n const isRippleUnneeded = (e: Event) => e.target !== elem && (\r\n ['BUTTON', 'A'].includes((e.target as HTMLElement).tagName) \r\n || findUpClassName(e.target as HTMLElement, 'c-ripple') !== r\r\n ) && (\r\n attachListenerTo === elem \r\n || !findUpAsChild(e.target, attachListenerTo)\r\n );\r\n\r\n // TODO: rename this variable\r\n let touchStartFired = false;\r\n if(IS_TOUCH_SUPPORTED) {\r\n let touchEnd = () => {\r\n handler && handler();\r\n };\r\n \r\n attachListenerTo.addEventListener('touchstart', (e) => {\r\n if(!rootScope.settings.animationsEnabled) {\r\n return;\r\n }\r\n\r\n //console.log('ripple touchstart', e);\r\n if(e.touches.length > 1 || touchStartFired || isRippleUnneeded(e)) {\r\n return;\r\n }\r\n \r\n //console.log('touchstart', e);\r\n touchStartFired = true;\r\n \r\n let {clientX, clientY} = e.touches[0];\r\n drawRipple(clientX, clientY);\r\n attachListenerTo.addEventListener('touchend', touchEnd, {once: true});\r\n \r\n window.addEventListener('touchmove', (e) => {\r\n e.cancelBubble = true;\r\n e.stopPropagation();\r\n touchEnd();\r\n attachListenerTo.removeEventListener('touchend', touchEnd);\r\n }, {once: true});\r\n }, {passive: true});\r\n } else {\r\n attachListenerTo.addEventListener('mousedown', (e) => {\r\n if(![0, 2].includes(e.button)) { // only left and right buttons\r\n return;\r\n }\r\n\r\n if(!rootScope.settings.animationsEnabled) {\r\n return;\r\n }\r\n //console.log('ripple mousedown', e, e.target, findUpClassName(e.target as HTMLElement, 'c-ripple') === r);\r\n\r\n if(attachListenerTo.dataset.ripple === '0' || isRippleUnneeded(e)) {\r\n return;\r\n } else if(touchStartFired) {\r\n touchStartFired = false;\r\n return;\r\n }\r\n \r\n let {clientX, clientY} = e;\r\n drawRipple(clientX, clientY);\r\n window.addEventListener('mouseup', handler, {once: true, passive: true});\r\n window.addEventListener('contextmenu', handler, {once: true, passive: true});\r\n }, {passive: true});\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { MOUNT_CLASS_TO } from \"../config/debug\";\r\nimport { IS_MOBILE_SAFARI } from \"../environment/userAgent\";\r\nimport { logger } from \"../lib/logger\";\r\nimport blurActiveElement from \"../helpers/dom/blurActiveElement\";\r\nimport cancelEvent from \"../helpers/dom/cancelEvent\";\r\nimport isSwipingBackSafari from \"../helpers/dom/isSwipingBackSafari\";\r\nimport indexOfAndSplice from \"../helpers/array/indexOfAndSplice\";\r\n\r\nexport type NavigationItem = {\r\n type: 'left' | 'right' | 'im' | 'chat' | 'popup' | 'media' | 'menu' | \r\n 'esg' | 'multiselect' | 'input-helper' | 'autocomplete-helper' | 'markup' | \r\n 'global-search' | 'voice' | 'mobile-search' | 'filters' | 'global-search-focus',\r\n onPop: (canAnimate: boolean) => boolean | void,\r\n onEscape?: () => boolean,\r\n noHistory?: boolean,\r\n noBlurOnPop?: boolean,\r\n};\r\n\r\nexport class AppNavigationController {\r\n private navigations: Array = [];\r\n private id = Date.now();\r\n private manual = false;\r\n private log = logger('NC');\r\n private debug = true;\r\n private currentHash = window.location.hash;\r\n public onHashChange: () => void;\r\n\r\n constructor() {\r\n let isPossibleSwipe = false;\r\n window.addEventListener('popstate', (e) => {\r\n this.debug && this.log('popstate', e, isPossibleSwipe);\r\n\r\n if(window.location.hash !== this.currentHash) {\r\n this.onHashChange && this.onHashChange();\r\n this.replaceState();\r\n return;\r\n }\r\n this.currentHash = window.location.hash;\r\n\r\n const id: number = e.state;\r\n if(id !== this.id/* && !this.navigations.length */) {\r\n this.pushState();\r\n return;\r\n }\r\n\r\n const item = this.navigations.pop();\r\n if(!item) {\r\n this.pushState();\r\n return;\r\n }\r\n\r\n this.manual = !isPossibleSwipe;\r\n this.handleItem(item);\r\n //this.pushState(); // * prevent adding forward arrow\r\n });\r\n\r\n window.addEventListener('keydown', (e) => {\r\n const item = this.navigations[this.navigations.length - 1];\r\n if(!item) return;\r\n if(e.key === 'Escape' && (item.onEscape ? item.onEscape() : true)) {\r\n cancelEvent(e);\r\n this.back(item.type);\r\n }\r\n }, {capture: true, passive: false});\r\n\r\n if(IS_MOBILE_SAFARI) {\r\n const options = {passive: true};\r\n window.addEventListener('touchstart', (e) => {\r\n if(e.touches.length > 1) return;\r\n this.debug && this.log('touchstart');\r\n\r\n if(isSwipingBackSafari(e)) {\r\n isPossibleSwipe = true;\r\n\r\n window.addEventListener('touchend', () => {\r\n setTimeout(() => {\r\n isPossibleSwipe = false;\r\n }, 100);\r\n }, {passive: true, once: true});\r\n }\r\n\r\n /* const detach = () => {\r\n window.removeEventListener('touchend', onTouchEnd);\r\n window.removeEventListener('touchmove', onTouchMove);\r\n };\r\n\r\n let moved = false;\r\n const onTouchMove = (e: TouchEvent) => {\r\n this.debug && this.log('touchmove');\r\n if(e.touches.length > 1) {\r\n detach();\r\n return;\r\n }\r\n\r\n moved = true;\r\n };\r\n\r\n const onTouchEnd = (e: TouchEvent) => {\r\n this.debug && this.log('touchend');\r\n if(e.touches.length > 1 || !moved) {\r\n detach();\r\n return;\r\n }\r\n\r\n isPossibleSwipe = true;\r\n doubleRaf().then(() => {\r\n isPossibleSwipe = false;\r\n });\r\n\r\n detach();\r\n };\r\n\r\n window.addEventListener('touchend', onTouchEnd, options);\r\n window.addEventListener('touchmove', onTouchMove, options); */\r\n }, options);\r\n }\r\n\r\n history.scrollRestoration = 'manual';\r\n\r\n this.pushState(); // * push init state\r\n }\r\n\r\n private handleItem(item: NavigationItem) {\r\n const good = item.onPop(!this.manual ? false : undefined);\r\n this.debug && this.log('popstate, navigation:', item, this.navigations);\r\n if(good === false) {\r\n this.pushItem(item);\r\n } else if(!item.noBlurOnPop) {\r\n blurActiveElement(); // no better place for it\r\n }\r\n\r\n this.manual = false;\r\n }\r\n\r\n public findItemByType(type: NavigationItem['type']) {\r\n for(let i = this.navigations.length - 1; i >= 0; --i) {\r\n const item = this.navigations[i];\r\n if(item.type === type) {\r\n return {item, index: i};\r\n }\r\n }\r\n }\r\n\r\n public back(type?: NavigationItem['type']) {\r\n if(type) {\r\n const ret = this.findItemByType(type);\r\n if(ret) {\r\n this.backByItem(ret.item, ret.index);\r\n return;\r\n }\r\n }\r\n\r\n history.back();\r\n }\r\n\r\n public backByItem(item: NavigationItem, index = this.navigations.indexOf(item)) {\r\n this.manual = true;\r\n // ! commented because 'popstate' event will be fired with delay\r\n //if(index !== (this.navigations.length - 1)) {\r\n this.navigations.splice(index, 1);\r\n this.handleItem(item);\r\n //}\r\n }\r\n\r\n private onItemAdded(item: NavigationItem) {\r\n this.debug && this.log('pushstate', item, this.navigations);\r\n\r\n if(!item.noHistory) {\r\n this.pushState();\r\n }\r\n }\r\n\r\n public pushItem(item: NavigationItem) {\r\n this.navigations.push(item);\r\n this.onItemAdded(item);\r\n }\r\n\r\n public unshiftItem(item: NavigationItem) {\r\n this.navigations.unshift(item);\r\n this.onItemAdded(item);\r\n }\r\n\r\n private pushState() {\r\n this.manual = false;\r\n history.pushState(this.id, '');\r\n }\r\n\r\n public replaceState() {\r\n history.replaceState(this.id, '', location.origin + location.pathname);\r\n }\r\n\r\n public removeItem(item: NavigationItem) {\r\n if(!item) {\r\n return;\r\n }\r\n \r\n indexOfAndSplice(this.navigations, item);\r\n }\r\n\r\n public removeByType(type: NavigationItem['type'], single = false) {\r\n for(let i = this.navigations.length - 1; i >= 0; --i) {\r\n const item = this.navigations[i];\r\n if(item.type === type) {\r\n this.navigations.splice(i, 1);\r\n\r\n if(single) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst appNavigationController = new AppNavigationController();\r\nMOUNT_CLASS_TO.appNavigationController = appNavigationController;\r\nexport default appNavigationController;\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/public/11.485cff055ef366a5dc5a.chunk.js b/public/11.485cff055ef366a5dc5a.chunk.js deleted file mode 100644 index e5c5d168..00000000 --- a/public/11.485cff055ef366a5dc5a.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(this.webpackJsonp=this.webpackJsonp||[]).push([[11],{106:function(e,t,s){"use strict";s.d(t,"a",(function(){return a}));var i=s(32),n=s(64);class a extends n.b{constructor(e={}){super(Object.assign({plainText:!0},e)),this.passwordVisible=!1,this.onVisibilityClick=e=>{Object(i.a)(e),this.passwordVisible=!this.passwordVisible,this.toggleVisible.classList.toggle("eye-hidden",this.passwordVisible),this.input.type=this.passwordVisible?"text":"password",this.onVisibilityClickAdditional&&this.onVisibilityClickAdditional()};const t=this.input;t.type="password",t.setAttribute("required",""),t.name="notsearch_password",t.autocomplete="off";const s=document.createElement("input");s.classList.add("stealthy"),s.tabIndex=-1,s.type="password",t.parentElement.prepend(s),t.parentElement.insertBefore(s.cloneNode(),t.nextSibling);const n=this.toggleVisible=document.createElement("span");n.classList.add("toggle-visible","tgico"),this.container.classList.add("input-field-password"),this.container.append(n),n.addEventListener("click",this.onVisibilityClick),n.addEventListener("touchend",this.onVisibilityClick)}}},116:function(e,t,s){"use strict";function i(e,t){const s=e.length;if(s!==t.length)return!1;for(let i=0;i(this.animation=e,this.animation.addEventListener("enterFrame",e=>{(1===this.animation.direction&&e>=this.needFrame||-1===this.animation.direction&&e<=this.needFrame)&&(this.animation.setSpeed(1),this.animation.pause())}),this.passwordInputField.onVisibilityClickAdditional=()=>{this.passwordInputField.passwordVisible?(this.animation.setDirection(1),this.animation.curFrame=0,this.needFrame=16,this.animation.play()):(this.animation.setDirection(-1),this.animation.curFrame=16,this.needFrame=0,this.animation.play())},i.a.waitForFirstFrame(e)))}remove(){this.animation&&this.animation.remove()}}},129:function(e,t,s){"use strict";s.d(t,"a",(function(){return n}));var i=s(69);class n{constructor(e,t){this.inputField=e,this.size=t,this.max=45,this.needFrame=0,this.container=document.createElement("div"),this.container.classList.add("media-sticker-wrapper");const s=e.input;s.addEventListener("blur",()=>{this.playAnimation(0)}),s.addEventListener("input",t=>{this.playAnimation(e.value.length)})}playAnimation(e){if(!this.animation)return;let t;(e=Math.min(e,30))?(t=Math.round(Math.min(this.max,e)*(165/this.max)+11.33),this.idleAnimation&&(this.idleAnimation.stop(!0),this.idleAnimation.canvas.style.display="none"),this.animation.canvas.style.display=""):t=0;const s=this.needFrame>t?-1:1;this.animation.setDirection(s),0!==this.needFrame&&0===t&&this.animation.setSpeed(7),this.needFrame=t,this.animation.play()}load(){return this.loadPromise?this.loadPromise:this.loadPromise=Promise.all([i.a.loadAnimationAsAsset({container:this.container,loop:!0,autoplay:!0,width:this.size,height:this.size},"TwoFactorSetupMonkeyIdle").then(e=>(this.idleAnimation=e,this.inputField.value.length||e.play(),i.a.waitForFirstFrame(e))),i.a.loadAnimationAsAsset({container:this.container,loop:!1,autoplay:!1,width:this.size,height:this.size},"TwoFactorSetupMonkeyTracking").then(e=>(this.animation=e,this.inputField.value.length||(this.animation.canvas.style.display="none"),this.animation.addEventListener("enterFrame",e=>{(1===this.animation.direction&&e>=this.needFrame||-1===this.animation.direction&&e<=this.needFrame)&&(this.animation.setSpeed(1),this.animation.pause()),0===e&&0===this.needFrame&&this.idleAnimation&&(this.idleAnimation.canvas.style.display="",this.idleAnimation.play(),this.animation.canvas.style.display="none")}),i.a.waitForFirstFrame(e)))])}remove(){this.animation&&this.animation.remove(),this.idleAnimation&&this.idleAnimation.remove()}}},130:function(e,t,s){"use strict";s.d(t,"a",(function(){return n}));var i=s(64);class n extends i.b{constructor(e){super(Object.assign({plainText:!0},e));const t=this.input;t.type="tel",t.setAttribute("required",""),t.autocomplete="off";let s=0;this.input.addEventListener("input",t=>{this.input.classList.remove("error"),this.setLabel();const i=this.value.replace(/\D/g,"").slice(0,e.length);this.setValueSilently(i);const n=this.value.length;if(n===e.length)e.onFill(this.value);else if(n===s)return;s=n})}}},151:function(e,t,s){"use strict";s.d(t,"a",(function(){return r}));var i=s(117),n=s(118),a=s(2),o=s(64);class r extends o.b{constructor(e={}){super(Object.assign({label:"Contacts.PhoneNumber.Placeholder",name:"phone"},e)),this.pasted=!1,this.lastValue="",this.container.classList.add("input-field-phone");let t=this.input;if(t instanceof HTMLInputElement)t.type="tel",t.autocomplete="rr55RandomRR55";else{t.inputMode="decimal";const e=window.devicePixelRatio;if(e>1){let s;a.b?s=-.16*e:a.a&&(s=0),t.style.setProperty("--letter-spacing",s+"px")}const s=this.setValueSilently.bind(this);this.setValueSilently=e=>{s(e),Object(i.a)(this.input,!0)}}t.addEventListener("input",()=>{t.classList.remove("error");const s=this.value;let i;Math.abs(s.length-this.lastValue.length)>1&&!this.pasted&&a.c&&this.setValueSilently(this.lastValue+s),this.pasted=!1,this.setLabel();let o,r,l,c="";"+"===this.value.replace(/\++/,"+")?this.setValueSilently("+"):(i=Object(n.a)(this.value),o=i.formatted,r=i.country,c=i.leftPattern,l=i.code,this.setValueSilently(this.lastValue=o?"+"+o:"")),t.dataset.leftPattern=c,e.onInput&&e.onInput(i)}),t.addEventListener("paste",()=>{this.pasted=!0}),t.addEventListener("keypress",e=>{const t=e.key;if(/\D/.test(t)&&!e.metaKey&&!e.ctrlKey&&"Backspace"!==t&&("+"!==t||!e.shiftKey))return e.preventDefault(),!1})}}},181:function(e,t,s){"use strict";s.r(t),s.d(t,"AppDialogsManager",(function(){return xc}));var i=s(63),n=s(73),a=s(0),o=s(62),r=s(70),l=s(56),c=s(32),d=s(125),h=s(175),p=s(188);const u=[...h.a].concat([...p.a]);var g=new Set(u);function m(e,t){e.setAttribute("dir","auto"),e.innerHTML=t}var b=s(61),v=s(97),f=s(80);function y(e){Object(f.a)(e.history,(t,s,i)=>{t.action.photo||(i.splice(s,1),void 0!==e.count&&--e.count)})}var w=s(18);class S{constructor(e){this.previous=[],this.next=[],this.reverse=!1,this.loadCount=50,this.loadWhenLeft=20,this.loadedAllUp=!1,this.loadedAllDown=!1,Object(w.a)(this,e)}setTargets(e,t,s){this.previous=e,this.next=t,this.reverse=s}get index(){return void 0!==this.count?this.previous.length:-1}reset(e=!1){this.current=void 0,this.previous=[],this.next=[],this.setLoaded(!0,e),this.setLoaded(!1,e)}go(e,t=!0){let s,i;if(e>0){if(s=this.next.splice(0,e),i=s.pop(),!i)return;void 0!==this.current&&s.unshift(this.current),this.previous.push(...s)}else{if(s=this.previous.splice(Math.max(0,this.previous.length+e),-e),i=s.shift(),!i)return;void 0!==this.current&&s.push(this.current),this.next.unshift(...s)}return this.next.length0),this.current}unsetCurrent(e){e?this.previous.push(this.current):this.next.unshift(this.current),this.current=void 0}goUnsafe(e,t){const s=e>0?Math.max(0,e-this.next.length):Math.min(0,e+this.previous.length),i=this.go(e,!s&&t);return{item:s?void 0:i,leftLength:s}}setLoaded(e,t){return(e?this.loadedAllDown:this.loadedAllUp)!==t&&(e?this.loadedAllDown=t:this.loadedAllUp=t,t||(e?this.loadPromiseDown=null:this.loadPromiseUp=null),!0)}load(e){if(e?this.loadedAllDown:this.loadedAllUp)return Promise.resolve();let t,s=e?this.loadPromiseDown:this.loadPromiseUp;return s||(t=e?this.reverse?this.previous[0]:this.next[this.next.length-1]:this.reverse?this.next[this.next.length-1]:this.previous[0],null!=t||(t=this.current),s=this.loadMore(t,e,this.loadCount).then(t=>{if((e?this.loadPromiseDown:this.loadPromiseUp)!==s)return;t.items.length{const s=this.processItem?this.processItem(t):t;s&&(e?this.reverse?this.previous.unshift(s):this.next.push(s):this.reverse?this.next.push(s):this.previous.unshift(s))}),this.onLoadedMore&&this.onLoadedMore()},()=>{}).then(()=>{e?this.loadPromiseDown=null:this.loadPromiseUp=null}),e?this.loadPromiseDown=s:this.loadPromiseUp=s,s)}}class L extends S{constructor(e={}){super(Object.assign(Object.assign({},e),{loadMore:(e,t,s)=>{const n=t?0:s;let a=null==e?void 0:e.mid;return void 0===a&&(a=this.searchContext.maxId),t||(a=v.a.incrementMessageId(a,1)),i.a.getSearch(Object.assign(Object.assign({},this.searchContext),{peerId:this.searchContext.peerId||(null==e?void 0:e.peerId),maxId:a,limit:n?0:s,backLimit:n})).then(e=>("inputMessagesFilterChatPhotos"===this.searchContext.inputFilter._&&y(e),e.next_rate&&(this.searchContext.nextRate=e.next_rate),{count:e.count,items:e.history}))},processItem:t=>{if(this.filterMids([t.mid]).length)return e.processItem(t)}})),this.onHistoryDelete=({peerId:e,msgs:t})=>{const s=s=>s.peerId===e&&t.has(s.mid),i=(e,t,i)=>{s(e)&&i.splice(t,1)};Object(f.a)(this.previous,i),Object(f.a)(this.next,i),this.current&&s(this.current)&&this.onEmptied&&this.onEmptied()},this.onHistoryMultiappend=e=>{if(void 0!==this.searchContext.folderId)return;if(!this.loadedAllUp||this.loadPromiseUp)return;const t=e[this.searchContext.peerId];if(!t)return;const s=Array.from(t).sort((e,t)=>e-t),i=this.filterMids(s).map(e=>this.processItem(e)).filter(Boolean);i.length&&(this.current?this.next.push(...i):this.previous.push(...i))},this.onMessageSent=({message:e})=>{this.onHistoryMultiappend({[e.peerId]:new Set([e.mid])})},a.a.addEventListener("history_delete",this.onHistoryDelete),a.a.addEventListener("history_multiappend",this.onHistoryMultiappend),a.a.addEventListener("message_sent",this.onMessageSent),e.isInner||(this.otherSideLoader=new L(Object.assign(Object.assign({},e),{isInner:!0})))}filterMids(e){const t=this.searchContext.isScheduled?i.a.getScheduledMessagesStorage(this.searchContext.peerId):i.a.getMessagesStorage(this.searchContext.peerId);return i.a.filterMessagesByInputFilter(this.searchContext.inputFilter._,e,t,e.length)}setSearchContext(e){this.searchContext=e,void 0!==this.searchContext.folderId&&(this.loadedAllUp=!0,void 0===this.searchContext.nextRate&&(this.loadedAllDown=!0)),"inputMessagesFilterChatPhotos"===this.searchContext.inputFilter._&&(this.loadedAllUp=!0),this.otherSideLoader&&this.otherSideLoader.setSearchContext(e)}reset(){super.reset(),this.searchContext=void 0,this.otherSideLoader&&this.otherSideLoader.reset()}getPrevious(){let e=this.previous;return this.otherSideLoader&&(e=e.concat(this.otherSideLoader.previous)),e}getNext(){let e=this.next;return this.otherSideLoader&&(e=e.concat(this.otherSideLoader.next)),e}getCurrent(){var e;return this.current||(null===(e=this.otherSideLoader)||void 0===e?void 0:e.current)}goToOtherEnd(e){return e>0?this.go(-this.previous.length):this.go(this.next.length)}goRound(e,t){var s;let i;if(null===(s=this.otherSideLoader)||void 0===s?void 0:s.current){if(i=this.otherSideLoader.goUnsafe(e,t),i.item)return i.item;if(!((e=i.leftLength)>0?this.otherSideLoader.next:this.otherSideLoader.previous).length){if(!(e>0?this.otherSideLoader.loadedAllUp:this.otherSideLoader.loadedAllDown))return;if(e>0&&(1===this.otherSideLoader.searchContext.maxId||this.otherSideLoader.loadedAllDown)||e<0&&(0===this.otherSideLoader.searchContext.maxId||this.otherSideLoader.loadedAllUp))return this.otherSideLoader.goToOtherEnd(e);this.otherSideLoader.unsetCurrent(e>0)}}if(i=this.goUnsafe(e,t),!i.item){if(this.loadedAllUp&&this.loadedAllDown)return this.goToOtherEnd(e);this.otherSideLoader&&(e=i.leftLength,i=this.otherSideLoader.goUnsafe(e,t),i.item&&this.unsetCurrent(e>0))}return null==i?void 0:i.item}setLoaded(e,t){const s=super.setLoaded(e,t);if(s&&this.otherSideLoader&&t){const e=this.loadedAllUp;this.otherSideLoader.setSearchContext(Object.assign(Object.assign({},this.searchContext),{maxId:e?1:0})),this.otherSideLoader.reverse=this.reverse,this.otherSideLoader.setLoaded(e,!0),this.otherSideLoader.load(!e)}return s}cleanup(){this.reset(),a.a.removeEventListener("history_delete",this.onHistoryDelete),a.a.removeEventListener("history_multiappend",this.onHistoryMultiappend),a.a.removeEventListener("message_sent",this.onMessageSent),this.onEmptied=void 0,this.otherSideLoader&&(this.otherSideLoader.cleanup(),this.otherSideLoader=void 0)}}var C=s(81),M=s(79),I=s(34),E=s(59),P=s(65),k=s(58),T=s(7);class x{constructor(e,t,s=!0,i,n=!0,a=!0,o){this.name=e,this.type=t,this.clearable=s,this.autonomous=a,this.onFound=o,this.list=Oc.createChatList(),this.container=document.createElement("div"),i&&(this.container.className=i),e&&(this.nameEl=document.createElement("div"),this.nameEl.classList.add("search-group__name"),"string"==typeof e&&this.nameEl.append(Object(T.d)(e)),this.container.append(this.nameEl)),this.container.classList.add("search-group","search-group-"+t),this.container.append(this.list),this.container.style.display="none",n&&Oc.setListClickListener(this.list,o,void 0,a)}clear(){this.container.style.display="none",this.clearable&&(this.list.innerHTML="")}setActive(){this.container.style.display=""}toggle(){this.list.childElementCount?this.setActive():this.clear()}}class A{constructor(e,t,s,i){this.container=e,this.searchInput=t,this.searchGroups=s,this.onSearch=i,this.minMsgId=0,this.loadedCount=-1,this.foundCount=-1,this.searchPromise=null,this.searchTimeout=0,this.query="",this.listsContainer=null,this.threadId=0,this.scrollable=new P.b(this.container),this.listsContainer=this.scrollable.container;for(let e in this.searchGroups)this.listsContainer.append(this.searchGroups[e].container);this.searchGroups.messages&&this.scrollable.setVirtualContainer(this.searchGroups.messages.list),this.searchInput.onChange=e=>{this.query=e,this.reset(!1),this.searchMore()},this.scrollable.onScrolledBottom=()=>{this.query.trim()&&(this.searchTimeout||(this.searchTimeout=window.setTimeout(()=>{this.searchMore(),this.searchTimeout=0},0)))}}reset(e=!0){e&&(this.searchInput.value="",this.query="",this.peerId=void 0,this.threadId=0),this.minMsgId=0,this.loadedCount=-1,this.foundCount=-1;for(let e in this.searchGroups)this.searchGroups[e].clear();this.searchPromise=null}beginSearch(e,t=0,s=""){this.peerId=e,this.threadId=t,this.query!==s&&(this.searchInput.inputField.value=s),this.searchInput.input.focus()}searchMore(){if(this.searchPromise)return this.searchPromise;const e=this.query;if(!e.trim())return void(this.onSearch&&this.onSearch(0));if(-1!==this.foundCount&&this.loadedCount>=this.foundCount)return Promise.resolve();const t=this.minMsgId||0;return this.searchPromise=i.a.getSearch({peerId:this.peerId,query:e,inputFilter:{_:"inputMessagesFilterEmpty"},maxId:t,limit:20,threadId:this.threadId}).then(t=>{if(this.searchPromise=null,this.searchInput.value!==e)return;const{count:s,history:i}=t;i.length&&i[0].mid===this.minMsgId&&i.shift();const n=this.searchGroups.messages;i.forEach(t=>{try{const s=this.peerId?t.fromId:t.peerId;Oc.addDialogAndSetLastMessage({peerId:s,container:this.scrollable,drawStatus:!1,avatarSize:54,meAsSaved:!1,message:t,query:e})}catch(e){console.error("[appSearch] render search result",e)}}),n.toggle(),this.minMsgId=i.length&&i[i.length-1].mid,-1===this.loadedCount&&(this.loadedCount=0),this.loadedCount+=i.length,-1===this.foundCount&&(this.foundCount=s,n.nameEl&&Object(k.a)(n.nameEl,Object(T.d)(s?"Chat.Search.MessagesFound":"Chat.Search.NoMessagesFound",[s])),this.onSearch&&this.onSearch(this.foundCount))}).catch(e=>{console.error("search error",e),this.searchPromise=null})}}var O=s(64);class _{constructor(e,t){this.prevValue="",this.timeout=0,this.onInput=()=>{if(!this.onChange)return;let e=this.value;e!==this.prevValue&&(this.prevValue=e,clearTimeout(this.timeout),this.timeout=window.setTimeout(()=>{this.onChange(e)},200))},this.onClearClick=()=>{this.value="",this.onChange&&this.onChange(""),this.onClear&&this.onClear()},this.inputField=new O.b({placeholder:e,plainText:!0}),this.container=this.inputField.container,this.container.classList.remove("input-field"),this.container.classList.add("input-search"),this.onChange=t,this.input=this.inputField.input,this.input.classList.add("input-search-input");const s=document.createElement("i");s.classList.add("tgico","tgico-search"),this.clearBtn=document.createElement("i"),this.clearBtn.classList.add("tgico","btn-icon","tgico-close"),this.input.addEventListener("input",this.onInput),this.clearBtn.addEventListener("click",this.onClearClick),this.container.append(s,this.clearBtn)}get value(){return this.inputField.value}set value(e){this.prevValue=e,clearTimeout(this.timeout),this.inputField.value=e}remove(){clearTimeout(this.timeout),this.input.removeEventListener("input",this.onInput),this.clearBtn.removeEventListener("click",this.onClearClick)}}var F=s(137),j=s(84),D=s(15),R=s(83),B=s(57);var N=(e,t={})=>Object(B.a)("btn-icon",Object.assign({icon:e||void 0},t)),U=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class H{constructor(e,t){this._constructor(e,t)}_constructor(e,t=!0){this.slider=e,this.destroyable=t,this.container=document.createElement("div"),this.container.classList.add("tabs-tab","sidebar-slider-item"),this.header=document.createElement("div"),this.header.classList.add("sidebar-header"),this.closeBtn=N("left sidebar-close-button",{noRipple:!0}),this.title=document.createElement("div"),this.title.classList.add("sidebar-header__title"),this.header.append(this.closeBtn,this.title),this.content=document.createElement("div"),this.content.classList.add("sidebar-content"),this.scrollable=new P.b(this.content,void 0,void 0,!0),this.container.append(this.header,this.content),this.slider.addTab(this),this.listenerSetter=new R.a}close(){return this.slider.closeTab(this)}open(...e){return U(this,void 0,void 0,(function*(){if(this.init)try{const e=this.init();this.init=null,e instanceof Promise&&(yield e)}catch(e){console.error("open tab error",e)}this.slider.selectTab(this)}))}init(){}onCloseAfterTimeout(){this.destroyable&&(this.slider.tabs.delete(this),this.container.remove()),this.listenerSetter&&this.listenerSetter.removeAll()}setTitle(e){this.title.innerHTML="",this.title.append(Object(T.d)(e))}}class z extends H{constructor(e){super(e),this.eventListener=new D.a}onCloseAfterTimeout(){return this.eventListener.dispatchEvent("destroy"),this.eventListener.cleanup(),super.onCloseAfterTimeout()}}var V=s(74);class K{constructor(e){this.historyTabIds=[],this.canHideFirst=!1,this.onCloseBtnClick=()=>{j.a.findItemByType(this.navigationType)?j.a.back(this.navigationType):this.historyTabIds.length&&this.closeTab(this.historyTabIds[this.historyTabIds.length-1])},this.closeTab=(e,t,s)=>{if(void 0!==e&&this.historyTabIds[this.historyTabIds.length-1]!==e)return!1;const i=this.historyTabIds.pop();this.onCloseTab(i,t,s);const n=this.historyTabIds[this.historyTabIds.length-1];return this._selectTab(void 0!==n?n instanceof H?n.container:n:this.canHideFirst?-1:0,t),!0},Object(w.a)(this,e),this.tabs||(this.tabs=new Map),this.tabsContainer=this.sidebarEl.querySelector(".sidebar-slider"),this._selectTab=Object(F.a)(this.tabsContainer,"navigation",250),this.canHideFirst||this._selectTab(0),Array.from(this.sidebarEl.querySelectorAll(".sidebar-close-button")).forEach(e=>{Object(l.b)(e,this.onCloseBtnClick)})}selectTab(e){if(this.historyTabIds[this.historyTabIds.length-1]===e)return!1;const t=e instanceof H?e:this.tabs.get(e);return t&&(t.onOpen&&t.onOpen(),t.onOpenAfterTimeout&&setTimeout(()=>{t.onOpenAfterTimeout()},250)),j.a.pushItem({type:this.navigationType,onPop:e=>(this.closeTab(void 0,e,!0),!0)}),this.historyTabIds.push(e),this._selectTab(e instanceof H?e.container:e),!0}removeTabFromHistory(e){Object(V.a)(this.historyTabIds,e),this.onCloseTab(e,void 0)}sliceTabsUntilTab(e,t){for(let s=this.historyTabIds.length-1;s>=0;--s){const i=this.historyTabIds[s];if(i!==t){if(i instanceof e)break;this.removeTabFromHistory(i)}}}getTab(e){return this.historyTabIds.find(t=>t instanceof e)}isTabExists(e){return!!this.getTab(e)}onCloseTab(e,t,s){s||j.a.removeByType(this.navigationType,!0);const i=e instanceof H?e:this.tabs.get(e);i&&(i.onClose&&i.onClose(),i.onCloseAfterTimeout&&setTimeout(()=>{i.onCloseAfterTimeout()},250))}addTab(e){e.container.parentElement||(this.tabsContainer.append(e.container),e.closeBtn&&e.closeBtn.addEventListener("click",this.onCloseBtnClick))}}var G=s(66),W=s(148);class q{constructor(e){this.container=document.createElement("div"),this.container.classList.add("avatar-edit"),this.canvas=document.createElement("canvas"),this.canvas.classList.add("avatar-edit-canvas"),this.icon=document.createElement("span"),this.icon.classList.add("tgico","tgico-cameraadd"),this.container.append(this.canvas,this.icon),Object(l.b)(this.container,()=>{(new W.a).open(this.canvas,e)})}clear(){this.canvas.getContext("2d").clearRect(0,0,this.canvas.width,this.canvas.height)}}var $=(e={})=>Object(B.a)("btn-circle btn-corner z-depth-1"+(e.className?" "+e.className:""),e);class Q extends H{constructor(){super(...arguments),this.uploadAvatar=null,this.isGeoChat=!1}init(){this.container.classList.add("new-group-container"),this.setTitle("NewGroup"),this.avatarEdit=new q(e=>{this.uploadAvatar=e});const e=new Wn({}),t=document.createElement("div");t.classList.add("input-wrapper"),this.groupNameInputField=new O.b({label:"CreateGroup.NameHolder",maxLength:128}),this.groupLocationInputField=new O.b({label:"ChatLocation",name:"location",canBeEdited:!1}),t.append(this.groupNameInputField.container,this.groupLocationInputField.container),this.groupNameInputField.input.addEventListener("input",()=>{let e=!!this.groupNameInputField.value.length&&!this.groupNameInputField.input.classList.contains("error");this.isGeoChat&&(e=e&&!!this.userLocationCoords&&!!this.userLocationAddress),this.nextBtn.classList.toggle("is-visible",!!e)}),this.nextBtn=$({icon:"arrow_next"}),this.nextBtn.addEventListener("click",()=>{const e=this.groupNameInputField.value;if(this.isGeoChat){if(!this.userLocationAddress||!this.userLocationCoords)return;G.a.createChannel({title:e,about:"",geo_point:Object.assign({_:"inputGeoPoint"},this.userLocationCoords),address:this.userLocationAddress,megagroup:!0}).then(e=>{this.uploadAvatar&&this.uploadAvatar().then(t=>{G.a.editPhoto(e,t)}),this.peerIds.length&&G.a.inviteToChannel(e,this.peerIds),Xn.removeTabFromHistory(this),Xn.selectTab(0)})}else this.nextBtn.disabled=!0,G.a.createChat(e,this.peerIds.map(e=>e.toUserId())).then(e=>{this.uploadAvatar&&this.uploadAvatar().then(t=>{G.a.editPhoto(e,t)}),Xn.removeTabFromHistory(this),Xn.selectTab(0)})});const s=new Wn({name:"Members",nameArgs:[this.peerIds.length]}),i=this.list=Oc.createChatList({new:!0});s.content.append(i),e.content.append(this.avatarEdit.container,t),this.content.append(this.nextBtn),this.scrollable.append(e.container,s.container)}onCloseAfterTimeout(){this.avatarEdit.clear(),this.uploadAvatar=null,this.groupNameInputField.value="",this.groupLocationInputField.container.classList.add("hide"),this.nextBtn.disabled=!1}open(e,t=!1){this.isGeoChat=t,this.peerIds=e;const s=super.open();return s.then(()=>{t?(this.setTitle("NearbyCreateGroup"),this.groupLocationInputField.container.classList.remove("hide"),this.groupLocationInputField.setValueSilently(T.c.format("Loading",!0)),this.startLocating()):this.groupLocationInputField.container.classList.add("hide"),this.peerIds.forEach(e=>{const{dom:t}=Oc.addDialogNew({dialog:e,container:this.list,drawStatus:!1,rippleEnabled:!1,avatarSize:48});t.lastMessageSpan.append(E.a.getUserStatusString(e))})}),s}startLocating(){navigator.geolocation.getCurrentPosition(e=>{this.userLocationCoords={lat:e.coords.latitude,long:e.coords.longitude};let t="https://nominatim.openstreetmap.org/reverse";t+="?lat="+e.coords.latitude,t+="&lon="+e.coords.longitude,t+="&format=json",t+="&addressdetails=1",t+="&accept-language=en",fetch(t).then(e=>e.json()).then(e=>{this.userLocationAddress=e.display_name,this.groupLocationInputField.setValueSilently(e.display_name)})},e=>{e instanceof GeolocationPositionError?this.groupLocationInputField.setValueSilently("Location permission denied. Please retry later."):this.groupLocationInputField.setValueSilently("An error has occurred. Please retry later.")})}}var Y=s(4),X=s(27),J=s(128),Z=s(90),ee=s(60),te=s(75),se=s(28),ie=s(10),ne=s(36),ae=s(2),oe=s(69),re=s(52),le=s(1),ce=s(88),de=s(111),he=s(14),pe=s(109),ue=s(3),ge=s(40),me=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};const be=(()=>{try{return ae.g&&+navigator.userAgent.match(/ Version\/(\d+)/)[1]<14}catch(e){return!1}})();const ve=new class{constructor(){if(this.media=new Map,this.scheduled=new Map,this.mediaDetails=new Map,this.waitingMediaForLoad=new Map,this.waitingScheduledMediaForLoad=new Map,this.waitingDocumentsForLoad={},this._volume=1,this._muted=!1,this._playbackRate=1,this._loop=!1,this._round=!1,this.playbackRates={voice:1,video:1,audio:1},this.seekBackward=e=>{const t=this.playingMedia;t&&(t.currentTime=Math.max(0,t.currentTime-(e.seekOffset||10)))},this.seekForward=e=>{const t=this.playingMedia;t&&(t.currentTime=Math.min(t.duration,t.currentTime+(e.seekOffset||10)))},this.seekTo=e=>{const t=this.playingMedia;t&&(t.currentTime=e.seekTime)},this.onMediaDocumentLoad=e=>{const t=this.mediaDetails.get(e),s=C.a.getDoc(t.docId);"audio"===s.type&&s.supportsStreaming&&be&&this.handleSafariStreamable(e);const i=ce.a.getCacheContext(s);e.src=i.url,this.playingMedia===e&&(e.playbackRate=this.playbackRate,"audio"===s.type&&(e.loop=this.loop));const n=this.waitingDocumentsForLoad[s.id];n&&(n.delete(e),n.size||delete this.waitingDocumentsForLoad[s.id])},this.onPlay=e=>{const t=e.target,s=this.mediaDetails.get(t),{peerId:i,mid:n}=s,o=this.getMessageByMedia(t);if(this.playingMedia!==t){this.stop(),this.setMedia(t,o);const e=e=>e.mid===n&&e.peerId===i,s=this.listLoader.getCurrent();if(!s||!e(s)){const t=this.listLoader.getPrevious();let s,a=t.findIndex(e);-1!==a?s=-(t.length-a):(a=this.listLoader.getNext().findIndex(e),-1!==a&&(s=a+1)),-1!==a?s&&this.go(s,!1):this.setTargets({peerId:i,mid:n})}}setTimeout(()=>{this.playingMedia===t&&a.a.dispatchEvent("media_play",this.getPlayingDetails())},0)},this.onPause=e=>{a.a.dispatchEvent("media_pause")},this.onEnded=e=>{e.isTrusted&&(this.onPause(e),!this.lockedSwitchers&&(this.round||!this.listLoader.current||this.listLoader.next.length)&&this.listLoader.getNext().length&&this.next()||(this.stop(),a.a.dispatchEvent("media_stop")))},this.play=()=>this.toggle(!0),this.pause=()=>this.toggle(!1),this.stop=()=>{const e=this.playingMedia;if(!e)return!1;e.paused||e.pause(),e.currentTime=0,Object(de.a)(e,"ended");const t=this.mediaDetails.get(e);if(null==t?void 0:t.clean){e.src="";const s=t.peerId,i=t.isScheduled?this.scheduled:this.media,n=i.get(s);n&&(n.delete(t.mid),n.size||i.delete(s)),e.remove(),this.mediaDetails.delete(e)}return this.playingMedia=void 0,this.playingMediaType=void 0,!0},this.playItem=e=>{const{peerId:t,mid:s}=e,i=this.searchContext.isScheduled;this.getMedia(t,s,i).play(),setTimeout(()=>{this.resolveWaitingForLoadMedia(t,s,i)},0)},this.go=(e,t)=>{if(!this.lockedSwitchers)return"audio"===this.playingMediaType?this.listLoader.goRound(e,t):this.listLoader.go(e,t)},this.next=()=>this.go(1),this.previous=()=>{const e=this.playingMedia;return e&&e.currentTime>5?(e.currentTime=0,void this.toggle(!0)):this.go(-1)},this.container=document.createElement("div"),this.container.style.cssText="display: none;",document.body.append(this.container),navigator.mediaSession){const e={play:this.play,pause:this.pause,stop:this.stop,seekbackward:this.seekBackward,seekforward:this.seekForward,seekto:this.seekTo,previoustrack:this.previous,nexttrack:this.next};for(const t in e)try{navigator.mediaSession.setActionHandler(t,e[t])}catch(e){console.warn("MediaSession action is not supported:",t)}}a.a.addEventListener("document_downloaded",e=>{const t=this.waitingDocumentsForLoad[e.id];if(t)for(const e of t)this.onMediaDocumentLoad(e)});const e={};["volume","muted","playbackRate","loop","round"].forEach(t=>{const s="_"+t;e[t]={get:()=>this[s],set:e=>{this[s]!==e&&(this[s]=e,!this.playingMedia||"loop"===t&&"audio"!==this.playingMediaType||"round"===t||(this.playingMedia[t]=e),"playbackRate"===t&&void 0!==this.playingMediaType&&(this.playbackRates[this.playingMediaType]=e),this.dispatchPlaybackParams())}}}),Object.defineProperties(this,e)}dispatchPlaybackParams(){a.a.dispatchEvent("media_playback_params",this.getPlaybackParams())}getPlaybackParams(){const{volume:e,muted:t,playbackRate:s,loop:i,round:n}=this;return{volume:e,muted:t,playbackRate:s,loop:i,round:n}}addMedia(e,t,s){const{peerId:n,mid:o}=e,r=!!e.pFlags.is_scheduled?this.scheduled:this.media;let l=r.get(e.peerId);l||r.set(e.peerId,l=new Map);let c=l.get(o);if(c)return c;const d=i.a.getMediaFromMessage(e);l.set(o,c=document.createElement("round"===d.type||"video"===d.type?"video":"audio")),"round"===d.type&&c.setAttribute("playsinline","true");const h={peerId:n,mid:o,docId:d.id,clean:s,isScheduled:e.pFlags.is_scheduled};this.mediaDetails.set(c,h),c.volume=1,this.container.append(c),c.addEventListener("play",this.onPlay),c.addEventListener("pause",this.onPause),c.addEventListener("ended",this.onEnded),"audio"!==d.type&&(null==e?void 0:e.pFlags.media_unread)&&e.fromId!==a.a.myId&&c.addEventListener("timeupdate",()=>{i.a.readMessages(n,[o])},{once:!0});const p=Object(ie.a)();if(t)p.resolve();else{const t=e.pFlags.is_scheduled?this.waitingScheduledMediaForLoad:this.waitingMediaForLoad;let s=t.get(n);s||t.set(n,s=new Map),s.set(o,p)}return p.then(()=>{const e=ce.a.getCacheContext(d);if(d.supportsStreaming||e.url)this.onMediaDocumentLoad(c);else{let e=this.waitingDocumentsForLoad[d.id];e||(e=this.waitingDocumentsForLoad[d.id]=new Set),e.add(c),C.a.downloadDoc(d)}}),c}getMedia(e,t,s){const i=(s?this.scheduled:this.media).get(e);return null==i?void 0:i.get(t)}handleSafariStreamable(e){e.addEventListener("play",()=>{const t=e.currentTime;e.addEventListener("progress",()=>{e.currentTime=e.duration-1,e.addEventListener("progress",()=>{e.currentTime=t,e.paused||e.play()},{once:!0})},{once:!0})})}resolveWaitingForLoadMedia(e,t,s){const i=s?this.waitingScheduledMediaForLoad:this.waitingMediaForLoad,n=i.get(e);if(!n)return;const a=n.get(t);a&&(a.resolve(),n.delete(t),n.size||i.delete(e))}isSafariBuffering(e){return!!e.safariBuffering}setSafariBuffering(e,t){e.safariBuffering=t}setNewMediadata(e,t=this.playingMedia){var s;return me(this,void 0,void 0,(function*(){yield Object(pe.e)(t,void 0,!1);const n=i.a.getMediaFromMessage(e),a=[],l="voice"===n.type||"round"===n.type;let c="",h="";if(null===(s=n.thumbs)||void 0===s?void 0:s.length){const s=n.thumbs[n.thumbs.length-1];if(!s.bytes){const i=ce.a.getCacheContext(n,s.type);if(i.url)a.push({src:i.url,sizes:`${s.w}x${s.h}`,type:"image/jpeg"});else{r.a.preloadPhoto(n,s).then(()=>{this.playingMedia===t&&i.url&&this.setNewMediadata(e)})}}}else if(l){const s=e.fromId||e.peerId,i=o.a.getPeerPhoto(s);if(i){const n=d.a.loadAvatar(s,i,"photo_small");if(n.cached){const e=yield n.loadPromise;a.push({src:e,sizes:"160x160",type:"image/jpeg"})}else n.loadPromise.then(s=>{this.playingMedia===t&&s&&this.setNewMediadata(e)})}c=o.a.getPeerTitle(s,!0,!1),h=T.c.format("voice"===n.type?"AttachAudio":"AttachRound",!0)}if(!l){const e=n.attributes.find(e=>"documentAttributeAudio"===e._);c=e&&e.title||n.file_name,h=e&&e.performer}a.length||(ae.b?he.a?a.push({src:"assets/img/apple-touch-icon-precomposed.png",sizes:"180x180",type:"image/png"}):a.push({src:"assets/img/apple-touch-icon.png",sizes:"180x180",type:"image/png"}):[72,96,144,192,256,384,512].forEach(e=>{const t=`${e}x${e}`;a.push({src:`assets/img/android-chrome-${t}.png`,sizes:t,type:"image/png"})}));const p=new MediaMetadata({title:c,artist:h,artwork:a});navigator.mediaSession.metadata=p}))}getMessageByMedia(e){const t=this.mediaDetails.get(e),{peerId:s,mid:n}=t;return t.isScheduled?i.a.getScheduledMessageByPeer(s,n):i.a.getMessageByPeer(s,n)}getPlayingDetails(){const{playingMedia:e}=this;if(!e)return;const t=this.getMessageByMedia(e);return{doc:i.a.getMediaFromMessage(t),message:t,media:e,playbackParams:this.getPlaybackParams()}}toggle(e){return!!this.playingMedia&&(void 0===e&&(e=this.playingMedia.paused),this.playingMedia.paused===e&&(e?this.playingMedia.play():this.playingMedia.pause(),!0))}willBePlayed(e){this.willBePlayedMedia=e}setSearchContext(e){return!Object(ge.a)(this.searchContext,e)&&(this.searchContext=Object(ue.a)(e),!0)}getSearchContext(){return this.searchContext}setTargets(e,t,s){this.listLoader?this.listLoader.reset():this.listLoader=new L({loadCount:10,loadWhenLeft:5,processItem:e=>(this.addMedia(e,!1),{peerId:e.peerId,mid:e.mid}),onJump:(e,t)=>{this.playItem(e)},onEmptied:()=>{a.a.dispatchEvent("media_stop"),this.stop()}});const i=void 0===this.searchContext.folderId;t?this.listLoader.setTargets(t,s,i):this.listLoader.reverse=i,this.listLoader.setSearchContext(this.searchContext),this.listLoader.current=e,this.listLoader.load(!0),this.listLoader.load(!1)}getPlaybackMediaTypeFromMessage(e){const t=i.a.getMediaFromMessage(e);let s="audio";return(null==t?void 0:t.type)&&("voice"===t.type||"round"===t.type?s="voice":"video"===t.type&&(s="video")),s}setMedia(e,t){const s=this.getPlaybackMediaTypeFromMessage(t);this._playbackRate=this.playbackRates[s],this.playingMedia=e,this.playingMediaType=s,this.playingMedia.volume=this.volume,this.playingMedia.muted=this.muted,this.playingMedia.playbackRate=this.playbackRate,"audio"===s&&(this.playingMedia.loop=this.loop),"mediaSession"in navigator&&this.setNewMediadata(t)}setSingleMedia(e,t){const s=this.playingMedia,i=this.pause();return this.willBePlayed(void 0),e?this.setMedia(e,t):this.playingMedia=void 0,this.toggleSwitchers(!1),()=>{this.toggleSwitchers(!0),s&&(this.mediaDetails.get(s)?this.setMedia(s,this.getMessageByMedia(s)):this.next()||this.previous()),e&&this.playingMedia===e&&this.stop(),i&&this.play()}}toggleSwitchers(e){this.lockedSwitchers=!e}};le.a.appMediaPlaybackController=ve;var fe=ve,ye=s(121);function we(e,t,s,i){const n=e=>{s({x:e.pageX,y:e.pageY,event:e})},a=t=>{document.removeEventListener("mousemove",n),e.addEventListener("mousedown",o,{once:!0}),i&&i({x:t.pageX,y:t.pageY,event:t})},o=s=>{0===s.button?(t({x:s.pageX,y:s.pageY,event:s}),n(s),document.addEventListener("mousemove",n),document.addEventListener("mouseup",a,{once:!0})):e.addEventListener("mousedown",o,{once:!0})};e.addEventListener("mousedown",o,{once:!0});const r=e=>{e.preventDefault(),s({x:e.touches[0].clientX,y:e.touches[0].clientY,isTouch:!0,event:e})},l=t=>{document.removeEventListener("touchmove",r),e.addEventListener("touchstart",c,{passive:!1,once:!0}),i&&i({x:t.touches[0].clientX,y:t.touches[0].clientY,isTouch:!0,event:t})},c=e=>{t({x:e.touches[0].clientX,y:e.touches[0].clientY,isTouch:!0,event:e}),r(e),document.addEventListener("touchmove",r,{passive:!1}),document.addEventListener("touchend",l,{passive:!1,once:!0})};return e.addEventListener("touchstart",c,{passive:!1,once:!0}),()=>{e.removeEventListener("mousedown",o),document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",a),e.removeEventListener("touchstart",c),document.removeEventListener("touchmove",r),document.removeEventListener("touchend",l)}}var Se=s(103);class Le{constructor(e,t=0){this.mousedown=!1,this.events={},this.withTransition=!1,this.useTransform=!1,this.vertical=!1,this.onMouseMove=e=>{this.scrub(e)},this.onMouseDown=e=>{var t;this.rect=this.container.getBoundingClientRect(),this.mousedown=!0,this.scrub(e),this.container.classList.add("is-focused"),(null===(t=this.events)||void 0===t?void 0:t.onMouseDown)&&this.events.onMouseDown(e)},this.onMouseUp=e=>{var t;this.mousedown=!1,this.container.classList.remove("is-focused"),(null===(t=this.events)||void 0===t?void 0:t.onMouseUp)&&this.events.onMouseUp(e)},this.onInput=()=>{var e;const t=+this.seek.value;this.setFilled(t),(null===(e=this.events)||void 0===e?void 0:e.onScrub)&&this.events.onScrub(t)},Object(w.a)(this,e),this.container=document.createElement("div"),this.container.classList.add("progress-line"),this.useTransform?this.container.classList.add("use-transform"):this.withTransition&&this.container.classList.add("with-transition"),this.filled=document.createElement("div"),this.filled.classList.add("progress-line__filled");const s=this.seek=document.createElement("input");s.classList.add("progress-line__seek"),s.type="range",s.step=""+this.step,s.min=""+this.min,s.max=""+this.max,s.value=""+t,t&&this.setProgress(t);const i=""+this.step,n=i.indexOf(".");this.decimals=-1===n?0:i.length-n-1,this.container.append(this.filled,s)}get value(){return+this.seek.value}setHandlers(e){this.events=e}setListeners(){this.seek.addEventListener("input",this.onInput),this._removeListeners=we(this.container,this.onMouseDown,this.onMouseMove,this.onMouseUp)}setProgress(e){this.seek.value=""+e,this.setFilled(+this.seek.value)}addProgress(e){this.seek.value=""+(+this.seek.value+e),this.setFilled(+this.seek.value)}setFilled(e){let t=(e-this.min)/(this.max-this.min);t=Object(Se.a)(t,0,1),this.useTransform?this.filled.style.transform=`scaleX(${t})`:this.filled.style.width=100*t+"%"}scrub(e){var t;const s=this.vertical?this.rect.height:this.rect.width,i=Object(Se.a)(this.vertical?-(e.y-this.rect.bottom):e.x-this.rect.left,0,s);let n=this.min+i/s*(this.max-this.min);return n-this.min<(this.max-this.min)/2&&(n-=this.step/10),n=+n.toFixed(this.decimals),n=Object(Se.a)(n,this.min,this.max),this.setProgress(n),(null===(t=this.events)||void 0===t?void 0:t.onScrub)&&this.events.onScrub(n),n}removeListeners(){this._removeListeners&&(this._removeListeners(),this._removeListeners=null),this.seek.removeEventListener("input",this.onInput),this.events={}}}const Ce=e=>{if(e.element)return e.element;const{icon:t,text:s,onClick:i,checkboxField:n,noCheckboxClickListener:a}=e,o=document.createElement("div");o.className="btn-menu-item rp-overflow"+(t?" tgico-"+t:""),Object(te.a)(o);let r=e.textElement;r||(r=e.textElement=s?Object(T.d)(s,e.textArgs):document.createElement("span"),e.regularText&&(r.innerHTML=e.regularText)),r.classList.add("btn-menu-item-text"),o.append(r);const d=!!n||!!e.keepOpen;return i&&Object(l.b)(o,e=>{Object(c.a)(e);!1!==i(e)&&(d||Object(ee.c)(),n&&!a&&(n.checked="radio"===n.input.type||!n.checked))},e.options),n&&o.append(n.label),e.element=o};var Me=(e,t)=>{const s=document.createElement("div");s.classList.add("btn-menu"),t&&e.forEach(e=>{e.options?e.options.listenerSetter=t:e.options={listenerSetter:t}});const i=e.map(Ce);return s.append(...i),s};const Ie=(e,t,s,i)=>{((null==s?void 0:s.listenerSetter)?s.listenerSetter.add(e):e.addEventListener.bind(e))(l.a,s=>{if(!e.classList.contains("btn-menu-toggle"))return!1;const n=e.querySelector(".btn-menu");Object(c.a)(s),e.classList.contains("menu-open")?Object(ee.c)():(t&&t(s),Object(ee.d)(n,i))})};var Ee=(e={},t,s,i,n)=>{var a;e.asDiv=!0;const o=null!==(a=e.container)&&void 0!==a?a:N("more",e);o.classList.add("btn-menu-toggle");const r=Me(s,e.listenerSetter);return r.classList.add(t),Ie(o,i,e,n),o.append(r),o},Pe=s(33);class ke extends D.a{constructor(){super(!1),this.hideControls=(e=!1)=>{if(e)return void(this.hideControlsTimeout||(this.hideControlsTimeout=window.setTimeout(this.hideControls,3e3)));clearTimeout(this.hideControlsTimeout),this.hideControlsTimeout=0;const t=this.element.classList.contains("show-controls");if(!1!==this.controlsLocked){if(this.canHideControls&&!this.canHideControls()||!t||this.controlsLocked)return}else if(!t)return;this.dispatchEvent("toggleControls",!1),this.element.classList.remove("show-controls")},this.showControls=(e=!0)=>{this.hideControlsTimeout?(clearTimeout(this.hideControlsTimeout),this.hideControlsTimeout=0):this.element.classList.contains("show-controls")||!1===this.controlsLocked||(this.dispatchEvent("toggleControls",!0),this.element.classList.add("show-controls")),e&&!this.controlsLocked&&(this.hideControlsTimeout=window.setTimeout(this.hideControls,3e3))},this.toggleControls=e=>{const t=this.element.classList.contains("show-controls");if(void 0===e)t?this.hideControls():this.showControls();else{if(e===t)return;!1===e?this.hideControls():this.showControls()}},this.hideControlsTimeout=0}setup(e){Object(w.a)(this,e);const{listenerSetter:t,element:s}=this;he.a?t.add(s)("click",e=>{this.ignoreClickClassName&&Object(Pe.a)(e.target,this.ignoreClickClassName)||this.toggleControls()}):(t.add(s)("mousemove",()=>{this.showControls()}),t.add(s)("mouseenter",()=>{this.showControls(!1)}),t.add(s)("mouseleave",e=>{e.relatedTarget&&this.showOnLeaveToClassName&&Object(Pe.a)(e.relatedTarget,this.showOnLeaveToClassName)?this.showControls(!1):this.hideControls()}))}lockControls(e){this.controlsLocked=e,this.element.classList.toggle("disable-hover",!1===e),this.toggleControls(e)}}var Te=s(123);function xe(e,t=!1){const s=parseInt(e+"",10),i=Math.floor(s/3600);let n=Math.floor((s-3600*i)/60),a=s-3600*i-60*n;return i&&(t=!0),n<10&&(n=t?"0"+n:n),a<10&&(a="0"+a),(i?i+":":"")+n+":"+a}class Ae extends Le{constructor(e,t,s,i){super({step:1e3/60/1e3,min:0,max:1,withTransition:s,useTransform:i},0),this.progressRAF=0,this.onLoadedData=()=>{this.max=this.media.duration,this.seek.setAttribute("max",""+this.max)},this.onEnded=()=>{this.setProgress()},this.onPlay=()=>{let e=()=>{this.setProgress(),this.progressRAF=this.media.paused?0:window.requestAnimationFrame(e)};this.progressRAF&&window.cancelAnimationFrame(this.progressRAF),this.streamable&&this.setLoadProgress(),this.progressRAF=window.requestAnimationFrame(e)},this.onTimeUpdate=()=>{this.media.paused&&(this.setProgress(),this.streamable&&this.setLoadProgress())},this.onProgress=e=>{this.setLoadProgress()},e&&this.setMedia(e,t)}setMedia(e,t=!1){this.media&&this.removeListeners(),t&&!this.filledLoad?(this.filledLoad=document.createElement("div"),this.filledLoad.classList.add("progress-line__filled","progress-line__loaded"),this.container.prepend(this.filledLoad)):this.filledLoad&&this.filledLoad.classList.toggle("hide",!t),this.media=e,this.streamable=t,(!e.paused||e.currentTime>0)&&this.onPlay();let s=!1;this.setSeekMax(),this.setListeners(),this.setHandlers({onMouseDown:()=>{s=!this.media.paused,s&&this.media.pause()},onMouseUp:e=>{s&&this.media.play()}})}scrub(e){const t=super.scrub(e);return this.media.currentTime=t,t}setLoadProgress(){if(fe.isSafariBuffering(this.media))return;const e=this.media.buffered,t=e.length,s=this.media.currentTime;let i=0,n=0;for(let a=0;a=t&&t>=i&&(i=t,n=e.end(a))}const a=this.media.duration?n/this.media.duration:0;this.filledLoad.style.width=100*a+"%"}setSeekMax(){this.max=this.media.duration||0,this.max>0?this.onLoadedData():this.media.addEventListener("loadeddata",this.onLoadedData)}setProgress(){if(fe.isSafariBuffering(this.media))return;const e=this.media.currentTime;super.setProgress(e)}setListeners(){super.setListeners(),this.media.addEventListener("ended",this.onEnded),this.media.addEventListener("play",this.onPlay),this.media.addEventListener("timeupdate",this.onTimeUpdate),this.streamable&&this.media.addEventListener("progress",this.onProgress)}removeListeners(){super.removeListeners(),this.media&&(this.media.removeEventListener("loadeddata",this.onLoadedData),this.media.removeEventListener("ended",this.onEnded),this.media.removeEventListener("play",this.onPlay),this.media.removeEventListener("timeupdate",this.onTimeUpdate),this.streamable&&this.media.removeEventListener("progress",this.onProgress)),this.progressRAF&&(window.cancelAnimationFrame(this.progressRAF),this.progressRAF=0)}}class Oe extends Le{constructor(e,t=!1){super({step:.01,min:0,max:1,vertical:t},1),this.listenerSetter=e,this.vertical=t,this.onMuteClick=e=>{e&&Object(c.a)(e),fe.muted=!fe.muted},this.setVolume=()=>{const{volume:e,muted:t}=fe;let s;s=!e||t?0:e>.5?3:e>0&&e<.25?1:2,Oe.ICONS.forEach(e=>this.icon.classList.remove("tgico-"+e)),this.icon.classList.add("tgico-"+Oe.ICONS[s]),this.mousedown||this.setProgress(t?0:e)},this.setListeners(),this.setHandlers({onScrub:e=>{const t=Math.max(Math.min(e,1),0);fe.muted=!1,fe.volume=t}});const s=this.btn=document.createElement("div");s.classList.add("btn-icon","player-volume");const i=this.icon=document.createElement("span");i.classList.add("player-volume__icon"),s.append(i,this.container),Object(l.b)(i,this.onMuteClick,{listenerSetter:this.listenerSetter}),this.listenerSetter.add(a.a)("media_playback_params",this.setVolume),this.setVolume()}}Oe.ICONS=["volume_off","volume_mute","volume_down","volume_up"];class _e extends ke{constructor({video:e,play:t=!1,streamable:s=!1,duration:i,onPlaybackRackMenuToggle:n}){if(super(),this.video=e,this.wrapper=document.createElement("div"),this.wrapper.classList.add("ckin__player"),this.onPlaybackRackMenuToggle=n,this.listenerSetter=new R.a,this.setup({element:this.wrapper,listenerSetter:this.listenerSetter,canHideControls:()=>!(this.video.paused||this.playbackRateButton&&this.playbackRateButton.classList.contains("menu-open")),showOnLeaveToClassName:"media-viewer-caption",ignoreClickClassName:"ckin__controls"}),e.parentNode.insertBefore(this.wrapper,e),this.wrapper.appendChild(e),this.skin="default",this.stylePlayer(i),this.setBtnMenuToggle(),"default"===this.skin){const t=this.wrapper.querySelector(".default__controls.ckin__controls");this.progress=new Ae(e,s),t.prepend(this.progress.container)}if(t){e.play().catch(t=>{"NotAllowedError"===t.name&&(e.muted=!0,e.autoplay=!0,e.play())}).finally(()=>{this.wrapper.classList.toggle("is-playing",!this.video.paused)})}}stylePlayer(e){const{wrapper:t,video:s,skin:i,listenerSetter:n}=this;t.classList.add(i);const o=this.buildControls();let r;if(t.insertAdjacentHTML("beforeend",o),"default"===i){this.playbackRateButton=this.wrapper.querySelector(".playback-rate");const e=t.querySelectorAll(".toggle"),i=t.querySelector(".fullscreen"),o=t.querySelector("#time-elapsed");r=t.querySelector("#time-duration"),r.innerHTML=xe(0|s.duration);const l=new Oe(n),d=t.querySelector(".left-controls");l.btn.classList.remove("btn-icon"),d.insertBefore(l.btn,o.parentElement),Array.from(e).forEach(e=>{n.add(e)("click",()=>{this.togglePlay()})}),he.a||(n.add(s)("click",()=>{this.togglePlay()}),n.add(document)("keydown",e=>{if(a.a.overlaysActive>1)return;const{key:s,code:i}=e;let n=!0;if("KeyF"===i)this.toggleFullScreen();else if("KeyM"===i)fe.muted=!fe.muted;else if("Space"===i)this.togglePlay();else if(!e.altKey||"Equal"!==i&&"Minus"!==i)!t.classList.contains("ckin__fullscreen")||"ArrowLeft"!==s&&"ArrowRight"!==s?n=!1:"ArrowLeft"===s?fe.seekBackward({action:"seekbackward"}):fe.seekForward({action:"seekforward"});else{const e="Equal"===i?1:-1,t=fe.playbackRate,s=_e.PLAYBACK_RATES.indexOf(t)+e;s>=0&&s<_e.PLAYBACK_RATES.length&&(fe.playbackRate=_e.PLAYBACK_RATES[s])}return n?(Object(c.a)(e),!1):void 0})),n.add(s)("dblclick",()=>{he.a||this.toggleFullScreen()}),n.add(i)("click",()=>{this.toggleFullScreen()}),Object(Te.a)(t,this.onFullScreen.bind(this,i),n),n.add(s)("timeupdate",()=>{o.innerHTML=xe(0|s.currentTime)}),n.add(s)("play",()=>{t.classList.add("played"),he.a||n.add(s)("play",()=>{this.hideControls(!0)})},{once:!0}),n.add(s)("pause",()=>{this.showControls(!1)}),n.add(a.a)("media_playback_params",()=>{this.setPlaybackRateIcon()})}n.add(s)("play",()=>{t.classList.add("is-playing")}),n.add(s)("pause",()=>{t.classList.remove("is-playing")}),s.duration||e?r.innerHTML=xe(Math.round(s.duration||e)):Object(pe.e)(s).then(()=>{r.innerHTML=xe(Math.round(s.duration))})}togglePlay(){this.video[this.video.paused?"play":"pause"]()}buildControls(){const e=this.skin;if("default"===e)return`\n \n \n \n \n \n \n \n 0:00\n / \n 0:00\n \n \n \n \n \n \n \n `}setBtnMenuToggle(){const e=_e.PLAYBACK_RATES.map((e,t)=>({regularText:e+"x",onClick:()=>{fe.playbackRate=e}})),t=Me(e);t.classList.add("top-left"),Ie(this.playbackRateButton,this.onPlaybackRackMenuToggle?()=>{this.onPlaybackRackMenuToggle(!0)}:void 0,void 0,this.onPlaybackRackMenuToggle?()=>{this.onPlaybackRackMenuToggle(!1)}:void 0),this.playbackRateButton.append(t),this.setPlaybackRateIcon()}setPlaybackRateIcon(){const e=this.playbackRateButton;_e.PLAYBACK_RATES_ICONS.forEach(t=>{t="tgico-"+t,e.classList.remove(t)});let t=_e.PLAYBACK_RATES.indexOf(fe.playbackRate);-1===t&&(t=_e.PLAYBACK_RATES.indexOf(1)),e.classList.add("tgico-"+_e.PLAYBACK_RATES_ICONS[t])}toggleFullScreen(){const e=this.wrapper;if(ae.c){const e=this.video;return e.webkitEnterFullscreen(),void e.enterFullscreen()}Object(Te.d)()?Object(Te.b)():Object(Te.e)(e)}onFullScreen(e){const t=Object(Te.d)();this.wrapper.classList.toggle("ckin__fullscreen",t),t?(e.classList.remove("tgico-fullscreen"),e.classList.add("tgico-smallscreen"),e.setAttribute("title","Exit Full Screen")):(e.classList.remove("tgico-smallscreen"),e.classList.add("tgico-fullscreen"),e.setAttribute("title","Full Screen"))}removeListeners(){super.cleanup(),this.listenerSetter.removeAll(),this.progress.removeListeners(),this.onPlaybackRackMenuToggle=void 0}}_e.PLAYBACK_RATES=[.5,1,1.5,2],_e.PLAYBACK_RATES_ICONS=["playback_05","playback_1x","playback_15","playback_2x"];var Fe=s(134),je=s(39),De=s(96),Re=s(35);function Be(e){return function(e,t){let s,i=!1;return(...n)=>{s=n,i||(i=!0,e(()=>{i=!1,t(...s)}))}}(Re.b,e)}var Ne=s(20);function Ue(e,t=2){if(0===e)return Object(T.d)("FileSize.B",[0]);const s=t<0?0:t,i=Math.floor(Math.log(e)/Math.log(1024));return Object(T.d)(["FileSize.B","FileSize.KB","FileSize.MB","FileSize.GB"][i],[parseFloat((e/Math.pow(1024,i)).toFixed(s))])}var He=s(112);function ze(e){e.classList.add("is-voice");const t=e.message,s=i.a.getMediaFromMessage(t);t.pFlags.out&&e.classList.add("is-out");let n=s.attributes.find(e=>"documentAttributeAudio"===e._).waveform||new Uint8Array([]);n=function(e){e instanceof Uint8Array||(e=new Uint8Array(e));const t=8*e.length/5|0;if(!t)return new Uint8Array([]);let s;try{const i=new DataView(e.buffer);s=new Uint8Array(t);for(let e=0;e>n&31}}catch(e){s=new Uint8Array([])}return s}(n.slice(0,63));const{svg:a,container:o,availW:r}=function(e,t){const s=b.b.isMobile?16:23,i=b.b.isMobile?152:190,n=b.b.isMobile?190:256,a=Object(Se.a)(t/60*n,i,n),o=document.createElementNS("http://www.w3.org/2000/svg","svg");o.classList.add("audio-waveform-bars"),o.setAttributeNS(null,"width",""+a),o.setAttributeNS(null,"height",""+s),o.setAttributeNS(null,"viewBox",`0 0 ${a} ${s}`);const r=Math.max(...e),l=e.length?e.length:100,c=Math.min(a/4|0,l);let d=0;const h=s-4;let p="";for(let t=0,i=0,n=0;t=l){n=n+c-l,n<(c+1)/2&&d\n `,i+=4,d=n<(c+1)/2?0:a}else d{let t=e.audio;const s=()=>{d.style.width=t.currentTime/t.duration*100+"%"};(!t.paused||t.currentTime>0&&t.currentTime!==t.duration)&&s();const i=Be(s);return e.addAudioListener("timeupdate",i),e.addAudioListener("ended",i),e.addAudioListener("play",()=>{Object(He.b)(()=>!!t&&(s(),!t.paused),e)}),e.readyPromise.then(()=>{let e=!1,s=!1;function i(e){let s;if(e instanceof MouseEvent)s=e.offsetX;else{const t=e.target.getBoundingClientRect();s=e.targetTouches[0].pageX-t.left}const i=s/r*t.duration;t.currentTime=i}u.addEventListener("mouseleave",i=>{e&&(t.play(),e=!1),s=!1}),u.addEventListener("mousemove",t=>{s=!0,e&&i(t)}),u.addEventListener("mousedown",s=>{s.preventDefault(),0===s.button&&(t.paused||t.pause(),i(s),e=!0)}),u.addEventListener("mouseup",i=>{s&&e&&(t.play(),e=!1)}),Object(l.b)(u,e=>{Object(c.a)(e),t.paused||i(e)})},je.a),()=>{u.remove(),u=null,t=null}}}function Ve(e=!0){const t=new ye.a({cancelable:!0,tryAgainOnFail:e});return t.construct(),e||(t.circle.setAttributeNS(null,"r","23"),t.totalLength=143.58203125),t}a.a.addEventListener("messages_media_read",({mids:e,peerId:t})=>{e.forEach(e=>{const s=`[data-mid="${e}"][data-peer-id="${t}"]`;Array.from(document.querySelectorAll(`audio-element.is-unread${s}, .media-round.is-unread${s}`)).forEach(e=>{e.classList.remove("is-unread")})})});const Ke=(e,t)=>{let s,i;const n=!e.classList.contains("search-super-item"),a=Object(Pe.a)(e,n?"bubbles-inner":"tabs-tab");if(a){const t=':not([data-is-outgoing="1"])',o=".audio:not(.is-voice)"+t;let r;if(r=e.matches(o)?[o]:[".audio.is-voice"+t,".media-round"+t],n){const e=".bubble:not(.webpage) ";r=r.map(t=>e+t)}const l=r.join(", "),c=Array.from(a.querySelectorAll(l)),d=c.indexOf(e),h=c.map(e=>({peerId:e.dataset.peerId.toPeerId(),mid:+e.dataset.mid}));s=h.slice(0,d),i=h.slice(d+1)}return(i.length&&i[0].midt)&&([s,i]=[i.reverse(),s.reverse()]),[s,i]};class Ge extends HTMLElement{constructor(){super(...arguments),this.withTime=!1,this.voiceAsMusic=!1,this.showSender=!1,this.listenerSetter=new R.a}render(){var e,t;this.classList.add("audio"),this.dataset.mid=""+this.message.mid,this.dataset.peerId=""+this.message.peerId;const s=i.a.getMediaFromMessage(this.message),n="voice"===s.type,a=!this.voiceAsMusic&&n,o=this.message.pFlags.is_outgoing,r=o&&this.preloader,d=xe(0|s.duration);this.innerHTML='\n \n \n \n \n \n ';const h=this.firstElementChild,p=document.createElement("div");p.classList.add("audio-download");"audio"!==s.type&&this.message&&this.message.pFlags.media_unread&&this.classList.add("is-unread"),r&&(this.classList.add("is-outgoing"),this.append(p));const u=a?ze(this):function(e){const t=e.withTime,s=e.message,n=i.a.getMediaFromMessage(s),a="voice"===n.type||"round"===n.type,o=document.createElement("div");if(o.classList.add("audio-description"),!a){const a=[];n.audioPerformer&&a.push(Object(De.a)(n.audioPerformer)),t?a.push(Object(ne.d)(s.date)):a.length||a.push(Ue(n.size)),e.showSender&&a.push(i.a.wrapSenderToPeer(s)),o.append(...Object(T.g)(a," • "))}e.insertAdjacentHTML("beforeend",'\n \n \n \n ');const r=e.querySelector(".audio-title"),l=new Fe.a;l.dataset.fontWeight=e.dataset.fontWeight,l.dataset.sizeType=e.dataset.sizeType,a?l.append(i.a.wrapSenderToPeer(s)):l.innerHTML=n.audioTitle||n.fileName,r.append(l),e.showSender&&r.append(i.a.wrapSentTime(s));const c=e.querySelector(".audio-subtitle");return c.append(o),()=>{let t=!1,s=new Ae(e.audio,n.supportsStreaming);e.addAudioListener("ended",()=>{e.classList.remove("audio-show-progress"),c.lastChild.replaceWith(o),t=!1});const i=()=>{t||(e.classList.add("audio-show-progress"),t=!0,s&&c.lastChild.replaceWith(s.container))};return e.addAudioListener("play",i),(!e.audio.paused||e.audio.currentTime>0)&&i(),()=>{s.removeListeners(),s.container.remove(),s=null}}}(this),g=this.querySelector(".audio-time");g.innerHTML=d;const m=this.onLoad=e=>{this.onLoad=void 0;const t=this.audio=fe.addMedia(this.message,e),s=this.readyPromise=Object(ie.a)();this.audio.readyState>=this.audio.HAVE_CURRENT_DATA?s.resolve():this.addAudioListener("canplay",()=>s.resolve(),{once:!0}),this.onTypeDisconnect=u();const i=()=>xe(0|t.currentTime)+(a?" / "+d:""),n=()=>{g.innerText=i(),h.classList.toggle("playing",!t.paused)};(!t.paused||t.currentTime>0&&t.currentTime!==t.duration)&&n();const o=(e,s=t.paused)=>{if(e&&Object(c.a)(e),s){const e=!!this.searchContext;if(fe.setSearchContext(this.searchContext||{peerId:Ne.c,inputFilter:{_:"inputMessagesFilterEmpty"},useSearch:!1})){const[t,s]=e?Ke(this,this.message.mid):[];fe.setTargets({peerId:this.message.peerId,mid:this.message.mid},t,s)}t.play().catch(()=>{})}else t.pause()};return Object(l.b)(h,e=>o(e),{listenerSetter:this.listenerSetter}),this.addAudioListener("ended",()=>{h.classList.remove("playing"),g.innerText=d}),this.addAudioListener("timeupdate",()=>{!t.currentTime&&t.paused||fe.isSafariBuffering(t)||(g.innerText=i())}),this.addAudioListener("pause",()=>{h.classList.remove("playing")}),this.addAudioListener("play",n),o};if(null===(e=s.thumbs)||void 0===e?void 0:e.length){const e=[],t=js({photo:s,message:null,container:h,boxWidth:48,boxHeight:48,loadPromises:this.loadPromises,withoutPreloader:!0,lazyLoadQueue:this.lazyLoadQueue});h.style.width=h.style.height="",t.images.thumb&&e.push(t.images.thumb),t.images.full&&e.push(t.images.full),this.classList.add("audio-with-thumb"),e.forEach(e=>e.classList.add("audio-thumb"))}if(o)r&&(this.dataset.isOutgoing="1",this.preloader.attach(p,!1));else{let e=this.preloader;const i="audio"!==s.type;m(i);const n=t=>{if(this.audio.src)return;fe.resolveWaitingForLoadMedia(this.message.peerId,this.message.mid,this.message.pFlags.is_scheduled);const i=()=>{t&&(fe.willBePlayed(this.audio),ae.g&&!this.audio.autoplay&&(this.audio.autoplay=!0))};if(i(),!e)if(s.supportsStreaming){let e;this.classList.add("corner-download");const t=()=>{const t=Ve(!1),s=Object(ie.a)();s.notifyAll({done:75,total:100}),s.catch(()=>{this.audio.pause(),fe.willBePlayed(void 0)}),s.cancel=()=>{s.cancel=je.a;const e=new Error;e.type="CANCELED",s.reject(e)},t.attach(p,!1,s),e=this.addAudioListener("pause",()=>{s.cancel()},{once:!0}),i()},s=this.addAudioListener("play",t);this.readyPromise.then(()=>{this.listenerSetter.remove(s),this.listenerSetter.remove(e)})}else{e=Ve(),t||(this.readyPromise=Object(ie.a)());const n=()=>{i();const n=C.a.downloadDoc(s);return t||n.then(()=>{this.readyPromise.resolve()}),e.attach(p,!1,n),{download:n}};e.setDownloadFunction(n),n()}this.classList.contains("corner-download")?h.append(p):this.append(p),this.classList.add("downloading"),this.readyPromise.then(()=>{this.classList.remove("downloading"),p.classList.add("downloaded"),setTimeout(()=>{p.remove()},200),fe.willBePlayedMedia===this.audio&&(this.audio.play(),fe.willBePlayed(void 0))})};(null===(t=this.audio)||void 0===t?void 0:t.src)||(i?n(!1):Object(l.b)(h,()=>{n(!0)},{once:!0,capture:!0,passive:!1,listenerSetter:this.listenerSetter}))}}get addAudioListener(){return this.listenerSetter.add(this.audio)}disconnectedCallback(){this.isConnected||(this.onTypeDisconnect&&(this.onTypeDisconnect(),this.onTypeDisconnect=null),this.readyPromise&&this.readyPromise.reject(),this.listenerSetter.removeAll(),this.listenerSetter=null,this.preloader=null)}}customElements.define("audio-element",Ge);var We=s(124);class qe{constructor(e,t){this.className=e,this.fill=t,this.container=document.createElement("div"),this.container.className=e,this.border=document.createElement("div"),this.border.classList.add(e+"-border"),this.content=document.createElement("div"),this.content.classList.add(e+"-content"),this.title=document.createElement("div"),this.title.classList.add(e+"-title"),this.title.setAttribute("dir","auto"),this.subtitle=document.createElement("div"),this.subtitle.classList.add(e+"-subtitle"),this.subtitle.setAttribute("dir","auto"),this.content.append(this.title,this.subtitle),this.container.append(this.border,this.content)}}function $e(e){var t,s;let{title:n,titleEl:a,subtitle:o,subtitleEl:l,mediaEl:c,message:d,loadPromises:h}=e;void 0!==n&&("string"==typeof n&&(n=Object(We.a)(n,140),n=X.a.wrapEmojiText(n)),Object(k.a)(a,n)),h||(h=[]);let p=d&&d.media,u=!1,g=!1;const m=c?Array.from(c.children).slice():[];let b;if(p&&c){if(l.textContent="",l.append(i.a.wrapMessageForReply(d,void 0,void 0,void 0,void 0,!0)),p.webpage&&(p=p.webpage),p.photo||p.document&&(null===(t=p.document.thumbs)||void 0===t?void 0:t.length)){b=ic.chat.bubbles.getMiddleware();const e=ic.chat.bubbles.lazyLoadQueue;if("sticker"===(null===(s=p.document)||void 0===s?void 0:s.type))u=!0,Bs({doc:p.document,div:c,lazyLoadQueue:e,group:ec,width:32,height:32,middleware:b,loadPromises:h});else{const t=p.photo||p.document;g="round"===t.type;try{js({photo:t,container:c,boxWidth:32,boxHeight:32,size:r.a.choosePhotoSize(t,32,32),middleware:b,lazyLoadQueue:e,noBlur:!0,withoutPreloader:!0,loadPromises:h}),u=!0}catch(e){}}}}else d?(l.textContent="",l.append(i.a.wrapMessageForReply(d))):("string"==typeof o&&(o=Object(We.a)(o,140),o=X.a.wrapEmojiText(o)),Object(k.a)(l,o||""));return Promise.all(h).then(()=>{b&&!b()||(m.forEach(e=>e.remove()),c&&c.classList.toggle("is-round",g))}),u}class Qe extends qe{constructor(e){super(e,(e,t="",s)=>{this.mediaEl||(this.mediaEl=document.createElement("div"),this.mediaEl.classList.add(this.className+"-media"));const i=$e({title:e,titleEl:this.title,subtitle:t,subtitleEl:this.subtitle,mediaEl:this.mediaEl,message:s});this.container.classList.toggle("is-media",i),i?this.content.prepend(this.mediaEl):this.mediaEl.remove()}),this.className=e}}function Ye(e,t){return e.reduce((e,t)=>e+t,t)}const Xe=0,Je=1,Ze=2,et=4,tt=8;class st{constructor(e,t,s,i,n=t){this.sizes=e,this.maxWidth=t,this.minWidth=s,this.spacing=i,this.maxHeight=n,this.count=e.length,this.ratios=st.countRatios(e),this.proportions=st.countProportions(this.ratios),this.averageRatio=Ye(this.ratios,1)/this.count,this.maxSizeRatio=t/this.maxHeight}layout(){return this.count?this.count>=5||this.ratios.find(e=>e>2)?new it(this.ratios,this.averageRatio,this.maxWidth,this.minWidth,this.spacing).layout():2===this.count?this.layoutTwo():3===this.count?this.layoutThree():this.layoutFour():[]}layoutTwo(){return"ww"===this.proportions&&this.averageRatio>1.4*this.maxSizeRatio&&this.ratios[1]-this.ratios[0]<.2?this.layoutTwoTopBottom():"ww"===this.proportions||"qq"===this.proportions?this.layoutTwoLeftRightEqual():this.layoutTwoLeftRight()}layoutThree(){return"n"===this.proportions[0]?this.layoutThreeLeftAndOther():this.layoutThreeTopAndOther()}layoutFour(){return"w"===this.proportions[0]?this.layoutFourTopAndOther():this.layoutFourLeftAndOther()}layoutTwoTopBottom(){const e=this.maxWidth,t=Math.round(Math.min(e/this.ratios[0],Math.min(e/this.ratios[1],(this.maxHeight-this.spacing)/2)));return[{geometry:{x:0,y:0,width:e,height:t},sides:tt|Je|Ze},{geometry:{x:0,y:t+this.spacing,width:e,height:t},sides:tt|et|Ze}]}layoutTwoLeftRightEqual(){const e=(this.maxWidth-this.spacing)/2,t=Math.round(Math.min(e/this.ratios[0],Math.min(e/this.ratios[1],1*this.maxHeight)));return[{geometry:{x:0,y:0,width:e,height:t},sides:Je|tt|et},{geometry:{x:e+this.spacing,y:0,width:e,height:t},sides:Je|Ze|et}]}layoutTwoLeftRight(){const e=Math.round(1.5*this.minWidth),t=Math.min(Math.round(Math.max(.4*(this.maxWidth-this.spacing),(this.maxWidth-this.spacing)/this.ratios[0]/(1/this.ratios[0]+1/this.ratios[1]))),this.maxWidth-this.spacing-e),s=this.maxWidth-t-this.spacing,i=Math.min(this.maxHeight,Math.round(Math.min(s/this.ratios[0],t/this.ratios[1])));return[{geometry:{x:0,y:0,width:s,height:i},sides:Je|tt|et},{geometry:{x:s+this.spacing,y:0,width:t,height:i},sides:Je|Ze|et}]}layoutThreeLeftAndOther(){const e=this.maxHeight,t=Math.round(Math.min((this.maxHeight-this.spacing)/2,this.ratios[1]*(this.maxWidth-this.spacing)/(this.ratios[2]+this.ratios[1]))),s=e-t-this.spacing,i=Math.max(this.minWidth,Math.round(Math.min((this.maxWidth-this.spacing)/2,Math.min(t*this.ratios[2],s*this.ratios[1])))),n=Math.min(Math.round(e*this.ratios[0]),this.maxWidth-this.spacing-i);return[{geometry:{x:0,y:0,width:n,height:e},sides:Je|tt|et},{geometry:{x:n+this.spacing,y:0,width:i,height:s},sides:Je|Ze},{geometry:{x:n+this.spacing,y:s+this.spacing,width:i,height:t},sides:et|Ze}]}layoutThreeTopAndOther(){const e=this.maxWidth,t=Math.round(Math.min(e/this.ratios[0],.66*(this.maxHeight-this.spacing))),s=(this.maxWidth-this.spacing)/2,i=Math.min(this.maxHeight-t-this.spacing,Math.round(Math.min(s/this.ratios[1],s/this.ratios[2]))),n=e-s-this.spacing;return[{geometry:{x:0,y:0,width:e,height:t},sides:tt|Je|Ze},{geometry:{x:0,y:t+this.spacing,width:s,height:i},sides:et|tt},{geometry:{x:s+this.spacing,y:t+this.spacing,width:n,height:i},sides:et|Ze}]}layoutFourTopAndOther(){const e=this.maxWidth,t=Math.round(Math.min(e/this.ratios[0],.66*(this.maxHeight-this.spacing))),s=Math.round((this.maxWidth-2*this.spacing)/(this.ratios[1]+this.ratios[2]+this.ratios[3])),i=Math.max(this.minWidth,Math.round(Math.min(.4*(this.maxWidth-2*this.spacing),s*this.ratios[1]))),n=Math.round(Math.max(Math.max(1*this.minWidth,.33*(this.maxWidth-2*this.spacing)),s*this.ratios[3])),a=e-i-n-2*this.spacing,o=Math.min(this.maxHeight-t-this.spacing,s);return[{geometry:{x:0,y:0,width:e,height:t},sides:tt|Je|Ze},{geometry:{x:0,y:t+this.spacing,width:i,height:o},sides:et|tt},{geometry:{x:i+this.spacing,y:t+this.spacing,width:a,height:o},sides:et},{geometry:{x:i+this.spacing+a+this.spacing,y:t+this.spacing,width:n,height:o},sides:Ze|et}]}layoutFourLeftAndOther(){const e=this.maxHeight,t=Math.round(Math.min(e*this.ratios[0],.6*(this.maxWidth-this.spacing))),s=Math.round((this.maxHeight-2*this.spacing)/(1/this.ratios[1]+1/this.ratios[2]+1/this.ratios[3])),i=Math.round(s/this.ratios[1]),n=Math.round(s/this.ratios[2]),a=e-i-n-2*this.spacing,o=Math.max(this.minWidth,Math.min(this.maxWidth-t-this.spacing,s));return[{geometry:{x:0,y:0,width:t,height:e},sides:Je|tt|et},{geometry:{x:t+this.spacing,y:0,width:o,height:i},sides:Je|Ze},{geometry:{x:t+this.spacing,y:i+this.spacing,width:o,height:n},sides:Ze},{geometry:{x:t+this.spacing,y:i+n+2*this.spacing,width:o,height:a},sides:et|Ze}]}static countRatios(e){return e.map(e=>e.w/e.h)}static countProportions(e){return e.map(e=>e>1.2?"w":e<.8?"n":"q").join("")}}class it{constructor(e,t,s,i,n,a=4*s/3){this.averageRatio=t,this.maxWidth=s,this.minWidth=i,this.spacing=n,this.maxHeight=a,this.ratios=it.cropRatios(e,t),this.count=e.length}static cropRatios(e,t){return e.map(e=>t>1.1?Object(Se.a)(e,1,2.75):Object(Se.a)(e,.6667,1))}layout(){let e=new Array(this.count),t=[];const s=(e,t)=>{const s=Ye(this.ratios.slice(e,e+t),0);return(this.maxWidth-(t-1)*this.spacing)/s},i=e=>{let i=[],n=0;for(let t of e)i.push(s(n,t)),n+=t;t.push({lineCounts:e,heights:i})};for(let e=1;e!==this.count;++e){const t=this.count-e;e>3||t>3||i([e,t])}for(let e=1;e!==this.count-1;++e)for(let t=1;t!==this.count-e;++t){const s=this.count-e-t;e>3||t>(this.averageRatio<.85?4:3)||s>3||i([e,t,s])}for(let e=1;e!==this.count-1;++e)for(let t=1;t!==this.count-e;++t)for(let s=1;s!==this.count-e-t;++s){const n=this.count-e-t-s;e>3||t>3||s>3||n>3||i([e,t,s,n])}let n=null,a=0;for(const e of t){const{heights:t,lineCounts:s}=e,i=s.length,o=Ye(t,0)+this.spacing*(i-1),r=Math.min(...t),l=(Math.max(...t),r{for(let e=1;e!==i;++e)if(s[e-1]>s[e])return 1.5;return 1})(),d=Math.abs(o-this.maxHeight)*l*c;(!n||d{if(this.uploadAvatar)return!0;let e=0,t=0,s=0;return this.inputFields.forEach(i=>{i.isValid()&&(i.isChanged()&&++e,i.required&&++s),i.required&&++t}),t===s&&e>0},this.handleChange=()=>{this.nextBtn.classList.toggle("is-visible",this.isChanged())},Object(w.a)(this,e),this.nextBtn?this.nextBtn.classList.contains("btn-corner")||(this.handleChange=()=>{this.nextBtn.toggleAttribute("disabled",!this.isChanged()||this.disabled)}):this.nextBtn=$({icon:"check"}),e.withoutAvatar||(this.avatarElem=document.createElement("avatar-element"),this.avatarElem.classList.add("avatar-placeholder","avatar-"+this.avatarSize),this.avatarElem.updateWithOptions({peerId:this.peerId}),e.doNotEditAvatar||(this.avatarEdit=new q(e=>{this.uploadAvatar=e,this.handleChange(),this.avatarElem.remove()}),this.avatarEdit.container.append(this.avatarElem))),this.inputFields.forEach(e=>{this.listenerSetter.add(e.input)("input",this.handleChange)}),this.handleChange()}get disabled(){return this._disabled}set disabled(e){this._disabled=e,this.inputFields.forEach(t=>t.input.toggleAttribute("disabled",e)),this.handleChange()}lockWithPromise(e,t=!1){this.disabled=!0,e.then(()=>{t&&(this.disabled=!1)},()=>{this.disabled=!1})}}function rt(e,t){const s=document.createElement("form");return e.forEach(e=>{const{container:i,input:n}=e;s.append(i),n.addEventListener("change",e=>{n.checked&&t(n.value,e)})}),s}class lt{constructor(e={}){this.freezed=!1,this.container=document.createElement(e.radioField||e.checkboxField?"label":"div"),this.container.classList.add("row"),this.subtitle=document.createElement("div"),this.subtitle.classList.add("row-subtitle"),this.subtitle.setAttribute("dir","auto"),e.subtitle?"string"==typeof e.subtitle?m(this.subtitle,e.subtitle):this.subtitle.append(e.subtitle):e.subtitleLangKey&&this.subtitle.append(Object(T.d)(e.subtitleLangKey,e.subtitleLangArgs)),this.container.append(this.subtitle);let t=!!e.havePadding;if(e.radioField||e.checkboxField){if(e.radioField&&(this.radioField=e.radioField,this.container.append(this.radioField.label),t=!0),e.checkboxField){this.checkboxField=e.checkboxField;const s=e.checkboxField.label.classList.contains("checkbox-field-toggle");s?(this.container.classList.add("row-with-toggle"),e.titleRight=this.checkboxField.label):(t=!0,this.container.append(this.checkboxField.label)),e.noCheckboxSubtitle||s||this.checkboxField.input.addEventListener("change",()=>{Object(k.a)(this.subtitle,Object(T.d)(this.checkboxField.input.checked?"Checkbox.Enabled":"Checkbox.Disabled"))})}(e.radioField||e.checkboxField).label.classList.add("disable-hover")}if(e.title||e.titleLangKey){let t;const s=e.titleRight||e.titleRightSecondary;if(s?(t=document.createElement("div"),t.classList.add("row-title-row"),this.container.append(t)):t=this.container,this.title=document.createElement("div"),this.title.classList.add("row-title"),this.title.setAttribute("dir","auto"),e.title?"string"==typeof e.title?this.title.innerHTML=e.title:this.title.append(e.title):this.title.append(Object(T.d)(e.titleLangKey)),t.append(this.title),s){const i=this.titleRight=document.createElement("div");i.classList.add("row-title","row-title-right"),e.titleRightSecondary&&i.classList.add("row-title-right-secondary"),"string"==typeof s?i.innerHTML=s:i.append(s),t.append(i)}}e.icon&&(t=!0,this.title.classList.add("tgico","tgico-"+e.icon),this.container.classList.add("row-with-icon")),t&&this.container.classList.add("row-with-padding"),e.navigationTab&&(e.clickable=()=>e.navigationTab.open()),(e.clickable||e.radioField||e.checkboxField)&&("function"==typeof e.clickable&&this.container.addEventListener("click",t=>{this.freezed||e.clickable(t)}),this.container.classList.add("row-clickable","hover-effect"),e.noRipple||Object(te.a)(this.container,void 0,void 0,!0))}createMedia(e){this.container.classList.add("row-with-padding");const t=this.media=document.createElement("div");return t.classList.add("row-media"),e&&t.classList.add("row-media-"+e),this.container.append(t),t}}const ct=(e,t)=>rt(e.map(e=>({container:e.container,input:e.radioField.input})),t);function dt(e){navigator.clipboard?navigator.clipboard.writeText(e):function(e){var t=document.createElement("textarea");t.value=e,t.style.top="0",t.style.left="0",t.style.position="fixed",document.body.appendChild(t),t.focus(),t.select();try{document.execCommand("copy")}catch(e){}document.body.removeChild(t)}(e)}var ht=s(21),pt=s(44);class ut{constructor(e){const t=this.label=document.createElement("label");t.classList.add("radio-field"),e.alignRight&&t.classList.add("radio-field-right");const s=this.input=document.createElement("input");s.type="radio",s.name="input-radio-"+e.name,e.value&&(s.value=e.value,e.stateKey&&(I.c.getState().then(t=>{s.checked=Object(pt.a)(t,e.stateKey)===e.value}),s.addEventListener("change",()=>{I.c.setByKey(e.stateKey,e.value)})));const i=this.main=document.createElement("div");i.classList.add("radio-field-main"),e.text?i.innerHTML=e.text:e.langKey&&Object(T.b)(i,e.langKey),t.append(s,i)}get checked(){return this.input.checked}set checked(e){this.setValueSilently(e);const t=new Event("change",{bubbles:!0,cancelable:!0});this.input.dispatchEvent(t)}setValueSilently(e){this.input.checked=e}}const gt=document.createElement("div");function mt(e){Object(k.a)(gt,e),document.body.append(gt),gt.dataset.timeout&&clearTimeout(+gt.dataset.timeout),gt.dataset.timeout=""+setTimeout(()=>{gt.remove(),delete gt.dataset.timeout},3e3)}function bt(e){mt(Object(T.d)(e.langPackKey,e.langPackArguments))}gt.classList.add("toast");var vt=s(89),ft=s(8);class yt extends O.b{constructor(e){super(e),this.checkUsernameDebounced=Object(vt.a)(this.checkUsername.bind(this),150,!1,!0),e.listenerSetter.add(this.input)("input",()=>{const e=this.getValue();if(e===this.originalValue||!e.length)return this.setState(O.a.Neutral,this.options.label),void(this.options.onChange&&this.options.onChange());X.b.isUsernameValid(e)?this.setState(O.a.Neutral):this.setError(this.options.invalidText),this.input.classList.contains("error")?this.options.onChange&&this.options.onChange():this.checkUsernameDebounced(e)})}getValue(){let e=this.value;return this.options.head&&(e=e.slice(this.options.head.length),this.setValueSilently(this.options.head+e)),e}checkUsername(e){this.checkUsernamePromise||(this.options.peerId?this.checkUsernamePromise=ft.a.invokeApi("channels.checkUsername",{channel:G.a.getChannelInput(this.options.peerId.toChatId()),username:e}):this.checkUsernamePromise=ft.a.invokeApi("account.checkUsername",{username:e}),this.checkUsernamePromise.then(t=>{this.getValue()===e&&(t?this.setState(O.a.Valid,this.options.availableText):this.setError(this.options.takenText))},t=>{if(this.getValue()===e)switch(t.type){case"USERNAME_INVALID":this.setError(this.options.invalidText)}}).then(()=>{this.checkUsernamePromise=void 0,this.options.onChange&&this.options.onChange();const t=this.getValue();t!==e&&this.isValidToChange()&&X.b.isUsernameValid(t)&&this.checkUsername(t)}))}}var wt=s(71),St=s(68);class Lt extends wt.b{constructor(e,t={}){if(super("popup-peer"+(e?" "+e:""),t.buttons&&Object(wt.a)(t.buttons),Object.assign({overlayClosable:!0},t)),this.className=e,t.peerId){const e=new bc;e.classList.add("avatar-32"),e.updateWithOptions({isDialog:!0,peerId:t.peerId}),this.header.prepend(e)}t.noTitle||(t.titleLangKey||!t.title?this.title.append(Object(T.d)(t.titleLangKey||"AppName",t.titleLangArgs)):t.title instanceof HTMLElement?this.title.append(t.title):this.title.innerText=t.title||"");const s=document.createDocumentFragment();if(t.descriptionLangKey||t.description){const e=this.description=document.createElement("p");e.classList.add("popup-description"),t.descriptionLangKey?e.append(Object(T.d)(t.descriptionLangKey,t.descriptionLangArgs)):t.description&&(e.innerHTML=t.description),s.append(e)}t.checkboxes&&(this.container.classList.add("have-checkbox"),t.checkboxes.forEach(e=>{e.withRipple=!1;const t=new St.a(e);e.checkboxField=t,s.append(t.label)}),t.buttons.forEach(e=>{if(e.callback){const s=e.callback;e.callback=()=>{const e=new Set;t.checkboxes.forEach(t=>{t.checkboxField.checked&&e.add(t.text)}),s(e)}}})),this.container.insertBefore(s,this.header.nextElementSibling)}}var Ct=s(76);class Mt extends z{init(){this.container.classList.add("edit-peer-container","group-type-container");const e=G.a.isBroadcast(this.chatId);this.setTitle(e?"ChannelType":"GroupType");const t=new Wn({name:e?"ChannelType":"GroupType"}),s=Object(ht.b)(),i=new lt({radioField:new ut({langKey:e?"ChannelPrivate":"MegaPrivate",name:s,value:"private"}),subtitleLangKey:e?"ChannelPrivateInfo":"MegaPrivateInfo"}),o=new lt({radioField:new ut({langKey:e?"ChannelPublic":"MegaPublic",name:s,value:"public"}),subtitleLangKey:e?"ChannelPublicInfo":"MegaPublicInfo"}),r=ct([i,o],e=>{const t=[d,u];"public"===e&&t.reverse(),t[0].container.classList.remove("hide"),t[1].container.classList.add("hide"),m()}),c=G.a.getChat(this.chatId);t.content.append(r);const d=new Wn({}),h=new lt({title:this.chatFull.exported_invite.link,subtitleLangKey:e?"ChannelPrivateLinkHelp":"MegaPrivateLinkHelp",clickable:()=>{dt(this.chatFull.exported_invite.link),mt(T.c.format("LinkCopied",!0))}}),p=Object(B.a)("btn-primary btn-transparent danger",{icon:"delete",text:"RevokeLink"});Object(l.b)(p,()=>{new Lt("revoke-link",{buttons:[{langKey:"RevokeButton",callback:()=>{const e=Object(Ct.a)([p],!0);n.default.getChatInviteLink(this.chatId,!0).then(t=>{e(),h.title.innerHTML=t})}}],titleLangKey:"RevokeLink",descriptionLangKey:"RevokeAlert"}).show()},{listenerSetter:this.listenerSetter}),d.content.append(h.container,p);const u=new Wn({caption:e?"Channel.UsernameAboutChannel":"Channel.UsernameAboutGroup",noDelimiter:!0}),g=document.createElement("div");g.classList.add("input-wrapper");const m=()=>{const e=i.radioField.checked&&"t.me/"!==v||b.isValidToChange()&&b.input.classList.contains("valid");f.classList.toggle("is-visible",e)},b=new yt({label:"SetUrlPlaceholder",name:"group-public-link",plainText:!0,listenerSetter:this.listenerSetter,availableText:"Link.Available",invalidText:"Link.Invalid",takenText:"Link.Taken",onChange:m,peerId:this.chatId.toPeerId(!0),head:"t.me/"}),v="t.me/"+(c.username||"");g.append(b.container),u.content.append(g);const f=$({icon:"check",className:"is-visible"});this.content.append(f),Object(l.b)(f,()=>{Object(ee.g)(f);const e=o.radioField.checked?b.getValue():"";G.a.migrateChat(this.chatId).then(t=>G.a.updateUsername(t,e)).then(()=>{this.close()})},{listenerSetter:this.listenerSetter}),("t.me/"!==v?o:i).radioField.checked=!0,b.setOriginalValue(v),this.scrollable.append(t.container,d.container,u.container);{const t=new Wn({name:"SavingContentTitle",caption:e?"RestrictSavingContentInfoChannel":"RestrictSavingContentInfoGroup"}),s=new St.a({text:"RestrictSavingContent",withRipple:!0});this.listenerSetter.add(s.input)("change",()=>{const e=s.toggleDisability(!0);G.a.toggleNoForwards(this.chatId,s.checked).then(()=>{e()})});const i=()=>{s.setValueSilently(!!c.pFlags.noforwards)};this.listenerSetter.add(a.a)("chat_update",e=>{this.chatId===e&&i()}),i(),t.content.append(s.label),this.scrollable.append(t.container)}}}var It=s(82);class Et{constructor(e){this.loading=!1,this.loaded=!1,Object(w.a)(this,e),e.scrollable.onScrolledBottom=()=>{this.load()}}load(){return this.loaded?Promise.resolve():this.loading?this.promise:(this.loading=!0,void(this.promise=this.getPromise().then(e=>{this.loading=!1,this.promise=void 0,e?(this.loaded=!0,this.scrollable.onScrolledBottom=null):this.scrollable.checkForTriggers()},()=>{this.promise=void 0,this.loading=!1})))}}var Pt=s(101),kt=s(104),Tt=s(67),xt=s(99),At=s(167),Ot=s(38),_t=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class Ft{constructor(e){this.container=document.createElement("div"),this.list=Oc.createChatList(),this.chatsContainer=document.createElement("div"),this.selected=new Set,this.freezed=!1,this.folderId=0,this.offsetIndex=0,this.query="",this.loadedWhat={},this.renderedPeerIds=new Set,this.peerType=["dialogs"],this.multiSelect=!0,this.rippleEnabled=!0,this.avatarSize=48,this.exceptSelf=!1,this.tempIds={},this.selfPresence="Presence.YourChat",this.needSwitchList=!1,this.onInput=()=>{const e=this.input.value;if(this.query!==e){(this.peerType.includes("contacts")||this.peerType.includes("dialogs"))&&(this.cachedContacts=null),this.peerType.includes("dialogs")&&(this.folderId=0,this.offsetIndex=0);for(let e in this.tempIds)++this.tempIds[e];this.list=Oc.createChatList(),this.promise=null,this.loadedWhat={},this.query=e,this.renderedPeerIds.clear(),this.needSwitchList=!0,this.getMoreResults()}},this.checkForTriggers=()=>{this.scrollable.checkForTriggers()},Object(w.a)(this,e),this.container.classList.add("selector");const t=(this.renderResultsFunc||this.renderResults).bind(this);if(this.renderResultsFunc=e=>(this.needSwitchList&&(this.scrollable.splitUp.replaceWith(this.list),this.scrollable.setVirtualContainer(this.list),this.needSwitchList=!1),e=e.filter(e=>{const t=!this.renderedPeerIds.has(e);return t&&this.renderedPeerIds.add(e),t}),this.filterPeerTypeBy&&(e=e.filter(e=>{if(e.isPeerId()){if(!o.a.getPeer(e).deleted)return this.filterPeerTypeBy.find(t=>o.a[t](e))}return!0})),t(e)),this.input=document.createElement("input"),this.input.classList.add("selector-search-input"),this.placeholder?Object(T.b)(this.input,this.placeholder,void 0,"placeholder"):Object(T.b)(this.input,"SendMessageTo",void 0,"placeholder"),this.input.type="text",this.multiSelect){const e=new Wn({});e.innerContainer.classList.add("selector-search-section");let t=document.createElement("div");t.classList.add("selector-search-container"),this.selectedContainer=document.createElement("div"),this.selectedContainer.classList.add("selector-search"),this.selectedContainer.append(this.input),t.append(this.selectedContainer),this.selectedScrollable=new P.b(t),Object(l.b)(this.selectedContainer,e=>{if(this.freezed)return;let t=e.target;if(t=Object(Pe.a)(t,"selector-user"),!t)return;const s=t.dataset.key,i=this.chatsContainer.querySelector('[data-peer-id="'+s+'"]');i?i.click():this.remove(s.toPeerId())}),e.content.append(t),this.container.append(e.container)}this.chatsContainer.classList.add("chatlist-container");const s=new Wn({name:this.sectionNameLangPackKey,noShadow:!0});s.content.append(this.list),this.chatsContainer.append(s.container),this.scrollable=new P.b(this.chatsContainer),this.scrollable.setVirtualContainer(this.list),Object(l.b)(this.chatsContainer,e=>{const t=Object(kt.a)(e.target,"data-peer-id");if(Object(c.a)(e),!t)return;if(this.freezed)return;let s=t.dataset.peerId;if(s=s.isPeerId()?s.toPeerId():s,!this.multiSelect)return void this.add(s);this.selected.has(s)?this.remove(s):this.add(s);const i=t.querySelector("input");i.checked=!i.checked});const i=Object(vt.a)(this.onInput,200,!1,!0);this.input.addEventListener("input",i),this.scrollable.onScrolledBottom=()=>{this.getMoreResults()},this.scrollable.container.prepend($n()),this.container.append(this.chatsContainer),this.appendTo.append(this.container),setTimeout(()=>{let t=this.getMoreResults();e.onFirstRender&&t.then(()=>{e.onFirstRender()})},0)}renderSaved(){this.exceptSelf||this.offsetIndex||0!==this.folderId||!this.peerType.includes("dialogs")||this.query&&!E.a.testSelfSearch(this.query)||this.renderResultsFunc([a.a.myId])}getTempId(e){return void 0===this.tempIds[e]&&(this.tempIds[e]=0),++this.tempIds[e]}getMoreDialogs(){return _t(this,void 0,void 0,(function*(){if(this.promise)return this.promise;if(this.loadedWhat.dialogs&&this.loadedWhat.archived)return;const e=xt.a.height/72*1.25|0,t=this.getTempId("dialogs"),s=i.a.getConversations(this.query,this.offsetIndex,e,this.folderId,!0).promise;this.promise=s;const n=yield s;if(this.tempIds.dialogs!==t)return;this.promise=null;let o=n.dialogs;if(o.length){const e=o[o.length-1].index||0;o=o.slice(),Object(Ot.a)(o,e=>e.peerId===a.a.myId),this.chatRightsAction&&(o=o.filter(e=>this.filterByRights(e.peerId))),this.renderSaved(),this.offsetIndex=e}if(this.renderResultsFunc(o.map(e=>e.peerId)),n.isEnd){if(!this.loadedWhat.dialogs)return this.renderSaved(),this.loadedWhat.dialogs=!0,this.offsetIndex=0,this.folderId=1,this.getMoreDialogs();if(this.loadedWhat.archived=!0,!this.loadedWhat.contacts)return this.getMoreContacts()}}))}filterByRights(e){return e.isUser()&&("send_messages"!==this.chatRightsAction||E.a.canSendToUser(e))||G.a.hasRights(e.toChatId(),this.chatRightsAction)}getMoreContacts(){return _t(this,void 0,void 0,(function*(){if(this.promise)return this.promise;if(this.loadedWhat.contacts)return;const e=this.peerType.includes("contacts");if(!this.cachedContacts){const t=this.getTempId("contacts"),s=Promise.all([e?E.a.getContactsPeerIds(this.query):[],this.query?E.a.searchContacts(this.query):void 0]);this.promise=s;let[i,n]=yield s;if(this.tempIds.contacts!==t)return;if(n){let t=e?n.my_results.concat(n.results):n.my_results;this.chatRightsAction&&(t=t.filter(e=>this.filterByRights(e))),this.peerType.includes("dialogs")||(t=t.filter(e=>e.isUser())),this.cachedContacts=Object(At.a)(i.concat(t))}else this.cachedContacts=i.slice();Object(V.a)(this.cachedContacts,a.a.myId),this.promise=null}const t=xt.a.height/72*1.25|0,s=this.cachedContacts.splice(0,t);this.renderResultsFunc(s),this.cachedContacts.length||(this.loadedWhat.contacts=!0)}))}getMoreChannelParticipants(){return _t(this,void 0,void 0,(function*(){if(this.promise)return this.promise;if(this.loadedWhat.channelParticipants)return;const e=this.getTempId("channelParticipants"),t=n.default.getChannelParticipants(this.peerId.toChatId(),{_:"channelParticipantsSearch",q:this.query},50,this.list.childElementCount),s=yield t;if(this.tempIds.channelParticipants!==e)return;const i=s.participants.map(e=>G.a.getParticipantPeerId(e));Object(V.a)(i,a.a.myId),this.renderResultsFunc(i),(this.list.childElementCount>=s.count||s.participants.length<50)&&(this.loadedWhat.channelParticipants=!0)}))}getMoreResults(){const e=(()=>{const e=[];return!this.peerType.includes("dialogs")||this.loadedWhat.archived||(e.push(this.getMoreDialogs()),this.loadedWhat.archived)?(!this.peerType.includes("contacts")&&!this.peerType.includes("dialogs")||this.loadedWhat.contacts||e.push(this.getMoreContacts()),this.peerType.includes("channelParticipants")&&!this.loadedWhat.channelParticipants&&e.push(this.getMoreChannelParticipants()),e):e})(),t=Promise.all(e);return e.length&&t.then(this.checkForTriggers),t}renderResults(e){!this.peerType.includes("dialogs")&&this.loadedWhat.contacts&&(e=e.filter(e=>E.a.isNonContactUser(e))),e.forEach(e=>{const{dom:t}=Oc.addDialogNew({dialog:e,container:this.scrollable,drawStatus:!1,rippleEnabled:this.rippleEnabled,avatarSize:this.avatarSize});if(this.multiSelect){const s=this.selected.has(e),i=new St.a;s&&(i.input.checked=!0),t.containerEl.prepend(i.label)}let s;s=e.isAnyChat()?n.default.getChatMembersString(e.toChatId()):e===a.a.myId?Object(T.d)(this.selfPresence):E.a.getUserStatusString(e),t.lastMessageSpan.append(s)})}add(e,t,s=!0){if(this.selected.add(e),!this.multiSelect)return void this.onChange(this.selected.size);this.query.trim()&&(this.input.value="",this.onInput());const i=document.createElement("div");i.classList.add("selector-user","scale-in");const n=new bc;return n.classList.add("selector-user-avatar","tgico","avatar-32"),n.isDialog=!0,i.dataset.key=""+e,e.isPeerId()&&(void 0===t&&(t=new Tt.a({peerId:e.toPeerId(),dialog:!0}).element),n.updateWithOptions({peerId:e})),t&&("string"==typeof t?i.innerHTML=t:(Object(k.a)(i,t),i.append(t))),i.insertAdjacentElement("afterbegin",n),this.selectedContainer.insertBefore(i,this.input),this.onChange&&this.onChange(this.selected.size),s&&this.selectedScrollable.scrollIntoViewNew({element:this.input,position:"center"}),i}remove(e){if(!this.multiSelect)return;const t=this.selectedContainer.querySelector(`[data-key="${e}"]`);t.classList.remove("scale-in"),t.offsetWidth,t.classList.add("scale-out");const s=()=>{this.selected.delete(e),t.remove(),this.onChange&&this.onChange(this.selected.size)};a.a.settings.animationsEnabled?t.addEventListener("animationend",s,{once:!0}):s()}getSelected(){return[...this.selected]}addInitial(e){e.forEach(e=>{this.add(e,void 0,!1)}),window.requestAnimationFrame(()=>{this.selectedScrollable.scrollIntoViewNew({element:this.input,position:"center",forceDirection:Pt.a.Static})})}}var jt=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class Dt extends wt.b{constructor(e){super("popup-forward",null,{closable:!0,overlayClosable:!0,body:!0}),this.selector=new Ft({appendTo:this.body,onChange:()=>jt(this,void 0,void 0,(function*(){const t=this.selector.getSelected(),s=t[t.length-1].toPeerId();if(e.onSelect){const t=e.onSelect(s);if(t instanceof Promise)try{yield t}catch(e){return}}this.selector=null,this.hide()})),peerType:e.peerTypes,onFirstRender:()=>{this.show(),this.selector.checkForTriggers(),he.a||this.selector.input.focus()},chatRightsAction:e.chatRightsAction,multiSelect:!1,rippleEnabled:!1,avatarSize:46,peerId:e.peerId,placeholder:e.placeholder,selfPresence:e.selfPresence}),this.title.append(this.selector.input)}}class Rt extends z{init(){let e;this.container.classList.add("edit-peer-container","user-permissions-container"),this.setTitle("UserRestrictions");{const t=new Wn({name:"UserRestrictionsCanDo"}),s=document.createElement("div");s.classList.add("chatlist-container"),t.content.insertBefore(s,t.title);const i=Oc.createChatList({new:!0});s.append(i);const{dom:n}=Oc.addDialogNew({dialog:this.userId.toPeerId(!1),container:i,drawStatus:!1,rippleEnabled:!0,avatarSize:48});n.lastMessageSpan.append(E.a.getUserStatusString(this.userId));const a=new Nt({chatId:this.chatId,listenerSetter:this.listenerSetter,appendTo:t.content,participant:"channelParticipantBanned"===this.participant._?this.participant:void 0});e=()=>{const e=a.takeOut();"channelParticipantBanned"===this.participant._&&Object(ge.a)(this.participant.banned_rights.pFlags,e.pFlags)||G.a.editBanned(this.chatId,this.participant,e)},this.eventListener.addEventListener("destroy",e,{once:!0}),this.scrollable.append(t.container)}{const t=new Wn({});if("channelParticipantBanned"===this.participant._){const s=Object(B.a)("btn-primary btn-transparent danger",{icon:"delete",text:"GroupPermission.Delete"});Object(l.b)(s,()=>{const t=Object(Ct.a)([s],!0);G.a.clearChannelParticipantBannedRights(this.chatId,this.participant).then(()=>{this.eventListener.removeEventListener("destroy",e),this.close()},()=>{t()})},{listenerSetter:this.listenerSetter}),t.content.append(s)}const s=Object(B.a)("btn-primary btn-transparent danger",{icon:"deleteuser",text:"UserRestrictionsBlock"});Object(l.b)(s,()=>{Object(Ct.a)([s],!0);G.a.kickFromChannel(this.chatId,this.participant).then(()=>{this.eventListener.removeEventListener("destroy",e),this.close()})},{listenerSetter:this.listenerSetter}),t.content.append(s),this.scrollable.append(t.container)}}}var Bt=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class Nt{constructor(e){this.v=[{flags:["send_messages"],text:"UserRestrictionsSend",exceptionText:"UserRestrictionsNoSend"},{flags:["send_media"],text:"UserRestrictionsSendMedia",exceptionText:"UserRestrictionsNoSendMedia"},{flags:["send_stickers","send_gifs"],text:"UserRestrictionsSendStickers",exceptionText:"UserRestrictionsNoSendStickers"},{flags:["send_polls"],text:"UserRestrictionsSendPolls",exceptionText:"UserRestrictionsNoSendPolls"},{flags:["embed_links"],text:"UserRestrictionsEmbedLinks",exceptionText:"UserRestrictionsNoEmbedLinks"},{flags:["invite_users"],text:"UserRestrictionsInviteUsers",exceptionText:"UserRestrictionsNoInviteUsers"},{flags:["pin_messages"],text:"UserRestrictionsPinMessages",exceptionText:"UserRestrictionsNoPinMessages"},{flags:["change_info"],text:"UserRestrictionsChangeInfo",exceptionText:"UserRestrictionsNoChangeInfo"}],this.toggleWith={send_messages:["send_media","send_stickers","send_polls","embed_links"]};const t=G.a.getChat(e.chatId),s=t.default_banned_rights,i=e.participant?G.a.combineParticipantBannedRights(e.chatId,e.participant.banned_rights):s,n=e.participant?"UserRestrictionsDisabled":"EditCantEditPermissionsPublic";for(const a of this.v){const o=a.flags[0];a.checkboxField=new St.a({text:a.text,checked:G.a.hasRights(e.chatId,o,i),restriction:!0,withRipple:!0}),(e.participant&&s.pFlags[o]||t.username&&(a.flags.includes("pin_messages")||a.flags.includes("change_info")))&&(a.checkboxField.input.disabled=!0,Object(l.b)(a.checkboxField.label,e=>{mt(T.c.format(n,!0))},{listenerSetter:e.listenerSetter})),this.toggleWith[o]&&e.listenerSetter.add(a.checkboxField.input)("change",()=>{if(!a.checkboxField.checked){this.v.filter(e=>this.toggleWith[o].includes(e.flags[0])).forEach(e=>{e.checkboxField.checked=!1})}}),e.appendTo.append(a.checkboxField.label)}}takeOut(){const e={_:"chatBannedRights",until_date:2147483647,pFlags:{}};for(const t of this.v){!t.checkboxField.checked&&t.flags.forEach(t=>{e.pFlags[t]=!0})}return e}}class Ut extends z{init(){return Bt(this,void 0,void 0,(function*(){let e;this.container.classList.add("edit-peer-container","group-permissions-container"),this.setTitle("ChannelPermissions");{const t=new Wn({name:"ChannelPermissionsHeader"});e=new Nt({chatId:this.chatId,listenerSetter:this.listenerSetter,appendTo:t.content}),this.eventListener.addEventListener("destroy",()=>{G.a.editChatDefaultBannedRights(this.chatId,e.takeOut())},{once:!0}),this.scrollable.append(t.container)}{const t=new Wn({name:"PrivacyExceptions"}),s=new lt({titleLangKey:"ChannelAddException",subtitleLangKey:"Loading",icon:"adduser",clickable:()=>{new Dt({peerTypes:["channelParticipants"],onSelect:e=>{setTimeout(()=>{i(e)},0)},placeholder:"ExceptionModal.Search.Placeholder",peerId:-this.chatId})}}),i=e=>Bt(this,void 0,void 0,(function*(){let t;try{t=yield n.default.getChannelParticipant(this.chatId,e)}catch(e){return void mt("User is no longer participant")}const s=new Rt(this.slider);s.participant=t,s.chatId=this.chatId,s.userId=e,s.open()}));t.content.append(s.container);const r=t.generateContentElement();r.classList.add("chatlist-container");const c=Oc.createChatList({new:!0});r.append(c),Object(l.b)(c,e=>{const t=Object(It.a)(e.target,"LI");if(!t)return;const s=t.dataset.peerId.toPeerId();i(s)},{listenerSetter:this.listenerSetter});const d=(t,s)=>{const i=s.banned_rights,n=G.a.getChat(this.chatId).default_banned_rights,a=[];e.v.forEach(e=>{const t=e.flags[0];i.pFlags[t]&&!n.pFlags[t]&&a.push(e.exceptionText)});const o=t.querySelector(".user-last-message");a.length&&(o.innerHTML="",o.append(...Object(T.f)(a.map(e=>Object(T.d)(e)),!1))),o.classList.toggle("hide",!a.length)},h=(e,t)=>{const{dom:s}=Oc.addDialogNew({dialog:o.a.getPeerId(e.peer),container:c,drawStatus:!1,rippleEnabled:!0,avatarSize:48,append:t});d(s.listEl,e)};this.listenerSetter.add(a.a)("updateChannelParticipant",e=>{var t,s,i;const n="channelParticipantBanned"===(null===(t=e.new_participant)||void 0===t?void 0:t._)&&!e.new_participant.banned_rights.pFlags.view_messages,a=c.querySelector(`[data-peer-id="${e.user_id}"]`);n?(a?d(a,e.new_participant):h(e.new_participant,!1),"channelParticipantBanned"!==(null===(s=e.prev_participant)||void 0===s?void 0:s._)&&++g):(a&&a.remove(),"channelParticipantBanned"===(null===(i=e.prev_participant)||void 0===i?void 0:i._)&&--g),p()});const p=()=>{Object(k.a)(s.subtitle,Object(T.d)(g?"Permissions.ExceptionsCount":"Permissions.NoExceptions",[g]))};let u,g=0;const m=()=>(u=new Et({scrollable:this.scrollable,getPromise:()=>n.default.getChannelParticipants(this.chatId,{_:"channelParticipantsBanned",q:""},50,c.childElementCount).then(e=>{for(const t of e.participants)h(t,!0);return g=e.count,p(),e.participants.length<50||e.count===c.childElementCount})}),u.load());this.scrollable.append(t.container),G.a.isChannel(this.chatId)?yield m():(p(),this.listenerSetter.add(a.a)("dialog_migrate",({migrateFrom:e,migrateTo:t})=>{this.chatId===e&&(this.chatId=t,m())}))}}))}onOpenAfterTimeout(){this.scrollable.onScroll()}}class Ht{constructor(e,t=o.a.getDialogType(e),s){const n=new Tt.a({peerId:e}).element,a=(t,n=p&&!!t.size)=>{let a=G.a.leave(e.toChatId());n&&(a=a.finally(()=>i.a.flushHistory(e))),s&&s(a)},r=t=>{let n;if(e.isUser())n=i.a.flushHistory(e,!1,p?!!t.size:void 0);else{if(!t.size)return a(t);n=G.a.delete(e.toChatId())}s&&s(n)};let l,c,d,h,p;switch(t){case"channel":G.a.hasRights(e.toChatId(),"delete_chat")?(G.a.deleteChannel,l="ChannelDeleteMenu",c="AreYouSureDeleteAndExitChannel",h=[{langKey:"ChannelDeleteMenu",isDanger:!0,callback:r}],p=[{text:"DeleteChannelForAll"}]):(l="LeaveChannelMenu",c="ChannelLeaveAlertWithName",d=[n],h=[{langKey:"LeaveChannel",isDanger:!0,callback:a}]);break;case"chat":l="DeleteChatUser",c="AreYouSureDeleteThisChatWithUser",d=[n],h=[{langKey:"DeleteChatUser",isDanger:!0,callback:r}],p=[{text:"DeleteMessagesOptionAlso",textArgs:[new Tt.a({peerId:e}).element]}];break;case"saved":l="DeleteChatUser",c="AreYouSureDeleteThisChatSavedMessages",h=[{langKey:"DeleteChatUser",isDanger:!0,callback:r}];break;case"megagroup":case"group":G.a.hasRights(e.toChatId(),"delete_chat")?(l="DeleteMegaMenu",c="AreYouSureDeleteAndExit",h=[{langKey:"DeleteMegaMenu",isDanger:!0,callback:r}],p=[{text:"DeleteChat.DeleteGroupForAll"}]):(l="LeaveMegaMenu",c="AreYouSureDeleteAndExitName",d=[n],h=[{langKey:"DeleteChatUser",isDanger:!0,callback:e=>a(e,!0)}])}new Lt("popup-delete-chat",{peerId:e,titleLangKey:l,descriptionLangKey:c,descriptionLangArgs:d,buttons:h,checkboxes:p}).show()}}var zt=s(100),Vt=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class Kt extends z{init(){var e;return Vt(this,void 0,void 0,(function*(){this.setTitle("Reactions");const t=yield zt.a.getActiveAvailableReactions(),s=yield n.default.getChatFull(this.chatId);let i=null!==(e=s.available_reactions)&&void 0!==e?e:[];const a=new Set(i),o=new Wn({caption:G.a.isBroadcast(this.chatId)?"EnableReactionsChannelInfo":"EnableReactionsGroupInfo"}),r=new St.a({toggle:!0,checked:!!a.size}),l=new lt({checkboxField:r,titleLangKey:"EnableReactions"});o.content.append(l.container);const c=new Wn({name:"AvailableReactions"}),d=t.map(e=>{const t=new St.a({toggle:!0,checked:a.has(e.reaction)});this.listenerSetter.add(t.input)("change",()=>{t.checked?(a.add(e.reaction),r.checked||r.setValueSilently(!0)):(a.delete(e.reaction),!a.size&&r.checked&&r.setValueSilently(!1)),p()});const s=new lt({checkboxField:t,title:e.title,havePadding:!0});return Us({row:s,doc:e.static_icon,size:"small"}),c.content.append(s.container),t});this.listenerSetter.add(l.checkboxField.input)("change",()=>{r.checked?d.every(e=>!e.checked)&&(d.forEach(e=>e.checked=!0),p()):(d.forEach(e=>e.checked=!1),p())});const h=()=>{const e=Array.from(a);if([...e].sort().join()===[...i].sort().join())return;const t=n.default.getCachedFullChat(this.chatId);t&&(t.available_reactions=e),G.a.setChatAvailableReactions(this.chatId,e),i=e},p=Object(vt.a)(h,3e3,!1,!0);this.eventListener.addEventListener("destroy",h,{once:!0}),this.scrollable.append(o.container,c.container)}))}}var Gt=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class Wt extends H{_init(){var e;return Gt(this,void 0,void 0,(function*(){this.listenerSetter.removeAll(),this.scrollable.container.innerHTML="",null!==(e=this.tempId)&&void 0!==e||(this.tempId=0);const t=++this.tempId;this.container.classList.add("edit-peer-container","edit-group-container"),this.setTitle("Edit");let s=yield n.default.getChatFull(this.chatId,!0);const i=G.a.getChat(this.chatId),o=G.a.isBroadcast(this.chatId),r=G.a.isChannel(this.chatId),c=[],d=e=>{c.push(e)};this.listenerSetter.add(a.a)("chat_update",e=>{this.chatId===e&&c.forEach(e=>e())}),this.listenerSetter.add(a.a)("chat_full_update",e=>{this.chatId===e&&(s=n.default.getCachedFullChat(e)||s)});const h=this.chatId.toPeerId(!0),p=G.a.hasRights(this.chatId,"change_type"),u=G.a.hasRights(this.chatId,"change_permissions");{const e=new Wn({noDelimiter:!0}),n=[],r=document.createElement("div");if(r.classList.add("input-wrapper"),this.chatNameInputField=new O.b({label:o?"EnterChannelName":"CreateGroup.NameHolder",name:"chat-name",maxLength:255,required:!0}),this.descriptionInputField=new O.b({label:"DescriptionPlaceholder",name:"chat-description",maxLength:255}),this.chatNameInputField.setOriginalValue(i.title),this.descriptionInputField.setOriginalValue(s.about),r.append(this.chatNameInputField.container,this.descriptionInputField.container),n.push(this.chatNameInputField,this.descriptionInputField),this.editPeer=new ot({peerId:h,inputFields:n,listenerSetter:this.listenerSetter}),this.content.append(this.editPeer.nextBtn),e.content.append(this.editPeer.avatarEdit.container,r),p){const t=new lt({titleLangKey:o?"ChannelType":"GroupType",clickable:()=>{const e=new Mt(this.slider);e.chatId=this.chatId,e.chatFull=s,e.open(),this.listenerSetter.add(e.eventListener)("destroy",n)},icon:"lock"}),n=()=>{let e;t.subtitle.textContent="",e=o?i.username?"TypePublic":"TypePrivate":i.username?"TypePublicGroup":"TypePrivateGroup",t.subtitle.append(Object(T.d)(e))};n(),e.content.append(t.container)}if(p||u){const i=new lt({titleLangKey:"Reactions",icon:"reactions",clickable:()=>{const e=new Kt(this.slider);e.chatId=this.chatId,e.open().then(()=>{this.tempId===t&&this.listenerSetter.add(e.eventListener)("destroy",a)})}}),n=(yield zt.a.getAvailableReactions()).filter(e=>!e.pFlags.inactive).length,a=()=>{var e;const t=null!==(e=s.available_reactions)&&void 0!==e?e:[];i.subtitle.innerHTML=t.length+"/"+n};a(),e.content.append(i.container)}if(u&&!o){const t=["send_messages","send_media","send_stickers","send_polls","embed_links","invite_users","pin_messages","change_info"],s=new lt({titleLangKey:"ChannelPermissions",clickable:()=>{const e=new Ut(this.slider);e.chatId=this.chatId,e.open()},icon:"permissions"}),n=()=>{s.subtitle.innerHTML=t.reduce((e,t)=>e+ +G.a.hasRights(this.chatId,t,i.default_banned_rights),0)+"/"+t.length};n(),e.content.append(s.container),this.listenerSetter.add(a.a)("chat_update",e=>{this.chatId===e&&n()})}if(this.scrollable.append(e.container),Object(l.b)(this.editPeer.nextBtn,()=>{this.editPeer.nextBtn.disabled=!0;let e=[];const t=this.chatId;this.chatNameInputField.isValidToChange()&&e.push(G.a.editTitle(t,this.chatNameInputField.value)),this.descriptionInputField.isValidToChange()&&e.push(G.a.editAbout(t,this.descriptionInputField.value)),this.editPeer.uploadAvatar&&e.push(this.editPeer.uploadAvatar().then(e=>G.a.editPhoto(t,e))),Promise.race(e).finally(()=>{this.editPeer.nextBtn.removeAttribute("disabled"),this.close()})},{listenerSetter:this.listenerSetter}),o&&G.a.hasRights(this.chatId,"change_info")){const t=new St.a({text:"PeerInfo.SignMessages",checked:!!i.pFlags.signatures,withRipple:!0});this.listenerSetter.add(t.input)("change",()=>{const e=t.toggleDisability(!0);G.a.toggleSignatures(this.chatId,t.checked).then(()=>{e()})}),d(()=>{t.setValueSilently(!!i.pFlags.signatures)}),e.content.append(t.label)}}if(!o){const e=new Wn({});if(!o&&p){const t=new St.a({text:"ChatHistory",withRipple:!0});this.listenerSetter.add(t.input)("change",()=>{const e=t.toggleDisability(!0);G.a.togglePreHistoryHidden(this.chatId,!t.checked).then(()=>{e()})});const i=()=>{t.setValueSilently(r&&!s.pFlags.hidden_prehistory)};i(),d(i),e.content.append(t.label)}e.content.childElementCount&&this.scrollable.append(e.container)}if(G.a.hasRights(this.chatId,"delete_chat")){const e=new Wn({}),t=Object(B.a)("btn-primary btn-transparent danger",{icon:"delete",text:o?"PeerInfo.DeleteChannel":"DeleteAndExitButton"});Object(l.b)(t,()=>{new Ht(h,void 0,e=>{const s=Object(Ct.a)([t],!0);e.then(()=>{this.close()},()=>{s()})})},{listenerSetter:this.listenerSetter}),e.content.append(t),this.scrollable.append(e.container)}r||this.listenerSetter.add(a.a)("dialog_migrate",({migrateFrom:e,migrateTo:t})=>{h===e&&(this.chatId=t.toChatId(),this._init())})}))}init(){return this._init()}}var qt=s(108);class $t extends H{init(){this.container.classList.add("edit-peer-container","edit-contact-container");const e=!E.a.isContact(this.peerId.toUserId());this.setTitle(e?"AddContactTitle":"Edit");{const t=new Wn({noDelimiter:!0}),s=[],n=document.createElement("div");if(n.classList.add("input-wrapper"),this.nameInputField=new O.b({label:"FirstName",name:"contact-name",maxLength:70,required:!0}),this.lastNameInputField=new O.b({label:"LastName",name:"contact-lastname",maxLength:70}),this.peerId){const t=E.a.getUser(this.peerId);e?(this.nameInputField.setDraftValue(t.first_name),this.lastNameInputField.setDraftValue(t.last_name)):(this.nameInputField.setOriginalValue(t.first_name),this.lastNameInputField.setOriginalValue(t.last_name))}if(n.append(this.nameInputField.container,this.lastNameInputField.container),s.push(this.nameInputField,this.lastNameInputField),this.editPeer=new ot({peerId:this.peerId,inputFields:s,listenerSetter:this.listenerSetter,doNotEditAvatar:!0}),this.content.append(this.editPeer.nextBtn),this.peerId){const s=document.createElement("div");s.classList.add("avatar-edit"),s.append(this.editPeer.avatarElem);const r=new St.a({text:"Notifications"});r.input.addEventListener("change",e=>{e.isTrusted&&i.a.togglePeerMute(this.peerId)}),this.listenerSetter.add(a.a)("notify_settings",e=>{if("notifyPeer"!==e.peer._)return;const t=o.a.getPeerId(e.peer.peer);if(this.peerId===t){const t=!qt.a.isMuted(e.notify_settings);t!==r.checked&&(r.checked=t)}});const l=document.createElement("div");l.classList.add("profile-name"),l.append(new Tt.a({peerId:this.peerId}).element);const c=document.createElement("div");if(c.classList.add("profile-subtitle"),c.append(Object(T.d)("EditContact.OriginalName")),t.content.append(s,l,c,n),e){const e=E.a.getUser(this.peerId),s=new lt({icon:"phone",titleLangKey:e.phone?void 0:"MobileHidden",title:e.phone?E.a.formatUserPhone(e.phone):void 0,subtitleLangKey:e.phone?"Phone":"MobileHiddenExceptionInfo",subtitleLangArgs:e.phone?void 0:[new Tt.a({peerId:this.peerId}).element]});t.content.append(s.container)}else{const e=new lt({checkboxField:r}),s=!qt.a.isPeerLocalMuted(this.peerId,!1);r.checked=s,t.content.append(e.container)}}else t.content.append(n);this.scrollable.append(t.container),Object(l.b)(this.editPeer.nextBtn,()=>{this.editPeer.nextBtn.disabled=!0,E.a.addContact(this.peerId,this.nameInputField.value,this.lastNameInputField.value,E.a.getUser(this.peerId).phone).finally(()=>{this.editPeer.nextBtn.removeAttribute("disabled"),this.close()})},{listenerSetter:this.listenerSetter})}if(!e){const e=new Wn({}),t=Object(B.a)("btn-primary btn-transparent danger",{icon:"delete",text:"PeerInfo.DeleteContact"});Object(l.b)(t,()=>{new Lt("popup-delete-contact",{peerId:this.peerId,titleLangKey:"DeleteContact",descriptionLangKey:"AreYouSureDeleteContact",buttons:Object(wt.a)([{langKey:"Delete",callback:()=>{const e=Object(Ct.a)([t],!0);E.a.deleteContacts([this.peerId]).then(()=>{this.close()},()=>{e()})},isDanger:!0}])}).show()},{listenerSetter:this.listenerSetter}),e.content.append(t),this.scrollable.append(e.container)}}}class Qt extends H{init(){this.container.classList.add("add-members-container"),this.nextBtn=$({icon:"arrow_next"}),this.content.append(this.nextBtn),this.scrollable.container.remove(),this.nextBtn.addEventListener("click",()=>{const e=this.selector.getSelected().map(e=>e.toPeerId());if(this.skippable)this.takeOut(e),this.close();else{const t=this.takeOut(e);t instanceof Promise?this.attachToPromise(t):void 0===t&&this.close()}})}attachToPromise(e){const t=Object(ee.g)(this.nextBtn,"arrow_next");e.then(()=>{this.close()},()=>{t()})}open(e){const t=super.open();this.setTitle(e.title),this.peerType=e.type,this.takeOut=e.takeOut,this.skippable=e.skippable;const s="privacy"===this.peerType;return this.selector=new Ft({appendTo:this.content,onChange:this.skippable?null:e=>{this.nextBtn.classList.toggle("is-visible",!!e)},peerType:[s?"dialogs":"contacts"],placeholder:e.placeholder,exceptSelf:s,filterPeerTypeBy:s?["isAnyGroup","isUser"]:void 0}),e.selectedPeerIds&&this.selector.addInitial(e.selectedPeerIds),this.nextBtn.classList.add("tgico-arrow_next"),this.nextBtn.innerHTML="",this.nextBtn.disabled=!1,this.nextBtn.classList.toggle("is-visible",this.skippable),t}}var Yt=!ae.d&&!1,Xt=s(127);function Jt(e){const t=document.createElement("span");return t.classList.add("badge-fake"),Object(T.b)(t,e?"ScamMessage":"FakeMessage"),t}function Zt(e){var t;const s=[],i=o.a.getPeer(e);return(null===(t=null==i?void 0:i.pFlags)||void 0===t?void 0:t.verified)&&s.push(function(){const e=document.createElementNS("http://www.w3.org/2000/svg","svg");e.setAttributeNS(null,"viewBox","0 0 24 24"),e.setAttributeNS(null,"width","24"),e.setAttributeNS(null,"height","24"),e.classList.add("verified-icon");const t=document.createElementNS("http://www.w3.org/2000/svg","use");t.setAttributeNS(null,"href","#verified-background"),t.classList.add("verified-background");const s=document.createElementNS("http://www.w3.org/2000/svg","use");return s.setAttributeNS(null,"href","#verified-check"),s.classList.add("verified-check"),e.append(t,s),e}()),(i.pFlags.fake||i.pFlags.scam)&&s.push(Jt(i.pFlags.scam)),s}const es=e=>e.touches?e.touches[0]:e,ts=window;let ss=!1;a.a.addEventListener("context_menu_toggle",e=>{ss=e});class is{constructor(e){this.cursor="grabbing",this.cancelEvent=!0,this.listenerOptions=!1,this.hadMove=!1,this.xDown=null,this.yDown=null,this.reset=e=>{he.a?ts.removeEventListener("touchmove",this.handleMove,{capture:!0}):(ts.removeEventListener("mousemove",this.handleMove),this.setCursorTo.style.cursor=""),this.onReset&&this.hadMove&&this.onReset(),this.xDown=this.yDown=null,this.hadMove=!1},this.handleStart=e=>{const t=es(e);if(this.verifyTouchTarget&&!this.verifyTouchTarget(e))return this.reset();this.xDown=t.clientX,this.yDown=t.clientY,he.a?ts.addEventListener("touchmove",this.handleMove,{passive:!1,capture:!0}):ts.addEventListener("mousemove",this.handleMove,!1)},this.handleMove=e=>{if(null===this.xDown||null===this.yDown||ss)return void this.reset();this.cancelEvent&&Object(c.a)(e);const t=es(e),s=t.clientX,i=t.clientY,n=this.xDown-s,a=this.yDown-i;if(!this.hadMove){if(!n&&!a)return;this.hadMove=!0,he.a||this.setCursorTo.style.setProperty("cursor",this.cursor,"important"),this.onFirstSwipe&&this.onFirstSwipe()}const o=this.onSwipe(n,a,e);void 0!==o&&o&&this.reset()},Object(w.a)(this,e),this.setCursorTo=this.element,this.setListeners()}setListeners(){he.a?(this.element.addEventListener("touchstart",this.handleStart,this.listenerOptions),ts.addEventListener("touchend",this.reset)):(this.element.addEventListener("mousedown",this.handleStart,this.listenerOptions),ts.addEventListener("mouseup",this.reset))}removeListeners(){he.a?(this.element.removeEventListener("touchstart",this.handleStart,this.listenerOptions),ts.removeEventListener("touchend",this.reset)):(this.element.removeEventListener("mousedown",this.handleStart,this.listenerOptions),ts.removeEventListener("mouseup",this.reset))}setCursor(e){this.cursor=e,!he.a&&this.hadMove&&this.setCursorTo.style.setProperty("cursor",this.cursor,"important")}}var ns=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class as{constructor(e){this.scrollable=e,this.processItem=e=>{const t=document.createElement("div");let s;t.classList.add(as.BASE_CLASS+"-avatar","media-container"),e&&(s="object"!=typeof e?r.a.getPhoto(e):e.action.photo);const i=new Image;i.classList.add("avatar-photo"),i.draggable=!1;const n=()=>{if(s){const e=js({container:t,photo:s,size:r.a.choosePhotoSize(s,420,420,!1),withoutPreloader:!0});[e.images.thumb,e.images.full].filter(Boolean).forEach(e=>{e.classList.add("avatar-photo")})}else{const e=o.a.getPeerPhoto(this.peerId);d.a.putAvatar(t,this.peerId,e,"photo_big",i)}};return this.avatars.childElementCount<=3?n():(this.intersectionObserver.observe(t),this.loadCallbacks.set(t,n)),this.avatars.append(t),this.addTab(),e},this.container=document.createElement("div"),this.container.classList.add(as.BASE_CLASS+"-container"),this.avatars=document.createElement("div"),this.avatars.classList.add(as.BASE_CLASS+"-avatars"),this.gradient=document.createElement("div"),this.gradient.classList.add(as.BASE_CLASS+"-gradient"),this.info=document.createElement("div"),this.info.classList.add(as.BASE_CLASS+"-info"),this.tabs=document.createElement("div"),this.tabs.classList.add(as.BASE_CLASS+"-tabs"),this.arrowPrevious=document.createElement("div"),this.arrowPrevious.classList.add(as.BASE_CLASS+"-arrow","tgico-avatarprevious"),this.arrowNext=document.createElement("div"),this.arrowNext.classList.add(as.BASE_CLASS+"-arrow",as.BASE_CLASS+"-arrow-next","tgico-avatarnext"),this.container.append(this.avatars,this.gradient,this.info,this.tabs,this.arrowPrevious,this.arrowNext),this.loadCallbacks=new Map,this.listenerSetter=new R.a;const t=()=>0===this.scrollable.scrollTop||(this.scrollable.scrollIntoViewNew({element:this.scrollable.container.firstElementChild,position:"start"}),!1);let s=!1,i=!1;Object(l.b)(this.container,e=>ns(this,void 0,void 0,(function*(){if(i)return void Object(c.a)(e);if(s)return void(s=!1);if(!t())return;const n=this.container.getBoundingClientRect(),a=e.pageX,o=a-n.left;if(!this.listLoader.previous.length&&!this.listLoader.next.length||o>n.width*(1/3)&&o{t.push({element:this.avatars.children[s],item:e})});const s=t.slice(0,this.listLoader.previous.length),n=t.slice(this.listLoader.previous.length+1),a=this.avatars.children[this.listLoader.previous.length];i=!0,uc(a,e,()=>e===this.peerId,this.listLoader.current,s,n),i=!1}else{const e=a>n.right-n.width/2;let t;this.avatars.classList.add("no-transition"),this.avatars.offsetLeft,t=0!==this.listLoader.index||e?this.listLoader.index===this.listLoader.count-1&&e?-(this.listLoader.count-1):e?1:-1:this.listLoader.count-1,this.listLoader.go(t),Object(Re.b)(()=>{this.avatars.classList.remove("no-transition")})}})),{listenerSetter:this.listenerSetter});const n=()=>{s=!0,document.body.addEventListener(he.a?"touchend":"click",e=>{s=!1},{once:!0})};let a=0,h=0,p=0,u=0;this.swipeHandler=new is({element:this.avatars,onSwipe:(e,t)=>{p=e;let s=h+e*-as.SCALE;return s>0?s=0:st()?!this.container.classList.contains("is-single")&&!i:(n(),Object(c.a)(e),!1),onFirstSwipe:()=>{const e=this.avatars.getBoundingClientRect();a=e.width,u=-a*(this.tabs.childElementCount-1),h=e.left-this.container.getBoundingClientRect().left,this.avatars.style.transform=as.TRANSLATE_TEMPLATE.replace("{x}",h+"px"),this.container.classList.add("is-swiping"),this.avatars.classList.add("no-transition"),this.avatars.offsetLeft},onReset:()=>{const e=Math.ceil(Math.abs(p)/(a/as.SCALE))*(p>=0?1:-1);n(),this.avatars.classList.remove("no-transition"),Object(Re.b)(()=>{this.listLoader.go(e),this.container.classList.remove("is-swiping")})}});this.intersectionObserver=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting&&this.loadNearestToTarget(e.target)})})}setPeer(e){this.peerId=e;const t=o.a.getPeerPhoto(e);if(!t)return;const s=this.listLoader=new S({loadCount:50,loadMore:(t,a,o)=>{if(!a)return Promise.resolve({count:void 0,items:[]});if(e.isUser()){const s=t;return r.a.getUserPhotos(e,s,o).then(e=>({count:e.count,items:e.photos}))}{const t=[];return s.current||t.push(Promise.resolve(n.default.getChatFull(e.toChatId()))),t.push(i.a.getSearch({peerId:e,maxId:Number.MAX_SAFE_INTEGER,inputFilter:{_:"inputMessagesFilterChatPhotos"},limit:o,backLimit:0})),Promise.all(t).then(e=>{const t=e.pop();if(y(t),!s.current){const n=e[0],a=Object(Ot.a)(t.history,e=>e.action.photo.id===n.chat_photo.id);s.current=a||i.a.generateFakeAvatarMessage(this.peerId,n.chat_photo)}return{count:t.count,items:t.history}})}},processItem:this.processItem,onJump:(e,t)=>{const s=this.listLoader.index,i=100*as.SCALE*s;this.avatars.style.transform=as.TRANSLATE_TEMPLATE.replace("{x}",`-${i}%`);const n=this.tabs.querySelector(".active");n&&n.classList.remove("active");this.tabs.children[s].classList.add("active"),this.loadNearestToTarget(this.avatars.children[s])}});"userProfilePhoto"===t._&&(s.current=t.photo_id),this.processItem(s.current),s.load(!0)}addTab(){const e=document.createElement("div");e.classList.add(as.BASE_CLASS+"-tab"),this.tabs.append(e),1===this.tabs.childElementCount&&e.classList.add("active"),this.container.classList.toggle("is-single",this.tabs.childElementCount<=1)}loadNearestToTarget(e){const t=Array.from(e.parentElement.children),s=t.indexOf(e);t.slice(Math.max(0,s-3),Math.min(t.length,s+3)).forEach(e=>{const t=this.loadCallbacks.get(e);t&&(t(),this.loadCallbacks.delete(e),this.intersectionObserver.unobserve(e))})}cleanup(){this.listenerSetter.removeAll(),this.swipeHandler.removeListeners()}}as.BASE_CLASS="profile-avatars",as.SCALE=Yt?2:1,as.TRANSLATE_TEMPLATE=Yt?`translate3d({x}, 0, -1px) scale(${as.SCALE})`:"translate({x}, 0)";let os=(e,t)=>{t.title.innerHTML=e||"",t.container.style.display=e?"":"none"};class rs{constructor(e,t,s=!0){this.scrollable=e,this.listenerSetter=t,this.isDialog=s,this.setPeerStatus=(e=!1)=>{const t=this.peerId;this.element.classList.toggle("is-me",t===a.a.myId),!t||a.a.myId===t&&this.isDialog||ic.setPeerStatus(this.peerId,this.subtitle,e,!0,()=>t===this.peerId,!this.isDialog)},Yt||this.scrollable.container.classList.add("no-parallax"),t||(this.listenerSetter=new R.a)}init(){this.init=null,this.element=document.createElement("div"),this.element.classList.add("profile-content"),this.section=new Wn({noDelimiter:!0}),this.avatar=new bc,this.avatar.classList.add("profile-avatar","avatar-120"),this.avatar.isDialog=this.isDialog,this.avatar.attachClickEvent(),this.name=document.createElement("div"),this.name.classList.add("profile-name"),this.subtitle=document.createElement("div"),this.subtitle.classList.add("profile-subtitle"),this.bio=new lt({title:" ",subtitleLangKey:"UserBio",icon:"info",clickable:e=>{"A"!==e.target.tagName&&Promise.resolve(n.default.getProfileByPeerId(this.peerId)).then(e=>{dt(e.about),mt(T.c.format("BioCopied",!0))})}}),this.bio.title.classList.add("pre-wrap"),this.username=new lt({title:" ",subtitleLangKey:"Username",icon:"username",clickable:()=>{dt("@"+o.a.getPeer(this.peerId).username),mt(T.c.format("UsernameCopied",!0))}}),this.phone=new lt({title:" ",subtitleLangKey:"Phone",icon:"phone",clickable:()=>{dt("+"+E.a.getUser(this.peerId).phone),mt(T.c.format("PhoneCopied",!0))}}),this.link=new lt({title:" ",subtitleLangKey:"SetUrlPlaceholder",icon:"link",clickable:()=>{dt(this.link.title.textContent),mt(T.c.format("LinkCopied",!0))}}),this.location=new lt({title:" ",subtitleLangKey:"ChatLocation",icon:"location"}),this.section.content.append(this.phone.container,this.username.container,this.location.container,this.bio.container,this.link.container);const{listenerSetter:e}=this;this.isDialog&&(this.notifications=new lt({checkboxField:new St.a({toggle:!0}),titleLangKey:"Notifications",icon:"unmute"}),e.add(this.notifications.checkboxField.input)("change",e=>{e.isTrusted&&i.a.togglePeerMute(this.peerId)}),e.add(a.a)("dialog_notify_settings",e=>{if(this.peerId===e.peerId){const e=qt.a.isPeerLocalMuted(this.peerId,!1);this.notifications.checkboxField.checked=!e}}),this.section.content.append(this.notifications.container)),this.element.append(this.section.container),Yt&&this.element.append($n()),e.add(a.a)("peer_typings",({peerId:e})=>{this.peerId===e&&this.setPeerStatus()}),e.add(a.a)("peer_bio_edit",e=>{e===this.peerId&&this.setMoreDetails(!0)}),e.add(a.a)("peer_title_edit",e=>{e===this.peerId&&this.fillUsername()}),e.add(a.a)("user_update",e=>{this.peerId===e.toPeerId()&&this.setPeerStatus()}),e.add(a.a)("contacts_update",e=>{if(this.peerId===e.toPeerId()){E.a.getUser(e).pFlags.self&&this.isDialog||this.fillUserPhone()}}),e.add(a.a)("avatar_update",e=>{this.peerId===e&&this.setAvatar()}),this.setPeerStatusInterval=window.setInterval(this.setPeerStatus,6e4)}cleanupHTML(){[this.bio,this.phone,this.username,this.location,this.link].forEach(e=>{e.container.style.display="none"}),this.notifications&&(this.notifications.container.style.display="",this.notifications.checkboxField.checked=!0),this.setMoreDetailsTimeout&&(window.clearTimeout(this.setMoreDetailsTimeout),this.setMoreDetailsTimeout=0)}canBeDetailed(){return this.peerId!==a.a.myId||!this.isDialog}setAvatar(){if(this.canBeDetailed()){if(o.a.getPeerPhoto(this.peerId)){const e=this.avatars;return this.avatars=new as(this.scrollable),this.avatars.setPeer(this.peerId),this.avatars.info.append(this.name,this.subtitle),this.avatar.remove(),e?e.container.replaceWith(this.avatars.container):this.element.prepend(this.avatars.container),void(Yt&&this.scrollable.container.classList.add("parallax"))}}Yt&&this.scrollable.container.classList.remove("parallax"),this.avatars&&(this.avatars.container.remove(),this.avatars.cleanup(),this.avatars=void 0),this.avatar.updateWithOptions({peerId:this.peerId}),this.section.content.prepend(this.avatar,this.name,this.subtitle)}fillUsername(){const{peerId:e}=this;if(e.isUser()&&this.canBeDetailed()){const t=o.a.getPeerUsername(e);os(t,this.username)}}fillUserPhone(){const{peerId:e}=this;if(e.isUser()&&this.canBeDetailed()){const t=E.a.getUser(e);os(t.phone?E.a.formatUserPhone(t.phone):void 0,this.phone)}}fillNotifications(){const e=this.notifications;if(e)if(this.canBeDetailed()){const t=qt.a.isPeerLocalMuted(this.peerId,!1);e.checkboxField.checked=!t}else Object(Re.b)(()=>{e.container.style.display="none"})}fillRows(){const e=this.peerId;this.fillUsername(),this.fillUserPhone(),this.fillNotifications(),this.setMoreDetails(),Object(k.a)(this.name,new Tt.a({peerId:e,dialog:this.isDialog}).element),this.name.append(...Zt(e)),this.setPeerStatus(!0)}fillProfileElements(){this.cleaned&&(this.cleaned=!1,this.cleanupHTML(),this.setAvatar(),this.fillRows())}setMoreDetails(e){this.setMoreDetailsTimeout&&(window.clearTimeout(this.setMoreDetailsTimeout),this.setMoreDetailsTimeout=0);const t=this.peerId,s=this.threadId;t&&!o.a.isRestricted(t)&&this.canBeDetailed()&&Object(Xt.a)(n.default.getProfileByPeerId(t,e),e=>{if(this.peerId!==t||this.threadId!==s||o.a.isRestricted(t))return;if(os(e.about?X.b.wrapRichText(e.about):void 0,this.bio),!t.isUser()){const s=G.a.getChat(t.toChatId());if(s.username)os("https://t.me/"+s.username,this.link);else{const t=e.exported_invite;t&&os(t.link,this.link)}}const i=e.location;"channelLocation"==(null==i?void 0:i._)&&os(i.address,this.location),this.setMoreDetailsTimeout=window.setTimeout(()=>this.setMoreDetails(!0),6e4)})}setPeer(e,t=0){this.peerId===e&&this.threadId===t||(this.init&&this.init(),this.peerId=e,this.threadId=t,this.cleaned=!0)}}class ls extends H{constructor(e){super(e,!1),this.threadId=0,this.historiesStorage={}}init(){this.container.classList.add("shared-media-container","profile-container");const e=Object(B.a)("btn-icon sidebar-close-button",{noRipple:!0});this.closeBtn.replaceWith(e),this.closeBtn=e;const t=document.createElement("div");t.classList.add("animated-close-icon"),e.append(t);const s=document.createElement("div");s.className="transition slide-fade";const i=document.createElement("div");i.classList.add("transition-item"),this.title.append(Object(T.d)("Profile")),this.editBtn=N("edit"),i.append(this.title,this.editBtn);const n=document.createElement("div");n.classList.add("transition-item");const o=this.title.cloneNode();o.append(Object(T.d)("PeerInfo.SharedMedia")),n.append(o),s.append(i,n),this.header.append(s),this.profile=new rs(this.scrollable),this.profile.init(),this.scrollable.append(this.profile.element);this.scrollable.onAdditionalScroll=()=>{const e=this.searchSuper.nav.getBoundingClientRect();if(!e.width)return;const t=e.top-1;r(t<=56)};const r=e=>{t.classList.toggle("state-back",e),this.searchSuper.container.classList.toggle("is-full-viewport",e),c(+e),e||this.searchSuper.cleanScrollPositions()},c=Object(F.a)(s,"slide-fade",400,null,!1);c(0),Object(l.b)(this.closeBtn,e=>{this.closeBtn.firstElementChild.classList.contains("state-back")?(this.scrollable.scrollIntoViewNew({element:this.scrollable.container.firstElementChild,position:"start"}),c(0),t.classList.remove("state-back")):this.scrollable.isHeavyAnimationInProgress||this.slider.onCloseBtnClick()}),Object(l.b)(this.editBtn,e=>{let t;t=this.peerId.isAnyChat()?new Wt(this.slider):new $t(this.slider),t&&(t instanceof Wt?t.chatId=this.peerId.toChatId():t.peerId=this.peerId,t.open())}),a.a.addEventListener("contacts_update",e=>{this.peerId===e&&this.toggleEditBtn()}),a.a.addEventListener("chat_update",e=>{this.peerId===e.toPeerId(!0)&&this.toggleEditBtn()}),a.a.addEventListener("history_multiappend",e=>{for(const t in e)this.renderNewMessages(t.toPeerId(),Array.from(e[t]))}),a.a.addEventListener("history_delete",({peerId:e,msgs:t})=>{this.deleteDeletedMessages(e,Array.from(t))}),a.a.addEventListener("message_sent",({message:e})=>{this.renderNewMessages(e.peerId,[e.mid])}),this.searchSuper=new fi({mediaTabs:[{inputFilter:"inputMessagesFilterEmpty",name:"PeerMedia.Members",type:"members"},{inputFilter:"inputMessagesFilterPhotoVideo",name:"SharedMediaTab2",type:"media"},{inputFilter:"inputMessagesFilterDocument",name:"SharedFilesTab2",type:"files"},{inputFilter:"inputMessagesFilterUrl",name:"SharedLinksTab2",type:"links"},{inputFilter:"inputMessagesFilterMusic",name:"SharedMusicTab2",type:"music"},{inputFilter:"inputMessagesFilterRoundVoice",name:"SharedVoiceTab2",type:"voice"}],scrollable:this.scrollable,onChangeTab:e=>{let t="members"===e.type&&a.a.settings.animationsEnabled?250:0;setTimeout(()=>{d.classList.toggle("is-hidden","members"!==e.type)},t)}}),this.searchSuper.scrollStartCallback=()=>{r(!0)},this.profile.element.append(this.searchSuper.container);const d=$({icon:"addmember_filled"});this.content.append(d),d.addEventListener("click",()=>{const e=this.peerId,t=this.peerId.toChatId(),s=G.a.isChannel(t),i=(t,i)=>{let n,a,o,r,l;if(t.length>1)n="AddMembersAlertTitle",a=[Object(T.d)("Members",[t.length])],o="AddMembersAlertCountText",r=t.map(e=>{const t=document.createElement("b");return t.append(new Tt.a({peerId:e}).element),t}),s||(l=[{text:"AddMembersForwardMessages",checked:!0}]);else{n="AddOneMemberAlertTitle",o="AddMembersAlertNamesText";const e=document.createElement("b");e.append(new Tt.a({peerId:t[0]}).element),r=[e],s||(l=[{text:"AddOneMemberForwardMessages",textArgs:[new Tt.a({peerId:t[0]}).element],checked:!0}])}r.push(new Tt.a({peerId:e}).element),new Lt("popup-add-members",{peerId:e,titleLangKey:n,descriptionLangKey:o,descriptionLangArgs:r,buttons:[{langKey:"Add",callback:i}],checkboxes:l}).show()},n=e=>{"USER_PRIVACY_RESTRICTED"===e.type&&bt({langPackKey:"InviteToGroupError"})};if(s){const e=new Qt(this.slider);e.open({type:"channel",skippable:!1,takeOut:s=>(i(s,()=>{const i=G.a.inviteToChannel(t,s);i.catch(n),e.attachToPromise(i)}),!1),title:"GroupAddMembers",placeholder:"SendMessageTo"})}else new Dt({peerTypes:["contacts"],placeholder:"Search",onSelect:e=>{setTimeout(()=>{i([e],s=>{G.a.addChatUser(t,e,s.size?void 0:0).catch(n)})},0)}})})}renderNewMessages(e,t){if(!this.init&&this.historiesStorage[e]){t=t.slice().reverse();for(const s of this.searchSuper.mediaTabs){const n=s.inputFilter,a=this.searchSuper.filterMessagesByType(t.map(t=>i.a.getMessageByPeer(e,t)),n);if(a.length){const t=this.historiesStorage[e][n];t&&t.unshift(...a.map(e=>({mid:e.mid,peerId:e.peerId}))),this.peerId===e&&-1!==this.searchSuper.usedFromHistory[n]&&(this.searchSuper.usedFromHistory[n]+=a.length,this.searchSuper.performSearchResult(a,s,!1))}}}}deleteDeletedMessages(e,t){if(!this.init&&this.historiesStorage[e]){for(const s of t)for(const t of this.searchSuper.mediaTabs){const i=t.inputFilter,n=this.historiesStorage[e][i];if(!n)continue;const a=n.findIndex(e=>e.mid===s);if(-1!==a){if(n.splice(a,1),this.peerId===e){const t=this.searchSuper.tabs[i].querySelector(`div[data-mid="${s}"][data-peer-id="${e}"]`);t&&(this.searchSuper.selection.isSelecting&&this.searchSuper.selection.toggleByElement(t),t.remove()),this.searchSuper.usedFromHistory[i]>=a+1&&this.searchSuper.usedFromHistory[i]--}break}}this.scrollable.onScroll()}}cleanupHTML(){this.profile.cleanupHTML(),this.editBtn.classList.add("hide"),this.searchSuper.cleanupHTML(!0),this.container.classList.toggle("can-add-members",this.searchSuper.canViewMembers()&&G.a.hasRights(this.peerId.toChatId(),"invite_users"))}setLoadMutex(e){this.searchSuper.loadMutex=e}setPeer(e,t=0){var s;return(this.peerId!==e||this.threadId!==t)&&(this.peerId=e,this.threadId=t,this.peerChanged=!0,this.init&&(this.init(),this.init=null),this.searchSuper.setQuery({peerId:e,historyStorage:null!==(s=this.historiesStorage[e])&&void 0!==s?s:this.historiesStorage[e]={}}),this.profile.setPeer(e,t),!0)}fillProfileElements(){this.peerChanged&&(this.peerChanged=!1,this.cleanupHTML(),this.profile.fillProfileElements(),this.toggleEditBtn())}toggleEditBtn(){let e;e=this.peerId.isUser()?this.peerId!==a.a.myId&&E.a.isContact(this.peerId.toUserId()):G.a.hasRights(this.peerId.toChatId(),"change_info"),this.editBtn.classList.toggle("hide",!e)}loadSidebarMedia(e,t=!1){this.searchSuper.load(e,t)}onOpenAfterTimeout(){this.scrollable.onScroll()}}const cs=new class extends K{constructor(){super({sidebarEl:document.getElementById("column-right"),canHideFirst:!0,navigationType:"right"}),this.isColumnProportionSet=!1,b.b.addEventListener("changeScreen",(e,t)=>{t===b.a.medium&&e!==b.a.mobile&&this.toggleSidebar(!1)}),b.b.addEventListener("resize",()=>{this.setColumnProportion()}),this.sharedMediaTab=new ls(this)}onCloseTab(e,t,s){this.historyTabIds.length||this.toggleSidebar(!1,t),super.onCloseTab(e,t,s)}setColumnProportion(){const e=this.sidebarEl.scrollWidth/this.sidebarEl.previousElementSibling.scrollWidth;document.documentElement.style.setProperty("--right-column-proportion",""+e)}toggleSidebar(e,t){const s=document.body.classList.contains("is-right-column-shown");let i;if(void 0!==e?e?s||(i=!0):s&&(i=!0):i=!0,!i)return Promise.resolve();s||this.historyTabIds.length||this.sharedMediaTab.open(),this.isColumnProportionSet||(this.setColumnProportion(),this.isColumnProportionSet=!0);const n=ic.selectTab(s?1:2,t);return document.body.classList.toggle("is-right-column-shown",e),n}};le.a.appSidebarRight=cs;var ds=cs;class hs extends H{init(){this.container.id="poll-results-container",this.container.classList.add("chatlist-container"),this.resultsDiv=document.createElement("div"),this.resultsDiv.classList.add("poll-results"),this.scrollable.append(this.resultsDiv)}open(e){const t=super.open(),s=nt.a.getPoll(e.media.poll.id);this.setTitle(s.poll.pFlags.quiz?"PollResults.Title.Quiz":"PollResults.Title.Poll");const i=document.createElement("h3");i.innerHTML=s.poll.rQuestion;const n=s.results.results.map(e=>e.voters/s.results.total_voters*100);ms(n);const a=document.createDocumentFragment();return s.results.results.forEach((t,i)=>{if(!t.voters)return;const o=document.createElement("hr"),r=s.poll.answers[i],l=document.createElement("div");l.classList.add("poll-results-answer");const c=document.createElement("div");c.innerHTML=X.a.wrapEmojiText(r.text);const d=document.createElement("div");d.innerText=Math.round(n[i])+"%",l.append(c,d);const h=Oc.createChatList();h.classList.add("poll-results-voters"),Oc.setListClickListener(h,()=>{ds.onCloseBtnClick()},void 0,!0),h.style.minHeight=50*Math.min(t.voters,4)+"px",a.append(o,l,h);let p,u=4,g=!1,m=t.voters-4;const b=()=>{g||(g=!0,nt.a.getVotes(e,r.option,p,u).then(e=>{e.votes.forEach(e=>{const{dom:t}=Oc.addDialogNew({dialog:e.user_id.toPeerId(!1),container:h,drawStatus:!1,rippleEnabled:!1,meAsSaved:!1,avatarSize:32});t.lastMessageSpan.parentElement.remove()}),p&&(m-=e.votes.length,v.lastElementChild.replaceWith(Object(T.d)("PollResults.LoadMore",[Math.min(20,m)]))),p=e.next_offset,u=20,m&&e.votes.length||v.remove()}).finally(()=>{g=!1}))};if(b(),m<=0)return;const v=document.createElement("div");v.classList.add("poll-results-more","show-more","rp-overflow"),v.addEventListener("click",b),Object(te.a)(v);const f=document.createElement("div");f.classList.add("tgico-down"),v.append(f,Object(T.d)("PollResults.LoadMore",[Math.min(20,m)])),a.append(v)}),this.resultsDiv.append(i,a),ds.toggleSidebar(!0).then(()=>{}),t}}var ps=s(72);class us{constructor(e){this.lazyLoadQueue=e.lazyLoadQueue,this.avatarSize=e.avatarSize,this.container=document.createElement("div"),this.container.classList.add("stacked-avatars"),this.container.style.setProperty("--avatar-size",e.avatarSize+"px")}render(e,t){const s=this.container.children;(e=e.slice().reverse()).length>3&&(e=e.slice(-3)),e.forEach((e,i)=>{let n=s[i];n||(n=document.createElement("div"),n.classList.add("stacked-avatars-avatar-container"));let a=n.firstElementChild;a||(a=new bc,a.classList.add("avatar-"+this.avatarSize,"stacked-avatars-avatar"),a.updateOptions({isDialog:!1,loadPromises:t})),a.updateWithOptions({lazyLoadQueue:this.lazyLoadQueue,peerId:e}),a.parentNode||n.append(a),n.parentNode||this.container.append(n)}),Array.from(s).slice(e.length).forEach(e=>e.remove())}}let gs=0;const ms=e=>{const t=e.reduce((e,t)=>e+Math.round(t),0);if(t>100){const s=t-100,i=e.length;for(let t=0;t=.5&&is&&(s=i,t=n)}if(-1===t)return;e[t]+=1-s}}};a.a.addEventListener("poll_update",({poll:e,results:t})=>{Array.from(document.querySelectorAll(`poll-element[poll-id="${e.id}"]`)).forEach(s=>{s.isClosed=!!e.pFlags.closed,s.performResults(t,e.chosenIndexes)})}),a.a.addEventListener("peer_changed",()=>{vs&&bs(vs,fs,ys)}),b.b.addEventListener("resize",()=>{ws.setMaxLength(),ws.resizePolls()}),b.b.addEventListener("changeScreen",()=>{ws.setMaxLength()});const bs=(e,t,s)=>{e.classList.remove("active"),clearTimeout(s),setTimeout(()=>{t(),e.remove(),vs===e&&fs===t&&ys===s&&(vs=fs=null,ys=0)},200)};let vs,fs,ys;class ws extends HTMLElement{constructor(){super(),this.isClosed=!1,this.isQuiz=!1,this.isRetracted=!1,this.isPublic=!1,this.isMultiple=!1,this.chosenIndexes=[],this.chosingIndexes=[],this.sentVote=!1}static setMaxLength(){const e=xt.a.width<=360?xt.a.width-120:b.b.active.poll.width;this.MAX_LENGTH=e+9+this.MAX_OFFSET+-13.7}static resizePolls(){if(!this.MAX_LENGTH)return;Array.from(document.querySelectorAll("poll-element.is-voted")).forEach(e=>{e.svgLines.forEach((t,s)=>{e.setLineProgress(s,1)})})}render(){gs||(gs=document.getElementById("poll-line").getTotalLength(),ws.setMaxLength());const e=this.message.media.poll.id,{poll:t,results:s}=nt.a.getPoll(e);let i;this.message.pFlags.is_scheduled&&this.classList.add("disable-hover"),t.pFlags&&(this.isPublic=!!t.pFlags.public_voters,this.isQuiz=!!t.pFlags.quiz,this.isClosed=!!t.pFlags.closed,this.isMultiple=!!t.pFlags.multiple_choice,this.isClosed?(i="Chat.Poll.Type.Closed",this.classList.add("is-closed")):i=this.isQuiz?this.isPublic?"Chat.Poll.Type.Quiz":"Chat.Poll.Type.AnonymousQuiz":this.isPublic?"Chat.Poll.Type.Public":"Chat.Poll.Type.Anonymous"),this.classList.toggle("is-multiple",this.isMultiple);const n=this.isMultiple?'':"",a=t.answers.map((e,t)=>`\n \n \n \n \n \n \n ${n}\n \n \n ${X.a.wrapEmojiText(e.text)}\n \n \n \n \n \n `).join("");if(this.innerHTML=`\n ${t.rQuestion}\n \n \n \n \n ${a}`,this.descDiv=this.firstElementChild.nextElementSibling,this.typeDiv=this.descDiv.firstElementChild,this.avatarsDiv=this.descDiv.lastElementChild,i&&this.typeDiv.append(Object(T.d)(i)),this.isQuiz&&(this.classList.add("is-quiz"),t.close_period&&t.close_date)){const e=document.createElement("div");e.classList.add("poll-time"),this.descDiv.append(e);const s=document.createElementNS("http://www.w3.org/2000/svg","svg");s.classList.add("poll-quiz-timer"),this.quizTimer=s;const i=2,n=7,a=2*Math.PI*n,o=document.createElementNS("http://www.w3.org/2000/svg","circle");o.classList.add("poll-quiz-timer-circle"),o.setAttributeNS(null,"cx","16"),o.setAttributeNS(null,"cy","16"),o.setAttributeNS(null,"r",""+n),o.setAttributeNS(null,"stroke-width",""+i),s.append(o),this.descDiv.append(s);const r=1e3*t.close_period,l=1e3*(t.close_date-at.a.serverTimeOffset);this.quizInterval=window.setInterval(()=>{const t=Date.now(),s=(l-t)/r,i=(l-t)/1e3+1|0;e.innerHTML=xe(i),i<=5&&(e.style.color="#ee545c",o.style.stroke="#ee545c"),o.style.strokeDashoffset=a+s*a,o.style.strokeDasharray=`${a} ${a}`,t>=l&&(clearInterval(this.quizInterval),e.innerHTML="",o.style.strokeDashoffset=a,this.quizInterval=0,setTimeout(()=>{nt.a.getResults(this.message)},3e3))},1e3)}this.answerDivs=Array.from(this.querySelectorAll(".poll-answer")),this.svgLines=Array.from(this.querySelectorAll(".poll-line")),this.numberDivs=Array.from(this.querySelectorAll(".poll-answer-percents"));const o=document.createElement("div");o.classList.add("poll-footer"),this.viewResults=document.createElement("div"),this.viewResults.className="poll-footer-button poll-view-results hide",this.viewResults.append(Object(T.d)("Chat.Poll.ViewResults")),this.votersCountDiv=document.createElement("div"),this.votersCountDiv.className="poll-votes-count",o.append(this.viewResults,this.votersCountDiv),this.append(o),this.viewResults.addEventListener("click",e=>{Object(c.a)(e),ds.isTabExists(hs)||new hs(ds).open(this.message)}),Object(te.a)(this.viewResults),this.isMultiple&&(this.sendVoteBtn=document.createElement("div"),this.sendVoteBtn.classList.add("poll-footer-button","poll-send-vote"),this.sendVoteBtn.append(Object(T.d)("Chat.Poll.SubmitVote")),Object(te.a)(this.sendVoteBtn),t.chosenIndexes.length||this.votersCountDiv.classList.add("hide"),Object(l.b)(this.sendVoteBtn,e=>{Object(c.a)(e),this.chosingIndexes.length&&this.sendVotes(this.chosingIndexes).then(()=>{this.chosingIndexes.length=0,this.answerDivs.forEach(e=>{e.classList.remove("is-chosing")})})}),o.append(this.sendVoteBtn));const r=!(t.chosenIndexes.length||this.isClosed);r&&!this.isPublic||this.performResults(s,t.chosenIndexes,!1),r&&(this.setVotersCount(s),Object(l.b)(this,this.clickHandler))}initQuizHint(e){if(e.solution&&e.solution_entities){const t=document.createElement("div");if(t.classList.add("tgico-tip","poll-hint"),this.descDiv.append(t),Object(l.b)(t,s=>{Object(c.a)(s),t.classList.add("active"),((e,t,s)=>{vs&&bs(vs,fs,ys);const i=document.createElement("div");i.classList.add("quiz-hint");const n=document.createElement("div");n.classList.add("container","tgico");const a=document.createElement("div");a.classList.add("text"),n.append(a),i.append(n),a.innerHTML=X.a.wrapRichText(e,{entities:t}),ic.chat.bubbles.bubblesContainer.append(i),i.offsetLeft,i.classList.add("active"),vs=i,fs=s,ys=window.setTimeout(()=>{bs(i,s,ys)},he.a?5e3:7e3)})(e.solution,e.solution_entities,()=>{t.classList.remove("active")})}),this.sentVote){const s=e.results.find(e=>e.pFlags.correct);s&&!s.pFlags.chosen&&t.click()}}}clickHandler(e){const t=Object(Pe.a)(e.target,"poll-answer");if(!t)return;Object(c.a)(e);const s=+t.dataset.index;if(this.isMultiple){t.classList.toggle("is-chosing");const e=this.chosingIndexes.indexOf(s);-1!==e?this.chosingIndexes.splice(e,1):this.chosingIndexes.push(s)}else this.sendVotes([s])}sendVotes(e){if(this.sendVotePromise)return this.sendVotePromise;const t=this.answerDivs.filter((t,s)=>e.includes(s));return t.forEach(e=>{e.classList.add("is-voting")}),this.classList.add("disable-hover"),this.sentVote=!0,this.sendVotePromise=nt.a.sendVote(this.message,e).then(()=>{t.forEach(e=>{e.classList.remove("is-voting")}),this.classList.remove("disable-hover")}).catch(()=>{this.sentVote=!1}).finally(()=>{this.sendVotePromise=null})}performResults(e,t,s=!0){var i,n;if(a.a.settings.animationsEnabled||(s=!1),this.isQuiz&&((null===(i=e.results)||void 0===i?void 0:i.length)||this.isClosed)){this.answerDivs.forEach((t,s)=>{t.classList.toggle("is-correct",!!e.results[s].pFlags.correct)}),this.initQuizHint&&(this.initQuizHint(e),this.initQuizHint=null),this.quizInterval&&(clearInterval(this.quizInterval),this.quizInterval=0),(null===(n=this.quizTimer)||void 0===n?void 0:n.parentElement)&&this.quizTimer.remove();const t=this.descDiv.querySelector(".poll-time");t&&t.remove()}if(this.isClosed&&(this.classList.add("is-closed"),Object(k.a)(this.typeDiv,Object(T.d)("Chat.Poll.Type.Closed"))),(this.chosenIndexes.length!==t.length||this.isClosed)&&(this.isRetracted=this.chosenIndexes.length&&!t.length,this.chosenIndexes=t.slice(),this.isRetracted?Object(l.b)(this,this.clickHandler):Object(l.c)(this,this.clickHandler)),this.chosenIndexes.length||this.isRetracted||this.isClosed){const t=e.results.map(t=>e.total_voters?t.voters/e.total_voters*100:0);this.classList.toggle("no-transition",!s),s&&Object(ps.a)(this,"",!this.isRetracted,340),Object(Re.b)(()=>{this.setResults(this.isRetracted?this.percents:t,this.chosenIndexes,s),this.percents=t,this.isRetracted=!1})}if(this.setVotersCount(e),this.isPublic){this.isMultiple||(this.viewResults.classList.toggle("hide",!e.total_voters||!this.chosenIndexes.length),this.votersCountDiv.classList.toggle("hide",!!this.chosenIndexes.length));const t=(e.recent_voters||[]).map(e=>e.toPeerId()),s=new us({avatarSize:16});s.render(t),Object(k.a)(this.avatarsDiv,s.container)}if(this.isMultiple){const t=!!this.chosenIndexes.length,s=this.isClosed||t,i=!this.isPublic||!e.total_voters||!t&&!this.isClosed;this.sendVoteBtn.classList.toggle("hide",s),this.viewResults.classList.toggle("hide",i),this.votersCountDiv.classList.toggle("hide",!s||!i)}}setResults(e,t,s){this.svgLines.forEach(e=>e.style.display=""),this.answerDivs.forEach((e,s)=>{e.classList.toggle("is-chosen",t.includes(s))});const i=Math.max(...e);if(this.maxPercents=e.map(e=>e/i),this.isRetracted)this.svgLines.forEach((e,t)=>{this.setLineProgress(t,-1)});else{const e=()=>{this.svgLines.forEach((e,t)=>{this.setLineProgress(t,1)})};s?Object(Re.b)(e):e()}let n;e=e.slice(),ms(e);const a=t=>{e.forEach((e,s)=>{const i=n(e,t);this.numberDivs[s].innerText=i+"%"})};if(this.isRetracted)if(n=(e,t)=>Math.round(e/10*t),s)for(let e=9,t=0;e>=0;--e,++t)setTimeout(()=>{a(e)},34*t);else a(0);else if(n=(e,t)=>Math.round(e/10*(t+1)),s)for(let e=0;e<10;++e)setTimeout(()=>{a(e)},34*e);else a(9);if(this.isRetracted){s&&this.classList.add("is-retracting"),this.classList.remove("is-voted");const e=()=>{this.svgLines.forEach(e=>e.style.display="none")};s?setTimeout(()=>{this.classList.remove("is-retracting"),e()},340):e()}else this.classList.add("is-voted")}setVotersCount(e){const t=e.total_voters||0;let s,i=[t];s=this.isClosed?this.isQuiz?t?"Chat.Quiz.TotalVotes":"Chat.Quiz.TotalVotesResultEmpty":t?"Chat.Poll.TotalVotes1":"Chat.Poll.TotalVotesResultEmpty":this.isQuiz?t?"Chat.Quiz.TotalVotes":"Chat.Quiz.TotalVotesEmpty":t?"Chat.Poll.TotalVotes1":"Chat.Poll.TotalVotesEmpty",Object(k.a)(this.votersCountDiv,Object(T.d)(s,i))}setLineProgress(e,t){const s=this.svgLines[e];-1===t?(s.style.strokeDasharray="",s.style.strokeDashoffset=""):(s.style.strokeDasharray=t*this.maxPercents[e]*ws.MAX_LENGTH+", 485.9",s.style.strokeDashoffset=""+t*ws.MAX_OFFSET)}}ws.MAX_OFFSET=-46.5,ws.MAX_LENGTH=0,customElements.define("poll-element",ws);var Ss=s(98),Ls=s(138),Cs=s(78),Ms=s(102),Is=s(149),Es=s(150),Ps=s(45),ks=s(86),Ts=s(22),xs=s(168),As=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};let Os=0;function _s({doc:e,container:t,message:s,boxWidth:i,boxHeight:n,withTail:o,isOut:r,middleware:d,lazyLoadQueue:h,noInfo:p,group:u,onlyPreview:g,withoutPreloader:m,loadPromises:v,noPlayButton:f,size:y,searchContext:w,autoDownload:S}){var L,I;const E=null==S?void 0:S.video;let P=0===E;const k=!(i&&n),T=("video"!==e.type||e.size<=52428800&&!k)&&("gif"===e.type?a.a.settings.autoPlay.gifs:a.a.settings.autoPlay.videos);let x,A;if(!p){x=document.createElement("span"),x.classList.add("video-time"),t.append(x);let s=!1;"gif"!==e.type?(x.innerText=xe(e.duration,!1),f||"round"===e.type||(T&&!P?x.classList.add("tgico","can-autoplay"):s=!0)):(x.innerText="GIF",T||f||(s=!0,P=void 0)),s&&(A=document.createElement("span"),A.classList.add("video-play","tgico-largeplay","btn-circle","position-center"),t.append(A))}let O,_={};if("image/gif"===e.mime_type){const a=js({photo:e,message:s,container:t,boxWidth:i,boxHeight:n,withTail:o,isOut:r,lazyLoadQueue:h,middleware:d,withoutPreloader:m,loadPromises:v,autoDownloadSize:E,size:y});return _.thumb=a,_.loadPromise=a.loadPromises.full,_}const F=document.createElement("video");if(F.classList.add("media-video"),F.setAttribute("playsinline","true"),F.muted=!0,"round"===e.type){const i=document.createElement("div");i.classList.add("media-round","z-depth-1"),i.dataset.mid=""+s.mid,i.dataset.peerId=""+s.peerId,i.message=s;const n=b.b.active.round,a=n.width/2,o=3.5,r=a-2*o;i.innerHTML=`\n \n `;const d=i.firstElementChild.firstElementChild;Os||(Os=2*Math.PI*r),d.style.strokeDasharray=Os+" "+Os,d.style.strokeDashoffset=""+Os,x.classList.add("tgico");s.pFlags.media_unread&&i.classList.add("is-unread");const h=document.createElement("canvas");h.width=h.height=e.w,i.prepend(h,x),i.append(F),t.append(i);const p=h.getContext("2d"),u=()=>{const e=i.message,t=fe.addMedia(e,!P),s=()=>{(ic.chat.setPeerPromise||Promise.resolve()).finally(()=>{Object(Ms.a)(t)||(t.removeEventListener("play",r),t.removeEventListener("timeupdate",o),t.removeEventListener("pause",u),t.removeEventListener("ended",g))})},n=()=>{p.drawImage(t,0,0);const e=Os-t.currentTime/t.duration*Os;return d.style.strokeDashoffset=""+e,!t.paused},a=()=>{t.duration&&(Object(Ms.a)(t)?(t.paused&&n(),x.innerText=xe(t.duration-t.currentTime,!1)):s())},o=Be(a),r=()=>{F.classList.add("hide"),i.classList.remove("is-paused"),Object(He.b)(n,h),O&&O.preloader&&O.preloader.classList.contains("manual")&&O.onClick()},u=()=>{Object(Ms.a)(t)?i.classList.add("is-paused"):s()},g=()=>{F.classList.remove("hide"),i.classList.add("is-paused"),F.currentTime=0,x.innerText=xe(t.duration,!1),t.currentTime&&(t.currentTime=0)};t.addEventListener("play",r),t.addEventListener("timeupdate",o),t.addEventListener("pause",u),t.addEventListener("ended",g),Object(l.b)(h,s=>{if(Object(c.a)(s),O&&!O.detached&&O.onClick(),t.paused){const s=!!w;if(fe.setSearchContext(w||{peerId:Ne.c,inputFilter:{_:"inputMessagesFilterEmpty"},useSearch:!1})){const[t,n]=s?Ke(i,e.mid):[];fe.setTargets({peerId:e.peerId,mid:e.mid},t,n)}t.play()}else t.pause()}),t.paused?t.duration&&t.currentTime!==t.duration&&t.currentTime>0?(n(),a(),F.classList.add("hide")):u():r()};s.pFlags.is_outgoing?(i.onLoad=u,i.dataset.isOutgoing="1"):u()}else F.autoplay=!0;let j;if(s){if(j=js({photo:e,message:s,container:t,boxWidth:i,boxHeight:n,withTail:o,isOut:r,lazyLoadQueue:h,middleware:d,withoutPreloader:!0,loadPromises:v,autoDownloadSize:null==S?void 0:S.photo,size:y}),_.thumb=j,!T&&"gif"!==e.type||g)return _.loadPromise=j.loadPromises.full,_;if(o){const e=(j.images.thumb||j.images.full).parentElement;F.width=+e.getAttributeNS(null,"width"),F.height=+e.getAttributeNS(null,"height"),e.append(F)}}else{const t=C.a.getThumb(e,!1);t&&t.promise.then(()=>{F.poster=t.cacheContext.url})}!F.parentElement&&t&&((null==j?void 0:j.aspecter)||t).append(F);const D=ce.a.getCacheContext(e),R=!!(null===(L=null==s?void 0:s.media)||void 0===L?void 0:L.preloader);R?(O=s.media.preloader,O.attach(t,!1),P=void 0):D.downloaded||e.supportsStreaming||m?e.supportsStreaming&&(O=new ye.a({cancelable:!1,attachMethod:"prepend"})):O=new ye.a({attachMethod:"prepend"});const B=Object(ie.a)();if(F.addEventListener("error",e=>{4!==F.error.code&&console.error("Error "+F.error.code+"; details: "+F.error.message),O&&!R&&O.detach(),B.isFulfilled||B.resolve()},{once:!0}),Object(pe.e)(F).then(()=>{u&&M.a.addAnimation(F,u),O&&!R&&O.detach(),B.resolve()}),"video"===e.type){const e=Be(()=>{F.videoWidth&&(x.innerText=xe(F.duration-F.currentTime,!1))});F.addEventListener("timeupdate",e),A&&F.addEventListener("timeupdate",()=>{Ls.a.mutateElement(A,()=>{A.remove()})},{once:!0})}F.muted=!0,F.loop=!0,F.autoplay=!0;let N=P&&(null===(I=null==j?void 0:j.preloader)||void 0===I?void 0:I.loadFunc);const U=()=>{O&&P&&!m&&(O.construct(),O.setManual());let i=Promise.resolve();if(O&&!R||m)if(D.downloaded||e.supportsStreaming)e.supportsStreaming&&(P?i=Promise.reject():!D.downloaded&&O&&(O.attach(t,!1,null),F.addEventListener(ae.g?"timeupdate":"canplay",()=>{O.detach()},{once:!0})));else{const s=i=C.a.downloadDoc(e,null==h?void 0:h.queueId,P);O&&O.attach(t,!1,s)}return!P&&N&&(N(),N=null),P=void 0,i.then(()=>{!d||d()?("round"===e.type&&fe.resolveWaitingForLoadMedia(s.peerId,s.mid,s.pFlags.is_scheduled),Object(Ss.a)(F,D.url)):B.resolve()},()=>{}),{download:i,render:B}};return O&&!R&&O.setDownloadFunction(U),"gif"!==e.type||T?_.loadPromise=h?(h.push({div:t,load:()=>U().render}),Promise.resolve()):U().render:Object(l.b)(t,e=>{Object(c.a)(e),A.remove(),U()},{capture:!0,once:!0}),_}function Fs({message:e,withTime:t,fontWeight:s,voiceAsMusic:n,showSender:o,searchContext:c,loadPromises:d,autoDownloadSize:h,lazyLoadQueue:p,sizeType:u}){var m,b;s||(s=500),u||(u="");const v=0===h,f=e.media.document||e.media.webpage.document,y=e.pFlags.is_outgoing&&(null===(m=e.media)||void 0===m?void 0:m.preloader);if("audio"===f.type||"voice"===f.type||"round"===f.type){const i=new Ge;return i.withTime=t,i.message=e,i.noAutoDownload=v,i.lazyLoadQueue=p,i.loadPromises=d,n&&(i.voiceAsMusic=n),c&&(i.searchContext=c),o&&(i.showSender=o),y&&(i.preloader=e.media.preloader),i.dataset.fontWeight=""+s,i.dataset.sizeType=u,i.render(),i}let w=f.file_name?f.file_name.split("."):"",S="";S=w.length>1&&Array.isArray(w)?Object(Is.a)(w.pop().split(" ",1)[0].toLowerCase()):"file";let L=document.createElement("div");L.classList.add("document","ext-"+S),L.dataset.docId=""+f.id;const M=document.createElement("div");M.classList.add("document-ico");const I=ce.a.getCacheContext(f);if((null===(b=f.thumbs)||void 0===b?void 0:b.length)||e.pFlags.is_outgoing&&I.url&&"photo"===f.type){L.classList.add("document-with-thumb");let t=[];if(e.pFlags.is_outgoing&&["photo","video"].includes(f.type))M.innerHTML=``,t.push(M.firstElementChild);else{const e=js({photo:f,message:null,container:M,boxWidth:54,boxHeight:54,loadPromises:d,withoutPreloader:!0,lazyLoadQueue:p,size:r.a.choosePhotoSize(f,54,54,!0)});M.style.width=M.style.height="",e.images.thumb&&t.push(e.images.thumb),e.images.full&&t.push(e.images.full)}t.forEach(e=>e.classList.add("document-thumb"))}else M.innerText=S;let E=f.fileName||"Unknown.file";document.createElement("div").classList.add("document-description");const P=[Ue(f.size)];t&&P.push(Object(ne.d)(e.date)),o&&P.push(i.a.wrapSenderToPeer(e)),L.innerHTML=`\n ${I.downloaded&&!y||!e.mid?"":''}\n \n \n `;const k=L.querySelector(".document-name"),x=new Fe.a;x.dataset.fontWeight=""+s,x.dataset.sizeType=u,x.innerHTML=E,k.append(x),o&&k.append(i.a.wrapSentTime(e));if(L.querySelector(".document-size").append(...Object(T.g)(P," · ")),L.prepend(M),!y&&e.pFlags.is_outgoing&&!e.mid)return L;let A,O=null;const _=()=>{if(A){A.classList.add("downloaded");const e=A;setTimeout(()=>{e.remove()},200),A=null}O&&(O=null)},F=e=>{var t;const s=!e||e.isTrusted,i=C.a.getDoc(L.dataset.docId);let n;const o=ic.chat.bubbles?ic.chat.bubbles.lazyLoadQueue.queueId:void 0;if(s)if("pdf"===i.type){const e=C.a.downloading.has(i.id)||I.downloaded;n=C.a.downloadDoc(i,o),e&&n.then(()=>{setTimeout(()=>{const e=ce.a.getCacheContext(i).url;window.open(e)},a.a.settings.animationsEnabled?250:0)})}else n=g.has(i.mime_type)&&(null===(t=i.thumbs)||void 0===t?void 0:t.length)?C.a.downloadDoc(i,o):C.a.saveDocFile(i,o);else n=C.a.downloadDoc(i,o);return A&&(n.then(_),O.attach(A,!0,n)),{download:n}};return C.a.downloading.has(f.id)?(A=L.querySelector(".document-download"),O=new ye.a,O.attach(A,!1,C.a.downloading.get(f.id))):I.downloaded&&!y||(A=L.querySelector(".document-download"),O=e.media.preloader,O?(O.attach(A),e.media.promise.then(_)):(O=new ye.a,O.construct(),O.setManual(),O.attach(A),O.setDownloadFunction(F),void 0!==h&&h>=f.size&&Object(l.d)(O.preloader))),Object(l.b)(L,e=>{O?O.onClick(e):F(e)}),L}function js({photo:e,message:t,container:s,boxWidth:i,boxHeight:n,withTail:o,isOut:l,lazyLoadQueue:c,middleware:d,size:h,withoutPreloader:p,loadPromises:u,autoDownloadSize:g,noBlur:m,noThumb:v,noFadeIn:f,blurAfter:y}){var w;if(!e.sizes&&!e.thumbs)return i&&n&&!h&&"document"===e._&&r.a.setAttachmentSize(e,s,i,n,void 0,t),{loadPromises:{thumb:Promise.resolve(),full:Promise.resolve()},images:{thumb:null,full:null},preloader:null,aspecter:null};let S=0===g;h||(void 0===i&&(i=b.b.active.regular.width),void 0===n&&(n=b.b.active.regular.height)),s.classList.add("media-container");let L,M,I,E=s,P=!0,k=Promise.resolve();const T="document"===e._&&"image/gif"===e.mime_type&&!h;if(M=new Image,i&&n&&!h){const a=r.a.setAttachmentSize(e,s,i,n,void 0,t,void 0,T?{_:"photoSize",w:e.w,h:e.h,size:e.size,type:"full"}:void 0);if(h=a.photoSize,P=a.isFit,I=ce.a.getCacheContext(e,h.type),!P){E=document.createElement("div"),E.classList.add("media-container-aspecter"),E.style.width=a.size.width+"px",E.style.height=a.size.height+"px";const i=r.a.getStrippedThumbIfNeeded(e,I,!m,!0);if(i){k=i.loadPromise;const e=i.image;e.classList.add("media-photo"),s.append(e)}else{js({container:s,message:t,photo:e,boxWidth:0,boxHeight:0,size:h,lazyLoadQueue:c,isOut:l,loadPromises:u,middleware:d,withoutPreloader:p,withTail:o,autoDownloadSize:g,noBlur:m,noThumb:!0,blurAfter:!0}).images.full.classList.add("media-photo","thumbnail")}s.classList.add("media-container-fitted"),s.append(E)}}else h||(h=r.a.choosePhotoSize(e,i,n,!0)),I=ce.a.getCacheContext(e,null==h?void 0:h.type);if(!v){const t=r.a.getStrippedThumbIfNeeded(e,I,!m);t&&(k=Promise.all([k,t.loadPromise]),L=t.image,L.classList.add("media-photo"),E.append(L))}M.classList.add("media-photo");const x=(L||!I.downloaded)&&a.a.settings.animationsEnabled&&!f;let A;(null===(w=null==t?void 0:t.media)||void 0===w?void 0:w.preloader)&&!p?(A=t.media.preloader,A.attach(s),S=void 0):I.downloaded||(A=new ye.a({attachMethod:"prepend"}));const O=e=>Ds(s,M,e,x,E,L),_=()=>d&&!d()?Promise.resolve():y?Object(Es.a)(I.url,12).then(e=>O(e)):O(I.url);let F;const j=h.w>=150&&h.h>=150||S,D=()=>{S&&!p&&A&&(A.construct(),A.setManual());const t=T&&!h?C.a.downloadDoc(e,null==c?void 0:c.queueId):r.a.preloadPhoto(e,h,null==c?void 0:c.queueId,S);A&&!I.downloaded&&!p&&j&&A.attach(s,!1,t),S=void 0;const i=t.then(_);return i.catch(()=>{}),{download:t,render:i}};return A&&A.setDownloadFunction(D),I.downloaded?k=F=D().render:c?c.push({div:s,load:()=>D().download}):F=D().render,u&&k&&u.push(k),{loadPromises:{thumb:k,full:F||Promise.resolve()},images:{thumb:L,full:M},preloader:A,aspecter:E}}function Ds(e,t,s,i,n=e,a){return i&&t.classList.add("fade-in"),new Promise(o=>{Object(Ss.a)(t,s,()=>{Ls.a.mutateElement(e,()=>{n.append(t),Object(Re.b)(()=>{o()}),i&&t.addEventListener("animationend",()=>{Ls.a.mutate(()=>{t.classList.remove("fade-in"),a&&a.remove()})},{once:!0})})})})}function Rs({size:e,doc:t,middleware:s,target:i,side:n,skipRatio:a,play:o}){const r=document.createElement("div");r.classList.add("emoji-animation"),r.style.width=e+"px",r.style.height=e+"px";const l=Bs({div:r,doc:t,middleware:s,withThumb:!1,needFadeIn:!1,loop:!1,width:e,height:e,play:o,group:"none",skipRatio:a}).then(e=>(Object(ks.a)(e),e.addEventListener("enterFrame",t=>{t===e.maxFrame&&(e.remove(),r.remove(),ic.chat.bubbles.scrollable.container.removeEventListener("scroll",g))}),xs.a&&e.addEventListener("firstFrame",()=>{navigator.vibrate(100)},{once:!0}),e)),c=e=>{const t=Math.random()*e*2;return t>e?-t%e:t},d=c(16),h=c(4),p=e/8*("right"===n?1:-1),u=()=>{if(!Object(Ms.a)(i))return;const t=i.getBoundingClientRect(),s=("right"===n?t.right:t.left)+("center"===n?(t.width-e)/2:("right"===n?-e:0)+p+d),a=t.top+(t.height-e)/2+("center"===n?0:h);r.style.top=a+"px",r.style.left=s+"px"},g=Be(u);return ic.chat.bubbles.scrollable.container.addEventListener("scroll",g),u(),ic.emojiAnimationContainer.append(r),{animationDiv:r,stickerPromise:l}}function Bs({doc:e,div:t,middleware:s,lazyLoadQueue:n,group:o,play:d,onlyThumb:h,emoji:p,width:u,height:g,withThumb:m,loop:b,loadPromises:f,needFadeIn:y,needUpscale:w,skipRatio:S,static:L}){var I;const E=e.sticker;if(1===E&&(L=!0),u||(u=p?void 0:200),g||(g=p?void 0:200),2===E&&oe.a.loadLottieWorkers(),!E)throw console.error("wrong doc for wrapSticker!",e),new Error("wrong doc for wrapSticker!");let P;if(t.dataset.docId=""+e.id,t.classList.add("media-sticker-wrapper"),L&&1!==E){const t=r.a.choosePhotoSize(e,u,g,!1);P=ce.a.getCacheContext(e,t.type)}else P=ce.a.getCacheContext(e);const k=p?Object(se.d)(p):-1,T=P.downloaded&&!y,x=!L&&(2===E||3===E),A=x;let O=Object(ie.a)(),_=!1;if(((null===(I=e.thumbs)||void 0===I?void 0:I.length)||e.stickerCachedThumbs)&&!t.firstElementChild&&(!T||A||h)&&!1!==m){let i,a=e.stickerCachedThumbs&&e.stickerCachedThumbs[k]||e.thumbs[0];const o=()=>{t.childElementCount||(i.classList.add("media-sticker","thumbnail"),Ls.a.mutateElement(t,()=>{t.append(i),O.resolve()}))};if("url"in a)i=new Image,Object(Ss.a)(i,a.url,o),_=!0;else if("bytes"in a){if("photoPathSize"===a._)if(a.bytes.length){const s=r.a.getPathFromPhotoPathSize(a);t.innerHTML=`\n \n `}else a=e.thumbs.find(e=>{var t;return null===(t=e.bytes)||void 0===t?void 0:t.length})||a;a&&"photoPathSize"!==a._&&k<=0&&(i=new Image,Ps.a||e.pFlags.stickerThumbConverted||P.url?(Object(Ss.a)(i,r.a.getPreviewURLFromThumb(e,a,!0),o),_=!0):re.a.convert(""+e.id,a.bytes).then(n=>{a.bytes=n,e.pFlags.stickerThumbConverted=!0,s&&!s()||t.childElementCount||Object(Ss.a)(i,r.a.getPreviewURLFromThumb(e,a,!0),o)}).catch(()=>{}))}else if((2===E&&k<=0||3===E)&&(m||h)){i=new Image;const r=()=>{if(t.childElementCount||s&&!s())return;const n=()=>{t.childElementCount||s&&!s()||Object(Ss.a)(i,P.url,o)};return P.url?(n(),Promise.resolve()):C.a.getThumbURL(e,a).promise.then(n)};if(n&&h)return n.push({div:t,load:r}),Promise.resolve();r(),a.url&&(_=!0)}}if(f&&_&&f.push(O),h)return Promise.resolve();const F=()=>As(this,void 0,void 0,(function*(){if(!s||s()){if(2===E&&!L)return yield C.a.downloadDoc(e,null==n?void 0:n.queueId).then(n=>As(this,void 0,void 0,(function*(){if(s&&!s())throw new Error("wrapSticker 2 middleware");let r=yield oe.a.loadAnimationWorker({container:t,loop:b&&!p,autoplay:d,animationData:n,width:u,height:g,name:"doc"+e.id,needUpscale:w,skipRatio:S,toneIndex:k},o,s);if(r.addEventListener("firstFrame",()=>{const s=t.firstElementChild;!1!==y&&(y=(y||!s||"svg"===s.tagName)&&a.a.settings.animationsEnabled);const i=()=>{s&&s!==r.canvas&&s.remove()};y?Ls.a.mutate(()=>{r.canvas.classList.add("fade-in"),s&&s.classList.add("fade-out"),r.canvas.addEventListener("animationend",()=>{Ls.a.mutate(()=>{r.canvas.classList.remove("fade-in"),i()})},{once:!0})}):s&&Ls.a.mutate(i),!1!==m&&C.a.saveLottiePreview(e,r.canvas,k)},{once:!0}),p){const e={a:[],v:1};let n;Cs.a.preloadAnimatedEmojiStickerAnimation(p),Object(l.b)(t,a=>As(this,void 0,void 0,(function*(){Object(c.a)(a);const o=oe.a.getAnimation(t);if(o.paused){const e=Cs.a.getAnimatedEmojiSoundDocument(p);if(e){const s=document.createElement("audio");s.style.display="none",t.parentElement.append(s);try{yield C.a.downloadDoc(e);const t=ce.a.getCacheContext(e);s.src=t.url,s.play(),yield Object(pe.e)(s,void 0,!0),s.addEventListener("ended",()=>{s.src="",s.remove()},{once:!0})}catch(e){}}o.autoplay=!0,o.restart()}if(!ic.chat.peerId.isUser())return;const r=Cs.a.getAnimatedEmojiSticker(p,!0);if(!r)return;const l=Object(Pe.a)(t,"bubble"),d=l.classList.contains("is-out"),{animationDiv:h}=Rs({doc:r,middleware:s,side:d?"right":"left",size:280,target:t,play:!0});l&&(d?h.classList.add("is-out"):h.classList.add("is-in")),n||(n=Object(Ts.a)(()=>{if(!e.a.length)return;const s=e.a[0].t;e.a.forEach(e=>{e.t=(e.t-s)/1e3});const n=Object(Pe.a)(t,"bubble");i.a.setTyping(ic.chat.peerId,{_:"sendMessageEmojiInteraction",msg_id:v.a.getServerMessageId(+n.dataset.mid),emoticon:p,interaction:{_:"dataJSON",data:JSON.stringify(e)}},!0),e.a.length=0},1e3,!1)),a.isTrusted&&(e.a.push({i:1,t:Date.now()}),n())})))}return r})));if(L||3===E){let i;L?i=new Image:(i=document.createElement("video"),i.setAttribute("playsinline","true"),i.muted=!0,d&&(i.autoplay=!0,i.loop=!0));const l=t.firstElementChild!==i&&t.firstElementChild;return!1!==y&&(y=(y||!T||(L?l:!l||"svg"===l.tagName))&&a.a.settings.animationsEnabled),i.classList.add("media-sticker"),y&&i.classList.add("fade-in"),new Promise((a,c)=>{const d=()=>{if(s&&!s())return a();const n=()=>{Ls.a.mutateElement(t,()=>{if(t.append(i),l&&l.classList.add("fade-out"),3===E&&!C.a.isSavingLottiePreview(e,k)){Object(ks.a)(i);const t=document.createElement("canvas");t.width=u*window.devicePixelRatio,t.height=g*window.devicePixelRatio;t.getContext("2d").drawImage(i,0,0,t.width,t.height),C.a.saveLottiePreview(e,t,k)}3===E&&o&&M.a.addAnimation(i,o),a(),y&&i.addEventListener("animationend",()=>{i.classList.remove("fade-in"),l&&l.remove()},{once:!0})})};L?Object(Ss.a)(i,P.url,n):(i.src=P.url,Object(pe.e)(i).then(n))};if(P.url)d();else{let t;if(2===E&&L){const s=r.a.choosePhotoSize(e,u,g,!1);t=C.a.getThumbURL(e,s).promise}else t=C.a.downloadDoc(e,null==n?void 0:n.queueId);t.then(d,a)}})}}})),j=!n||T&&!x?F():(n.push({div:t,load:F}),Promise.resolve());return T&&L&&(O=j,f&&f.push(O)),j}function Ns({set:e,lazyLoadQueue:t,container:s,group:i,autoplay:n,width:a,height:o}){var r;return As(this,void 0,void 0,(function*(){if(null===(r=e.thumbs)||void 0===r?void 0:r.length)return s.classList.add("media-sticker-wrapper"),void t.push({div:s,load:()=>{const t=Cs.a.getStickerSetThumbDownloadOptions(e),r=ce.a.download(t);if(e.pFlags.animated&&!e.pFlags.videos)return r.then(t=>{oe.a.loadAnimationWorker({container:s,loop:!0,autoplay:n,animationData:t,width:a,height:o,needUpscale:!0,name:"setThumb"+e.id},i)});{let t;return e.pFlags.videos?(t=document.createElement("video"),t.setAttribute("playsinline","true"),t.autoplay=!0,t.muted=!0,t.loop=!0):t=new Image,t.classList.add("media-sticker"),r.then(e=>{Object(Ss.a)(t,URL.createObjectURL(e),()=>{s.append(t)})})}}});const l=Cs.a.getStickerSet(e),c=yield l;"documentEmpty"!==c.documents[0]._&&Bs({doc:c.documents[0],div:s,group:i,lazyLoadQueue:t})}))}function Us({doc:e,row:t,size:s}){const i=t.media,n=t.createMedia("small");i&&n.classList.add("hide");const a=i?[]:void 0,o="small"===s?32:48,r=Bs({div:n,doc:e,width:o,height:o,loadPromises:a});return a&&Promise.all(a).then(()=>{n.classList.remove("hide"),i.remove()}),r}function Hs(e,t,s){const i=new Qe("reply");return i.fill(e,t,s),i.container}function zs(e){const t=new st(e.items,e.maxWidth,e.minWidth,e.spacing,e.maxHeight).layout(),s=t.find(e=>e.sides&Ze),i=s.geometry.width+s.geometry.x,n=t.find(e=>e.sides&et),a=n.geometry.height+n.geometry.y,o=e.container;o.style.width=i+"px",o.style.height=a+"px";const r=o.children;t.forEach(({geometry:t,sides:s},n)=>{let l;if(l=r[n],l||(l=document.createElement("div"),o.append(l)),l.classList.add("album-item","grouped-item"),l.style.width=t.width/i*100+"%",l.style.height=t.height/a*100+"%",l.style.top=t.y/a*100+"%",l.style.left=t.x/i*100+"%",s&tt&&s&Je&&(l.style.borderTopLeftRadius="inherit"),s&tt&&s&et&&(l.style.borderBottomLeftRadius="inherit"),s&Ze&&s&Je&&(l.style.borderTopRightRadius="inherit"),s&Ze&&s&et&&(l.style.borderBottomRightRadius="inherit"),e.forMedia){const e=document.createElement("div");e.classList.add("album-item-media"),l.append(e)}})}function Vs({groupId:e,attachmentDiv:t,middleware:s,uploading:n,lazyLoadQueue:a,isOut:o,chat:l,loadPromises:c,autoDownload:d}){const h=[],p=i.a.getMidsByAlbum(e);for(const e of p){const t=l.getMessage(e),s=t.media.photo||t.media.document,i="photo"===s._?r.a.choosePhotoSize(s,480,480):{w:s.w,h:s.h};h.push({size:i,media:s,message:t})}zs({container:t,items:h.map(e=>({w:e.size.w,h:e.size.h})),maxWidth:b.b.active.album.width,minWidth:100,spacing:2,forMedia:!0}),h.forEach((e,i)=>{const{size:n,media:r,message:l}=e,h=t.children[i];h.dataset.mid=""+l.mid,h.dataset.peerId=""+l.peerId;const p=h.firstElementChild;"photo"===r._?js({photo:r,message:l,container:p,boxWidth:0,boxHeight:0,isOut:o,lazyLoadQueue:a,middleware:s,size:n,loadPromises:c,autoDownloadSize:d.photo}):_s({doc:l.media.document,container:p,message:l,boxWidth:0,boxHeight:0,withTail:!1,isOut:o,lazyLoadQueue:a,middleware:s,loadPromises:c,autoDownload:d})})}b.b.addEventListener("changeScreen",(e,t)=>{if(t===b.a.mobile||e===b.a.mobile){const e=Array.from(document.querySelectorAll(".media-round .progress-ring")),t=b.b.active.round.width,s=t/2,i=s-7;Os=2*Math.PI*i,e.forEach(e=>{e.setAttributeNS(null,"width",""+t),e.setAttributeNS(null,"height",""+t);const n=e.firstElementChild;n.setAttributeNS(null,"cx",""+s),n.setAttributeNS(null,"cy",""+s),n.setAttributeNS(null,"r",""+i),n.style.strokeDasharray=Os+" "+Os,n.style.strokeDashoffset=""+Os})}}),a.a.addEventListener("download_start",e=>{Array.from(document.querySelectorAll(`.document[data-doc-id="${e}"]`)).forEach(e=>{e.querySelector(".preloader-container.manual")&&Object(l.d)(e)})});var Ks=s(91),Gs=s(110),Ws=s(93);function qs(e,t,s,i){return void 0===i&&(i=e.parentElement===t?Object(Ws.a)(e):-1),i!==s&&(-1!==i&&is?t.insertBefore(e,t.children[s]):t.append(e):t.prepend(e),!0)}var $s=s(141);class Qs{constructor(e){this.updateElementWith=e=>e(),this.updateListWith=e=>e(!0),this.middleware=Object(Gs.a)(),Object(w.a)(this,e),this.elements=new Map,this.sorted=[]}clear(){this.middleware.clean(),this.elements.clear(),this.sorted.length=0}_updateList(){this.elements.forEach(e=>{this.update(e.id,!0)}),this.onSort&&this.sorted.forEach((e,t)=>{this.onSort(e,t)})}updateList(e){const t=this.middleware.get();this.updateListWith(s=>{if(!t()||void 0!==s&&!s)return e(!1);this._updateList(),e(!0)})}has(e){return this.elements.has(e)}get(e){return this.elements.get(e)}getAll(){return this.elements}add(e,t=!1,s,i=t){let n=this.get(e);if(n)return n;const a={id:e,index:0};return n=this.onElementCreate(a,t),this.elements.set(e,n),this.update(e,i,n,s),n}delete(e,t){const s=this.elements.get(e);if(!s)return!1;this.elements.delete(e);const i=this.sorted.indexOf(s);if(-1!==i&&this.sorted.splice(i,1),this.onDelete)if(t)this.onDelete(s);else{const e=this.middleware.get();this.updateElementWith(()=>{e()&&this.onDelete(s)})}return!0}update(e,t=!1,s=this.get(e),i){if(!s)return;s.index=this.getIndex(s),this.onUpdate&&this.onUpdate(s);const n=Object($s.a)(this.sorted,s,"index");if(!t&&this.onSort){const e=this.middleware.get();(i||this.updateElementWith)(()=>{e()&&this.onSort(s,n)})}}}var Ys=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class Xs extends Qs{constructor(e={}){let t;super({getIndex:e.getIndex||(e=>E.a.getUserStatusForSort(e.id)),onDelete:e=>{e.dom.listEl.remove(),this.onListLengthChange&&this.onListLengthChange()},onUpdate:e.onUpdate||(e=>{const t=E.a.getUserStatusString(e.id);Object(k.a)(e.dom.lastMessageSpan,t)}),onSort:(e,t)=>{const s=e.dom.listEl.parentElement!==this.list;qs(e.dom.listEl,this.list,t),s&&this.onListLengthChange&&this.onListLengthChange()},onElementCreate:e=>{const{dom:t}=Oc.addDialogNew({dialog:e.id,container:!1,drawStatus:!1,avatarSize:this.avatarSize,autonomous:this.autonomous,meAsSaved:!1,rippleEnabled:this.rippleEnabled,lazyLoadQueue:this.lazyLoadQueue});return e.dom=t,e},updateElementWith:Re.b,updateListWith:e=>Ys(this,void 0,void 0,(function*(){return Object(Ms.a)(this.list)?(yield Object(Ks.c)(),Object(Ms.a)(this.list)?void e(!0):e(!1)):e(!1)}))}),this.avatarSize=48,this.rippleEnabled=!0,this.autonomous=!0,Object(w.a)(this,e),this.list=Oc.createChatList(this.createChatListOptions);const s=()=>{t=window.setTimeout(()=>{this.updateList(e=>{e&&s()})},Xs.SORT_INTERVAL)};s()}}Xs.SORT_INTERVAL=3e4;var Js=s(164);function Zs(e){let t=!1;return new is(Object.assign(Object.assign({},e),{verifyTouchTarget:t=>!Object(Pe.a)(t.target,"progress-line")&&!Object(Js.a)(t)&&(!e.verifyTouchTarget||e.verifyTouchTarget(t)),onSwipe:(s,i,n)=>{if(!t&&Math.abs(i)>20)return!0;if(Math.abs(s)>Math.abs(i))Object(c.a)(n),t=!0;else if(!t&&Math.abs(i)>Math.abs(s))return!0;return e.onSwipe(s,i,n)},onReset:()=>{t=!1,e.onReset&&e.onReset()},cancelEvent:!1}))}function ei(e){return Zs(Object.assign(Object.assign({},e),{onSwipe:(t,s,i)=>{if(Math.abs(t)>50)return e.onSwipe(t,s,i),Object(ee.b)(),!0}}))}var ti=s(118),si=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class ii extends Dt{constructor(e,t,s=!1){super({peerTypes:["dialogs","contacts"],onSelect:s?t:s=>si(this,void 0,void 0,(function*(){if(t){const e=t(s);e instanceof Promise&&(yield e)}ic.setInnerPeer({peerId:s}),ic.chat.input.initMessagesForward(e)})),placeholder:"ShareModal.Search.ForwardPlaceholder",chatRightsAction:"send_messages",selfPresence:"ChatYourSelf"})}}class ni{constructor(e,t,s,n){const r=new Tt.a({peerId:e}).element;t=t.slice();const l=(a,o)=>{n&&n(),"scheduled"===s?i.a.deleteScheduledMessages(e,t):i.a.deleteMessages(e,t,!!a.size||o)};let c,d,h,p,u,g=[];if(1===t.length?c="DeleteSingleMessagesTitle":(c="DeleteMessagesTitle",d=[Object(T.d)("messages",[t.length])]),h=o.a.isMegagroup(e)?1===t.length?"AreYouSureDeleteSingleMessageMega":"AreYouSureDeleteFewMessagesMega":1===t.length?"AreYouSureDeleteSingleMessage":"AreYouSureDeleteFewMessages",u=[{langKey:"Delete",isDanger:!0,callback:l}],e===a.a.myId||"scheduled"===s);else if(e.isUser())g.push({text:"DeleteMessagesOptionAlso",textArgs:[r]});else{const s=G.a.getChat(e.toChatId()),n=G.a.hasRights(e.toChatId(),"delete_messages");if("chat"===s._){const s=n?t.slice():t.filter(t=>i.a.getMessageByPeer(e,t).fromId===a.a.myId);s.length&&(s.length===t.length?g.push({text:"DeleteForAll"}):(g.push({text:"DeleteMessagesOption"}),h="DeleteMessagesTextGroup",p=[Object(T.d)("messages",[s.length])]))}else u[0].callback=e=>l(e,!0)}Object(wt.a)(u);new Lt("popup-delete-chat",{peerId:e,titleLangKey:c,titleLangArgs:d,descriptionLangKey:h,descriptionLangArgs:p,buttons:u,checkboxes:g}).show()}}var ai=s(154);class oi{constructor(e,t,s){let n,a,o=[];n=`Send Message${t.length>1?"s":""} Now`,a=t.length>1?"Send "+t.length+" messages now?":"Send message now?";o.push({langKey:"Send",callback:()=>{s&&s(),i.a.sendScheduledMessages(e,t)}});new Lt("popup-delete-chat",{peerId:e,title:n,description:a,buttons:o}).show()}}var ri=s(37);function li(){window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty()}var ci=s(113);const di=e=>[...e.values()].reduce((e,t)=>e+t.size,0);class hi extends D.a{constructor(e){if(super(!1),this.selectedMids=new Map,this.isSelecting=!1,this.cancelSelection=e=>{e&&(this.doNotAnimate=!0),this.onCancelSelection&&this.onCancelSelection(),this.selectedMids.clear(),this.toggleSelection(),li(),e&&(this.doNotAnimate=void 0)},Object(w.a)(this,e),this.navigationType="multiselect-"+Object(ht.b)(),he.a)return this.listenerSetter.add(this.listenElement)("touchend",()=>{this.isSelecting&&(this.selectedText=window.getSelection?window.getSelection().toString():document.selection?document.selection.createRange().text:"")}),void Object(ee.a)(this.listenElement,e=>{if(this.isSelecting||this.verifyTouchLongPress&&!this.verifyTouchLongPress())return;document.body.classList.add("no-select"),this.listenElement.addEventListener("touchend",e=>{Object(c.a)(e),document.body.classList.remove("no-select")},{once:!0,capture:!0}),li();const t=this.getElementFromTarget(e.target);t&&this.toggleByElement(t)},this.listenerSetter);const t=(e,t)=>{if(e===t)return[];const s=e.getBoundingClientRect(),i=t.getBoundingClientRect(),n=(s.top-i.top||s.left-i.left)<0,a=Object(Pe.a)(e,this.lookupBetweenParentClassName);if(!a)return[];const o=Array.from(a.querySelectorAll(this.lookupBetweenElementsQuery));let r=o.indexOf(e),l=o.indexOf(t);n||([l,r]=[r,l]);return o.slice(r+1,l)};this.listenerSetter.add(this.listenElement)("mousedown",e=>{const s=Object(Pe.a)(e.target,this.targetLookupClassName);if(0!==e.button)return;if(this.verifyTarget&&!this.verifyTarget(e,s))return;const i=new Map;let n,a=s;const o=(e,s=!0)=>{const r=+e.dataset.mid;if(!r||!e.dataset.peerId)return;const l=e.dataset.peerId.toPeerId();Object(Ms.a)(a)||(a=e);let c=i.get(l);if(c||i.set(l,c=new Set),!c.has(r)){const d=this.isMidSelected(l,r);if(void 0===n&&(n=!d),c.add(r),n&&!d||!n&&d){const n=di(i);if(this.toggleByElement&&s){n<2&&Object(ci.a)(e,a)&&(a=e);const s=t(a,e);s.length&&s.forEach(e=>{o(e,!1)})}if(this.selectedMids.size)this.toggleByElement&&this.toggleByElement(e);else if(2===n&&this.toggleByMid)for(const[e,t]of i)for(const s of t)this.toggleByMid(e,s)}}};let r=!1;const d=e=>{r||(li(),r=!0);const t=this.getElementFromTarget(e.target);if(t)return this.verifyMouseMoveTarget&&!this.verifyMouseMoveTarget(e,t,n)?(this.listenerSetter.removeManual(this.listenElement,"mousemove",d),void this.listenerSetter.removeManual(document,"mouseup",h,p)):void o(t)},h=e=>{i.size&&Object(l.b)(window,c.a,{capture:!0,once:!0,passive:!1}),this.listenerSetter.removeManual(this.listenElement,"mousemove",d),li()},p={once:!0};this.listenerSetter.add(this.listenElement)("mousemove",d),this.listenerSetter.add(document)("mouseup",h,p)})}isElementShouldBeSelected(e){return this.isMidSelected(e.dataset.peerId.toPeerId(),+e.dataset.mid)}appendCheckbox(e,t){e.prepend(t.label)}toggleElementCheckbox(e,t){const s=!!this.getCheckboxInputFromElement(e);if(t){if(s)return!1;const t=new St.a({name:e.dataset.mid,round:!0});this.isSelecting&&this.isElementShouldBeSelected(e)&&(t.input.checked=!0,e.classList.add("is-selected")),this.appendCheckbox(e,t)}else s&&this.getCheckboxInputFromElement(e).parentElement.remove();return!0}getCheckboxInputFromElement(e){var t;return"LABEL"===(null===(t=e.firstElementChild)||void 0===t?void 0:t.tagName)&&e.firstElementChild.firstElementChild}updateContainer(e=!1){const t=this.selectedMids.size;if(!t&&!e)return;let s=!t,i=!t,n=!t;for(const[e,t]of this.selectedMids){const n=this.isScheduled?this.appMessagesManager.getScheduledMessagesStorage(e):this.appMessagesManager.getMessagesStorage(e);for(const e of t){const t=this.appMessagesManager.getMessageFromStorage(n,e);if(s||(s=!this.appMessagesManager.canForward(t)),i||(i=!this.appMessagesManager.canDeleteMessage(t)),s&&i)break}if(s&&i)break}this.onUpdateContainer&&this.onUpdateContainer(s,i,n)}toggleSelection(e=!0,t=!1){const s=this.isSelecting,i=this.selectedMids.size;if(this.isSelecting=!!i||t,s===this.isSelecting)return!1;this.dispatchEvent("toggle",this.isSelecting),he.a||(this.listenElement.classList.toggle("no-select",this.isSelecting),s&&li()),Object(ri.a)();const n=!!i||t;return this.onToggleSelection&&this.onToggleSelection(n,!this.doNotAnimate),ae.f||(n?j.a.pushItem({type:this.navigationType,onPop:()=>{this.cancelSelection()}}):j.a.removeByType(this.navigationType)),t&&this.updateContainer(t),!0}cleanup(){this.doNotAnimate=!0,this.selectedMids.clear(),this.toggleSelection(!1),this.doNotAnimate=void 0}updateElementSelection(e,t){this.toggleElementCheckbox(e,!0);this.getCheckboxInputFromElement(e).checked=t,this.toggleSelection(),this.updateContainer(),Object(ps.a)(e,"is-selected",t,200)}isMidSelected(e,t){const s=this.selectedMids.get(e);return null==s?void 0:s.has(t)}length(){return di(this.selectedMids)}toggleMid(e,t,s){let i=this.selectedMids.get(e);if(s||void 0===s&&(null==i?void 0:i.has(t)))i&&(i.delete(t),i.size||this.selectedMids.delete(e));else{if(a.a.config.forwarded_count_max-this.length()-1<0)return mt(T.c.format("Chat.Selection.LimitToast",!0)),!1;i||(i=new Set,this.selectedMids.set(e,i)),i.add(t)}return!0}deleteSelectedMids(e,t){const s=this.selectedMids.get(e);s&&(t.forEach(e=>{s.delete(e)}),s.size||this.selectedMids.delete(e),this.updateContainer(),this.toggleSelection())}}class pi extends hi{constructor(e,t){super({appMessagesManager:t,listenElement:e.container,listenerSetter:new R.a,verifyTarget:(e,t)=>!!t&&this.isSelecting,getElementFromTarget:e=>Object(Pe.a)(e,"search-super-item"),targetLookupClassName:"search-super-item",lookupBetweenParentClassName:"tabs-tab",lookupBetweenElementsQuery:".search-super-item"}),this.searchSuper=e,this.toggleByElement=e=>{const t=+e.dataset.mid,s=e.dataset.peerId.toPeerId();this.toggleMid(s,t)&&this.updateElementSelection(e,this.isMidSelected(s,t))},this.toggleByMid=(e,t)=>{const s=this.searchSuper.mediaTab.contentTab.querySelector(`.search-super-item[data-peer-id="${e}"][data-mid="${t}"]`);this.toggleByElement(s)},this.onUpdateContainer=(e,t,s)=>{const i=this.length();Object(k.a)(this.selectionCountEl,Object(T.d)("messages",[i])),this.selectionGotoBtn.classList.toggle("hide",1!==i),this.selectionForwardBtn.classList.toggle("hide",e),this.selectionDeleteBtn&&this.selectionDeleteBtn.classList.toggle("hide",t)},this.onToggleSelection=(e,t)=>{if(Object(ps.a)(this.searchSuper.navScrollableContainer,"is-selecting",e,t?200:0,()=>{this.isSelecting||(this.selectionContainer.remove(),this.selectionContainer=this.selectionForwardBtn=this.selectionDeleteBtn=null,this.selectedText=void 0)}),Object(ps.a)(this.searchSuper.container,"is-selecting",e,200),this.isSelecting&&!this.selectionContainer){const e="search-super-selection";this.selectionContainer=document.createElement("div"),this.selectionContainer.classList.add(e+"-container");const t=N(`close ${e}-cancel`,{noRipple:!0});this.listenerSetter.add(t)("click",()=>this.cancelSelection(),{once:!0}),this.selectionCountEl=document.createElement("div"),this.selectionCountEl.classList.add(e+"-count"),this.selectionGotoBtn=N(`message ${e}-goto`);const s={listenerSetter:this.listenerSetter};Object(l.b)(this.selectionGotoBtn,()=>{const e=[...this.selectedMids.keys()][0],t=[...this.selectedMids.get(e)][0];this.cancelSelection(),a.a.dispatchEvent("history_focus",{peerId:e,mid:t})},s),this.selectionForwardBtn=N(`forward ${e}-forward`),Object(l.b)(this.selectionForwardBtn,()=>{const e={};for(const[t,s]of this.selectedMids)e[t]=Array.from(s).sort((e,t)=>e-t);new ii(e,()=>{this.cancelSelection()})},s),this.isPrivate&&(this.selectionDeleteBtn=N(`delete danger ${e}-delete`),Object(l.b)(this.selectionDeleteBtn,()=>{const e=[...this.selectedMids.keys()][0];new ni(e,[...this.selectedMids.get(e)],"chat",()=>{this.cancelSelection()})},s)),this.selectionContainer.append(...[t,this.selectionCountEl,this.selectionGotoBtn,this.selectionForwardBtn,this.selectionDeleteBtn].filter(Boolean));const i=this.selectionContainer;i.style.opacity="0",this.searchSuper.navScrollableContainer.append(i),i.offsetLeft,i.style.opacity=""}},this.isPrivate=!e.showSender}toggleSelection(e=!0,t=!1){const s=super.toggleSelection(e,t);if(s&&e){Array.from(this.searchSuper.tabsContainer.querySelectorAll(".search-super-item")).forEach(e=>{this.toggleElementCheckbox(e,this.isSelecting)})}return s}}class ui extends hi{constructor(e,t,s,i){super({appMessagesManager:i,listenElement:t.bubblesContainer,listenerSetter:t.listenerSetter,getElementFromTarget:e=>Object(Pe.a)(e,"grouped-item")||Object(Pe.a)(e,"bubble"),verifyTarget:(e,t)=>!(!this.selectedMids.size&&!e.target.classList.contains("bubble")&&!e.target.classList.contains("document-selection")&&t),verifyMouseMoveTarget:(e,t,s)=>!(e.target!==t&&!e.target.classList.contains("document-selection")&&void 0===s&&!this.selectedMids.size),verifyTouchLongPress:()=>!this.chat.input.recording,targetLookupClassName:"bubble",lookupBetweenParentClassName:"bubbles-inner",lookupBetweenElementsQuery:".bubble:not(.is-multiple-documents), .grouped-item",isScheduled:"scheduled"===e.type}),this.chat=e,this.bubbles=t,this.input=s,this.toggleByElement=e=>{if(!this.canSelectBubble(e))return;const t=+e.dataset.mid;if(e.classList.contains("is-grouped")){if(!this.isGroupedBubbleSelected(e)){const e=this.selectedMids.get(this.bubbles.peerId);if(e){this.chat.getMidsByMid(t).forEach(t=>e.delete(t))}}return void this.bubbles.getBubbleGroupedItems(e).forEach(this.toggleByElement)}if(!this.toggleMid(this.bubbles.peerId,t))return;if(e.classList.contains("grouped-item")){const s=Object(Pe.a)(e,"bubble"),i=this.isGroupedBubbleSelected(s),n=this.isGroupedMidsSelected(t);(n||i)&&this.updateElementSelection(s,n)}this.updateElementSelection(e,this.isMidSelected(this.bubbles.peerId,t))},this.toggleByMid=(e,t)=>{const s=this.bubbles.getMountedBubble(t);s&&this.toggleByElement(s.bubble)},this.onToggleSelection=(e,t)=>{const{needTranslateX:s,widthFrom:i,widthTo:n}=this.chat.input.center(t);Object(ps.a)(this.listenElement,"is-selecting",e,t?200:0,()=>{this.isSelecting||(this.selectionInputWrapper.remove(),this.selectionInputWrapper=this.selectionContainer=this.selectionSendNowBtn=this.selectionForwardBtn=this.selectionDeleteBtn=this.selectionLeft=this.selectionRight=null,this.selectedText=void 0)});const a=ithis.cancelSelection(),{once:!0,listenerSetter:this.listenerSetter}),this.selectionCountEl=document.createElement("div"),this.selectionCountEl.classList.add("selection-container-count"),"scheduled"===this.chat.type?(this.selectionSendNowBtn=Object(B.a)("btn-primary btn-transparent btn-short text-bold selection-container-send",{icon:"send2"}),this.selectionSendNowBtn.append(Object(T.d)("MessageScheduleSend")),Object(l.b)(this.selectionSendNowBtn,()=>{new oi(this.bubbles.peerId,[...this.selectedMids.get(this.bubbles.peerId)],()=>{this.cancelSelection()})},e)):(this.selectionForwardBtn=Object(B.a)("btn-primary btn-transparent text-bold selection-container-forward",{icon:"forward"}),this.selectionForwardBtn.append(Object(T.d)("Forward")),Object(l.b)(this.selectionForwardBtn,()=>{const e={};for(const[t,s]of this.selectedMids)e[t]=Array.from(s).sort((e,t)=>e-t);new ii(e,()=>{this.cancelSelection()})},e)),this.selectionDeleteBtn=Object(B.a)("btn-primary btn-transparent danger text-bold selection-container-delete",{icon:"delete"}),this.selectionDeleteBtn.append(Object(T.d)("Delete")),Object(l.b)(this.selectionDeleteBtn,()=>{new ni(this.bubbles.peerId,[...this.selectedMids.get(this.bubbles.peerId)],this.chat.type,()=>{this.cancelSelection()})},e);const s=this.selectionLeft=document.createElement("div");s.classList.add("selection-container-left"),s.append(t,this.selectionCountEl);const i=this.selectionRight=document.createElement("div");i.classList.add("selection-container-right"),i.append(...[this.selectionSendNowBtn,this.selectionForwardBtn,this.selectionDeleteBtn].filter(Boolean)),void 0!==a&&(s.style.transform=`translateX(${-a}px)`,i.style.transform=`translateX(${a}px)`),this.selectionContainer.append(s,i),this.selectionInputWrapper.style.opacity="0",this.selectionInputWrapper.append(this.selectionContainer),this.input.inputContainer.append(this.selectionInputWrapper),this.selectionInputWrapper.offsetLeft,this.selectionInputWrapper.style.opacity="",s.style.transform="",i.style.transform=""}}else this.selectionLeft&&void 0!==a&&(this.selectionLeft.style.transform=`translateX(-${a}px)`,this.selectionRight.style.transform=`translateX(${a}px)`)},this.onUpdateContainer=(e,t,s)=>{Object(k.a)(this.selectionCountEl,Object(T.d)("messages",[this.length()])),this.selectionSendNowBtn&&this.selectionSendNowBtn.toggleAttribute("disabled",s),this.selectionForwardBtn&&this.selectionForwardBtn.toggleAttribute("disabled",e),this.selectionDeleteBtn.toggleAttribute("disabled",t)},this.onCancelSelection=()=>{for(const[e,t]of this.selectedMids)for(const e of t){const t=this.bubbles.getMountedBubble(e);t&&this.toggleByElement(t.bubble)}}}appendCheckbox(e,t){t.label.classList.add("bubble-select-checkbox"),e.classList.contains("document-container")?e.querySelector(".document, audio-element").append(t.label):super.appendCheckbox(e,t)}toggleSelection(e=!0,t=!1){const s=super.toggleSelection(e,t);if(s&&e)for(const e in this.bubbles.bubbles){const t=this.bubbles.bubbles[e];this.toggleElementCheckbox(t,this.isSelecting)}return s}toggleElementCheckbox(e,t){if(!this.canSelectBubble(e))return;const s=super.toggleElementCheckbox(e,t);if(s){e.classList.contains("is-grouped")&&this.bubbles.getBubbleGroupedItems(e).forEach(e=>this.toggleElementCheckbox(e,t))}return s}isElementShouldBeSelected(e){const t=e.classList.contains("is-grouped");return super.isElementShouldBeSelected(e)&&(!t||this.isGroupedMidsSelected(+e.dataset.mid))}isGroupedBubbleSelected(e){const t=this.getCheckboxInputFromElement(e);return null==t?void 0:t.checked}isGroupedMidsSelected(e){const t=this.chat.getMidsByMid(e),s=t.filter(e=>this.isMidSelected(this.bubbles.peerId,e));return t.length===s.length}getCheckboxInputFromElement(e){return e.classList.contains("document-container")?e.querySelector("label input"):super.getCheckboxInputFromElement(e)}canSelectBubble(e){return!(e.classList.contains("service")||e.classList.contains("is-outgoing")||e.classList.contains("bubble-first")||e.classList.contains("avoid-selection"))}}var gi=s(146),mi=s(180),bi=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class vi{constructor(e,t){this.attachTo=e,this.searchSuper=t,this.onGotoClick=()=>{a.a.dispatchEvent("history_focus",{peerId:this.peerId,mid:this.mid,threadId:this.searchSuper.searchContext.threadId})},this.onForwardClick=()=>{this.searchSuper.selection.isSelecting?Object(l.d)(this.searchSuper.selection.selectionForwardBtn):new ii({[this.peerId]:[this.mid]})},this.onSelectClick=()=>{this.searchSuper.selection.toggleByElement(this.target)},this.onClearSelectionClick=()=>{this.searchSuper.selection.cancelSelection()},this.onDeleteClick=()=>{this.searchSuper.selection.isSelecting?Object(l.d)(this.searchSuper.selection.selectionDeleteBtn):new ni(this.peerId,[this.mid],"chat")};const s=e=>{let s;this.init&&(this.init(),this.init=null);try{s=Object(Pe.a)(e.target,"search-super-item")}catch(e){}if(s){if(e instanceof MouseEvent&&e.preventDefault(),this.element.classList.contains("active"))return!1;e instanceof MouseEvent&&(e.cancelBubble=!0),this.target=s,this.peerId=s.dataset.peerId.toPeerId(),this.mid=+s.dataset.mid,this.isSelected=t.selection.isMidSelected(this.peerId,this.mid),this.buttons.forEach(e=>{let t;t=!(this.isSelected&&!e.withSelection)&&(!e.verify||e.verify()),e.element.classList.toggle("hide",!t)}),s.classList.add("menu-open"),Object(ee.e)(e,this.element),Object(ee.d)(this.element,()=>{s.classList.remove("menu-open")})}};he.a||Object(ee.a)(e,s)}init(){this.buttons=[{icon:"forward",text:"Forward",onClick:this.onForwardClick,verify:()=>i.a.canForward(i.a.getMessageByPeer(this.peerId,this.mid))},{icon:"forward",text:"Message.Context.Selection.Forward",onClick:this.onForwardClick,verify:()=>this.isSelected&&!this.searchSuper.selection.selectionForwardBtn.classList.contains("hide"),withSelection:!0},{icon:"message",text:"Message.Context.Goto",onClick:this.onGotoClick,withSelection:!0},{icon:"select",text:"Message.Context.Select",onClick:this.onSelectClick},{icon:"select",text:"Message.Context.Selection.Clear",onClick:this.onClearSelectionClick,verify:()=>this.isSelected,withSelection:!0},{icon:"delete danger",text:"Delete",onClick:this.onDeleteClick,verify:()=>i.a.canDeleteMessage(i.a.getMessageByPeer(this.peerId,this.mid))},{icon:"delete danger",text:"Message.Context.Selection.Delete",onClick:this.onDeleteClick,verify:()=>this.isSelected&&!this.searchSuper.selection.selectionDeleteBtn.classList.contains("hide"),withSelection:!0}],this.element=Me(this.buttons),this.element.classList.add("search-contextmenu","contextmenu"),document.getElementById("page-chats").append(this.element)}}class fi{constructor(e){this.tabs={},this.prevTabId=-1,this.lazyLoadQueue=new Z.d,this.middleware=Object(Gs.a)(),this.historyStorage={},this.usedFromHistory={},this.urlsToRevoke=[],this.loadMutex=Promise.resolve(),this.nextRates={},this.loadPromises={},this.loaded={},this.loadedChats=!1,this.firstLoad=!0,this.log=Object(Y.b)("SEARCH-SUPER"),this.monthContainers={},this.mediaTabsMap=new Map,this.asChatList=!1,this.groupByMonth=!0,this.hideEmptyTabs=!0,this.showSender=!1,this.onTransitionStart=()=>{this.container.classList.add("sliding")},this.onTransitionEnd=()=>{this.container.classList.remove("sliding")},Object(w.a)(this,e),this.container=document.createElement("div"),this.container.classList.add("search-super"),this.searchContextMenu=new vi(this.container,this),this.selection=new pi(this,i.a);const t=this.navScrollableContainer=document.createElement("div");t.classList.add("search-super-tabs-scrollable","menu-horizontal-scrollable","sticky");const s=this.navScrollable=new P.a(t);s.container.classList.add("search-super-nav-scrollable");const n=this.nav=document.createElement("nav");n.classList.add("search-super-tabs","menu-horizontal-div"),this.tabsMenu=n,s.container.append(n);for(const e of this.mediaTabs){const t=document.createElement("div");t.classList.add("menu-horizontal-div-item");const s=document.createElement("span"),i=document.createElement("i");s.append(Object(T.d)(e.name)),s.append(i),t.append(s),Object(te.a)(t),this.tabsMenu.append(t),this.mediaTabsMap.set(e.type,e),e.menuTab=t}let a;this.tabsContainer=document.createElement("div"),this.tabsContainer.classList.add("search-super-tabs-container","tabs-container"),he.a&&ei({element:this.tabsContainer,onSwipe:(e,t,s)=>{const i=this.selectTab.prevId(),n=Array.from(this.tabsMenu.children);let o;if(e>0){for(let e=i+1;e=0;--e)if(!n[e].classList.contains("hide")){o=e;break}void 0!==o&&(a=function(e){const t=e=>{Object(c.a)(e)};let s=2;const i=()=>{--s||e.removeEventListener("touchmove",t,{capture:!0})};return e.addEventListener("touchmove",t,{capture:!0,passive:!1}),e.addEventListener("touchend",i,{once:!0}),i}(this.tabsContainer),this.selectTab(o))}});for(const e of this.mediaTabs){const t=document.createElement("div");t.classList.add("search-super-container-"+e.type,"tabs-tab");const s=document.createElement("div");s.classList.add("search-super-content-"+e.type),t.append(s),this.tabsContainer.append(t),this.tabs[e.inputFilter]=s,e.contentTab=s}this.container.append(t,this.tabsContainer),this.searchGroupMedia=new x(!1,"messages",!0),this.scrollable.onScrolledBottom=()=>{this.mediaTab.contentTab&&!this.loaded[this.mediaTab.inputFilter]&&this.load(!0)},this.selectTab=Object(J.a)(this.tabsMenu,this.tabsContainer,(e,t,s)=>{if(this.prevTabId===e&&!this.skipScroll)return void this.scrollable.scrollIntoViewNew({element:this.container,position:"start",startCallback:this.scrollStartCallback});const i=this.mediaTabs[e];this.onChangeTab&&this.onChangeTab(i);const n=this.mediaTab;if(this.mediaTab=i,-1!==this.prevTabId&&s&&this.onTransitionStart(),this.skipScroll)this.skipScroll=!1;else{const e=this.container.offsetTop;let t=this.scrollable.scrollTop;if(tn&&(i.scroll={scrollTop:n,scrollHeight:0})}if(i.scroll){const e=n.scroll.scrollTop-i.scroll.scrollTop;e&&(i.contentTab.style.transform=`translateY(${e}px)`)}}-1===this.prevTabId||i.contentTab.childElementCount||this.load(!0),this.prevTabId=e},()=>{this.scrollable.onScroll(),void 0!==this.mediaTab.scroll&&(this.mediaTab.contentTab.style.transform="",this.scrollable.scrollTop=this.mediaTab.scroll.scrollTop),a&&(a(),a=void 0),this.onTransitionEnd()},void 0,s),Object(l.b)(this.tabsContainer,e=>{this.selection.isSelecting&&(Object(c.a)(e),this.selection.toggleByElement(Object(Pe.a)(e.target,"search-super-item")))},{capture:!0,passive:!1});const o=(e,t,s,n)=>{const a=Object(Pe.a)(n.target,e);if(!a)return;const o=+a.dataset.mid;if(!o)return void this.log.warn("no messageId by click on target:",a);const r=a.dataset.peerId.toPeerId(),l=Array.from(this.tabs[s].querySelectorAll("."+t)).map(t=>{const s=Object(Pe.a)(t,e);return{element:t,mid:+s.dataset.mid,peerId:s.dataset.peerId.toPeerId()}}),c=l.findIndex(e=>e.mid===o&&e.peerId===r),d=i.a.getMessageByPeer(r,o);(new rc).setSearchContext(this.copySearchContext(s)).openMedia(d,l[c].element,0,!1,l.slice(0,c),l.slice(c+1))};Object(l.b)(this.tabs.inputMessagesFilterPhotoVideo,o.bind(null,"grid-item","grid-item","inputMessagesFilterPhotoVideo")),Object(l.b)(this.tabs.inputMessagesFilterDocument,o.bind(null,"document-with-thumb","media-container","inputMessagesFilterDocument")),this.mediaTab=this.mediaTabs[0],Object(Ks.a)(()=>{this.lazyLoadQueue.lock()},()=>{this.lazyLoadQueue.unlockAndRefresh()})}filterMessagesByType(e,t){if("inputMessagesFilterEmpty"===t)return e;"inputMessagesFilterUrl"!==t&&(e=e.filter(e=>!!e.media));let s=[];switch(t){case"inputMessagesFilterPhotoVideo":for(let t of e){let e=t.media.photo||t.media.document||t.media.webpage&&t.media.webpage.document;e&&("document"===e._&&"video"!==e.type||s.push(t))}break;case"inputMessagesFilterDocument":for(let t of e)t.media.document&&!["voice","audio","gif","sticker","round"].includes(t.media.document.type)&&s.push(t);break;case"inputMessagesFilterUrl":for(let t of e)s.push(t);break;case"inputMessagesFilterMusic":for(let t of e)t.media.document&&"audio"===t.media.document.type&&s.push(t);break;case"inputMessagesFilterVoice":for(let t of e)t.media.document&&"voice"===t.media.document.type&&s.push(t);break;case"inputMessagesFilterRoundVoice":for(let t of e)t.media.document&&["voice","round"].includes(t.media.document.type)&&s.push(t)}return s}processEmptyFilter({message:e,searchGroup:t}){const{dialog:s,dom:i}=Oc.addDialogNew({dialog:e.peerId,container:t.list,drawStatus:!1,avatarSize:54});Oc.setLastMessage(s,e,i,this.searchContext.query)}processPhotoVideoFilter({message:e,promises:t,middleware:s,elemsToAppend:n}){const a=i.a.getMediaFromMessage(e),o=document.createElement("div");let l;o.classList.add("grid-item");const c=r.a.choosePhotoSize(a,200,200);l="photo"!==a._?_s({doc:a,message:e,container:o,boxWidth:0,boxHeight:0,lazyLoadQueue:this.lazyLoadQueue,middleware:s,onlyPreview:!0,withoutPreloader:!0,noPlayButton:!0,size:c}).thumb:js({photo:a,message:e,container:o,boxWidth:0,boxHeight:0,lazyLoadQueue:this.lazyLoadQueue,middleware:s,withoutPreloader:!0,noBlur:!0,size:c}),[l.images.thumb,l.images.full].filter(Boolean).forEach(e=>{e.classList.add("grid-item-media")}),t.push(l.loadPromises.thumb),n.push({element:o,message:e})}processDocumentFilter({message:e,elemsToAppend:t,inputFilter:s}){const n=i.a.getMediaFromMessage(e),a=this.showSender||["voice","round"].includes(n.type),o=Fs({message:e,withTime:!a,fontWeight:400,voiceAsMusic:!0,showSender:a,searchContext:this.copySearchContext(s),lazyLoadQueue:this.lazyLoadQueue,autoDownloadSize:0});["audio","voice","round"].includes(n.type)&&o.classList.add("audio-48"),t.push({element:o,message:e})}processUrlFilter({message:e,promises:t,middleware:s,elemsToAppend:n}){var a;let o=null===(a=e.media)||void 0===a?void 0:a.webpage;if(!o){const t=e.totalEntities?e.totalEntities.find(e=>"messageEntityUrl"===e._||"messageEntityTextUrl"===e._):null;let s,i,n;if(t)n=e.message.slice(t.offset,t.offset+t.length);else{const t=X.b.matchUrl(e.message);if(!t)return;s=t[0]}s="messageEntityTextUrl"===(null==t?void 0:t._)?t.url:s||n,i=s;const a=e.message===s;s.match(/^(ftp|http|https):\/\//)||(i="https://"+s,s=s.includes("@")?s:"https://"+s),i=new URL(i).hostname,o={_:"webPage",url:s,display_url:i,id:"",hash:0},a||(o.description=e.message,o.rDescription=X.b.wrapRichText(Object(We.a)(e.message,150,180)))}let l=document.createElement("div");if(l.classList.add("preview","row-media"),o.photo){js({container:l,message:null,photo:o.photo,boxWidth:0,boxHeight:0,withoutPreloader:!0,lazyLoadQueue:this.lazyLoadQueue,middleware:s,size:r.a.choosePhotoSize(o.photo,60,60,!1),loadPromises:t,noBlur:!0})}else l.classList.add("empty"),l.innerHTML=X.b.getAbbreviation(o.title||o.display_url||o.description||o.url,!0);let c=o.rTitle||"",d=o.rDescription||"";const h=Object(ai.a)(d),p=Object(ai.a)(X.b.wrapRichText(o.url||"")).firstElementChild;if(p instanceof HTMLAnchorElement)try{p.innerText=decodeURIComponent(p.href)}catch(e){}h.firstChild&&h.append("\n"),h.append(p),this.showSender&&h.append("\n",i.a.wrapSenderToPeer(e)),c||(c=X.b.wrapPlainText(o.display_url.split("/",1)[0]));const u=new lt({title:c,titleRight:i.a.wrapSentTime(e),subtitle:h,havePadding:!0,clickable:!0,noRipple:!0});u.container.append(l),u.container.innerText.trim().length&&n.push({element:u.container,message:e})}performSearchResult(e,t,s=!0){return bi(this,void 0,void 0,(function*(){const i=[],n=t.contentTab,a=[],o=this.middleware.get();let r,l=t.inputFilter;yield Object(Ks.c)(),"inputMessagesFilterPhotoVideo"===l&&this.searchContext.query.trim()?(l="inputMessagesFilterEmpty",r=this.searchGroupMedia,n.append(r.container)):"inputMessagesFilterEmpty"===l&&(r=this.searchGroups.messages);const c={elemsToAppend:i,inputFilter:l,message:void 0,middleware:o,promises:a,searchGroup:r};let d;switch(l){case"inputMessagesFilterEmpty":d=this.processEmptyFilter;break;case"inputMessagesFilterPhotoVideo":d=this.processPhotoVideoFilter;break;case"inputMessagesFilterVoice":case"inputMessagesFilterRoundVoice":case"inputMessagesFilterMusic":case"inputMessagesFilterDocument":d=this.processDocumentFilter;break;case"inputMessagesFilterUrl":d=this.processUrlFilter}if(d){d=d.bind(this);for(const t of e)try{c.message=t,d(c)}catch(e){this.log.error("error rendering filter",l,c,t,e)}}if(r&&r.list.childElementCount&&r.setActive(),this.loadMutex&&a.push(this.loadMutex),!a.length||(yield Promise.all(a),o())){if(i.length){const e=s?"append":"prepend";i.forEach(t=>{const{element:s,message:i}=t,n=this.getMonthContainerByTimestamp(this.groupByMonth?i.date:0,l);s.classList.add("search-super-item"),s.dataset.mid=""+i.mid,s.dataset.peerId=""+i.peerId,n.items[e](s),this.selection.isSelecting&&this.selection.toggleElementCheckbox(s,!0)})}this.afterPerforming("inputMessagesFilterEmpty"===l?1:e.length,n)}}))}afterPerforming(e,t){if(t){const s=t.parentElement;if(Array.from(s.children).slice(1).forEach(e=>{e.remove()}),!e&&!t.childElementCount){const e=document.createElement("div");e.innerText="Nothing interesting here yet...",e.classList.add("position-center","text-center","content-empty","no-select"),s.append(e)}}}loadChats(){const e=new Set,t=this.middleware.get();for(let e in this.searchGroups){const t=this.searchGroups[e];this.tabs.inputMessagesFilterEmpty.append(t.container),t.clear()}const s=this.searchContext.query;if(s){const r=(t,i,r=!1)=>{t.forEach(t=>{if(e.has(t))return;e.add(t);const l=o.a.getPeer(t),{dom:c}=Oc.addDialogNew({dialog:t,container:i.list,drawStatus:!1,avatarSize:48,autonomous:i.autonomous});if(r&&(l.participants_count||l.participants)){const e=new RegExp(`(${Object(mi.a)(s)}|${Object(mi.a)(Object(Is.b)(s))})`,"gi");c.titleSpan.innerHTML=c.titleSpan.innerHTML.replace(e,"$1"),c.lastMessageSpan.append(n.default.getChatMembersString(t.toChatId()))}else if(t===a.a.myId)c.lastMessageSpan.append(Object(T.d)("Presence.YourChat"));else{let e=o.a.getPeerUsername(t);if(e)e="@"+e;else{const s=E.a.getUser(t);s&&s.phone&&(e="+"+Object(ti.a)(s.phone).formatted)}c.lastMessageSpan.innerHTML=""+e+""}}),i.toggle()},c=e=>{if(t())return e};return Promise.all([E.a.getContactsPeerIds(s,!0).then(c).then(e=>{e&&r(e,this.searchGroups.contacts,!0)}),E.a.searchContacts(s,20).then(c).then(e=>{if(e&&(r(e.my_results,this.searchGroups.contacts,!0),r(e.results,this.searchGroups.globalContacts),this.searchGroups.globalContacts.container.classList.add("is-short"),this.searchGroups.globalContacts.nameEl.lastElementChild!==this.searchGroups.globalContacts.nameEl.firstElementChild&&this.searchGroups.globalContacts.nameEl.lastElementChild.remove(),this.searchGroups.globalContacts.list.childElementCount>3)){const e=document.createElement("div");e.classList.add("search-group__show-more");const t=new T.c.IntlElement({key:"Separator.ShowMore"});e.append(t.element),this.searchGroups.globalContacts.nameEl.append(e),Object(l.b)(e,()=>{const e=this.searchGroups.globalContacts.container.classList.toggle("is-short");t.key=e?"Separator.ShowMore":"Separator.ShowLess",t.update()})}}),i.a.getConversations(s,0,20,0).promise.then(c).then(e=>{e&&r(e.dialogs.map(e=>e.peerId),this.searchGroups.contacts,!0)})])}if(this.searchContext.peerId||this.searchContext.minDate)return Promise.resolve();{const e=(e=!0)=>I.c.getState().then(s=>{t()&&(this.searchGroups.recent.list.innerHTML="",s.recentSearch.slice(0,20).forEach(e=>{let{dialog:t,dom:s}=Oc.addDialogNew({dialog:e,container:this.searchGroups.recent.list,drawStatus:!1,meAsSaved:!0,avatarSize:48,autonomous:!0});s.lastMessageSpan.append(e.isUser()?E.a.getUserStatusString(e):n.default.getChatMembersString(e.toChatId()))}),s.recentSearch.length?e&&this.searchGroups.recent.setActive():this.searchGroups.recent.clear())});return Promise.all([E.a.getTopPeers("correspondents").then(e=>{if(!t())return;const s=e.findIndex(e=>e.id===a.a.myId);-1!==s&&(e=e.slice()).splice(s,1),e.length&&e.forEach(e=>{Oc.addDialogNew({dialog:e.id,container:this.searchGroups.people.list,drawStatus:!1,onlyFirstName:!0,avatarSize:54,autonomous:!1})}),this.searchGroups.people.setActive()}),e()])}}loadMembers(e){const t=this.searchContext.peerId.toChatId(),s=this.middleware.get();let i;const a=t=>bi(this,void 0,void 0,(function*(){this.loadMutex&&(yield this.loadMutex,!s())||(this.membersList||(this.membersList=new Xs({lazyLoadQueue:this.lazyLoadQueue,rippleEnabled:!1}),Object(l.b)(this.membersList.list,e=>{const t=Object(It.a)(e.target,"LI");if(!t)return;const s=t.dataset.peerId.toPeerId();let i=Promise.resolve();b.b.isMobile&&(i=ds.toggleSidebar(!1)),i.then(()=>{ic.setInnerPeer({peerId:s})})}),e.contentTab.append(this.membersList.list),this.afterPerforming(1,e.contentTab)),t.forEach(e=>{const t=G.a.getParticipantPeerId(e);if(t.isAnyChat())return;E.a.getUser(t).pFlags.deleted||this.membersList.add(t)}))}));if(G.a.isChannel(t)){const o=this.membersList?200:50;i=n.default.getChannelParticipants(t,void 0,o,this.nextRates[e.inputFilter]).then(t=>{if(!s())return;let i=e.contentTab.firstElementChild;return this.nextRates[e.inputFilter]=(i?i.childElementCount:0)+t.participants.length,t.participants.length{if(!s())return;this.loaded[e.inputFilter]=!0;const i=t.participants;return"chatParticipantsForbidden"!==i._?a(i.participants):void 0});return this.loadPromises[e.inputFilter]=i.finally(()=>{s()&&(this.loadPromises[e.inputFilter]=null)})}loadType(e,t,s,n){var a,o;const r=e.inputFilter;if(this.loadPromises[r])return this.loadPromises[r];if("members"===e.type)return this.loadMembers(e);const l=null!==(a=this.historyStorage[r])&&void 0!==a?a:this.historyStorage[r]=[];if(!("inputMessagesFilterEmpty"!==r||l.length||(this.loadedChats||(this.loadChats(),this.loadedChats=!0),this.searchContext.query.trim()||this.searchContext.peerId||this.searchContext.minDate)))return this.loaded[r]=!0,Promise.resolve();const c="load ["+r+"]: ";if(l.length&&this.usedFromHistory[r]i.a.getMessageByPeer(e.peerId,e.mid)),r))}while(a{setTimeout(()=>{this.scrollable.checkForTriggers()},0)})}let d=l.length?l[l.length-1].mid:0;return this.loadPromises[r]=i.a.getSearch(Object.assign(Object.assign({},this.searchContext),{inputFilter:{_:r},maxId:d,limit:s,nextRate:null!==(o=this.nextRates[r])&&void 0!==o?o:this.nextRates[r]=0})).then(i=>{if(l.push(...i.history.map(e=>({mid:e.mid,peerId:e.peerId}))),this.log(c+"search house of glass",r,i),n())return(i.history.length{setTimeout(()=>{if(n()&&this.mediaTab===e){const e=this.load(!0,!0);e&&e.then(()=>{n()&&setTimeout(()=>{this.scrollable.checkForTriggers()},0)})}},0)}),this.performSearchResult(this.filterMessagesByType(i.history,r),e))}).catch(e=>{this.log.error("load error:",e)}).finally(()=>{this.loadPromises[r]=null})}load(e=!1,t=!1){return bi(this,void 0,void 0,(function*(){const s=this.searchContext.peerId;this.log("load",e,s,this.loadPromises);const n=this.middleware.get();if(this.firstLoad){if(this.hideEmptyTabs){const e=this.mediaTabs.filter(e=>"inputMessagesFilterEmpty"!==e.inputFilter),t=e.map(e=>({_:e.inputFilter})),a=yield i.a.getSearchCounters(s,t);if(!n())return;if(this.loadMutex&&(yield this.loadMutex,!n()))return;let o,r=0;e.forEach(e=>{const t=a.find(t=>t.filter._===e.inputFilter);e.menuTab.classList.toggle("hide",!t.count),e.menuTab.classList.remove("active"),t.count&&void 0===o&&(o=e),t.count&&++r});const l=this.mediaTabsMap.get("members"),c=this.canViewMembers();l.menuTab.classList.toggle("hide",!c),c&&(o=l),this.container.classList.toggle("hide",!o),this.container.parentElement.classList.toggle("search-empty",!o),o&&(this.skipScroll=!0,this.selectTab(this.mediaTabs.indexOf(o),!1),o.menuTab.classList.add("active"),this.navScrollableContainer.classList.toggle("hide",r<=1))}this.firstLoad=!1}let a=e?[this.mediaTab]:this.mediaTabs.filter(e=>e!==this.mediaTab);if(a=a.filter(e=>{const t=e.inputFilter;return!this.loaded[t]||this.historyStorage[t]&&this.usedFromHistory[t]"members"===e.type),!a.length)return;const o=t?50:Math.round(3*(xt.a.height/130|0)*1.25),r=a.map(e=>this.loadType(e,t,o,n));return Promise.all(r).catch(e=>{this.log.error("Load error all promises:",e)})}))}getMonthContainerByTimestamp(e,t){var s;const i=new Date(1e3*e);i.setHours(0,0,0),i.setDate(1);const n=i.getTime(),a=null!==(s=this.monthContainers[t])&&void 0!==s?s:this.monthContainers[t]={};if(!(n in a)){const e=document.createElement("div");e.className="search-super-month";const s=document.createElement("div");s.classList.add("search-super-month-name");const o={month:"long"};i.getFullYear()!==(new Date).getFullYear()&&(o.year="numeric");const r=new T.c.IntlDateElement({date:i,options:o}).element;s.append(r),e.append(s);const l=document.createElement("div");l.classList.add("search-super-month-items"),e.append(s,l);const c=Object(gi.a)(a,"desc");let d=0;for(;dc[d])break}a[n]={container:e,items:l},qs(e,this.tabs[t],d)}return a[n]}canViewMembers(){return this.searchContext.peerId.isAnyChat()&&!G.a.isBroadcast(this.searchContext.peerId.toChatId())&&G.a.hasRights(this.searchContext.peerId.toChatId(),"view_participants")}cleanup(){this.loadPromises={},this.loaded={},this.loadedChats=!1,this.nextRates={},this.firstLoad=!0,this.lazyLoadQueue.clear(),this.mediaTabs.forEach(e=>{this.usedFromHistory[e.inputFilter]=-1}),this.selection.isSelecting&&this.selection.cancelSelection(),this.middleware.clean(),this.cleanScrollPositions(),this.membersList=void 0}cleanScrollPositions(){this.mediaTabs.forEach(e=>{e.scroll=void 0})}cleanupHTML(e=!1){this.urlsToRevoke.length&&(this.urlsToRevoke.forEach(e=>{URL.revokeObjectURL(e)}),this.urlsToRevoke.length=0),this.mediaTabs.forEach(e=>{if(e.contentTab.innerHTML="",this.hideEmptyTabs&&(this.container.classList.add("hide"),this.container.parentElement.classList.add("search-empty")),"chats"!==e.type&&!this.historyStorage[e.inputFilter]){const t=e.contentTab.parentElement;t.querySelector(".preloader")||Object(ee.f)(t,!0);const s=t.querySelector(".content-empty");s&&s.remove()}}),this.monthContainers={},this.searchGroupMedia.clear(),this.scrollable.scrollTop=0}copySearchContext(e){const t=Object(ue.a)(this.searchContext);return t.inputFilter={_:e},t.nextRate=this.nextRates[e],t}setQuery({peerId:e,query:t,threadId:s,historyStorage:i,folderId:n,minDate:a,maxDate:o}){this.searchContext={peerId:e,query:t||"",inputFilter:{_:this.mediaTab.inputFilter},threadId:s,folderId:n,minDate:a,maxDate:o},this.historyStorage=null!=i?i:{},this.cleanup()}}var yi,wi=s(77),Si=s(169);!function(e){e[e.Everybody=2]="Everybody",e[e.Contacts=1]="Contacts",e[e.Nobody=0]="Nobody"}(yi||(yi={}));const Li=new class{constructor(){this.privacy={},a.a.addMultipleEventsListeners({updatePrivacy:e=>{const t=e.key._;this.privacy[t]=e.rules,a.a.dispatchEvent("privacy_update",e)}})}setPrivacy(e,t){return ft.a.invokeApi("account.setPrivacy",{key:{_:e},rules:t}).then(s=>(E.a.saveApiUsers(s.users),G.a.saveApiChats(s.chats),wi.a.processLocalUpdate({_:"updatePrivacy",key:{_:Object(Si.a)(e)},rules:t.map(e=>{const t={};return Object.assign(t,e),t._=Object(Si.a)(t._),t})}),s.rules))}getPrivacy(e){const t=Object(Si.a)(e),s=this.privacy[t];return s?Promise.resolve(s):this.privacy[t]=ft.a.invokeApi("account.getPrivacy",{key:{_:e}}).then(e=>(E.a.saveApiUsers(e.users),G.a.saveApiChats(e.chats),this.privacy[t]=e.rules))}getPrivacyRulesDetails(e){const t=[];let s={users:[],chats:[]},i={users:[],chats:[]};return e.forEach(e=>{switch(e._){case"privacyValueAllowAll":t.push(2);break;case"privacyValueDisallowAll":t.push(0);break;case"privacyValueAllowContacts":t.push(1);break;case"privacyValueAllowChatParticipants":s.chats.push(...e.chats);break;case"privacyValueAllowUsers":s.users.push(...e.users);break;case"privacyValueDisallowChatParticipants":i.chats.push(...e.chats);break;case"privacyValueDisallowUsers":i.users.push(...e.users)}}),{type:t[0],disallowPeers:i,allowPeers:s}}};le.a.appPrivacyManager=Li;var Ci=Li;class Mi{constructor(e){this.options=e,this.onRadioChange=e=>{e=+e,this.type=e;const t=this.options.captions[this.type],s=this.radioSection.caption;t?t instanceof HTMLElement?Object(k.a)(s,t):Object(T.b)(s,t):s.innerHTML="",s.classList.toggle("hide",!t),this.exceptions&&(this.exceptions.get("allow").row.container.classList.toggle("hide",this.type===yi.Everybody),this.exceptions.get("disallow").row.container.classList.toggle("hide",this.type===yi.Nobody)),this.options.onRadioChange&&this.options.onRadioChange(e)},e.captions&&e.captions.reverse(),this.radioSection=new Wn({name:e.title,caption:!0}),this.radioRows=new Map;let t=[{type:yi.Everybody,langKey:"PrivacySettingsController.Everbody"},{type:yi.Contacts,langKey:"PrivacySettingsController.MyContacts"},{type:yi.Nobody,langKey:"PrivacySettingsController.Nobody"}];e.skipTypes&&(t=t.filter(t=>!e.skipTypes.includes(t.type)));const s=Object(ht.b)();t.forEach(({type:e,langKey:t})=>{const i=new lt({radioField:new ut({langKey:t,name:s,value:""+e})});this.radioRows.set(e,i)});const i=ct([...this.radioRows.values()],this.onRadioChange);if(this.radioSection.content.append(i),e.appendTo&&e.appendTo.append(this.radioSection.container),!e.noExceptions){const t=qn(e.appendTo,"PrivacyExceptions","PrivacySettingsController.PeerInfo");this.exceptions=new Map([["disallow",{titleLangKey:e.exceptionTexts[0],key:"disallow",row:null,icon:"deleteuser",subtitleLangKey:"PrivacySettingsController.AddUsers",clickable:!0}],["allow",{titleLangKey:e.exceptionTexts[1],key:"allow",row:null,icon:"adduser",subtitleLangKey:"PrivacySettingsController.AddUsers",clickable:!0}]]),this.exceptions.forEach(s=>{s.row=new lt(s),s.row.container.addEventListener("click",()=>{n.then(()=>{const t=this.peerIds[s.key];new Qt(e.tab.slider).open({type:"privacy",skippable:!0,title:s.titleLangKey,placeholder:"PrivacyModal.Search.Placeholder",takeOut:e=>{t.length=0,t.push(...e),s.row.subtitle.innerHTML="",s.row.subtitle.append(...this.generateStr(this.splitPeersByType(e)))},selectedPeerIds:t})})}),t.append(s.row.container)})}const n=Ci.getPrivacy(e.inputKey).then(t=>{const s=Ci.getPrivacyRulesDetails(t);this.setRadio(s.type),this.exceptions&&(this.peerIds={},["allow","disallow"].forEach(e=>{const t=[],i="allow"===e?s.allowPeers:s.disallowPeers;t.push(...i.users.map(e=>e.toPeerId())),t.push(...i.chats.map(e=>e.toPeerId(!0))),this.peerIds[e]=t;const n=this.exceptions.get(e).row.subtitle;n.innerHTML="",n.append(...this.generateStr(i))})),e.tab.eventListener.addEventListener("destroy",()=>{const t=[];switch(this.type){case yi.Everybody:t.push({_:"inputPrivacyValueAllowAll"});break;case yi.Contacts:t.push({_:"inputPrivacyValueAllowContacts"});break;case yi.Nobody:t.push({_:"inputPrivacyValueDisallowAll"})}this.exceptions&&[["allow","inputPrivacyValueAllowChatParticipants","inputPrivacyValueAllowUsers"],["disallow","inputPrivacyValueDisallowChatParticipants","inputPrivacyValueDisallowUsers"]].forEach(([e,s,i],n)=>{if(this.exceptions.get(e).row.container.classList.contains("hide"))return;const a=this.peerIds[e];if(a){const e=this.splitPeersByType(a);e.chats.length&&t.push({_:s,chats:e.chats}),e.users.length&&t.push({_:i,users:e.users.map(e=>E.a.getUserInput(e))})}}),Ci.setPrivacy(e.inputKey,t)},{once:!0})})}setRadio(e){const t=this.radioRows.get(e);this.onRadioChange(e),t.radioField.input.checked=!0}splitPeersByType(e){const t={users:[],chats:[]};return e.forEach(e=>{t[e.isAnyChat()?"chats":"users"].push(e.isAnyChat()?e.toChatId():e)}),t}generateStr(e){return e.users.length||e.chats.length?Object(T.f)([e.users.length?Object(T.d)("Users",[e.users.length]):null,e.chats.length?Object(T.d)("Chats",[e.chats.length]):null].filter(Boolean),!1):[Object(T.d)("PrivacySettingsController.AddUsers")]}}class Ii extends z{init(){this.header.classList.add("with-border"),this.container.classList.add("privacy-tab","privacy-phone-number"),this.setTitle("PrivacyPhone");const e=document.createElement("div");e.append(Object(T.d)("PrivacyPhoneInfo"),document.createElement("br"),document.createElement("br"),Object(T.d)("PrivacyPhoneInfo4"),document.createElement("br"),function(e={}){const t=document.createElement("a");if(t.classList.add("anchor-copy"),e.mePath){const s="https://t.me/"+e.mePath;t.href=t.innerText=s}return Object(l.b)(t,e=>{Object(c.a)(e),dt(t.href),bt({langPackKey:"LinkCopied"})}),t}({mePath:"+380509144504"}));const t=new Mi({tab:this,title:"PrivacyPhoneTitle",inputKey:"inputPrivacyKeyPhoneNumber",captions:[e,e,""],exceptionTexts:["PrivacySettingsController.NeverShare","PrivacySettingsController.AlwaysShare"],appendTo:this.scrollable,onRadioChange:e=>{s.setRadio(yi.Everybody),s.radioSection.container.classList.toggle("hide",e!==yi.Nobody)}}),s=new Mi({tab:this,title:"PrivacyPhoneTitle2",inputKey:"inputPrivacyKeyAddedByPhone",captions:["PrivacyPhoneInfo3","PrivacyPhoneInfo3",""],noExceptions:!0,skipTypes:[yi.Nobody]});this.scrollable.container.insertBefore(s.radioSection.container,t.radioSection.container.nextSibling)}}var Ei=s(92);class Pi extends H{init(){this.container.classList.add("two-step-verification","two-step-verification-set"),this.setTitle("TwoStepVerificationPasswordSet");const e=new Wn({caption:"TwoStepVerificationPasswordSetInfo",noDelimiter:!0}),t=Cs.a.getAnimatedEmojiSticker("🥳"),s=document.createElement("div");t?Bs({doc:t,div:s,loop:!0,play:!0,width:160,height:160}).then(()=>{}):s.classList.add("media-sticker-wrapper"),e.content.append(s);const i=e.generateContentElement(),n=document.createElement("div");n.classList.add("input-wrapper");const a=Object(B.a)("btn-primary btn-color-primary",{text:"TwoStepVerificationPasswordReturnSettings"});Object(l.b)(a,e=>{this.close()}),this.slider.sliceTabsUntilTab(Dn,this),n.append(a),i.append(n),this.scrollable.container.append(e.container)}}var ki=s(130);function Ti(e){return!ae.f||!e}class xi extends H{constructor(){super(...arguments),this.isFirst=!1}init(){this.container.classList.add("two-step-verification","two-step-verification-email-confirmation"),this.setTitle("TwoStepAuth.RecoveryTitle");const e=new Wn({caption:!0,noDelimiter:!0});Object(T.b)(e.caption,"TwoStepAuth.ConfirmEmailCodeDesc",[this.email]);const t=Cs.a.getAnimatedEmojiSticker("📬"),s=document.createElement("div");t?Bs({doc:t,div:s,loop:!1,play:!0,width:160,height:160,emoji:"📬"}).then(()=>{}):s.classList.add("media-sticker-wrapper"),e.content.append(s);const i=e.generateContentElement(),n=document.createElement("div");n.classList.add("input-wrapper");const a=this.codeInputField=new ki.a({name:"recovery-email-code",label:"TwoStepAuth.RecoveryCode",length:this.length,onFill:e=>{d(!0),Ei.a.confirmPasswordEmail(""+e).then(e=>{c()}).catch(e=>{switch(e.type){case"CODE_INVALID":a.input.classList.add("error"),Object(k.a)(a.label,Object(T.d)("TwoStepAuth.RecoveryCodeInvalid"));break;case"EMAIL_HASH_EXPIRED":a.input.classList.add("error"),Object(k.a)(a.label,Object(T.d)("TwoStepAuth.RecoveryCodeExpired"));break;default:console.error("confirm error",e)}d(!1)})}}),o=Object(B.a)("btn-primary btn-primary-transparent primary",{text:"TwoStepAuth.EmailCodeChangeEmail"}),r=Object(B.a)("btn-primary btn-secondary btn-primary-transparent primary",{text:"ResendCode"}),c=()=>{new Pi(this.slider).open()},d=e=>{Object(Ct.a)([a.input,o,r],e)};Object(l.b)(o,e=>{d(!0),Ei.a.cancelPasswordEmail().then(e=>{this.slider.sliceTabsUntilTab(Ai,this),this.close()},()=>{d(!1)})}),Object(l.b)(r,e=>{d(!0);const t=Object(ee.f)(r);Ei.a.resendPasswordEmail().then(e=>{t.remove(),d(!1)})}),n.append(a.container,o,r),i.append(n),this.scrollable.container.append(e.container)}onOpenAfterTimeout(){Ti(this.isFirst)&&this.codeInputField.input.focus()}}class Ai extends H{constructor(){super(...arguments),this.isFirst=!1}init(){this.container.classList.add("two-step-verification","two-step-verification-email"),this.setTitle("RecoveryEmailTitle");const e=new Wn({caption:!0,noDelimiter:!0}),t=Cs.a.getAnimatedEmojiSticker("💌"),s=document.createElement("div");t?Bs({doc:t,div:s,loop:!1,play:!0,width:160,height:160,emoji:"💌"}).then(()=>{}):s.classList.add("media-sticker-wrapper"),e.content.append(s);const i=e.generateContentElement(),n=document.createElement("div");n.classList.add("input-wrapper");const a=this.inputField=new O.b({name:"recovery-email",label:"RecoveryEmail",plainText:!0});a.input.addEventListener("keypress",e=>{if("Enter"===e.key)return Object(c.a)(e),h()}),a.input.addEventListener("input",e=>{a.input.classList.remove("error")});const o=Object(B.a)("btn-primary btn-color-primary",{text:"Continue"}),r=Object(B.a)("btn-primary btn-secondary btn-primary-transparent primary",{text:"YourEmailSkip"}),d=()=>{new Pi(this.slider).open()},h=()=>{const e=a.value.trim(),t=X.b.matchEmail(e);if(!t||t[0].length!==e.length)return void a.input.classList.add("error");p(!0);const s=Object(ee.f)(o);Ei.a.updateSettings({hint:this.hint,currentPassword:this.plainPassword,newPassword:this.newPassword,email:e}).then(e=>{d()},t=>{if(t.type.includes("EMAIL_UNCONFIRMED")){const s=+t.type.match(/^EMAIL_UNCONFIRMED_(\d+)/)[1],i=new xi(this.slider);i.state=this.state,i.email=e,i.length=s,i.open()}else console.log("password set error",t);p(!1),s.remove()})};Object(l.b)(o,h);const p=e=>{e?(o.setAttribute("disabled","true"),r.setAttribute("disabled","true")):(o.removeAttribute("disabled"),r.removeAttribute("disabled"))};Object(l.b)(r,e=>{new Lt("popup-skip-email",{buttons:[{langKey:"Cancel",isCancel:!0},{langKey:"YourEmailSkip",callback:()=>{p(!0),Object(ee.f)(r),Ei.a.updateSettings({hint:this.hint,currentPassword:this.plainPassword,newPassword:this.newPassword,email:""}).then(()=>{d()},e=>{p(!1)})},isDanger:!0}],titleLangKey:"YourEmailSkipWarning",descriptionLangKey:"YourEmailSkipWarningText"}).show()}),n.append(a.container,o,r),i.append(n),this.scrollable.container.append(e.container)}onOpenAfterTimeout(){Ti(this.isFirst)&&this.inputField.input.focus()}}var Oi=s(119),_i=s(106),Fi=s(129);class ji extends H{init(){this.container.classList.add("two-step-verification","two-step-verification-hint"),this.setTitle("TwoStepAuth.SetupHintTitle");const e=new Wn({noDelimiter:!0}),t=Cs.a.getAnimatedEmojiSticker("💡"),s=document.createElement("div");t?Bs({doc:t,div:s,loop:!1,play:!0,width:160,height:160,emoji:"💡"}).then(()=>{}):s.classList.add("media-sticker-wrapper"),e.content.append(s);const i=document.createElement("div");i.classList.add("input-wrapper");const n=this.inputField=new O.b({name:"hint",label:"TwoStepAuth.SetupHintPlaceholder"});n.input.addEventListener("keypress",e=>{if("Enter"===e.key)return Object(c.a)(e),n.value?d():h()});const a=(e,t)=>{e&&Object(c.a)(e);const s=t?n.value:void 0;if(s&&this.newPassword===s)return void mt(T.c.format("PasswordAsHintError",!0));const i=new Ai(this.slider);i.state=this.state,i.plainPassword=this.plainPassword,i.newPassword=this.newPassword,i.hint=s,i.open()},o=Object(B.a)("btn-primary btn-color-primary",{text:"Continue"}),r=Object(B.a)("btn-primary btn-secondary btn-primary-transparent primary",{text:"YourEmailSkip"}),d=e=>a(e,!0),h=e=>a(e,!1);Object(l.b)(o,d),Object(l.b)(r,h),i.append(n.container,o,r),e.content.append(i),this.scrollable.container.append(e.container)}onOpenAfterTimeout(){this.inputField.input.focus()}}class Di extends H{init(){this.container.classList.add("two-step-verification","two-step-verification-enter-password","two-step-verification-re-enter-password"),this.setTitle("PleaseReEnterPassword");const e=new Wn({noDelimiter:!0}),t=document.createElement("div");t.classList.add("input-wrapper");const s=this.passwordInputField=new _i.a({name:"re-enter-password",label:"PleaseReEnterPassword"}),i=new Fi.a(s,157),n=Object(B.a)("btn-primary btn-color-primary",{text:"Continue"});t.append(s.container,n),e.content.append(i.container,t),this.scrollable.container.append(e.container),s.input.addEventListener("keypress",e=>{if(s.input.classList.contains("error")&&s.setState(O.a.Neutral),"Enter"===e.key)return o()});const a=()=>this.newPassword===s.value||(s.setError(),!1),o=e=>{if(e&&Object(c.a)(e),!a())return;const t=new ji(this.slider);t.state=this.state,t.plainPassword=this.plainPassword,t.newPassword=this.newPassword,t.open()};return Object(l.b)(n,o),i.load()}onOpenAfterTimeout(){this.passwordInputField.input.focus()}}class Ri extends H{constructor(){super(...arguments),this.isFirst=!0}init(){const e=!this.state.pFlags.has_password||this.plainPassword;this.container.classList.add("two-step-verification","two-step-verification-enter-password"),this.setTitle(e?"PleaseEnterFirstPassword":"PleaseEnterCurrentPassword");const t=new Wn({noDelimiter:!0}),s=document.createElement("div");s.classList.add("input-wrapper");const i=this.passwordInputField=new _i.a({name:"enter-password",label:e?"PleaseEnterFirstPassword":this.state.hint?void 0:"LoginPassword",labelText:!e&&this.state.hint?X.b.wrapEmojiText(this.state.hint):void 0}),n=new Oi.a(i,157),a=Object(B.a)("btn-primary btn-color-primary"),o=new T.c.IntlElement({key:"Continue"});a.append(o.element),s.append(i.container,a),t.content.append(n.container,s),this.scrollable.container.append(t.container),i.input.addEventListener("keypress",e=>{if(i.input.classList.contains("error")&&(i.input.classList.remove("error"),o.key="Continue",o.update()),"Enter"===e.key)return d()});const r=()=>!!i.value.length||(i.input.classList.add("error"),!1);let d;if(e)d=e=>{if(e&&Object(c.a)(e),!r())return;const t=new Di(this.slider);t.state=this.state,t.newPassword=i.value,t.plainPassword=this.plainPassword,t.open()};else{let e,t=()=>(e||(e=window.setInterval(t,1e4)),Ei.a.getState().then(e=>{this.state=e,this.state.hint?i.label.innerHTML=X.b.wrapEmojiText(this.state.hint):Object(k.a)(i.label,Object(T.d)("LoginPassword"))}));d=s=>{if(!r())return void Object(c.a)(s);a.setAttribute("disabled","true"),o.key="PleaseWait",o.update();const l=Object(ee.f)(a),d=i.value;Ei.a.check(i.value,this.state).then(t=>{if(console.log(t),"auth.authorization"===t._){clearInterval(e),n&&n.remove();const t=new Bi(this.slider);t.state=this.state,t.plainPassword=d,t.open(),this.slider.removeTabFromHistory(this)}},e=>{a.removeAttribute("disabled"),i.input.classList.add("error"),e.type,o.key="TwoStepAuth.InvalidPassword",o.update(),l.remove(),i.select(),t()})},t()}return Object(l.b)(a,d),n.load()}onOpenAfterTimeout(){Ti(this.isFirst)&&this.passwordInputField.input.focus()}}class Bi extends H{init(){this.container.classList.add("two-step-verification","two-step-verification-main"),this.setTitle("TwoStepVerificationTitle");const e=new Wn({caption:!0,noDelimiter:!0}),t=Cs.a.getAnimatedEmojiSticker("🔐"),s=document.createElement("div");t?Bs({doc:t,div:s,loop:!1,play:!0,width:168,height:168,emoji:"🔐"}).then(()=>{}):s.classList.add("media-sticker-wrapper"),e.content.append(s);const i=e.generateContentElement();if(this.state.pFlags.has_password){Object(T.b)(e.caption,"TwoStepAuth.GenericHelp");const t=Object(B.a)("btn-primary btn-transparent",{icon:"edit",text:"TwoStepAuth.ChangePassword"}),s=Object(B.a)("btn-primary btn-transparent",{icon:"passwordoff",text:"TwoStepAuth.RemovePassword"}),n=Object(B.a)("btn-primary btn-transparent",{icon:"email",text:this.state.pFlags.has_recovery?"TwoStepAuth.ChangeEmail":"TwoStepAuth.SetupEmail"});Object(l.b)(t,()=>{const e=new Ri(this.slider);e.state=this.state,e.plainPassword=this.plainPassword,e.open()}),Object(l.b)(s,()=>{new Lt("popup-disable-password",{buttons:[{langKey:"Disable",callback:()=>{Ei.a.updateSettings({currentPassword:this.plainPassword}).then(()=>{this.slider.sliceTabsUntilTab(Dn,this),this.close()})},isDanger:!0}],titleLangKey:"TurnPasswordOffQuestionTitle",descriptionLangKey:"TurnPasswordOffQuestion"}).show()}),Object(l.b)(n,()=>{const e=new Ai(this.slider);e.state=this.state,e.hint=this.state.hint,e.plainPassword=this.plainPassword,e.newPassword=this.plainPassword,e.isFirst=!0,e.open()}),i.append(t,s,n)}else{Object(T.b)(e.caption,"TwoStepAuth.SetPasswordHelp");const t=document.createElement("div");t.classList.add("input-wrapper");const s=Object(B.a)("btn-primary btn-color-primary",{text:"TwoStepVerificationSetPassword"});t.append(s),i.append(t),Object(l.b)(s,e=>{const t=new Ri(this.slider);t.state=this.state,t.open()})}this.scrollable.container.append(e.container)}}class Ni extends z{init(){this.header.classList.add("with-border"),this.container.classList.add("privacy-tab","privacy-last-seen"),this.setTitle("PrivacyLastSeen");const e="PrivacySettingsController.LastSeenDescription";new Mi({tab:this,title:"LastSeenTitle",inputKey:"inputPrivacyKeyStatusTimestamp",captions:[e,e,e],exceptionTexts:["PrivacySettingsController.NeverShare","PrivacySettingsController.AlwaysShare"],appendTo:this.scrollable})}}class Ui extends z{init(){this.header.classList.add("with-border"),this.container.classList.add("privacy-tab","privacy-profile-photo"),this.setTitle("PrivacyProfilePhoto");const e="PrivacySettingsController.ProfilePhoto.CustomHelp";new Mi({tab:this,title:"PrivacyProfilePhotoTitle",inputKey:"inputPrivacyKeyProfilePhoto",captions:[e,e,e],exceptionTexts:["PrivacySettingsController.NeverShare","PrivacySettingsController.AlwaysShare"],appendTo:this.scrollable,skipTypes:[yi.Nobody]})}}class Hi extends z{init(){this.header.classList.add("with-border"),this.container.classList.add("privacy-tab","privacy-forward-messages"),this.setTitle("PrivacySettings.Forwards");const e="PrivacySettingsController.Forwards.CustomHelp";new Mi({tab:this,title:"PrivacyForwardsTitle",inputKey:"inputPrivacyKeyForwards",captions:[e,e,e],exceptionTexts:["PrivacySettingsController.NeverAllow","PrivacySettingsController.AlwaysAllow"],appendTo:this.scrollable})}}class zi extends z{init(){this.header.classList.add("with-border"),this.container.classList.add("privacy-tab","privacy-add-to-groups"),this.setTitle("PrivacySettings.Groups");const e="PrivacySettingsController.GroupDescription";new Mi({tab:this,title:"WhoCanAddMe",inputKey:"inputPrivacyKeyChatInvite",captions:[e,e,e],exceptionTexts:["PrivacySettingsController.NeverAllow","PrivacySettingsController.AlwaysAllow"],appendTo:this.scrollable,skipTypes:[yi.Nobody]})}}class Vi extends z{init(){this.header.classList.add("with-border"),this.container.classList.add("privacy-tab","privacy-calls"),this.setTitle("PrivacySettings.VoiceCalls");const e="PrivacySettingsController.PhoneCallDescription";new Mi({tab:this,title:"WhoCanCallMe",inputKey:"inputPrivacyKeyPhoneCall",captions:[e,e,e],exceptionTexts:["PrivacySettingsController.NeverAllow","PrivacySettingsController.AlwaysAllow"],appendTo:this.scrollable});{const e="PrivacySettingsController.P2p.Desc";new Mi({tab:this,title:"PrivacyP2PHeader",inputKey:"inputPrivacyKeyPhoneP2P",captions:[e,e,e],exceptionTexts:["PrivacySettingsController.NeverAllow","PrivacySettingsController.AlwaysAllow"],appendTo:this.scrollable})}}}class Ki extends z{init(){this.header.classList.add("with-border"),this.container.classList.add("active-sessions-container"),this.setTitle("SessionsTitle");const e=e=>{const t=new lt({title:[e.app_name,e.app_version].join(" "),subtitle:[e.ip,e.country].join(" - "),clickable:!0,titleRight:e.pFlags.current?void 0:Object(ne.c)(new Date(1e3*Math.max(e.date_active,e.date_created)))});t.container.dataset.hash=""+e.hash;const s=document.createElement("div");return s.classList.add("row-midtitle"),s.innerHTML=[e.device_model,e.system_version||e.platform].filter(Boolean).join(", "),t.subtitle.parentElement.insertBefore(s,t.subtitle),t},t=this.authorizations.slice();{const n=new Wn({name:"CurrentSession",caption:"ClearOtherSessionsHelp"}),a=Object(Ot.a)(t,e=>e.pFlags.current),o=e(a);if(n.content.append(o.container),t.length){const e=Object(B.a)("btn-primary btn-transparent danger",{icon:"stop",text:"TerminateAllSessions"});Object(l.b)(e,t=>{new Lt("revoke-session",{buttons:[{langKey:"Terminate",isDanger:!0,callback:()=>{const t=Object(Ct.a)([e],!0);ft.a.invokeApi("auth.resetAuthorizations").then(t=>{e.remove(),s.container.remove()},i).finally(()=>{t()})}}],titleLangKey:"AreYouSureSessionsTitle",descriptionLangKey:"AreYouSureSessions"}).show()}),n.content.append(e)}this.scrollable.append(n.container)}if(!t.length)return;const s=new Wn({name:"OtherSessions",caption:"SessionsListInfo"});t.forEach(t=>{s.content.append(e(t).container)}),this.scrollable.append(s.container);const i=e=>{"FRESH_RESET_AUTHORISATION_FORBIDDEN"===e.type&&mt(T.c.format("RecentSessions.Error.FreshReset",!0))};let n;const a=()=>{const e=n.dataset.hash;new Lt("revoke-session",{buttons:[{langKey:"Terminate",isDanger:!0,callback:()=>{ft.a.invokeApi("account.resetAuthorization",{hash:e}).then(e=>{e&&n.remove()},i)}}],titleLangKey:"AreYouSureSessionTitle",descriptionLangKey:"TerminateSessionText"}).show()},o=this.menuElement=Me([{icon:"stop",text:"Terminate",onClick:a}]);o.id="active-sessions-contextmenu",o.classList.add("contextmenu"),document.getElementById("page-chats").append(o),Object(ee.a)(this.scrollable.container,e=>{n=Object(Pe.a)(e.target,"row"),n&&"0"!==n.dataset.hash&&(e instanceof MouseEvent&&e.preventDefault(),e instanceof MouseEvent&&(e.cancelBubble=!0),Object(ee.e)(e,o),Object(ee.d)(o))}),Object(l.b)(this.scrollable.container,e=>{n=Object(Pe.a)(e.target,"row"),n&&"0"!==n.dataset.hash&&a()})}onCloseAfterTimeout(){return this.menuElement&&this.menuElement.remove(),super.onCloseAfterTimeout()}}class Gi extends H{init(){this.header.classList.add("with-border"),this.container.classList.add("blocked-users-container"),this.setTitle("BlockedUsers");const e=new Wn({caption:"BlockedUsersInfo"});e.caption.parentElement.prepend(e.caption),this.scrollable.append(e.container);const t=$({icon:"add",className:"is-visible"});this.content.append(t),Object(l.b)(t,e=>{new Dt({peerTypes:["contacts"],placeholder:"BlockModal.Search.Placeholder",onSelect:e=>{E.a.toggleBlock(e,!0)}})},{listenerSetter:this.listenerSetter});const s=Oc.createChatList();this.scrollable.container.classList.add("chatlist-container"),e.content.append(s);const i=(e,t)=>{const{dom:i}=Oc.addDialogNew({dialog:e,container:s,drawStatus:!1,rippleEnabled:!0,avatarSize:48,append:t}),n=E.a.getUser(e);n.pFlags.bot?i.lastMessageSpan.append("@"+n.username):n.phone?i.lastMessageSpan.innerHTML=E.a.formatUserPhone(n.phone):i.lastMessageSpan.append(n.username?"@"+n.username:E.a.getUserStatusString(e))};for(const e of this.peerIds)i(e,!0);let n;const o=this.menuElement=Me([{icon:"lockoff",text:"Unblock",onClick:()=>{const e=n.dataset.peerId.toPeerId();E.a.toggleBlock(e,!1)},options:{listenerSetter:this.listenerSetter}}]);o.id="blocked-users-contextmenu",o.classList.add("contextmenu"),document.getElementById("page-chats").append(o),Object(ee.a)(this.scrollable.container,e=>{n=Object(It.a)(e.target,"LI"),n&&(e instanceof MouseEvent&&e.preventDefault(),e instanceof MouseEvent&&(e.cancelBubble=!0),Object(ee.e)(e,o),Object(ee.d)(o))},this.listenerSetter),this.listenerSetter.add(a.a)("peer_block",e=>{const{peerId:t,blocked:n}=e,a=s.querySelector(`[data-peer-id="${t}"]`);n?a||i(t,!1):a&&a.remove()});let r=!1;this.scrollable.onScrolledBottom=()=>{r||(r=!0,E.a.getBlocked(s.childElementCount,50).then(e=>{for(const t of e.peerIds)i(t,!0);(e.peerIds.length<50||s.childElementCount===e.count)&&(this.scrollable.onScrolledBottom=null),this.scrollable.checkForTriggers()}).finally(()=>{r=!1}))}}onOpenAfterTimeout(){this.scrollable.onScroll()}onCloseAfterTimeout(){return this.menuElement&&this.menuElement.remove(),super.onCloseAfterTimeout()}}var Wi=s(132);function qi(e){return e="input"+(e=e[0].toUpperCase()+e.slice(1))}class $i extends z{init(){this.header.classList.add("with-border"),this.container.classList.add("dont-u-dare-block-me"),this.setTitle("PrivacySettings");{const e=new Wn({noDelimiter:!0,caption:"SessionsInfo"});let t;const s=new lt({icon:"deleteuser",titleLangKey:"BlockedUsers",subtitleLangKey:"Loading",clickable:()=>{const e=new Gi(this.slider);e.peerIds=t,e.open()}});let i;s.freezed=!0;const n=new lt({icon:"lock",titleLangKey:"TwoStepVerification",subtitleLangKey:"Loading",clickable:e=>{let t;i.pFlags.has_password?t=new Ri(this.slider):i.email_unconfirmed_pattern?(t=new xi(this.slider),t.email=i.email_unconfirmed_pattern,t.length=6,t.isFirst=!0,Ei.a.resendPasswordEmail()):t=new Bi(this.slider),t.state=i,t.open()}});n.freezed=!0;const o=this.activeSessionsRow=new lt({icon:"activesessions",titleLangKey:"SessionsTitle",subtitleLangKey:"Loading",clickable:()=>{const e=new Ki(this.slider);e.authorizations=this.authorizations,e.eventListener.addEventListener("destroy",()=>{this.updateActiveSessions()},{once:!0}),e.open()}});o.freezed=!0,e.content.append(s.container,n.container,o.container),this.scrollable.append(e.container);const r=e=>{e?Object(k.a)(s.subtitle,Object(T.d)("PrivacySettingsController.UserCount",[e])):Object(k.a)(s.subtitle,Object(T.d)("BlockedEmpty",[e]))};this.listenerSetter.add(a.a)("peer_block",()=>{l()});const l=()=>{E.a.getBlocked().then(e=>{s.freezed=!1,r(e.count),t=e.peerIds})};l(),Ei.a.getState().then(e=>{i=e,Object(k.a)(n.subtitle,Object(T.d)(e.pFlags.has_password?"PrivacyAndSecurity.Item.On":"PrivacyAndSecurity.Item.Off")),n.freezed=!1}),this.updateActiveSessions()}{const e=new Wn({name:"PrivacyTitle",caption:"GroupsAndChannelsHelp"});e.content.classList.add("privacy-navigation-container");const t={},s=t.inputPrivacyKeyPhoneNumber=new lt({titleLangKey:"PrivacyPhoneTitle",subtitleLangKey:"Loading",clickable:()=>{new Ii(this.slider).open()}}),i=t.inputPrivacyKeyStatusTimestamp=new lt({titleLangKey:"LastSeenTitle",subtitleLangKey:"Loading",clickable:()=>{new Ni(this.slider).open()}}),n=t.inputPrivacyKeyProfilePhoto=new lt({titleLangKey:"PrivacyProfilePhotoTitle",subtitleLangKey:"Loading",clickable:()=>{new Ui(this.slider).open()}}),o=t.inputPrivacyKeyPhoneCall=new lt({titleLangKey:"WhoCanCallMe",subtitleLangKey:"Loading",clickable:()=>{new Vi(this.slider).open()}}),r=t.inputPrivacyKeyForwards=new lt({titleLangKey:"PrivacyForwardsTitle",subtitleLangKey:"Loading",clickable:()=>{new Hi(this.slider).open()}}),l=t.inputPrivacyKeyChatInvite=new lt({titleLangKey:"WhoCanAddMe",subtitleLangKey:"Loading",clickable:()=>{new zi(this.slider).open()}}),c=e=>{const s=t[e];s&&Ci.getPrivacy(e).then(e=>{const t=Ci.getPrivacyRulesDetails(e),i=t.type===yi.Everybody?"PrivacySettingsController.Everbody":t.type===yi.Contacts?"PrivacySettingsController.MyContacts":"PrivacySettingsController.Nobody",n=t.disallowPeers.users.length+t.disallowPeers.chats.length,a=t.allowPeers.users.length+t.allowPeers.chats.length;s.subtitle.innerHTML="";const o=Object(T.d)(i);s.subtitle.append(o),(n||a)&&s.subtitle.append(` (${[-n,a?"+"+a:0].filter(Boolean).join(", ")})`)})};e.content.append(s.container,i.container,n.container,o.container,r.container,l.container),this.scrollable.append(e.container);for(const e in t)c(e);a.a.addEventListener("privacy_update",e=>{c(qi(e.key._))})}const e=[];{const t=new Wn({name:"Privacy.SensitiveContent"});t.container.classList.add("hide"),e.push(ft.a.invokeApi("account.getContentSettings").then(e=>{if(!e.pFlags.sensitive_can_change)return;const s=e.pFlags.sensitive_enabled,i=new lt({checkboxField:new St.a({text:"PrivacyAndSecurity.SensitiveText",checked:s}),subtitleLangKey:"PrivacyAndSecurity.SensitiveDesc",noCheckboxSubtitle:!0});t.content.append(i.container),t.container.classList.remove("hide"),this.eventListener.addEventListener("destroy",()=>{const e=i.checkboxField.checked;e!==s&&ft.a.invokeApi("account.setContentSettings",{sensitive_enabled:e})},{once:!0})})),this.scrollable.append(t.container)}{const e=new Wn({name:"FilterChats"}),t=()=>{new Lt("popup-delete-drafts",{buttons:[{langKey:"Delete",callback:()=>{const e=Object(Ct.a)([s],!0);Wi.a.clearAllDrafts().then(()=>{e()})},isDanger:!0}],titleLangKey:"AreYouSureClearDraftsTitle",descriptionLangKey:"AreYouSureClearDrafts"}).show()},s=Object(B.a)("btn-primary btn-transparent",{icon:"delete",text:"PrivacyDeleteCloudDrafts"});this.listenerSetter.add(s)("click",t),e.content.append(s),this.scrollable.append(e.container)}return Promise.all(e)}updateActiveSessions(){ft.a.invokeApi("account.getAuthorizations").then(e=>{this.activeSessionsRow.freezed=!1,this.authorizations=e.authorizations,Object(T.b)(this.activeSessionsRow.subtitle,"Privacy.Devices",[this.authorizations.length])})}}function Qi(e){const t=e.getContext("2d"),s=new Array(4).fill(0),i=t.getImageData(0,0,e.width,e.height).data;for(let e=0;e.5?i/(2-n-a):i/(n+a),n){case e:o=(t-s)/i+(t1&&(s-=1),s<1/6?e+6*(t-e)*s:s<.5?t:s<2/3?e+(t-e)*(2/3-s)*6:e},r=s<.5?s*(1+t):s+t-s*t,l=2*s-r;n=i(l,r,e+1/3),a=i(l,r,e),o=i(l,r,e-1/3)}return[Math.round(255*n),Math.round(255*a),Math.round(255*o),Math.round(255*i)]}function Ji(e){const t=[],s="#"===e[0]?1:0;if(e.length===5+s&&(e=(s?"#":"")+"0"+e.slice(s)),e.length===3+s)for(let i=s;i("0"+e.toString(16)).slice(-2)).join("")}function tn(e){return en(function(e){const t=e.slice(5,-1).split(", "),s=+t.pop(),i=t.map(e=>e.endsWith("%")?+e.slice(0,-1):+e);return Xi(i[0],i[1],i[2],s)}(e))}function sn(e){let{h:t,s:s,l:i}=Yi(e[0],e[1],e[2]);s>0&&(s=Math.min(100,s+5+.1*(100-s))),i=Math.max(0,.65*i);return`hsla(${t}, ${s}%, ${i}%, .4)`}class nn{constructor(){this._width=50,this._height=50,this._tails=90,this._scrollTails=50,this._curve=[0,.25,.5,.75,1,1.5,2,2.5,3,3.5,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18.3,18.6,18.9,19.2,19.5,19.8,20.1,20.4,20.7,21,21.3,21.6,21.9,22.2,22.5,22.8,23.1,23.4,23.7,24,24.3,24.6,24.9,25.2,25.5,25.8,26.1,26.3,26.4,26.5,26.6,26.7,26.8,26.9,27],this._positions=[{x:.8,y:.1},{x:.6,y:.2},{x:.35,y:.25},{x:.25,y:.6},{x:.2,y:.9},{x:.4,y:.8},{x:.65,y:.75},{x:.75,y:.4}],this._phases=this._positions.length,this.onWheel=e=>{this._animatingToNextPosition||(this._scrollDelta+=e.deltaY,void 0===this._onWheelRAF&&(this._onWheelRAF=requestAnimationFrame(this.drawOnWheel)))},this.drawOnWheel=()=>{let e=this._scrollDelta/this._scrollTails;if(this._scrollDelta%=this._scrollTails,e=e>0?Math.floor(e):Math.ceil(e),e){this.changeTail(e);const t=this.curPosition(this._phase,this._tail);this.drawGradient(t)}this._onWheelRAF=void 0},this.drawNextPositionAnimated=()=>{const e=this._frames,t=e.shift();t&&this.drawImageData(t);const s=e.length;return s||(this._animatingToNextPosition=void 0),!!s};const e=this._tails/this._curve[this._curve.length-1];for(let t=0,s=this._curve.length;t{var i;return e-(null!==(i=s[t-1])&&void 0!==i?i:0)})}hexToRgb(e){const t=Zi(e);return{r:t[0],g:t[1],b:t[2]}}getPositions(e){const t=this._positions.slice();for(;e>0;)t.push(t.shift()),--e;const s=[];for(let e=0;e({x:(e.x-i[s].x)/t,y:(e.y-i[s].y)/t}));return s.map(e=>n.map((t,s)=>({x:i[s].x+t.x*e,y:i[s].y+t.y*e})))}curPosition(e,t){return this.getNextPositions(e,this._tails,[t])[0]}changeTail(e){for(this._tail+=e;this._tail>=this._tails;)this._tail-=this._tails,++this._phase>=this._phases&&(this._phase-=this._phases);for(;this._tail<0;)this._tail+=this._tails,--this._phase<0&&(this._phase+=this._phases)}getGradientImageData(e){const t=this._hctx.createImageData(this._width,this._height),s=t.data;let i=0;for(let t=0;tthis.hexToRgb(e)),this._hc||(this._hc=document.createElement("canvas"),this._hc.width=this._width,this._hc.height=this._height,this._hctx=this._hc.getContext("2d")),this._canvas=e,this._ctx=this._canvas.getContext("2d"),this.update()}update(){if(this._colors.length<2){const e=this._colors[0];return this._ctx.fillStyle=`rgb(${e.r}, ${e.g}, ${e.b})`,void this._ctx.fillRect(0,0,this._width,this._height)}const e=this.curPosition(this._phase,this._tail);this.drawGradient(e)}toNextPosition(){var e;if(this._colors.length<2)return;const t=this._tail,s=this._tails;let i;const n=[];for(let a=0,o=this._incrementalCurve.length;as&&void 0===i&&(i=a,r%=s),n.push(r)}[n.slice(0,i),void 0!==i?n.slice(i):[]].forEach((e,t,i)=>{const n=e[e.length-1];if(void 0!==n&&n>s&&(e[e.length-1]=+n.toFixed(2)),this._tail=null!=n?n:0,!e.length)return;const a=this.getNextPositions(this._phase,s,e);t!==i.length-1&&++this._phase>=this._phases&&(this._phase-=this._phases);const o=a.map(e=>this.getGradientImageData(e));this._frames.push(...o)}),this._animatingToNextPosition=!0,Object(He.a)(this.drawNextPositionAnimated)}scrollAnimate(e){this._colors.length<2&&e||(e&&!this._addedScrollListener?(document.addEventListener("wheel",this.onWheel),this._addedScrollListener=!0):!e&&this._addedScrollListener&&(document.removeEventListener("wheel",this.onWheel),this._addedScrollListener=!1))}cleanup(){this.scrollAnimate(!1)}static createCanvas(e){const t=document.createElement("canvas");return t.width=50,t.height=50,void 0!==e&&(t.dataset.colors=e),t}static create(e){const t=this.createCanvas(e),s=new nn;return s.init(t),{gradientRenderer:s,canvas:t}}}class an{constructor(){this.hue=0,this.saturation=100,this.lightness=50,this.alpha=1,this.elements={},this.onGrabStart=()=>{document.documentElement.style.cursor=this.elements.boxDragger.style.cursor="grabbing"},this.onGrabEnd=()=>{document.documentElement.style.cursor=this.elements.boxDragger.style.cursor=""},this.container=document.createElement("div"),this.container.classList.add(an.BASE_CLASS);const e=`\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `;this.container.innerHTML=e,this.elements.box=this.container.firstElementChild,this.elements.boxDragger=this.elements.box.lastElementChild,this.elements.saturation=this.elements.box.firstElementChild.firstElementChild,this.elements.sliders=this.elements.box.nextElementSibling,this.elements.hue=this.elements.sliders.firstElementChild,this.elements.hueDragger=this.elements.hue.lastElementChild,this.hexInputField=new O.b({plainText:!0,label:"Appearance.Color.Hex"}),this.rgbInputField=new O.b({plainText:!0,label:"Appearance.Color.RGB"});const t=document.createElement("div");t.className=an.BASE_CLASS+"-inputs",t.append(this.hexInputField.container,this.rgbInputField.container),this.container.append(t),this.hexInputField.input.addEventListener("input",()=>{let e=this.hexInputField.value.replace(/#/g,"").slice(0,6);const t=e.match(/([a-fA-F\d]+)/),s=t&&t[0].length===e.length&&[6].includes(e.length);this.hexInputField.setState(s?O.a.Neutral:O.a.Error),e="#"+e,this.hexInputField.setValueSilently(e),s&&this.setColor(e,!1,!0)});const s=/^(?:rgb)?\(?([01]?\d\d?|2[0-4]\d|25[0-5])(?:\W+)([01]?\d\d?|2[0-4]\d|25[0-5])\W+(?:([01]?\d\d?|2[0-4]\d|25[0-5])\)?)$/;this.rgbInputField.input.addEventListener("input",()=>{const e=this.rgbInputField.value.match(s);this.rgbInputField.setState(e?O.a.Neutral:O.a.Error),e&&this.setColor(Yi(+e[1],+e[2],+e[3]),!0,!1)}),this.attachBoxListeners(),this.attachHueListeners()}attachBoxListeners(){we(this.elements.box,()=>{this.onGrabStart(),this.boxRect=this.elements.box.getBoundingClientRect()},e=>{this.saturationHandler(e.x,e.y)},()=>{this.onGrabEnd()})}attachHueListeners(){we(this.elements.hue,()=>{this.onGrabStart(),this.hueRect=this.elements.hue.getBoundingClientRect()},e=>{this.hueHandler(e.x)},()=>{this.onGrabEnd()})}setColor(e,t=!0,s=!0){if(void 0===e)e={h:0,s:100,l:50,a:1};else if("string"==typeof e)if("#"===e[0])e=function(e){const t=Ji(e);return Yi(t[0],t[1],t[2],t[3])}(e);else{const t=e.match(/[.?\d]+/g);e=Yi(+t[0],+t[1],+t[2],void 0===t[3]?1:+t[3])}this.boxRect=this.elements.box.getBoundingClientRect();const i=this.boxRect.width/100*e.s,n=100-e.l/(100-e.s/2)*100,a=this.boxRect.height/100*n;this.saturationHandler(this.boxRect.left+i,this.boxRect.top+a,!1),this.hueRect=this.elements.hue.getBoundingClientRect();const o=e.h/360,r=this.hueRect.left+this.hueRect.width*o;this.hueHandler(r,!1),this.hue=e.h,this.saturation=e.s,this.lightness=e.l,this.alpha=e.a,this.updatePicker(t,s)}getCurrentColor(){const e=Xi(this.hue,this.saturation,this.lightness,this.alpha),t=en(e),s=t.slice(0,-2);return{hsl:`hsl(${this.hue}, ${this.saturation}%, ${this.lightness}%)`,rgb:`rgb(${e[0]}, ${e[1]}, ${e[2]})`,hex:s,hsla:`hsla(${this.hue}, ${this.saturation}%, ${this.lightness}%, ${this.alpha})`,rgba:`rgba(${e[0]}, ${e[1]}, ${e[2]}, ${e[3]})`,hexa:t,rgbaArray:e}}updatePicker(e=!0,t=!0){const s=this.getCurrentColor();this.elements.boxDragger.setAttributeNS(null,"fill",s.hex),e&&(this.hexInputField.setValueSilently(s.hex),this.hexInputField.setState(O.a.Neutral)),t&&(this.rgbInputField.setValueSilently(s.rgbaArray.slice(0,-1).join(", ")),this.rgbInputField.setState(O.a.Neutral)),this.onChange&&this.onChange(s)}hueHandler(e,t=!0){const s=Object(Se.a)(e-this.hueRect.left,0,this.hueRect.width)/this.hueRect.width;this.hue=Math.round(360*s);const i=`hsla(${this.hue}, 100%, 50%, ${this.alpha})`;this.elements.hueDragger.setAttributeNS(null,"x",100*s+"%"),this.elements.hueDragger.setAttributeNS(null,"fill",i),this.elements.saturation.lastElementChild.setAttributeNS(null,"stop-color",i),t&&this.updatePicker()}saturationHandler(e,t,s=!0){const i=this.boxRect.width,n=this.boxRect.height,a=Object(Se.a)(e-this.boxRect.left,0,i)/i*100,o=Object(Se.a)(t-this.boxRect.top,0,n)/n*100,r=this.elements.boxDragger;r.setAttributeNS(null,"x",a+"%"),r.setAttributeNS(null,"y",o+"%");const l=Object(Se.a)(a,0,100),c=100-l/2,d=100-Object(Se.a)(o,0,100),h=Object(Se.a)(d/100*c,0,100);this.saturation=l,this.lightness=h,s&&this.updatePicker()}}an.BASE_CLASS="color-picker";class on extends H{constructor(){super(...arguments),this._applyColor=(e,t=!0)=>{if(t)this.colorPicker.setColor(e);else{const t=Ji(e),s=this.theme.background,i=sn(t);s.id="2",s.intensity=0,s.slug="",s.color=e.toLowerCase(),s.highlightningColor=i,I.c.pushToState("settings",a.a.settings),ic.applyCurrentTheme(void 0,void 0,!0),this.setActive()}},this.onColorChange=e=>{this.applyColor(e.hex,!1)}}init(){this.header.classList.add("with-border"),this.container.classList.add("background-container","background-color-container"),this.setTitle("SetColor"),this.theme=a.a.getTheme();const e=new Wn({});this.colorPicker=new an,e.content.append(this.colorPicker.container),this.scrollable.append(e.container);const t=new Wn({}),s=this.grid=document.createElement("div");s.classList.add("grid");["#E6EBEE","#B2CEE1","#008DD0","#C6E7CB","#C4E1A6","#60B16E","#CCD0AF","#A6A997","#7A7072","#FDD7AF","#FDB76E","#DD8851"].forEach(e=>{const t=document.createElement("div");t.classList.add("grid-item"),t.dataset.color=e.toLowerCase();const i=document.createElement("div");i.classList.add("grid-item-media"),i.style.backgroundColor=e,t.append(i),s.append(t)}),Object(l.b)(s,e=>{const t=Object(Pe.a)(e.target,"grid-item");if(!t||t.classList.contains("active"))return;const s=t.dataset.color;s&&this.applyColor(s)},{listenerSetter:this.listenerSetter}),t.content.append(s),this.scrollable.append(t.container),this.applyColor=Object(Ts.a)(this._applyColor,16,!0)}setActive(){const e=this.grid.querySelector(".active"),t=this.theme.background,s=t.color?this.grid.querySelector(`.grid-item[data-color="${t.color}"]`):null;e!==s&&(e&&e.classList.remove("active"),s&&s.classList.add("active"))}onOpen(){setTimeout(()=>{const e=this.theme.background,t=(e.color||"").split(",")[0],s=!!t&&!e.slug;s&&(this.colorPicker.onChange=this.onColorChange),this.colorPicker.setColor(t||"#cccccc"),s||(this.colorPicker.onChange=this.onColorChange)},0)}onCloseAfterTimeout(){return this.colorPicker.onChange=void 0,this.colorPicker=void 0,super.onCloseAfterTimeout()}}let rn=0;class ln extends H{constructor(){super(...arguments),this.tempId=0,this.clicked=new Set,this.wallpapersByElement=new Map,this.elementsByKey=new Map,this.onUploadClick=()=>{Object(pe.f)("image/x-png,image/png,image/jpeg").then(e=>{const t="wallpaper-upload-"+ ++rn,s={_:"photoSize",h:0,w:0,location:{},size:e.size,type:"full"};let i={_:"document",access_hash:"",attributes:[],dc_id:0,file_reference:[],id:t,mime_type:e.type,size:e.size,date:Date.now()/1e3,pFlags:{},thumbs:[s],file_name:e.name};i=C.a.saveDoc(i);const n=ce.a.getCacheContext(i);n.downloaded=e.size,n.url=URL.createObjectURL(e);let a={_:"wallPaper",access_hash:"",document:i,id:t,slug:t,pFlags:{}};const o=ce.a.upload(e,e.name),r=Object(ie.a)();r.addNotifyListener=o.addNotifyListener,r.cancel=o.cancel,o.then(t=>{ft.a.invokeApi("account.uploadWallPaper",{file:t,mime_type:e.type,settings:{_:"wallPaperSettings"}}).then(e=>{const t=e.document,s=ce.a.getCacheContext(t);Object.assign(s,n),a=e,a.document=C.a.saveDoc(a.document),this.setBackgroundDocument(a).then(r.resolve,r.reject)},r.reject)},r.reject);const l=this.getWallpaperKey(a);r.then(()=>{this.clicked.delete(l)},e=>{d.remove()});const c=new ye.a({isUpload:!0,cancelable:!0,tryAgainOnFail:!1}),d=this.addWallPaper(a,!1);this.clicked.add(l),c.attach(d,!1,r)})},this.onResetClick=()=>{const e=I.b.settings.themes.find(e=>e.name===this.theme.name);e&&(++this.tempId,this.theme.background=Object(ue.a)(e.background),I.c.pushToState("settings",a.a.settings),ic.applyCurrentTheme(void 0,void 0,!0),this.blurCheckboxField.setValueSilently(this.theme.background.blur))},this.onGridClick=e=>{const t=Object(Pe.a)(e.target,"grid-item");if(!t)return;const s=this.wallpapersByElement.get(t);if("wallPaperNoFile"===s._)return void this.setBackgroundDocument(s);const i=this.getWallpaperKey(s);if(this.clicked.has(i))return;this.clicked.add(i);const n=s.document,a=new ye.a({cancelable:!0,tryAgainOnFail:!1}),o=()=>{const e=this.setBackgroundDocument(s);ce.a.getCacheContext(n).url&&!this.theme.background.blur||a.attach(t,!0,e)};a.construct(),Object(l.b)(t,e=>{a.preloader.parentElement?(a.onClick(e),a.detach()):o()},{listenerSetter:this.listenerSetter}),o()},this.saveToCache=(e,t)=>{fetch(t).then(t=>{ce.a.cacheStorage.save("backgrounds/"+e,t)})},this.setBackgroundDocument=e=>{let t=++this.tempId;const s=()=>t===this.tempId,i=e.document,n=Object(ie.a)();let o;return i?(o=C.a.downloadDoc(i,ic.chat.bubbles?ic.chat.bubbles.lazyLoadQueue.queueId:0),n.addNotifyListener=o.addNotifyListener,n.cancel=o.cancel):o=Promise.resolve(),o.then(()=>{if(!s())return void n.resolve();const t=this.theme.background,o=i=>{let o;if(i&&!this.theme.background.color)o=function(e){const t=document.createElement("img");return new Promise(s=>{Object(Ss.a)(t,e,()=>{const e=document.createElement("canvas"),i=t.naturalWidth/t.naturalHeight;1===i?(e.width=50,e.height=e.width/i):i>1?(e.height=50,e.width=e.height/i):e.width=e.height=50;e.getContext("2d").drawImage(t,0,0,t.naturalWidth,t.naturalHeight,0,0,e.width,e.height),s(Qi(e))})})}(i);else{const{canvas:t}=nn.create(this.getColorsFromWallpaper(e));o=Promise.resolve(Qi(t))}o.then(o=>{var r,l,c;if(!s())return void n.resolve();const d=sn(Array.from(o)),h=null!==(r=e.slug)&&void 0!==r?r:"";t.id=e.id,t.intensity=null!==(c=null===(l=e.settings)||void 0===l?void 0:l.intensity)&&void 0!==c?c:0,t.color=this.getColorsFromWallpaper(e),t.slug=h,t.highlightningColor=d,I.c.pushToState("settings",a.a.settings),h&&this.saveToCache(h,i),ic.applyCurrentTheme(h,i,!0).then(n.resolve)})};if(!i)return void o();const r=ce.a.getCacheContext(i);t.blur?setTimeout(()=>{Object(Es.a)(r.url,12,4).then(e=>{s()?o(e):n.resolve()})},200):o(r.url)}),n},this.setActive=()=>{const e=this.grid.querySelector(".active"),t=this.elementsByKey.get(this.getWallpaperKeyFromTheme(this.theme));e!==t&&(e&&e.classList.remove("active"),t&&t.classList.add("active"))}}init(){this.header.classList.add("with-border"),this.container.classList.add("background-container","background-image-container"),this.setTitle("ChatBackground"),this.theme=a.a.getTheme();{const e=qn(this.scrollable),s=Object(B.a)("btn-primary btn-transparent",{icon:"cameraadd",text:"ChatBackground.UploadWallpaper"}),i=Object(B.a)("btn-primary btn-transparent",{icon:"colorize",text:"SetColor"}),n=Object(B.a)("btn-primary btn-transparent",{icon:"favourites",text:"Appearance.Reset"});Object(l.b)(s,this.onUploadClick,{listenerSetter:this.listenerSetter}),Object(l.b)(i,()=>{new on(this.slider).open()},{listenerSetter:this.listenerSetter}),Object(l.b)(n,this.onResetClick,{listenerSetter:this.listenerSetter});const o=this.blurCheckboxField=new St.a({text:"ChatBackground.Blur",name:"blur",checked:this.theme.background.blur,withRipple:!0});this.listenerSetter.add(o.input)("change",()=>{this.theme.background.blur=o.input.checked,I.c.pushToState("settings",a.a.settings),setTimeout(()=>{const e=t.querySelector(".active");if(!e)return;const s=this.wallpapersByElement.get(e);s.pFlags.pattern||"wallPaperNoFile"===s._||this.setBackgroundDocument(s)},100)}),e.append(s,i,n,o.label)}a.a.addEventListener("background_change",this.setActive),ft.a.invokeApiHashable({method:"account.getWallPapers"}).then(e=>{e.wallpapers.forEach(e=>{this.addWallPaper(e)})});const e=qn(this.scrollable),t=this.grid=document.createElement("div");t.classList.add("grid"),Object(l.b)(t,this.onGridClick,{listenerSetter:this.listenerSetter}),e.append(t)}getColorsFromWallpaper(e){return e.settings?[e.settings.background_color,e.settings.second_background_color,e.settings.third_background_color,e.settings.fourth_background_color].filter(Boolean).map(e=>"#"+e.toString(16)).join(","):""}getWallpaperKey(e){return""+e.id}getWallpaperKeyFromTheme(e){return""+e.background.id}addWallPaper(e,t=!0){var s;const i=this.getColorsFromWallpaper(e),n="wallPaper"===e._;if(n&&e.pFlags.pattern&&!i)return;const a=!!e.pFlags.dark,o=n?e.document=C.a.saveDoc(e.document):void 0,l=document.createElement("div");l.classList.add("grid-item"),l.dataset.id=""+e.id;const c=this.getWallpaperKey(e);this.wallpapersByElement.set(l,e),this.elementsByKey.set(c,l);const d=document.createElement("div");let h,p;if(d.classList.add("grid-item-media"),n?(p=r.a.choosePhotoSize(o,200,200),h=js({photo:o,message:null,container:d,withoutPreloader:!0,size:p,noFadeIn:e.pFlags.pattern}),(h.loadPromises.thumb||h.loadPromises.full).then(()=>{Ls.a.mutate(()=>{l.append(d)})}),e.pFlags.pattern&&(d.classList.add("is-pattern"),a?(h.images.full.style.display="none",h.images.thumb&&(h.images.thumb.style.display="none")):(null===(s=e.settings)||void 0===s?void 0:s.intensity)&&(h.images.full.style.opacity=""+Math.abs(e.settings.intensity)/100))):l.append(d),e.settings&&void 0!==e.settings.background_color){const{canvas:t}=nn.create(i);if(t.classList.add("background-colors-canvas"),a&&n){const s=ce.a.getCacheContext(o,p.type);h.loadPromises.full.then(()=>{t.style.webkitMaskImage=`url(${s.url})`,t.style.opacity=""+Math.abs(e.settings.intensity)/100,d.append(t)})}else d.append(t)}return this.getWallpaperKeyFromTheme(this.theme)===c&&l.classList.add("active"),this.grid[t?"append":"prepend"](l),l}}class cn extends wt.b{constructor(e){super("popup-stickers",null,{closable:!0,overlayClosable:!0,body:!0}),this.stickerSetInput=e,this.onStickersClick=e=>{const t=Object(Pe.a)(e.target,"sticker-set-sticker");if(!t)return;const s=t.dataset.docId;ic.chat.input.sendMessageWithDocument(s)?this.hide():console.warn("got no doc by id:",s)},this.h6=document.createElement("h6"),this.h6.append(Object(T.d)("Loading")),this.header.append(this.h6),this.addEventListener("close",()=>{M.a.setOnlyOnePlayableGroup("")});const t=document.createElement("div");t.classList.add("sticker-set"),this.stickersDiv=document.createElement("div"),this.stickersDiv.classList.add("sticker-set-stickers","is-loading"),Object(l.b)(this.stickersDiv,this.onStickersClick,{listenerSetter:this.listenerSetter}),Object(ee.f)(this.stickersDiv,!0),this.stickersFooter=document.createElement("div"),this.stickersFooter.classList.add("sticker-set-footer"),t.append(this.stickersDiv);const s=Object(B.a)("btn-primary btn-primary-transparent disable-hover",{noRipple:!0,text:"Loading"});this.stickersFooter.append(s),this.body.append(t);new P.b(this.body);this.body.append(this.stickersFooter),this.loadStickerSet()}loadStickerSet(){return Cs.a.getStickerSet(this.stickerSetInput).then(e=>{if(!e)return bt({langPackKey:"StickerSet.DontExist"}),void this.hide();let t;this.set=e.set,M.a.setOnlyOnePlayableGroup("STICKERS-POPUP"),this.h6.innerHTML=X.a.wrapEmojiText(e.set.title),this.stickersFooter.classList.toggle("add",!e.set.installed_date),e.set.installed_date?(t=Object(B.a)("btn-primary btn-primary-transparent danger",{noRipple:!0}),t.append(Object(T.d)("RemoveStickersCount",[Object(T.d)("Stickers",[e.set.count])]))):(t=Object(B.a)("btn-primary btn-color-primary",{noRipple:!0}),t.append(Object(T.d)("AddStickersCount",[Object(T.d)("Stickers",[e.set.count])]))),this.stickersFooter.textContent="",this.stickersFooter.append(t),Object(l.b)(t,()=>{const e=Object(Ct.a)([t],!0);Cs.a.toggleStickerSet(this.set).then(()=>{this.hide()}).catch(()=>{e()})});const s=new Z.d;this.stickersDiv.classList.remove("is-loading"),this.stickersDiv.innerHTML="";for(let t of e.documents){if("documentEmpty"===t._)continue;const e=document.createElement("div");e.classList.add("sticker-set-sticker");const i=b.b.active.esgSticker.width;Bs({doc:t,div:e,lazyLoadQueue:s,group:"STICKERS-POPUP",play:!0,loop:!0,width:i,height:i}),this.stickersDiv.append(e)}})}}var dn,hn=s(29);function pn(e,t=!0){return function(e,t,s=!0){const i=e;let n;return s||(e=je.a),function s(){e(),n=hn.a.setTimeout(s,t())}(),e=i,()=>{clearTimeout(n)}}(e,()=>1e3*(60-(new Date).getSeconds()),t)}var un=!!(null===(dn=null===navigator||void 0===navigator?void 0:navigator.geolocation)||void 0===dn?void 0:dn.getCurrentPosition)&&!1;class gn extends H{init(){return this.header.classList.add("with-border"),this.setTitle("DoubleTapSetting"),this.container.classList.add("quick-reaction-container"),Promise.all([zt.a.getQuickReaction(),zt.a.getAvailableReactions()]).then(([e,t])=>{t=t.filter(e=>!e.pFlags.inactive);const s=new Wn,i=t.map(t=>{const s=new ut({name:"quick-reaction",text:t.title,value:t.reaction,alignRight:!0}),i=new lt({radioField:s,havePadding:!0});return s.main.classList.add("quick-reaction-title"),Us({row:i,doc:t.static_icon,size:"small"}),t===e&&s.setValueSilently(!0),i}),n=ct(i,e=>{zt.a.setDefaultReaction(e)});s.content.append(n),this.scrollable.append(s.container)})}}class mn{constructor(e,t,s,i,n,a=!0){const o="range-setting-selector";this.container=document.createElement("div"),this.container.classList.add(o);const r=document.createElement("div");r.classList.add(o+"-details");const l=document.createElement("div");l.classList.add(o+"-name"),Object(T.b)(l,e);const c=this.valueContainer=document.createElement("div");c.classList.add(o+"-value"),a&&(c.innerHTML=""+s),r.append(l,c),this.range=new Le({step:t,min:i,max:n},s),this.range.setListeners(),this.range.setHandlers({onScrub:e=>{this.onChange&&this.onChange(e),a&&(c.innerText=""+e)}}),this.container.append(r,this.range.container)}}class bn extends z{init(){this.header.classList.add("with-border"),this.container.classList.add("general-settings-container"),this.setTitle("General");const e=qn.bind(null,this.scrollable);{const t=e("Settings"),s=new mn("TextSize",1,a.a.settings.messagesTextSize,12,20);s.onChange=e=>{I.c.setByKey("settings.messagesTextSize",e)};const i=Object(B.a)("btn-primary btn-transparent",{icon:"image",text:"ChatBackground"});Object(l.b)(i,()=>{new ln(this.slider).open()});const n=new St.a({text:"EnableAnimations",name:"animations",stateKey:"settings.animationsEnabled",withRipple:!0});t.append(s.container,i,n.label)}{const t=e("General.Keyboard"),s=document.createElement("form"),i="send-shortcut",n="settings.sendShortcut",a=new lt({radioField:new ut({langKey:"General.SendShortcut.Enter",name:i,value:"enter",stateKey:n}),subtitleLangKey:"General.SendShortcut.NewLine.ShiftEnter"}),o=new lt({radioField:new ut({name:i,value:"ctrlEnter",stateKey:n}),subtitleLangKey:"General.SendShortcut.NewLine.Enter"});Object(T.b)(o.radioField.main,"General.SendShortcut.CtrlEnter",[ae.b?"⌘":"Ctrl"]),s.append(a.container,o.container),t.append(s)}if(un){const t=e("DistanceUnitsTitle"),s=document.createElement("form"),i="distance-unit",n="settings.distanceUnit",a=new lt({radioField:new ut({langKey:"DistanceUnitsKilometers",name:i,value:"kilometers",stateKey:n})}),o=new lt({radioField:new ut({langKey:"DistanceUnitsMiles",name:i,value:"miles",stateKey:n})});s.append(a.container,o.container),t.append(s)}{const t=e("General.TimeFormat"),s=document.createElement("form"),i="time-format",n="settings.timeFormat",a=[["h12","General.TimeFormat.h12"],["h23","General.TimeFormat.h23"]],o=a.map(([e,t])=>new lt({radioField:new ut({langKey:t,name:i,value:e,stateKey:n})})),r=pn(()=>{const e=new Date;a.forEach(([t],s)=>{const i=e.toLocaleTimeString("en-us-u-hc-"+t,{hour:"2-digit",minute:"2-digit"});o[s].subtitle.textContent=i})});this.eventListener.addEventListener("destroy",r),s.append(...o.map(e=>e.container)),t.append(s)}{const t=e("Emoji"),s=new St.a({text:"GeneralSettings.EmojiPrediction",name:"suggest-emoji",stateKey:"settings.emoji.suggest",withRipple:!0}),i=new St.a({text:"GeneralSettings.BigEmoji",name:"emoji-big",stateKey:"settings.emoji.big",withRipple:!0});t.append(s.label,i.label)}{const e=new Wn({name:"Telegram.InstalledStickerPacksController",caption:"StickersBotInfo"}),t=new lt({titleLangKey:"DoubleTapSetting",havePadding:!0,clickable:()=>{new gn(this.slider).open()}}),s=()=>{Promise.resolve(zt.a.getQuickReaction()).then(e=>{Us({row:t,doc:e.static_icon,size:"small"})})};s(),this.listenerSetter.add(a.a)("quick_reaction",s);const i=new St.a({text:"Stickers.SuggestStickers",name:"suggest",stateKey:"settings.stickers.suggest",withRipple:!0}),n=new St.a({text:"InstalledStickers.LoopAnimated",name:"loop",stateKey:"settings.stickers.loop",withRipple:!0}),o={},r=e.generateContentElement(),l=new Z.d,c=(e,t="append")=>{const s=new lt({title:X.b.wrapEmojiText(e.title),subtitleLangKey:"Stickers",subtitleLangArgs:[e.count],havePadding:!0,clickable:()=>{new cn({id:e.id,access_hash:e.access_hash}).show()}});o[e.id]=s;const i=document.createElement("div");i.classList.add("row-media"),Ns({set:e,container:i,group:"GENERAL-SETTINGS",lazyLoadQueue:l,width:48,height:48,autoplay:!0}),s.container.append(i),r[t](s.container)};Cs.a.getAllStickers().then(e=>{Object(ks.a)(e);for(const t of e.sets)c(t)}),this.listenerSetter.add(a.a)("stickers_installed",e=>{const t=e;o[t.id]||c(t,"prepend")}),this.listenerSetter.add(a.a)("stickers_deleted",e=>{const t=e;o[t.id]&&(o[t.id].container.remove(),delete o[t.id])}),e.content.append(t.container,i.label,n.label),this.scrollable.append(e.container)}}onOpen(){this.init&&(this.init(),this.init=null)}}var vn=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class fn extends H{init(){return vn(this,void 0,void 0,(function*(){this.container.classList.add("edit-profile-container"),this.setTitle("EditAccount.Title");const e=[];{const t=qn(this.scrollable,void 0,"Bio.Description"),s=document.createElement("div");s.classList.add("input-wrapper"),this.firstNameInputField=new O.b({label:"EditProfile.FirstNameLabel",name:"first-name",maxLength:70}),this.lastNameInputField=new O.b({label:"Login.Register.LastName.Placeholder",name:"last-name",maxLength:64}),this.bioInputField=new O.b({label:"EditProfile.BioLabel",name:"bio",maxLength:70}),s.append(this.firstNameInputField.container,this.lastNameInputField.container,this.bioInputField.container);const i=document.createElement("div");i.classList.add("caption"),Object(T.e)({element:i,key:"Bio.Description"}),e.push(this.firstNameInputField,this.lastNameInputField,this.bioInputField),this.editPeer=new ot({peerId:a.a.myId,inputFields:e,listenerSetter:this.listenerSetter}),this.content.append(this.editPeer.nextBtn),t.append(this.editPeer.avatarEdit.container,s)}{const t=new Wn({name:"EditAccount.Username",caption:!0}),s=document.createElement("div");s.classList.add("input-wrapper"),this.usernameInputField=new yt({label:"EditProfile.Username.Label",name:"username",plainText:!0,listenerSetter:this.listenerSetter,onChange:()=>{this.editPeer.handleChange(),this.setProfileUrl()},availableText:"EditProfile.Username.Available",takenText:"EditProfile.Username.Taken",invalidText:"EditProfile.Username.Invalid"}),s.append(this.usernameInputField.container);const i=t.caption;i.append(Object(T.d)("UsernameSettings.ChangeDescription")),i.append(document.createElement("br"),document.createElement("br"));const n=this.profileUrlContainer=document.createElement("div");n.classList.add("profile-url-container");const a=this.profileUrlAnchor=document.createElement("a");a.classList.add("profile-url"),a.href="#",a.target="_blank",n.append(Object(T.d)("UsernameHelpLink",[a])),i.append(n),e.push(this.usernameInputField),t.content.append(s),this.scrollable.append(t.container)}Object(l.b)(this.editPeer.nextBtn,()=>{this.editPeer.nextBtn.disabled=!0;let e=[];e.push(n.default.updateProfile(this.firstNameInputField.value,this.lastNameInputField.value,this.bioInputField.value).then(()=>{this.close()},e=>{console.error("updateProfile error:",e)})),this.editPeer.uploadAvatar&&e.push(this.editPeer.uploadAvatar().then(e=>n.default.uploadProfilePhoto(e))),this.usernameInputField.isValidToChange()&&e.push(E.a.updateUsername(this.usernameInputField.value)),Promise.race(e).finally(()=>{this.editPeer.nextBtn.removeAttribute("disabled")})},{listenerSetter:this.listenerSetter});const t=E.a.getSelf(),s=yield n.default.getProfile(t.id,!0);this.firstNameInputField.setOriginalValue(t.first_name,!0),this.lastNameInputField.setOriginalValue(t.last_name,!0),this.bioInputField.setOriginalValue(s.about,!0),this.usernameInputField.setOriginalValue(t.username,!0),this.setProfileUrl(),this.editPeer.handleChange()}))}setProfileUrl(){if(this.usernameInputField.input.classList.contains("error")||!this.usernameInputField.value.length)this.profileUrlContainer.style.display="none";else{this.profileUrlContainer.style.display="";let e="https://t.me/"+this.usernameInputField.value;this.profileUrlAnchor.innerText=e,this.profileUrlAnchor.href=e}}}var yn=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class wn extends H{constructor(){super(...arguments),this.renderResults=e=>yn(this,void 0,void 0,(function*(){yield E.a.getContacts(),e.forEach(e=>{const{dom:t}=Oc.addDialogNew({dialog:e,container:this.selector.scrollable,drawStatus:!1,rippleEnabled:!0,avatarSize:46}),s=this.selector.selected.has(e);t.containerEl.append(this.checkbox(s));const i=[];this.dialogsByFilters.forEach((t,s)=>{if(t.has(e)){const e=document.createElement("span");e.innerHTML=X.b.wrapEmojiText(s.title),i.push(e)}});Object(T.f)(i,!1).forEach(e=>{t.lastMessageSpan.append(e)})})})),this.onSelectChange=e=>{"included"===this.type&&(this.confirmBtn.style.display=e?"":"none")}}init(){return this.content.remove(),this.container.classList.add("included-chatlist-container"),this.confirmBtn=N("check btn-confirm blue",{noRipple:!0}),this.confirmBtn.style.display="none",this.header.append(this.confirmBtn),this.confirmBtn.addEventListener("click",()=>{const e=this.selector.getSelected();if("included"===this.type)for(const e in this.filter.pFlags)0!==e.indexOf("exclude_")&&delete this.filter.pFlags[e];else for(const e in this.filter.pFlags)0===e.indexOf("exclude_")&&delete this.filter.pFlags[e];const t=[];for(const s of e)s.isPeerId()?t.push(s.toPeerId()):this.filter.pFlags[s]=!0;let s;s="included"===this.type?e=>t.includes(e):e=>!t.includes(e),Object(f.a)(this.filter.pinnedPeerIds,(e,t)=>{s(e)||(this.filter.pinnedPeerIds.splice(t,1),this.filter.pinned_peers.splice(t,1))});const i="included"===this.type?"excludePeerIds":"includePeerIds",n="included"===this.type?"exclude_peers":"include_peers";Object(f.a)(this.filter[i],(e,s)=>{t.includes(e)&&(this.filter[i].splice(s,1),this.filter[n].splice(s,1))}),this.filter["included"===this.type?"includePeerIds":"excludePeerIds"]=t,this.filter["included"===this.type?"include_peers":"exclude_peers"]=t.map(e=>o.a.getInputPeerById(e)),this.editFolderTab.setFilter(this.filter,!1),this.close()}),this.dialogsByFilters=new Map,i.a.filtersStorage.getDialogFilters().then(e=>{for(const t of e)this.dialogsByFilters.set(t,new Set(i.a.dialogsStorage.getFolderDialogs(t.id).map(e=>e.peerId)))})}checkbox(e){const t=new St.a({round:!0});return e&&(t.input.checked=e),t.label}onOpen(){this.init&&(this.init(),this.init=null),this.confirmBtn.style.display="excluded"===this.type?"":"none",this.setTitle("included"===this.type?"FilterAlwaysShow":"FilterNeverShow");const e=this.filter,t=new Wn({noDelimiter:!0,name:"FilterChatTypes"});let s;t.container.classList.add("folder-categories"),s="excluded"===this.type?{exclude_muted:{ico:"mute",text:"ChatList.Filter.MutedChats"},exclude_archived:{ico:"archive",text:"ChatList.Filter.Archive"},exclude_read:{ico:"readchats",text:"ChatList.Filter.ReadChats"}}:{contacts:{ico:"newprivate",text:"ChatList.Filter.Contacts"},non_contacts:{ico:"noncontacts",text:"ChatList.Filter.NonContacts"},groups:{ico:"group",text:"ChatList.Filter.Groups"},broadcasts:{ico:"newchannel",text:"ChatList.Filter.Channels"},bots:{ico:"bots",text:"ChatList.Filter.Bots"}};const i=document.createDocumentFragment();for(const e in s){const t=Object(B.a)("btn-primary btn-transparent folder-category-button",{icon:s[e].ico,text:s[e].text});t.dataset.peerId=e,t.append(this.checkbox()),i.append(t)}t.content.append(i);const n=("included"===this.type?e.includePeerIds:e.excludePeerIds).slice();this.selector=new Ft({appendTo:this.container,onChange:this.onSelectChange,peerType:["dialogs"],renderResultsFunc:this.renderResults,placeholder:"Search",sectionNameLangPackKey:"FilterChats"}),this.selector.selected=new Set(n);let a=!1;const o=this.selector.add.bind(this.selector);this.selector.add=(e,t,i)=>{if(this.selector.selected.size>=100&&a&&!s[e]){const t=this.selector.list.querySelector(`[data-peer-id="${e}"] [type="checkbox"]`);t&&setTimeout(()=>{t.checked=!1},0);return void mt(T.c.format("excluded"===this.type?"ChatList.Filter.Exclude.LimitReached":"ChatList.Filter.Include.LimitReached",!0))}const n=o(e,s[e]?Object(T.d)(s[e].text):void 0,i);return s[e]&&n.querySelector("avatar-element").classList.add("tgico-"+s[e].ico),n},this.selector.scrollable.container.append(t.container,this.selector.scrollable.container.lastElementChild),this.selector.addInitial(n),a=!0;for(const i in e.pFlags)s.hasOwnProperty(i)&&e.pFlags[i]&&t.content.querySelector(`[data-peer-id="${i}"]`).click()}onCloseAfterTimeout(){return this.selector&&(this.selector.container.remove(),this.selector=null),super.onCloseAfterTimeout()}open(e,t,s){return this.originalFilter=e,this.filter=Object(ue.a)(this.originalFilter),this.type=t,this.editFolderTab=s,super.open()}}class Sn extends H{constructor(){super(...arguments),this.flags={}}init(){this.container.classList.add("edit-folder-container"),this.caption=document.createElement("div"),this.caption.classList.add("caption"),this.caption.append(Object(T.d)("FilterIncludeExcludeInfo")),this.stickerContainer=document.createElement("div"),this.stickerContainer.classList.add("sticker-container"),this.confirmBtn=N("check btn-confirm hide blue");const e={icon:"delete danger",text:"FilterMenuDelete",onClick:()=>{new Lt("filter-delete",{titleLangKey:"ChatList.Filter.Confirm.Remove.Header",descriptionLangKey:"ChatList.Filter.Confirm.Remove.Text",buttons:[{langKey:"Delete",callback:()=>{e.element.setAttribute("disabled","true"),i.a.filtersStorage.updateDialogFilter(this.filter,!0).then(e=>{e&&this.close()}).finally(()=>{e.element.removeAttribute("disabled")})},isDanger:!0}]}).show()}};this.menuBtn=Ee({},"bottom-left",[e]),this.menuBtn.classList.add("hide"),this.header.append(this.confirmBtn,this.menuBtn);const t=new Wn({}),s=document.createElement("div");s.classList.add("input-wrapper"),this.nameInputField=new O.b({label:"FilterNameHint",maxLength:12}),s.append(this.nameInputField.container),t.content.append(s);const n=(e,t,s,i)=>{const n=new Wn({name:t,noDelimiter:!0});n.container.classList.add("folder-list",e);const a=n.generateContentElement();return a.classList.add("folder-categories"),s.forEach(e=>{const t=Object(B.a)("folder-category-button btn btn-primary btn-transparent",{icon:e.icon,text:e.text,noRipple:!e.withRipple||void 0});e.name&&(i[e.name]=t),a.append(t)}),n};this.includePeerIds=n("folder-list-included","FilterInclude",[{icon:"add primary",text:"ChatList.Filter.Include.AddChat",withRipple:!0},{text:"ChatList.Filter.Contacts",icon:"newprivate",name:"contacts"},{text:"ChatList.Filter.NonContacts",icon:"noncontacts",name:"non_contacts"},{text:"ChatList.Filter.Groups",icon:"group",name:"groups"},{text:"ChatList.Filter.Channels",icon:"channel",name:"broadcasts"},{text:"ChatList.Filter.Bots",icon:"bots",name:"bots"}],this.flags),this.excludePeerIds=n("folder-list-excluded","FilterExclude",[{icon:"minus primary",text:"ChatList.Filter.Exclude.AddChat",withRipple:!0},{text:"ChatList.Filter.MutedChats",icon:"mute",name:"exclude_muted"},{text:"ChatList.Filter.Archive",icon:"archive",name:"exclude_archived"},{text:"ChatList.Filter.ReadChats",icon:"readchats",name:"exclude_read"}],this.flags),this.scrollable.append(this.stickerContainer,this.caption,t.container,this.includePeerIds.container,this.excludePeerIds.container);const a=this.includePeerIds.container.querySelector(".folder-categories"),o=this.excludePeerIds.container.querySelector(".folder-categories");a.querySelector(".btn").addEventListener("click",()=>{new wn(this.slider).open(this.filter,"included",this)}),o.querySelector(".btn").addEventListener("click",()=>{new wn(this.slider).open(this.filter,"excluded",this)}),this.confirmBtn.addEventListener("click",()=>{if(this.nameInputField.input.classList.contains("error"))return;if(!this.nameInputField.value.trim())return void this.nameInputField.input.classList.add("error");let e,t=Array.from(a.children).slice(1).reduce((e,t)=>e+ +!t.style.display,0);t+=this.filter.include_peers.length,t?(this.confirmBtn.setAttribute("disabled","true"),e=this.filter.id?i.a.filtersStorage.updateDialogFilter(this.filter):i.a.filtersStorage.createDialogFilter(this.filter),e.then(e=>{e&&this.close()}).catch(e=>{"DIALOG_FILTERS_TOO_MUCH"===e.type?mt("Sorry, you can't create more folders."):console.error("updateDialogFilter error:",e)}).finally(()=>{this.confirmBtn.removeAttribute("disabled")})):mt("Please choose at least one chat for this folder.")}),this.nameInputField.input.addEventListener("input",()=>{this.filter.title=this.nameInputField.value,this.editCheckForChange()});const r="edit"===this.type?[i.a.filtersStorage.reloadMissingPeerIds(this.filter.id,"pinned_peers"),i.a.filtersStorage.reloadMissingPeerIds(this.filter.id,"include_peers"),i.a.filtersStorage.reloadMissingPeerIds(this.filter.id,"exclude_peers")]:[];return Promise.all([this.loadAnimationPromise=oe.a.loadAnimationAsAsset({container:this.stickerContainer,loop:!1,autoplay:!1,width:86,height:86},"Folders_2").then(e=>(this.animation=e,oe.a.waitForFirstFrame(e))),...r])}onOpenAfterTimeout(){this.loadAnimationPromise.then(()=>{this.animation.autoplay=!0,this.animation.play()})}onCreateOpen(){this.setTitle("FilterNew"),this.menuBtn.classList.add("hide"),this.confirmBtn.classList.remove("hide"),this.nameInputField.value="";for(const e in this.flags)this.flags[e].style.display="none"}onEditOpen(){this.setTitle("create"===this.type?"FilterNew":"FilterHeaderEdit"),"edit"===this.type&&(this.menuBtn.classList.remove("hide"),this.confirmBtn.classList.add("hide"));const e=this.filter;this.nameInputField.value=X.b.wrapDraftText(e.title);for(const t in this.flags)this.flags[t].style.display=e.pFlags[t]?"":"none";["includePeerIds","excludePeerIds"].forEach(t=>{const s=this[t],i=Oc.createChatList(),n=e[t].slice(),a=e=>{for(let t=0,s=Math.min(n.length,e);ta(20)),o.append(Object(T.d)("FilterShowMoreChats",[n.length])),e.append(o)}a(4)})}editCheckForChange(){if("edit"===this.type){const e=!Object(ge.a)(this.originalFilter,this.filter);this.confirmBtn.classList.toggle("hide",!e),this.menuBtn.classList.toggle("hide",e)}}setFilter(e,t){this.container&&Array.from(this.container.querySelectorAll("ul, .load-more")).forEach(e=>e.remove()),t?(this.originalFilter=e,this.filter=Object(ue.a)(e)):(this.filter=e,this.onEditOpen(),this.editCheckForChange())}open(e){return void 0===e?(this.setFilter({_:"dialogFilter",id:0,title:"",pFlags:{},pinned_peers:[],include_peers:[],exclude_peers:[],pinnedPeerIds:[],includePeerIds:[],excludePeerIds:[]},!0),this.type="create"):(this.setFilter(e,!0),this.type="edit"),super.open().then(()=>{"edit"===this.type?this.onEditOpen():this.onCreateOpen()})}}var Ln=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class Cn extends H{constructor(){super(...arguments),this.filtersRendered={}}renderFolder(e,t,s){let n,a,r="",c=[];if("dialogFilterSuggested"===e._)n=e.filter,r=e.description;else{if(n=e,1===Object.keys(n.pFlags).length){const e=n.pFlags;let t;e.contacts?t="FilterAllContacts":e.non_contacts?t="FilterAllNonContacts":e.groups?t="FilterAllGroups":e.broadcasts?t="FilterAllChannels":e.bots&&(t="FilterAllBots"),t&&c.push(Object(T.d)(t))}if(!c.length){const e=i.a.dialogsStorage.getFolderDialogs(n.id);let t=0,s=0,a=0;for(const i of e)o.a.isAnyGroup(i.peerId)?a++:o.a.isBroadcast(i.peerId)?s++:t++;t&&c.push(Object(T.d)("Chats",[t])),s&&c.push(Object(T.d)("Channels",[s])),a&&c.push(Object(T.d)("Groups",[a]))}}if(s)s.subtitle.textContent="",Object(T.f)(c).forEach(e=>{s.subtitle.append(e)});else if(s=new lt({title:X.a.wrapEmojiText(n.title),subtitle:r,clickable:!0}),c.length&&Object(T.f)(c).forEach(e=>{s.subtitle.append(e)}),"dialogFilter"===e._){const e=n.id;this.filtersRendered.hasOwnProperty(n.id)||Object(l.b)(s.container,()=>{new Sn(this.slider).open(i.a.filtersStorage.getFilter(e))},{listenerSetter:this.listenerSetter}),this.filtersRendered[n.id]=s}return a=s.container,n.hasOwnProperty("orderIndex")?qs(a,a.parentElement||t,n.orderIndex):t&&t.append(a),a}init(){return Ln(this,void 0,void 0,(function*(){this.container.classList.add("chat-folders-container"),this.setTitle("ChatList.Filter.List.Title"),this.scrollable.container.classList.add("chat-folders"),this.stickerContainer=document.createElement("div"),this.stickerContainer.classList.add("sticker-container");const e=document.createElement("div");e.classList.add("caption"),Object(T.e)({element:e,key:"ChatList.Filter.Header"}),this.createFolderBtn=Object(B.a)("btn-primary btn-color-primary btn-control tgico",{text:"ChatList.Filter.NewTitle",icon:"add"}),this.foldersSection=new Wn({name:"Filters"}),this.foldersSection.container.style.display="none",this.suggestedSection=new Wn({name:"FilterRecommended"}),this.suggestedSection.container.style.display="none",this.scrollable.append(this.stickerContainer,e,this.createFolderBtn,this.foldersSection.container,this.suggestedSection.container),Object(l.b)(this.createFolderBtn,()=>{Object.keys(this.filtersRendered).length>=10?mt("Sorry, you can't create more folders."):new Sn(this.slider).open()},{listenerSetter:this.listenerSetter});const t=()=>{this.foldersSection.container.style.display=Object.keys(this.filtersRendered).length?"":"none"};return i.a.filtersStorage.getDialogFilters().then(e=>{for(const t of e)this.renderFolder(t,this.foldersSection.content);t()}),this.listenerSetter.add(a.a)("filter_update",e=>{this.filtersRendered.hasOwnProperty(e.id)?this.renderFolder(e,null,this.filtersRendered[e.id]):this.renderFolder(e,this.foldersSection.content),t(),this.getSuggestedFilters()}),this.listenerSetter.add(a.a)("filter_delete",e=>{this.filtersRendered.hasOwnProperty(e.id)&&(this.getSuggestedFilters(),this.filtersRendered[e.id].container.remove(),delete this.filtersRendered[e.id]),t()}),this.listenerSetter.add(a.a)("filter_order",e=>{e.forEach((e,t)=>{const s=this.filtersRendered[e].container;qs(s,s.parentElement,t+1)})}),this.loadAnimationPromise=oe.a.loadAnimationAsAsset({container:this.stickerContainer,loop:!1,autoplay:!1,width:86,height:86},"Folders_1").then(e=>(this.animation=e,oe.a.waitForFirstFrame(e))),this.getSuggestedFilters(),this.loadAnimationPromise}))}onOpenAfterTimeout(){this.loadAnimationPromise.then(()=>{this.animation.autoplay=!0,this.animation.play()})}getSuggestedFilters(){return ft.a.invokeApi("messages.getSuggestedDialogFilters").then(e=>{this.suggestedSection.container.style.display=e.length?"":"none",Array.from(this.suggestedSection.content.children).slice(1).forEach(e=>e.remove()),e.forEach(e=>{const t=this.renderFolder(e),s=Object(B.a)("btn-primary btn-color-primary",{text:"Add"});t.append(s),this.suggestedSection.content.append(t),Object(l.b)(s,n=>{if(Object(c.a)(n),Object.keys(this.filtersRendered).length>=10)return void mt("Sorry, you can't create more folders.");s.setAttribute("disabled","true");const a=e.filter;a.includePeerIds=[],a.excludePeerIds=[],a.pinnedPeerIds=[],i.a.filtersStorage.createDialogFilter(a,!0).then(e=>{e&&t.remove()}).finally(()=>{s.removeAttribute("disabled")})},{listenerSetter:this.listenerSetter})})})}}class Mn extends z{init(){this.header.classList.add("with-border"),this.container.classList.add("notifications-container","with-border"),this.setTitle("Telegram.NotificationSettingsViewController");const e=e=>{const t=new Wn({name:e.name}),s=new lt({checkboxField:new St.a({text:e.typeText,checked:!0}),subtitleLangKey:"Loading"}),i=new lt({checkboxField:new St.a({text:"MessagePreview",checked:!0}),subtitleLangKey:"Loading"});t.content.append(s.container,i.container),this.scrollable.append(t.container);const n={_:e.inputKey},o=qt.a.getNotifySettings(n);(o instanceof Promise?o:Promise.resolve(o)).then(t=>{const o=()=>{const e=qt.a.isMuted(t);return s.checkboxField.checked=!e,i.checkboxField.checked=t.show_previews,e};o(),this.eventListener.addEventListener("destroy",()=>{const e=!s.checkboxField.checked,a=i.checkboxField.checked;if(e===qt.a.isMuted(t)&&a===t.show_previews)return;const o=Object(ue.a)(t);o._="inputPeerNotifySettings",o.mute_until=e?2147483647:0,o.show_previews=a,qt.a.updateNotifySettings(n,o)},{once:!0}),this.listenerSetter.add(a.a)("notify_settings",s=>{const i=qi(s.peer._);e.inputKey===i&&(t=s.notify_settings,o())})})};e({name:"NotificationsPrivateChats",typeText:"NotificationsForPrivateChats",inputKey:"inputNotifyUsers"}),e({name:"NotificationsGroups",typeText:"NotificationsForGroups",inputKey:"inputNotifyChats"}),e({name:"NotificationsChannels",typeText:"NotificationsForChannels",inputKey:"inputNotifyBroadcasts"});{const e=new Wn({name:"NotificationsOther"}),t=new lt({checkboxField:new St.a({text:"ContactJoined",checked:!0}),subtitleLangKey:"Loading"}),s=new lt({checkboxField:new St.a({text:"Notifications.Sound",checked:!0,stateKey:"settings.notifications.sound"}),subtitleLangKey:"Loading"});I.c.getState().then(e=>{s.checkboxField.checked=e.settings.notifications.sound}),e.content.append(t.container,s.container),this.scrollable.append(e.container),qt.a.getContactSignUpNotification().then(e=>{t.checkboxField.checked=e,this.eventListener.addEventListener("destroy",()=>{const s=t.checkboxField.checked;e!==s&&qt.a.setContactSignUpNotification(!s)},{once:!0})})}}}var In=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class En extends H{init(){return In(this,void 0,void 0,(function*(){this.header.classList.add("with-border"),this.container.classList.add("language-container"),this.setTitle("Telegram.LanguageViewController");const e=new Wn({}),t=new Map,s=ft.a.invokeApiCacheable("langpack.getLanguages",{lang_pack:"macos"}).then(s=>{const i=Object(ht.b)();s.forEach(e=>{const s=new lt({radioField:new ut({text:e.name,name:i,value:e.lang_code}),subtitle:e.native_name});t.set(e.lang_code,s)});const n=ct([...t.values()],e=>{T.c.getLangPack(e)});T.c.getCacheLangPack().then(e=>{const s=t.get(e.lang_code);s?s.radioField.setValueSilently(!0):console.error("no row",s,e)}),e.content.append(n)});return this.scrollable.append(e.container),s}))}}function Pn(e){return new Promise((t,s)=>{const{button:i,checkbox:n}=e;i.callback=e=>{t(e?!!e.size:void 0)};const a=Object(wt.a)([i]);a.find(e=>e.isCancel).callback=()=>{s()},e.buttons=a,e.checkboxes=n&&[n],new Lt("popup-confirmation",e).show()})}function kn(e,t){const s=new Wn({name:t}),i="settings.autoDownload."+e+".",n=new St.a({text:"AutodownloadContacts",name:"contacts",stateKey:i+"contacts",withRipple:!0}),a=new St.a({text:"AutodownloadPrivateChats",name:"private",stateKey:i+"private",withRipple:!0}),o=new St.a({text:"AutodownloadGroupChats",name:"groups",stateKey:i+"groups",withRipple:!0}),r=new St.a({text:"AutodownloadChannels",name:"channels",stateKey:i+"channels",withRipple:!0});return s.content.append(n.label,a.label,o.label,r.label),s}class Tn extends z{init(){this.header.classList.add("with-border"),this.setTitle("AutoDownloadPhotos");const e=kn("photo","AutoDownloadPhotosTitle");this.scrollable.append(e.container)}}class xn extends z{init(){this.header.classList.add("with-border"),this.setTitle("AutoDownloadFiles");const e=Object(vt.a)(e=>{I.c.setByKey("settings.autoDownloadNew.file_size_max",e)},200,!1,!0),t=kn("file","AutoDownloadFilesTitle"),s=a.a.settings.autoDownloadNew.file_size_max,i=Math.sqrt(Math.sqrt((s-524288)/20447232)),n=new T.c.IntlElement({key:"AutodownloadSizeLimitUpTo",args:[Ue(s)]}),o=new mn("AutoDownloadMaxFileSize",.01,i,0,1,!1);o.onChange=t=>{const s=20447232*Math.pow(t,4)+524288|0;n.compareAndUpdate({args:[Ue(s)]}),e(s)},o.valueContainer.append(n.element),t.content.append(o.container),this.scrollable.append(t.container)}}class An extends z{init(){this.header.classList.add("with-border"),this.setTitle("AutoDownloadVideos");const e=kn("video","AutoDownloadVideosTitle");this.scrollable.append(e.container)}}var On=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};const _n={contacts:"AutoDownloadContacts",private:"AutoDownloadPm",groups:"AutoDownloadGroups",channels:"AutoDownloadChannels"};class Fn extends z{init(){return On(this,void 0,void 0,(function*(){this.header.classList.add("with-border"),this.setTitle("DataSettings");{const e=new Wn({name:"AutomaticMediaDownload",caption:"AutoDownloadAudioInfo"}),t=yield I.c.getState(),s=new St.a({text:"AutoDownloadMedia",name:"auto",checked:!t.settings.autoDownloadNew.pFlags.disabled,withRipple:!0}),i=()=>{Object(Ct.a)([h],Object(ge.a)(t.settings.autoDownload,I.b.settings.autoDownload)&&Object(ge.a)(t.settings.autoDownloadNew,I.b.settings.autoDownloadNew))},n=()=>{this.setAutoDownloadSubtitle(r,t.settings.autoDownload.photo),this.setAutoDownloadSubtitle(c,t.settings.autoDownload.video),this.setAutoDownloadSubtitle(d,t.settings.autoDownload.file,t.settings.autoDownloadNew.file_size_max)},o=e=>{const t=new e(this.slider,!0);t.open(),this.listenerSetter.add(t.eventListener)("destroy",()=>{n(),i()},{once:!0})},r=new lt({titleLangKey:"AutoDownloadPhotos",subtitle:"",clickable:()=>{o(Tn)}}),c=new lt({titleLangKey:"AutoDownloadVideos",subtitle:"",clickable:()=>{o(An)}}),d=new lt({titleLangKey:"AutoDownloadFiles",subtitle:"",clickable:()=>{o(xn)}}),h=Object(B.a)("btn-primary btn-transparent primary",{icon:"delete",text:"ResetAutomaticMediaDownload"});Object(l.b)(h,()=>{Pn({titleLangKey:"ResetAutomaticMediaDownloadAlertTitle",descriptionLangKey:"ResetAutomaticMediaDownloadAlert",button:{langKey:"Reset"}}).then(()=>{a.a.settings.autoDownloadNew=Object(ue.a)(I.b.settings.autoDownloadNew),a.a.settings.autoDownload=Object(ue.a)(I.b.settings.autoDownload),I.c.pushToState("settings",a.a.settings),a.a.dispatchEvent("settings_updated",{key:"settings",value:a.a.settings}),n(),s.checked=!t.settings.autoDownloadNew.pFlags.disabled})});const p=()=>{const e=!s.checked,t=a.a.settings;e?t.autoDownloadNew.pFlags.disabled=!0:delete t.autoDownloadNew.pFlags.disabled,[r,c,d].forEach(t=>{t.container.classList.toggle("is-disabled",e)}),I.c.pushToState("settings",t),a.a.dispatchEvent("settings_updated",{key:"settings",value:t}),i()};s.input.addEventListener("change",p),p(),n(),e.content.append(s.label,r.container,c.container,d.container,h),this.scrollable.append(e.container)}{const e=new Wn({name:"AutoplayMedia"}),t=new St.a({text:"AutoplayGIF",name:"gifs",stateKey:"settings.autoPlay.gifs",withRipple:!0}),s=new St.a({text:"AutoplayVideo",name:"videos",stateKey:"settings.autoPlay.videos",withRipple:!0});e.content.append(t.label,s.label),this.scrollable.append(e.container)}}))}setAutoDownloadSubtitle(e,t,s){let i,n=[];const a=Object.keys(t),o=a.map(e=>t[e]?_n[e]:void 0).filter(Boolean);if(o.length&&0!==s){const e=o.length===a.length;if(void 0!==s?(i=e?"AutoDownloadUpToOnAllChats":"AutoDownloadOnUpToFor",n.push(Ue(s))):i=e?"AutoDownloadOnAllChats":"AutoDownloadOnFor",!e){const e=document.createElement("span");e.append(...Object(T.f)(o.map(e=>Object(T.d)(e)),!0,!1)),n.push(e)}}else i="AutoDownloadOff";Object(k.a)(e.subtitle,Object(T.d)(i,n))}}var jn=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class Dn extends H{constructor(){super(...arguments),this.buttons={}}init(){this.container.classList.add("settings-container"),this.setTitle("Settings");const e=Ee({},"bottom-left",[{icon:"logout",text:"EditAccount.Logout",onClick:()=>{new Lt("logout",{titleLangKey:"LogOut",descriptionLangKey:"LogOut.Description",buttons:[{langKey:"LogOut",callback:()=>{ft.a.logOut()},isDanger:!0}]}).show()}}]);this.buttons.edit=N("edit"),this.header.append(this.buttons.edit,e),this.profile=new rs(this.scrollable,this.listenerSetter,!1),this.profile.init(),this.profile.setPeer(a.a.myId),this.profile.fillProfileElements();const t=Object(B.a)("btn-circle btn-corner z-depth-1 profile-change-avatar",{icon:"cameraadd"});t.addEventListener("click",()=>{const e=document.createElement("canvas");(new W.a).open(e,e=>{e().then(e=>n.default.uploadProfilePhoto(e))})}),this.profile.element.lastElementChild.firstElementChild.append(t);const s=()=>{var e;const s=E.a.getSelf();t.classList.toggle("hide","userProfilePhoto"!==(null===(e=s.photo)||void 0===e?void 0:e._))};s(),this.listenerSetter.add(a.a)("avatar_update",e=>{a.a.myId===e&&s()});const i=document.createElement("div");i.classList.add("profile-buttons");const o=[["unmute","AccountSettings.Notifications",Mn],["data","DataSettings",Fn],["lock","AccountSettings.PrivacyAndSecurity",$i],["settings","Telegram.GeneralSettingsViewController",bn],["folder","AccountSettings.Filters",Cn]].map(([e,t,s])=>new lt({titleLangKey:t,icon:e,clickable:()=>{new s(this.slider,!0).open()}}));o.push(this.devicesRow=new lt({titleLangKey:"Devices",titleRightSecondary:" ",icon:"activesessions",clickable:()=>jn(this,void 0,void 0,(function*(){this.authorizations||(yield this.updateActiveSessions());const e=new Ki(this.slider);e.authorizations=this.authorizations,e.eventListener.addEventListener("destroy",()=>{this.authorizations=void 0,this.updateActiveSessions(!0)},{once:!0}),e.open()}))}),this.languageRow=new lt({titleLangKey:"AccountSettings.Language",titleRightSecondary:Object(T.d)("LanguageName"),icon:"language",clickable:()=>{new En(this.slider).open()}})),i.append(...o.map(e=>e.container));const r=new Wn;r.content.append(i),this.scrollable.append(this.profile.element,r.container),this.buttons.edit.addEventListener("click",()=>{new fn(this.slider).open()}),oe.a.loadLottieWorkers(),this.updateActiveSessions()}getAuthorizations(e){if(this.getAuthorizationsPromise&&!e)return this.getAuthorizationsPromise;const t=this.getAuthorizationsPromise=ft.a.invokeApi("account.getAuthorizations").finally(()=>{this.getAuthorizationsPromise===t&&(this.getAuthorizationsPromise=void 0)});return t}updateActiveSessions(e){return this.getAuthorizations(e).then(e=>{this.authorizations=e.authorizations,this.devicesRow.titleRight.textContent=""+this.authorizations.length})}}class Rn extends H{constructor(){super(...arguments),this.uploadAvatar=null}init(){this.container.classList.add("new-channel-container"),this.setTitle("NewChannel"),this.avatarEdit=new q(e=>{this.uploadAvatar=e});const e=new Wn({caption:"Channel.DescriptionHolderDescrpiton"}),t=document.createElement("div");t.classList.add("input-wrapper"),this.channelNameInputField=new O.b({label:"EnterChannelName",maxLength:128}),this.channelDescriptionInputField=new O.b({label:"DescriptionOptionalPlaceholder",maxLength:255}),t.append(this.channelNameInputField.container,this.channelDescriptionInputField.container);const s=()=>{this.nextBtn.classList.toggle("is-visible",!!this.channelNameInputField.value.length&&!this.channelNameInputField.input.classList.contains("error")&&!this.channelDescriptionInputField.input.classList.contains("error"))};this.channelNameInputField.input.addEventListener("input",s),this.channelDescriptionInputField.input.addEventListener("input",s),this.nextBtn=$({icon:"arrow_next"}),this.nextBtn.addEventListener("click",()=>{const e=this.channelNameInputField.value,t=this.channelDescriptionInputField.value;this.nextBtn.disabled=!0,G.a.createChannel({title:e,about:t,broadcast:!0}).then(e=>{this.uploadAvatar&&this.uploadAvatar().then(t=>{G.a.editPhoto(e,t)}),Xn.removeTabFromHistory(this),new Qt(this.slider).open({type:"channel",skippable:!0,title:"GroupAddMembers",placeholder:"SendMessageTo",takeOut:t=>G.a.inviteToChannel(e,t)})})}),this.content.append(this.nextBtn),e.content.append(this.avatarEdit.container,t),this.scrollable.append(e.container)}onCloseAfterTimeout(){return this.avatarEdit.clear(),this.uploadAvatar=null,this.channelNameInputField.value="",this.channelDescriptionInputField.value="",this.nextBtn.disabled=!1,super.onCloseAfterTimeout()}}var Bn=s(151);class Nn extends wt.b{constructor(){super("popup-create-contact popup-send-photo popup-new-media",null,{closable:!0,withConfirm:"Add"}),Object(T.b)(this.title,"AddContactTitle"),Object(l.b)(this.btnConfirm,()=>{const e=E.a.importContact(s.value,i.value,n.value);e.then(()=>{this.hide()},e=>{"NO_USER"===e.type&&(bt({langPackKey:"Contacts.PhoneNumber.NotRegistred"}),c.disabled=!1)}),c.lockWithPromise(e)},{listenerSetter:this.listenerSetter});const e=[],t=document.createElement("div");t.classList.add("name-fields");const s=new O.b({label:"FirstName",name:"create-contact-name",maxLength:70,required:!0}),i=new O.b({label:"LastName",name:"create-contact-lastname",maxLength:70}),n=new Bn.a({required:!0});e.push(s,i,n);const a=()=>{const e=s.value+" "+i.value;c.avatarElem.peerTitle=e,c.avatarElem.update()};this.listenerSetter.add(s.input)("input",a),this.listenerSetter.add(i.input)("input",a),n.validate=()=>!!n.value.match(/\d/);const o=E.a.getSelf(),r=Object(ti.a)(o.phone);r.code&&(n.value="+"+r.code.country_code);const c=new ot({inputFields:e,listenerSetter:this.listenerSetter,doNotEditAvatar:!0,nextBtn:this.btnConfirm,avatarSize:100});t.append(s.container,i.container,c.avatarElem),this.container.append(t,n.container),this.show()}}class Un extends H{init(){this.container.id="contacts-container";const e=$({icon:"add",className:"is-visible"});this.content.append(e),Object(l.b)(e,()=>{new Nn},{listenerSetter:this.listenerSetter}),this.inputSearch=new _("Search",e=>{this.openContacts(e)}),this.listenerSetter.add(a.a)("contacts_update",e=>{const t=E.a.isContact(e),s=e.toPeerId();t?this.sortedUserList.add(s):this.sortedUserList.delete(s)}),this.title.replaceWith(this.inputSearch.container),this.middleware=Object(Gs.a)()}createList(){const e=new Xs,t=e.list;return t.id="contacts",t.classList.add("contacts-container"),Oc.setListClickListener(t,()=>{this.close()},void 0,!0),e}onClose(){this.middleware.clean()}onOpenAfterTimeout(){!ae.e&&Ti(!0)&&this.inputSearch.input.focus()}openContacts(e){this.init&&(this.init(),this.init=null),this.middleware.clean();const t=this.middleware.get();this.scrollable.onScrolledBottom=null,this.scrollable.container.textContent="",E.a.getContactsPeerIds(e,void 0,"online").then(e=>{if(!t())return;const s=this.sortedUserList=this.createList();let i=()=>{const t=xt.a.height/72*1.25|0;e.splice(0,t).forEach(e=>{s.add(e)}),e.length||(i=void 0,this.scrollable.onScrolledBottom=null)};i(),this.scrollable.onScrolledBottom=()=>{i?i():this.scrollable.onScrolledBottom=null},Object(k.a)(this.scrollable.container,s.list)})}open(){return this.openContacts(),super.open()}}class Hn extends H{init(){if(this.container.id="chats-archived-container",this.setTitle("ArchivedChats"),!Oc.sortedLists[Hn.filterId]){const e=Oc.createChatList();Oc.generateScrollable(e,Hn.filterId).container.append(e),Oc.setListClickListener(e,null,!0)}const e=Oc.scrollables[Hn.filterId];this.scrollable.container.replaceWith(e.container),this.scrollable=e}onOpen(){this.init&&(this.init(),this.init=null),this.wasFilterId=Oc.filterId,Oc.setFilterId(Hn.filterId),Oc.onTabChange()}onOpenAfterTimeout(){Oc.sortedLists[this.wasFilterId].clear()}onClose(){Oc.setFilterId(this.wasFilterId),Oc.onTabChange()}onCloseAfterTimeout(){return Oc.sortedLists[Hn.filterId].clear(),super.onCloseAfterTimeout()}}Hn.filterId=1;class zn extends H{constructor(){super(...arguments),this.isLocationWatched=!1}init(){this.container.classList.add("people-nearby-container"),this.setTitle("PeopleNearby"),this.errorCategory=document.createElement("div"),this.errorCategory.classList.add("text","hide","nearby-error"),this.retryBtn=$({icon:"check"});const e=Cs.a.getAnimatedEmojiSticker("🧭"),t=document.createElement("div");t.classList.add("sticker-container"),e?Bs({doc:e,div:t,loop:!1,play:!0,width:86,height:86,emoji:"🧭",needUpscale:!0}).then(()=>{}):t.classList.add("media-sticker-wrapper");const s=document.createElement("div");s.classList.add("caption"),Object(T.b)(s,"PeopleNearbyInfo2"),this.locatedPeers=new Map;const i=()=>{const e=new Xs({avatarSize:42,createChatListOptions:{dialogSize:48,new:!0},autonomous:!1,onUpdate:e=>{const t=this.locatedPeers.get(e.id),s=[this.parseDistance(t.distance)];e.id.isUser()||s.push(n.default.getChatMembersString(e.id.toChatId())),e.dom.lastMessageSpan.textContent="",e.dom.lastMessageSpan.append(...Object(T.f)(s,!1))},getIndex:e=>2147483647-this.locatedPeers.get(e.id).distance});return Oc.setListClickListener(e.list,void 0,void 0,!1),e},a=this.peopleSection=new Qn({name:"PeopleNearbyHeader",sortedList:i()}),o=this.chatsSection=new Qn({name:"ChatsNearbyHeader",sortedList:i()}),r=a.makeButton({text:"MakeMyselfVisible",icon:"location"}),c=a.makeButton({text:"StopShowingMe",icon:"location"}),d=o.makeButton({text:"NearbyCreateGroup",icon:"newgroup"});Object(l.b)(r,()=>{Pn({titleLangKey:"MakeMyselfVisibleTitle",descriptionLangKey:"MakeMyselfVisibleInfo",button:{langKey:"OK"}}).then(()=>{this.startWatching()})},{listenerSetter:this.listenerSetter}),Object(l.b)(c,()=>{this.stopWatching()},{listenerSetter:this.listenerSetter}),Object(l.b)(d,()=>{new Q(this.slider).open([],!0)},{listenerSetter:this.listenerSetter}),r.classList.add("primary"),c.classList.add("danger"),d.classList.add("primary"),this.content.append(this.retryBtn),this.scrollable.append(t,s,a.container,o.container,this.errorCategory)}parseDistance(e){return"miles"===a.a.settings.distanceUnit?e>1609.34?Object(T.d)("MilesAway",[Math.round(e/1609)]):Object(T.d)("FootsAway",[Math.round(3.281*e)]):e>=1e3?Object(T.d)("KMetersAway2",[e/1e3]):Object(T.d)("MetersAway2",[e])}open(){const e=super.open();return e.then(()=>{this.retryBtn.classList.remove("is-visible"),navigator.geolocation.getCurrentPosition(e=>{this.latestLocationSaved={latitude:e.coords.latitude,longitude:e.coords.longitude,accuracy:e.coords.accuracy},console.log(this.latestLocationSaved),E.a.getLocated(e.coords.latitude,e.coords.longitude,e.coords.accuracy).then(e=>{const t=e.updates[0].peers,s=t.sort((e,t)=>e.distance-t.distance),i=t.filter(e=>"peerChannel"==e.peer._).length,n=t.filter(e=>"peerChannel"!=e.peer._).length;null==s||s.forEach(e=>{const t=o.a.getPeerId(e.peer),s=t.isUser()?this.peopleSection:this.chatsSection;this.locatedPeers.set(t,e),s.sortedList.add(t)}),this.errorCategory.classList.toggle("hide",!(!n&&!i)),this.errorCategory.innerHTML="No groups or channels found around you."})},e=>{this.errorCategory.classList.remove("hide"),this.retryBtn.classList.add("is-visible"),this.retryBtn.addEventListener("click",this.open),e instanceof GeolocationPositionError?this.errorCategory.innerHTML="Location permission denied. Click below to retry.":this.errorCategory.innerHTML="An error has occurred. Please retry later clicking the button below."})}),e}startWatching(){this.latestLocationSaved&&!this.isLocationWatched&&(this.isLocationWatched=!0,mt("Your position is now being shared. Do not close the page or it will be suspended."),E.a.getLocated(this.latestLocationSaved.latitude,this.latestLocationSaved.longitude,this.latestLocationSaved.accuracy,!0,2147483647),navigator.geolocation.watchPosition(e=>{const t=e.coords.longitude!==this.latestLocationSaved.longitude,s=e.coords.latitude!==this.latestLocationSaved.latitude,i=this.calculateDistance(e.coords.latitude,e.coords.longitude,this.latestLocationSaved.latitude,this.latestLocationSaved.longitude)>100;(s||t)&&i&&(E.a.getLocated(e.coords.latitude,e.coords.longitude,e.coords.accuracy,!0,2147483647),this.latestLocationSaved={latitude:e.coords.latitude,longitude:e.coords.longitude,accuracy:e.coords.accuracy})}))}stopWatching(){this.isLocationWatched&&(this.isLocationWatched=!1,mt("The sharing of your position has been stopped. You will no longer be visible to other users."),E.a.getLocated(0,0,0,!1,0))}calculateDistance(e,t,s,i){const n=.017453292519943295;return 12742*Math.asin(Math.sqrt(.5-Math.cos((s-e)*n)+Math.cos(e*n)*Math.cos(s*n)*(1-Math.cos((i-t)*n)/2)))}}var Vn=s(5),Kn=s(6);function Gn(e,t=2){if(0===e)return"0";const s=t<0?0:t,i=Math.floor(Math.log(e)/Math.log(1e3));return parseFloat((e/Math.pow(1e3,i)).toFixed(s))+["","K","M","B","T"][i]}class Wn{constructor(e={}){const t=this.container=document.createElement("div");t.classList.add("sidebar-left-section-container");const s=this.innerContainer=document.createElement("div");if(s.classList.add("sidebar-left-section"),e.noShadow&&s.classList.add("no-shadow"),e.fakeGradientDelimiter)s.append($n()),s.classList.add("with-fake-delimiter");else if(e.noDelimiter)s.classList.add("no-delimiter");else{const e=document.createElement("hr");s.append(e)}const i=this.content=this.generateContentElement();if(e.name){const t=this.title=document.createElement("div");t.classList.add("sidebar-left-h2","sidebar-left-section-name"),Object(T.e)({element:t,key:e.name,args:e.nameArgs}),i.append(t)}if(t.append(s),e.caption){const s=this.caption=this.generateContentElement();s.classList.add("sidebar-left-section-caption"),t.append(s),!0!==e.caption&&Object(T.e)({element:s,key:e.caption})}}generateContentElement(){const e=document.createElement("div");return e.classList.add("sidebar-left-section-content"),this.innerContainer.append(e),e}}const qn=(e,t,s)=>{const i=new Wn({name:t,caption:s});return e.append(i.container),i.content},$n=()=>{const e=document.createElement("div");return e.classList.add("gradient-delimiter"),e};class Qn extends Wn{constructor(e){super(e),this.sortedList=e.sortedList,this.content.append(this.sortedList.list)}makeButton(e){const t=Object(B.a)("folder-category-button btn btn-primary btn-transparent",e);return this.title?this.content.insertBefore(t,this.title.nextSibling):this.content.prepend(t),t}}const Yn=new class extends K{constructor(){super({sidebarEl:document.getElementById("column-left"),navigationType:"left"}),this.searchGroups={},this.inputSearch=new _("Search");const e=this.sidebarEl.querySelector(".item-main .sidebar-header");e.append(this.inputSearch.container);const t=()=>{new Un(this).open()};this.backBtn=this.sidebarEl.querySelector(".sidebar-back-button");const s={icon:"archive",text:"ArchivedChats",onClick:()=>{new Hn(this).open()},verify:()=>!!i.a.dialogsStorage.getFolderDialogs(1,!1).length||!i.a.dialogsStorage.isDialogsLoaded(1)},n=new St.a({toggle:!0,checked:"night"===a.a.getTheme().name});n.input.addEventListener("change",()=>{a.a.settings.theme=n.input.checked?"night":"day",I.c.pushToState("settings",a.a.settings),a.a.dispatchEvent("theme_change")}),a.a.addEventListener("theme_change",()=>{n.setValueSilently("night"===a.a.getTheme().name)});const o=[{icon:"saved",text:"SavedMessages",onClick:()=>{setTimeout(()=>{ic.setPeer({peerId:ic.myId})},0)}},s,{icon:"user",text:"Contacts",onClick:t},un?{icon:"group",text:"PeopleNearby",onClick:()=>{new zn(this).open()}}:void 0,{icon:"settings",text:"Settings",onClick:()=>{new Dn(this).open()}},{icon:"darkmode",text:"DarkMode",onClick:()=>{},checkboxField:n},{icon:"animations",text:"Animations",onClick:()=>{},checkboxField:new St.a({toggle:!0,checked:!0,stateKey:"settings.animationsEnabled"})},{icon:"help",text:"TelegramFeatures",onClick:()=>{const e=T.c.format("TelegramFeaturesUrl",!0);ic.openUrl(e)}},{icon:"bug",text:"ReportBug",onClick:()=>{const e=document.createElement("a");e.target="_blank",e.href="https://bugs.telegram.org/?tag_ids=40&sort=time",document.body.append(e),e.click(),setTimeout(()=>{e.remove()},0)}},{icon:"char z",text:"ChatList.Menu.SwitchTo.Z",onClick:()=>{Promise.all([Kn.a.set({kz_version:"Z"}),Kn.a.delete("tgme_sync")]).then(()=>{location.href="https://web.telegram.org/z/"})},verify:()=>Vn.a.isMainDomain},{icon:"char w",text:"ChatList.Menu.SwitchTo.Webogram",onClick:()=>{Kn.a.delete("tgme_sync").then(()=>{location.href="https://web.telegram.org/?legacy=1"})},verify:()=>Vn.a.isMainDomain}].filter(Boolean);this.toolsBtn=Ee({},"bottom-right",o,e=>{o.forEach(e=>{e.verify&&e.element.classList.toggle("hide",!e.verify())})}),this.toolsBtn.classList.remove("tgico-more"),this.toolsBtn.classList.add("sidebar-tools-button","is-visible"),this.backBtn.parentElement.insertBefore(this.toolsBtn,this.backBtn);const r=this.toolsBtn.querySelector(".btn-menu"),c=document.createElement("a");c.href="https://github.com/morethanwords/tweb/blob/master/CHANGELOG.md",c.target="_blank",c.rel="noopener noreferrer",c.classList.add("btn-menu-footer"),c.addEventListener(l.a,e=>{e.stopPropagation(),Object(ee.c)()});const d=document.createElement("span");d.classList.add("btn-menu-footer-text"),d.innerHTML="Telegram Web"+Vn.a.suffix+" "+Vn.a.versionFull,c.append(d),r.classList.add("has-footer"),r.append(c),this.newBtnMenu=Ee({},"top-left",[{icon:"newchannel",text:"NewChannel",onClick:()=>{new Rn(this).open()}},{icon:"newgroup",text:"NewGroup",onClick:()=>{new Qt(this).open({type:"chat",skippable:!1,takeOut:e=>{new Q(this).open(e)},title:"GroupAddMembers",placeholder:"SendMessageTo"})}},{icon:"newprivate",text:"NewPrivateChat",onClick:t}]),this.newBtnMenu.className="btn-circle rp btn-corner z-depth-1 btn-menu-toggle animated-button-icon",this.newBtnMenu.insertAdjacentHTML("afterbegin",'\n \n \n '),this.newBtnMenu.id="new-menu",e.nextElementSibling.append(this.newBtnMenu),this.updateBtn=document.createElement("div"),this.updateBtn.className="btn-circle rp btn-corner z-depth-1 btn-update is-hidden",Object(te.a)(this.updateBtn),this.updateBtn.append(Object(T.d)("Update")),Object(l.b)(this.updateBtn,()=>{location.reload()}),e.nextElementSibling.append(this.updateBtn),this.inputSearch.input.addEventListener("focus",()=>this.initSearch(),{once:!0}),this.archivedCount=document.createElement("span"),this.archivedCount.className="archived-count badge badge-24 badge-gray",s.element.append(this.archivedCount),a.a.addEventListener("folder_unread",e=>{if(1===e.id){const t=e.unreadDialogsCount;this.archivedCount.innerText=""+Gn(t,1),this.archivedCount.classList.toggle("hide",!t)}}),E.a.getTopPeers("correspondents"),I.c.getState().then(e=>{const t=e.recentSearch||[];for(let e=0,s=t.length;e{fetch("version",{cache:"no-cache"}).then(e=>200===e.status&&e.ok&&e.text()||Promise.reject()).then(e=>{e!==Vn.a.versionFull&&(this.hasUpdate=!0,clearInterval(s),this.newBtnMenu.classList.contains("is-hidden")||this.updateBtn.classList.remove("is-hidden"))}).catch(je.a)},18e5)})}initSearch(){const e=this.sidebarEl.querySelector("#search-container"),t=new P.b(e),s=()=>{this.backBtn.click()};this.searchGroups={contacts:new x("SearchAllChatsShort","contacts",void 0,void 0,void 0,void 0,s),globalContacts:new x("GlobalSearch","contacts",void 0,void 0,void 0,void 0,s),messages:new x("SearchMessages","messages"),people:new x(!1,"contacts",!0,"search-group-people",!0,!1,s),recent:new x("Recent","contacts",!0,"search-group-recent",!0,!0,s)};const n=this.searchSuper=new fi({mediaTabs:[{inputFilter:"inputMessagesFilterEmpty",name:"FilterChats",type:"chats"},{inputFilter:"inputMessagesFilterPhotoVideo",name:"SharedMediaTab2",type:"media"},{inputFilter:"inputMessagesFilterUrl",name:"SharedLinksTab2",type:"links"},{inputFilter:"inputMessagesFilterDocument",name:"SharedFilesTab2",type:"files"},{inputFilter:"inputMessagesFilterMusic",name:"SharedMusicTab2",type:"music"},{inputFilter:"inputMessagesFilterRoundVoice",name:"SharedVoiceTab2",type:"voice"}],scrollable:t,searchGroups:this.searchGroups,asChatList:!0,hideEmptyTabs:!1,showSender:!0});e.prepend(n.nav.parentElement.parentElement),t.container.append(n.container);n.setQuery({peerId:"".toPeerId(),folderId:0}),n.selectTab(0),n.load(!0);let a=[],o="".toPeerId(),r=0,l=0;const c=()=>{this.inputSearch.container.classList.toggle("is-picked-twice",2===a.length),this.inputSearch.container.classList.toggle("is-picked",!!a.length),a.length?this.inputSearch.input.style.setProperty("--paddingLeft",a[a.length-1].getBoundingClientRect().right-this.inputSearch.input.getBoundingClientRect().left+"px"):this.inputSearch.input.style.removeProperty("--paddingLeft")},d=document.createElement("div");d.classList.add("search-helper"),d.addEventListener("click",e=>{const t=Object(Pe.a)(e.target,"selector-user");if(!t)return;const s=t.dataset.key;if(0===s.indexOf("date_")){const[e,t,i]=s.split("_");r=+t,l=+i}else o=s.toPeerId();t.addEventListener("click",()=>{p(t)}),this.inputSearch.container.append(t),this.inputSearch.onChange(this.inputSearch.value=""),a.push(t),c()}),n.nav.parentElement.append(d);const h=(e,t)=>{const s=document.createElement("div");s.classList.add("selector-user");const i=new bc;return i.classList.add("selector-user-avatar","tgico","avatar-30"),i.isDialog=!0,s.dataset.key=""+e,e.isPeerId()?(void 0===t&&(t=new Tt.a({peerId:e.toPeerId()}).element),i.updateWithOptions({peerId:e})):i.classList.add("tgico-calendarfilter"),t&&("string"==typeof t?s.innerHTML=t:(Object(k.a)(s,t),s.append(t))),s.insertAdjacentElement("afterbegin",i),s},p=e=>{0===e.dataset.key.indexOf("date_")?r=l=0:o="".toPeerId(),e.remove(),Object(V.a)(a,e),setTimeout(()=>{c(),this.inputSearch.onChange(this.inputSearch.value)},0)};this.inputSearch.onClear=()=>{a.forEach(e=>{p(e)})},this.inputSearch.onChange=e=>{if(n.cleanupHTML(),n.setQuery({peerId:o,folderId:o?void 0:0,query:e,minDate:r,maxDate:l}),n.load(!0),d.innerHTML="",n.nav.classList.remove("hide"),!o&&e.trim()){const t=n.middleware.get();Promise.all([i.a.getConversations(e).promise.then(({dialogs:e})=>e.map(e=>e.peerId)),E.a.getContactsPeerIds(e,!0)]).then(e=>{if(!t())return;new Set(e[0].concat(e[1])).forEach(e=>{d.append(h(e))}),n.nav.classList.toggle("hide",!!d.innerHTML)})}if(!r&&e.trim()){const t=[];Object(ne.b)(e,t),t.forEach(e=>{d.append(h("date_"+e.minDate+"_"+e.maxDate,e.title))}),n.nav.classList.toggle("hide",!!d.innerHTML)}},n.tabs.inputMessagesFilterEmpty.addEventListener("mousedown",e=>{const t=Object(It.a)(e.target,"LI");if(!t)return;const s=Object(Pe.a)(t,"search-group");if(!s||s.classList.contains("search-group-recent")||s.classList.contains("search-group-people"))return;const i=t.getAttribute("data-peer-id").toPeerId();I.c.getState().then(e=>{const t=e.recentSearch||[];if(t[0]!==i){Object(V.a)(t,i),t.unshift(i),t.length>20&&(t.length=20),I.c.pushToState("recentSearch",t);for(const e of t)I.c.requestPeer(e,"recentSearch")}})},{capture:!0});let u=document.createElement("div");u.classList.add("search-group-scrollable"),u.append(this.searchGroups.people.list),this.searchGroups.people.container.append(u);new P.a(u);let g,m=!0;const b=Object(F.a)(e.parentElement,"zoom-fade",150,e=>{g&&clearTimeout(g),0!==e||m||(n.selectTab(0,!1),this.inputSearch.onClearClick(),g=window.setTimeout(()=>{g=0,this.newBtnMenu.classList.remove("is-hidden"),this.hasUpdate&&this.updateBtn.classList.remove("is-hidden")},150)),m=!1});b(0);const v=()=>{this.toolsBtn.classList.remove("is-visible"),this.backBtn.classList.add("is-visible"),this.newBtnMenu.classList.add("is-hidden"),this.updateBtn.classList.add("is-hidden"),this.toolsBtn.parentElement.firstElementChild.classList.toggle("state-back",!0),ae.f||j.a.findItemByType("global-search")||j.a.pushItem({onPop:()=>{s()},type:"global-search"}),b(1)};this.inputSearch.input.addEventListener("focus",v),v(),this.backBtn.addEventListener("click",e=>{this.toolsBtn.classList.add("is-visible"),this.backBtn.classList.remove("is-visible"),this.toolsBtn.parentElement.firstElementChild.classList.toggle("state-back",!1),j.a.removeByType("global-search"),b(0)});const f=N("close");this.searchGroups.recent.nameEl.append(f),f.addEventListener("click",()=>{Pn({descriptionLangKey:"Search.Confirm.ClearHistory",button:{langKey:"ClearButton",isDanger:!0}}).then(()=>{I.c.getState().then(e=>{this.searchGroups.recent.clear();const t=e.recentSearch||[];for(const e of t)I.c.releaseSinglePeer(e,"recentSearch");t.length=0,I.c.pushToState("recentSearch",t)})})})}};le.a.appSidebarLeft=Yn;var Xn=Yn;class Jn{constructor(e){this.chat=e,this.bubbles=[],this.detailsMap=new Map,this.groups=[],this.newGroupDiff=121}removeBubble(e){const t=this.detailsMap.get(e);t&&(t.group.length&&(Object(Ot.a)(t.group,t=>t.bubble===e),t.group.length?this.updateGroup(t.group):Object(V.a)(this.groups,t.group)),this.detailsMap.delete(e))}changeBubbleMid(e,t){const s=this.detailsMap.get(e);s&&(s.mid=t)}addBubble(e,t,s){const i=t.date,n=t.mid;let o,r=t.viaBotId||t.fromId;r===a.a.myId&&t.peerId===a.a.myId&&t.fwdFromId===r&&(r=r.toPeerId(!0)),this.removeBubble(e);const l={bubble:e,mid:n,timestamp:i};if(this.bubbles.length){let e,t=-1;for(let e=0;es.mid)break}if(-1!==t&&(e=this.bubbles[t]),e){o=e.group;let t=0,s=0;for(;tt.mid===e);t&&this.updateGroup(t.group)}cleanup(){this.bubbles=[],this.groups=[],this.detailsMap.clear()}}class Zn extends wt.b{constructor(e,t,s={}){if(super("popup-date-picker",s.noButtons?[]:[{langKey:"JumpToDate",callback:()=>{this.onPick&&this.onPick(this.selectedDate.getTime()/1e3|0)}},{langKey:"Cancel",isCancel:!0}],Object.assign({body:!0,overlayClosable:!0},s)),this.onPick=t,this.options=s,this.onPrevClick=e=>{this.selectedMonth.setMonth(this.selectedMonth.getMonth()-1),this.setMonth(),this.selectedMonth.getTime()===this.minMonth.getTime()&&this.prevBtn.setAttribute("disabled","true"),this.nextBtn.removeAttribute("disabled")},this.onNextClick=e=>{this.selectedMonth.setMonth(this.selectedMonth.getMonth()+1),this.setMonth(),this.selectedMonth.getTime()===this.maxMonth.getTime()&&this.nextBtn.setAttribute("disabled","true"),this.prevBtn.removeAttribute("disabled")},this.onDateClick=e=>{const t=e.target;if(!t.dataset.timestamp)return;if(this.selectedEl){if(this.selectedEl===t)return;this.selectedEl.classList.remove("active")}this.selectedEl=t,t.classList.add("active");const s=+t.dataset.timestamp;this.selectedDate=new Date(s),this.setTitle(),this.setTimeTitle()},this.minDate=s.minDate||new Date("2013-08-01T00:00:00"),e{const n=""+e;this.listenerSetter.add(t.input)("input",a=>{let o=t.value.replace(/\D/g,"");o.length>2?o=o.slice(0,2):(1===o.length&&+o[0]>+n[0]||2===o.length&&+o>e)&&(2===o.length&&i&&i(+o[1]),o="0"+o[0]),t.setValueSilently(o),s(o.length)})};this.hoursInputField=new O.b({plainText:!0}),this.minutesInputField=new O.b({plainText:!0}),s(23,this.hoursInputField,e=>{2===e&&this.minutesInputField.input.focus(),this.setTimeTitle()},e=>{this.minutesInputField.value=(e+this.minutesInputField.value).slice(0,2)}),s(59,this.minutesInputField,e=>{e||this.hoursInputField.input.focus(),this.setTimeTitle()}),this.selectedDate=e,e.setMinutes(e.getMinutes()+10),this.hoursInputField.setValueSilently(("0"+e.getHours()).slice(-2)),this.minutesInputField.setValueSilently(("0"+e.getMinutes()).slice(-2)),e.setHours(0,0,0,0),this.timeDiv.append(this.hoursInputField.container,t,this.minutesInputField.container),Object(l.b)(this.btnConfirm,()=>{this.onPick&&(this.selectedDate.setHours(+this.hoursInputField.value||0,+this.minutesInputField.value||0,0,0),this.onPick(this.selectedDate.getTime()/1e3|0)),this.hide()},{listenerSetter:this.listenerSetter}),this.body.append(this.timeDiv),this.prevBtn.classList.add("primary"),this.nextBtn.classList.add("primary")}const i=document.createElement("div");i.classList.add("popup-centerer"),i.append(this.container),this.element.append(i),e.setHours(0,0,0,0),this.selectedDate=e,this.maxDate=s.maxDate||new Date,this.maxDate.setHours(0,0,0,0),this.selectedMonth=new Date(this.selectedDate),this.selectedMonth.setDate(1),this.maxMonth=new Date(this.maxDate),this.maxMonth.setDate(1),this.minMonth=new Date(this.minDate),this.minMonth.setHours(0,0,0,0),this.minMonth.setDate(1),this.selectedMonth.getTime()===this.minMonth.getTime()&&this.prevBtn.setAttribute("disabled","true"),this.selectedMonth.getTime()===this.maxMonth.getTime()&&this.nextBtn.setAttribute("disabled","true"),s.noTitle&&(this.setTitle=()=>{}),this.setTimeTitle(),this.setTitle(),this.setMonth()}setTimeTitle(){if(this.btnConfirm&&this.selectedDate){let e,t=[];const s=new Date;s.setHours(0,0,0,0);const i={minute:"2-digit",hour:"2-digit"},n=new Date(this.selectedDate.getTime());if(n.setHours(+this.hoursInputField.value,+this.minutesInputField.value),this.selectedDate.getTime()===s.getTime())e="Schedule.SendToday";else{e="Schedule.SendDate";const i={month:"short",day:"numeric"};n.getFullYear()!==s.getFullYear()&&(i.year="numeric"),t.push(new T.c.IntlDateElement({date:n,options:i}).element)}t.push(new T.c.IntlDateElement({date:n,options:i}).element),this.btnConfirm.firstChild.replaceWith(Object(T.d)(e,t))}}setTitle(){this.title.textContent="",this.title.append(new T.c.IntlDateElement({date:this.selectedDate,options:{day:"numeric",month:"long",weekday:"short"}}).element)}renderElement(e,t=""){const s=document.createElement("button");return s.classList.add("btn-icon","date-picker-month-date"),e&&s.setAttribute("disabled","true"),t&&s.append(t),s}setMonth(){const e=new Date(this.selectedMonth),t={year:"numeric",month:this.timeDiv&&b.b.isMobile?"short":"long"};this.monthTitle.textContent="",this.monthTitle.append(new T.c.IntlDateElement({date:e,options:t}).element),this.month&&this.month.remove(),this.month=document.createElement("div"),this.month.classList.add("date-picker-month");const s=new Date,i=s.getDay();1!==i&&s.setHours(-24*(i-1));for(let e=0;e<7;++e){const e=this.renderElement(!0,new T.c.IntlDateElement({date:s,options:{weekday:"narrow"}}).element);e.classList.remove("date-picker-month-date"),e.classList.add("date-picker-month-day"),this.month.append(e),s.setDate(s.getDate()+1)}let n=e.getDay()-1;-1===n&&(n=6);const a=new Date(e.getTime());a.setDate(a.getDate()-n-1);for(let e=0;ethis.maxDate||e{for(const t of e){const e=t.boundingClientRect,s=t.target.parentElement,i=t.rootBounds;e.bottom=i.top&&e.bottom{const t=e.filter(e=>e.boundingClientRect.tope.boundingClientRect.top-t.boundingClientRect.top)[0];if(!t)return;const s=t.isIntersecting?t.target:t.target.nextElementSibling;this.handler(!0,s)},{root:this.container})}addSentinel(e,t){const s=document.createElement("div");return s.classList.add("sticky_sentinel",t),e.appendChild(s)}observeStickyHeaderChanges(e){const t=this.addSentinel(e,"sticky_sentinel--top");this.headersObserver.observe(t),this.elementsObserver.observe(e)}disconnect(){this.headersObserver.disconnect(),this.elementsObserver.disconnect()}unobserve(e,t){this.elementsObserver.unobserve(e),this.headersObserver.unobserve(t)}}class ta extends HTMLElement{constructor(){super(),this.classList.add("reaction")}get reactionCount(){return this._reactionCount}set reactionCount(e){this._reactionCount=e}get count(){return this.reactionCount.count}init(e){this.type=e,this.classList.add("reaction-"+e)}setCanRenderAvatars(e){this.canRenderAvatars=e}render(e){const t=!!this.stickerContainer;t||(this.stickerContainer=document.createElement("div"),this.stickerContainer.classList.add("reaction-sticker"),this.append(this.stickerContainer));const s=this.reactionCount;if(!e&&!t){const e=zt.a.getReaction(s.reaction);Object(Xt.a)(e,e=>{var t;e.center_icon||this.stickerContainer.classList.add("is-static"),e.pFlags.inactive&&this.classList.add("is-inactive");const s="inline"===this.type?14:22,i=this.wrapStickerPromise=Bs({div:this.stickerContainer,doc:null!==(t=e.center_icon)&&void 0!==t?t:e.static_icon,width:s,height:s,static:!0}).finally(()=>{this.wrapStickerPromise===i&&(this.wrapStickerPromise=void 0)})})}}renderCounter(){var e;const t=this.reactionCount,s="inline"===this.type?2:4;if(t.count>=s||"block"===this.type&&!this.canRenderAvatars){this.counter||(this.counter=document.createElement("inline"===this.type?"i":"span"),this.counter.classList.add("reaction-counter"));const e=Gn(t.count);this.counter.textContent!==e&&(this.counter.textContent=e),this.counter.parentElement||this.append(this.counter)}else(null===(e=this.counter)||void 0===e?void 0:e.parentElement)&&(this.counter.remove(),this.counter=void 0)}renderAvatars(e){"inline"!==this.type&&(this.reactionCount.count>=4||!this.canRenderAvatars?this.stackedAvatars&&(this.stackedAvatars.container.remove(),this.stackedAvatars=void 0):(this.stackedAvatars||(this.stackedAvatars=new us({avatarSize:24}),this.append(this.stackedAvatars.container)),this.stackedAvatars.render(e.map(e=>o.a.getPeerId(e.peer_id)))))}setIsChosen(e=!!this.reactionCount.pFlags.chosen){if("inline"===this.type)return;(this.classList.contains("is-chosen")&&!this.classList.contains("backwards"))!==e&&Object(ps.a)(this,"is-chosen",e,this.isConnected?300:0)}fireAroundAnimation(){Object(Xt.a)(zt.a.getReaction(this.reactionCount.reaction),e=>{const t="inline"===this.type?28:40,s=document.createElement("div");s.classList.add("reaction-sticker-activate"),Promise.all([Bs({div:s,doc:e.center_icon,width:t,height:t,withThumb:!1,needUpscale:!0,play:!1,skipRatio:1,group:"none",needFadeIn:!1}),Rs({doc:e.around_animation,size:80,target:this.stickerContainer,side:"center",skipRatio:1,play:!1}).stickerPromise]).then(([e,t])=>{const i=()=>{Object(Re.b)(()=>{e.remove(),s.remove(),this.stickerContainer.classList.remove("has-animation")})};e.addEventListener("enterFrame",t=>{t===e.maxFrame&&(this.wrapStickerPromise?this.wrapStickerPromise.then(()=>{setTimeout(i,1e3)}):i())}),e.addEventListener("firstFrame",()=>{this.stickerContainer.append(s),this.stickerContainer.classList.add("has-animation"),e.play(),t.play()},{once:!0})})})}}customElements.define("reaction-element",ta);const sa=new Map;class ia extends HTMLElement{constructor(){super(),this.classList.add("reactions"),this.sorted=[]}connectedCallback(){let e=sa.get(this.key);e||sa.set(this.key,e=new Set),e.add(this),this.onConnectCallback&&this.isConnected&&(this.onConnectCallback(),this.onConnectCallback=void 0)}disconnectedCallback(){const e=sa.get(this.key);e.delete(this),e.size||sa.delete(this.key)}getReactionCount(e){return this.sorted[this.sorted.indexOf(e)].reactionCount}getMessage(){return this.message}init(e,t,s){void 0!==this.key&&this.disconnectedCallback(),this.message=e,this.key=this.message.peerId+"_"+this.message.mid,this.isPlaceholder=s,this.type!==t&&(this.type=t,this.classList.add("reactions-"+t)),this.connectedCallback()}changeMessage(e){return this.init(e,this.type,this.isPlaceholder)}update(e,t){this.message=e,this.render(t)}render(e){const t=this.message.reactions,s=!(!t||!t.results.length);if(this.classList.toggle("has-no-reactions",!s),!s&&!this.sorted.length)return;const i=zt.a.getAvailableReactions(),n=s?i instanceof Promise?t.results:t.results.filter(e=>zt.a.isReactionActive(e.reaction)):[];Object(f.a)(this.sorted,(e,t,s)=>{const i=e.reactionCount.reaction;n.some(e=>e.reaction===i)||(s.splice(t,1),e.remove())});const a=n.reduce((e,t)=>e+t.count,0),o=t&&!!t.pFlags.can_see_list&&a<4;if(this.sorted=n.map((e,s)=>{const i=this.sorted.findIndex(t=>t.reactionCount.reaction===e.reaction);let n=-1!==i&&this.sorted[i];n||(n=new ta,n.init(this.type)),qs(n,this,s);const a=t.recent_reactions?t.recent_reactions.filter(t=>t.reaction===e.reaction):[];return n.reactionCount=Object.assign({},e),n.setCanRenderAvatars(o),n.render(this.isPlaceholder),n.renderCounter(),n.renderAvatars(a),n.setIsChosen(),n}),!this.isPlaceholder&&(null==e?void 0:e.length)&&(this.isConnected?this.handleChangedResults(e):this.onConnectCallback=()=>{this.handleChangedResults(e)}),!this.sorted.length&&"block"===this.type){const e=this.parentElement;if(this.remove(),e.classList.contains("document-message")&&!e.childNodes.length)return void e.remove();const t=this.querySelector(".time");t&&e.append(t)}}handleChangedResults(e){this.message.peerId===a.a.peerId&&e.forEach(e=>{const t=this.sorted.find(t=>t.reactionCount.reaction===e.reaction);t&&t.fireAroundAnimation()})}}customElements.define("reactions-element",ia);a.a.addEventListener("replies_updated",e=>{Array.from(document.querySelectorAll(`replies-element[data-post-key="${e.peerId}_${e.mid}"]`)).forEach(t=>{t.message=e,t.render()})});class na extends HTMLElement{constructor(){super(),this.updated=!1}init(){this.render(),this.dataset.postKey=this.message.peerId+"_"+this.message.mid,this.classList.add("replies","replies-"+this.type)}render(){const e=this.message.replies;if("footer"===this.type){let t;this.firstElementChild&&(t=this.firstElementChild),(null==e?void 0:e.recent_repliers)?(t&&!t.classList.contains("replies-footer-avatars")&&(this.innerHTML="",t=null),this.stackedAvatars||(this.stackedAvatars=new us({lazyLoadQueue:this.lazyLoadQueue,avatarSize:30}),this.stackedAvatars.container.classList.add("replies-footer-avatars")),t=this.stackedAvatars.container,this.stackedAvatars.render(e.recent_repliers.map(e=>o.a.getPeerId(e)),this.loadPromises)):(t&&!t.classList.contains("tgico-comments")&&(t.remove(),t=null),t||(t=document.createElement("span"),t.classList.add("tgico-comments"))),t.parentElement||this.prepend(t),this.text||(this.text=new T.c.IntlElement);const s=this.text;if(e?e.replies?s.compareAndUpdate({key:"Comments",args:[e.replies]}):s.compareAndUpdate({key:"LeaveAComment"}):s.compareAndUpdate({key:"ViewInChat"}),e){let t=!1;e.replies&&void 0!==e.read_max_id&&void 0!==e.max_id&&(t=e.read_max_id${(null==e?void 0:e.replies)?Gn(e.replies,0):""}`;!e||this.updated||this.message.pFlags.is_outgoing||(i.a.subscribeRepliesThread(this.message.peerId,this.message.mid),i.a.updateMessage(this.message.peerId,this.message.mid,"replies_updated"),this.updated=!0),this.loadPromises&&(this.loadPromises=void 0)}}customElements.define("replies-element",na);const aa=()=>{const e=document.createElement("i");return e.classList.add("edited"),Object(T.b)(e,"EditedMessage"),e},oa=()=>Object(T.d)("SponsoredMessage");var ra,la;(la=ra||(ra={})).setTime=e=>{var t;const{chatType:s,message:n}=e,a=new Date(1e3*n.date),o=[];let r,l,c,d;const h=!!n.pFlags.sponsored,p=!("action"in n)&&!h;let u,g=h?void 0:Object(ne.f)(a);if(p){if(n.views){const e=n.post_author||(null===(t=n.fwd_from)||void 0===t?void 0:t.post_author),s=document.createElement("span");s.classList.add("post-views"),s.innerHTML=Gn(n.views,1);const i=document.createElement("i");if(i.classList.add("tgico-channelviews","time-icon"),o.push(s,i),e){const t=document.createElement("span");t.innerHTML=X.b.wrapEmojiText(e)+", ",o.push(t)}}if(n.edit_date&&"scheduled"!==s&&!n.pFlags.edit_hide&&o.unshift(r=aa()),"pinned"!==s&&n.pFlags.pinned){const e=document.createElement("i");e.classList.add("tgico-pinnedchat","time-icon"),o.unshift(e)}"peerUser"===n.peer_id._&&(u=!0,d=i.a.getGroupsFirstMessage(n),c=new ia,c.init(d,"inline",!0),c.render(),o.unshift(c))}else h&&o.push(l=oa());g&&o.push(g);let m=h?void 0:Object(ne.g)(a);p&&(m+=(n.edit_date&&!n.pFlags.edit_hide?"\nEdited: "+Object(ne.g)(new Date(1e3*n.edit_date)):"")+(n.fwd_from?"\nOriginal: "+Object(ne.g)(new Date(1e3*n.fwd_from.date)):""));const b=document.createElement("span");b.classList.add("time","tgico"),b.append(...o);const v=document.createElement("div");v.classList.add("inner","tgico"),m&&(v.title=m);let f=o;if(r&&(f[f.indexOf(r)]=aa()),l&&(f[f.indexOf(l)]=oa()),c){const e=f[f.indexOf(c)]=new ia;e.init(d,"inline"),e.render()}return f=f.map(e=>e instanceof HTMLElement&&!e.classList.contains("i18n")&&!e.classList.contains("reactions")?e.cloneNode(!0):e),g&&(f[f.length-1]=Object(ne.f)(a)),v.append(...f),b.append(v),b},la.renderReplies=({bubble:e,bubbleContainer:t,message:s,messageDiv:i,loadPromises:n,lazyLoadQueue:a})=>{const o=!e.classList.contains("sticker")&&!e.classList.contains("emoji-big")&&!e.classList.contains("round"),r=new na;return r.message=s,r.type=o?"footer":"beside",r.loadPromises=n,r.lazyLoadQueue=a,r.init(),t.prepend(r),o},la.setReply=({chat:e,bubble:t,bubbleContainer:s,message:i})=>{const n=!s;n&&(s=t.querySelector(".bubble-content"));const a=n?s.querySelector(".reply"):null;if(!i.reply_to_mid)return a&&a.remove(),void t.classList.remove("is-reply");const o=i.reply_to.reply_to_peer_id?e.appPeersManager.getPeerId(i.reply_to.reply_to_peer_id):e.peerId;let r,l=e.appMessagesManager.getMessageByPeer(o,i.reply_to_mid);"messageEmpty"===l._?(e.appMessagesManager.wrapSingleMessage(o,i.reply_to_mid),e.bubbles.needUpdate.push({replyToPeerId:o,replyMid:i.reply_to_mid,mid:i.mid}),r=Object(T.d)("Loading")):r=new Tt.a({peerId:l.fromId||l.fwdFromId,dialog:!1,onlyFirstName:!1,plainText:!1}).element;const c=Hs(r,void 0,l);a?a.replaceWith(c):s.append(c),t.classList.add("is-reply")};var ca=s(147);function da(e,t,s){const i=e.getBoundingClientRect(),n="center"===s?Math.ceil(i.left+(i.right-i.left)/2+1):Math.ceil(i.left+1),a="bottom"===t?Math.floor(i.top+i.height-1):Math.ceil(i.top+1);return document.elementFromPoint(n,a)}function ha(e){e.style.display="none",e.offsetLeft,e.style.display=""}le.a.getElementByPoint=da;var pa=s(16),ua=s(19),ga=s(48),ma=s(131),ba=s(11);const va={keywords:{},version:0,langCode:Vn.a.langPackCode};class fa{constructor(){this.keywordLangPacks={},this.indexedLangPacks={},this.getKeywordsPromises={}}getEmojiKeywords(e=Vn.a.langPackCode){const t=this.getKeywordsPromises[e];if(t)return t;const s="emojiKeywords_"+e;return this.getKeywordsPromises[e]=ba.a.get(s).then(t=>(Object(ua.a)(t)||(t={}),Object(ga.a)(va,t),t.langCode=e,this.keywordLangPacks[e]=t,ft.a.invokeApi("messages.getEmojiKeywordsDifference",{lang_code:t.langCode,from_version:t.version}).then(e=>{t.version=e.version;const i=t.keywords,n=e.keywords;for(let e=0,t=n.length;et)))}getBothEmojiKeywords(){const e=[this.getEmojiKeywords()];return T.c.lastRequestedLangCode!==Vn.a.langPackCode&&e.push(this.getEmojiKeywords(T.c.lastRequestedLangCode)),this.recent||e.push(this.getRecentEmojis()),Promise.all(e)}indexEmojis(){this.index||(this.index=new ma.a(void 0,2));for(const e in this.keywordLangPacks){if(this.indexedLangPacks[e])continue;const t=this.keywordLangPacks[e].keywords;for(const e in t){const s=t[e];this.index.indexObject(s,e)}this.indexedLangPacks[e]=!0}}searchEmojis(e){let t;if(this.indexEmojis(),(e=e.toLowerCase().replace(/_/g," ")).trim()){const s=this.index.search(e);t=Array.from(s).reduce((e,t)=>e.concat(t),[])}else t=this.recent.concat(fa.POPULAR_EMOJI).slice(0,36);return t=Array.from(new Set(t)),t}getRecentEmojis(){return this.getRecentEmojisPromise?this.getRecentEmojisPromise:this.getRecentEmojisPromise=I.c.getState().then(e=>this.recent=Array.isArray(e.recentEmoji)?e.recentEmoji:[])}pushRecentEmoji(e){e=X.b.fixEmoji(e),this.getRecentEmojis().then(t=>{Object(V.a)(t,e),t.unshift(e),t.length>36&&(t.length=36),I.c.pushToState("recentEmoji",t),a.a.dispatchEvent("emoji_recent",e)})}}fa.POPULAR_EMOJI=["😂","😘","❤️","😍","😊","😁","👍","☺️","😔","😄","😭","💋","😒","😳","😜","🙈","😉","😃","😢","😝","😱","😡","😏","😞","😅","😚","🙊","😌","😀","😋","😆","👌","😐","😕"];const ya=new fa;le.a&&(le.a.appEmojiManager=ya);var wa=ya,Sa=s(23),La=s(26);const Ca=new Set;function Ma(e,t,s=!1,i=!1){var n;const o=document.createElement("span");let r;if(o.classList.add("super-emoji"),i&&!Sa.a?r=X.a.wrapSingleEmoji(e):(e=X.a.fixEmoji(e),r=X.a.wrapEmojiText(e)),o.innerHTML=r,o.children.length>1){const e=o.firstElementChild;o.innerHTML="",o.append(e)}if("IMG"===(null===(n=o.firstElementChild)||void 0===n?void 0:n.tagName)){const e=o.firstElementChild,t=e.src;if(!Ca.has(t)){e.setAttribute("loading","lazy");const s=document.createElement("span");s.classList.add("emoji-placeholder"),a.a.settings.animationsEnabled&&(e.style.opacity="0",s.style.opacity="1"),e.addEventListener("load",()=>{Object(Re.b)(()=>{a.a.settings.animationsEnabled&&(e.style.opacity="",s.style.opacity=""),o.classList.remove("empty"),Ca.add(t)})},{once:!0}),o.append(s)}}s?t.prepend(o):t.appendChild(o)}function Ia(e){return Object(Pe.a)(e,"super-emoji")?3===e.nodeType?e.nodeValue:("SPAN"===e.tagName&&!e.classList.contains("emoji")&&e.firstElementChild&&(e=e.firstElementChild),e.getAttribute("alt")||e.innerText):""}class Ea{constructor(){this.closeScrollTop=0,this.onContentClick=e=>{Object(c.a)(e);const t=Ia(e.target);t&&(ic.chat.input.onEmojiSelected(t,!1),he.b&&Object(ri.a)())}}init(){this.content=document.getElementById("content-emoji");const e=["Emoji.SmilesAndPeople","Emoji.AnimalsAndNature","Emoji.FoodAndDrink","Emoji.TravelAndPlaces","Emoji.ActivityAndSport","Emoji.Objects","Emoji.Flags","Skin Tones"],t={},s=new Map([["Emoji.Recent",[]]]);for(const t in La.b){const i=""+La.b[t],n=e[+i[0]-1];if(!n)continue;let a=s.get(n);a||(a=[],s.set(n,a)),a[+i.slice(1)||0]=t}s.delete(e.pop()),s.forEach((e,s)=>{const i=document.createElement("div");i.classList.add("emoji-category");const n=document.createElement("div");n.classList.add("category-title"),n.append(Object(T.d)(s));const a=document.createElement("div");a.classList.add("super-emojis"),i.append(n,a),e.forEach(e=>{Ma(Object(se.a)(e),a,!1)}),t[s]=i});const i=this.menu=this.content.previousElementSibling,n=this.scroll=new P.b(this.content,"EMOJI"),o=Object(ee.f)(this.content,!0);Promise.all([Object(pa.a)(200),wa.getRecentEmojis().then(e=>{const t=!!e.length,s=t?0:1;this.menu.children[0].classList.toggle("hide",!t),this.menu.children[s].classList.add("active");const a=Ka.menuOnClick(i,n,void 0,s);return this.stickyIntersector=a.stickyIntersector,this.setMenuActive=a.setActive,e})]).then(([s,i])=>{o.remove(),this.recentItemsDiv=t["Emoji.Recent"].querySelector(".super-emojis");for(const e of i)Ma(e,this.recentItemsDiv);this.recentItemsDiv.parentElement.classList.toggle("hide",!this.recentItemsDiv.childElementCount),e.unshift("Emoji.Recent"),e.map(e=>{const s=t[e];return s||console.error("no div by category:",e),n.container.append(s),this.stickyIntersector.observeStickyHeaderChanges(s),s})}),this.content.addEventListener("click",this.onContentClick),this.init=null,a.a.addEventListener("emoji_recent",e=>{const t=Array.from(this.recentItemsDiv.children);for(let s=0,i=t.length;s{this.closeScrollTop=this.scroll.scrollTop})}onClose(){}}var Pa=s(136),ka=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class Ta{constructor(e,t,s,i=!0){this.element=e,this.group=t,this.scrollable=s,this.scrollPromise=Promise.resolve(),this.timeout=0,this.onScroll=()=>{this.timeout?clearTimeout(this.timeout):this.scrollPromise=Object(ie.a)(),this.timeout=window.setTimeout(()=>{this.timeout=0,this.scrollPromise.resolve()},150)},this.processInvisibleDiv=e=>this.scrollPromise.then(()=>ka(this,void 0,void 0,(function*(){if(this.lazyLoadQueue.intersector.isVisible(e))return;const t=e.querySelector("video"),s=e.querySelector("img");if(s&&(s&&s.classList.remove("hide"),yield Object(Re.a)()),!this.lazyLoadQueue.intersector.isVisible(e)&&t){t.remove(),t.src="",t.load();M.a.getAnimations(t).forEach(e=>{M.a.checkAnimation(e,!0,!0)})}}))),this.lazyLoadQueue=new Z.c(void 0,(e,t)=>{t?this.processVisibleDiv(e):this.processInvisibleDiv(e)}),i&&this.attach()}attach(){this.scrollable.container.addEventListener("scroll",this.onScroll)}detach(){this.clear(),this.scrollable.container.removeEventListener("scroll",this.onScroll)}clear(){this.lazyLoadQueue.clear()}processVisibleDiv(e){if(e.querySelector("video"))return;this.lazyLoadQueue.push({div:e,load:()=>{const t=e.dataset.docId,s=C.a.getDoc(t);return this.scrollPromise.then(()=>{const t=_s({doc:s,container:e,lazyLoadQueue:null,group:this.group,noInfo:!0}).loadPromise;return t.finally(()=>{const t=e.querySelector("video");e.style.opacity="";const s=e.querySelector("img");s&&s.classList.add("hide"),t&&!t.parentElement&&setTimeout(()=>{t.src="",t.load();M.a.getAnimations(t).forEach(e=>{M.a.checkAnimation(e,!0,!0)})},0),this.lazyLoadQueue.intersector.isVisible(e)||this.processInvisibleDiv(e)}),t})}})}add(e,t=this.element){var s;let i=e.w,n=e.h;n<100&&(i*=100/n,n=100);const a=Math.min(300,400,i),o=Object(Pa.a)(i,n,a,100),r=document.createElement("div");r.classList.add("gif","fade-in-transition"),r.style.width=o.width+"px",r.style.opacity="0",r.dataset.docId=""+e.id,t.append(r),this.lazyLoadQueue.observe(r);const l=C.a.getThumb(e,!1);let c;!!l&&(c=new Image,c.classList.add("media-poster"),l.cacheContext.url||l.promise.then(()=>{c.src=l.cacheContext.url}));const d=()=>{c&&(r.append(c),r.style.opacity="")};(null===(s=null==l?void 0:l.cacheContext)||void 0===s?void 0:s.url)?Object(Ss.a)(c,l.cacheContext.url,d):d()}}class xa{init(){this.content=document.getElementById("content-gifs");const e=this.content.firstElementChild;e.addEventListener("click",Ka.onMediaClick);const t=new P.b(this.content,"GIFS"),s=new Ta(e,Va,t),i=Object(ee.f)(this.content,!0);ft.a.invokeApi("messages.getSavedGifs",{hash:"0"}).then(e=>{"messages.savedGifs"===e._&&e.gifs.forEach((t,i)=>{e.gifs[i]=t=C.a.saveDoc(t),s.add(t)}),i.remove()}),Wa.addLazyLoadQueueRepeat(s.lazyLoadQueue,s.processInvisibleDiv),this.init=null}onClose(){}}var Aa=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class Oa{constructor(e,t){this.regularLazyLoadQueue=e,this.group=t,this.animatedDivs=new Set,this.checkAnimationContainer=(e,t)=>{M.a.getAnimations(e).forEach(e=>{t?M.a.checkAnimation(e,!1):M.a.checkAnimation(e,!0,!0)})},this.processVisibleDiv=e=>{const t=e.dataset.docId,s=C.a.getDoc(t),i=b.b.active.esgSticker.width,n=Bs({doc:s,div:e,width:i,height:i,lazyLoadQueue:null,group:this.group,onlyThumb:!1,play:!0,loop:!0});return n.then(()=>{this.checkAnimationContainer(e,this.lazyLoadQueue.intersector.isVisible(e))}),n},this.processInvisibleDiv=e=>{const t=e.dataset.docId,s=C.a.getDoc(t);this.checkAnimationContainer(e,!1),e.innerHTML="",this.renderSticker(s,e)},this.lazyLoadQueue=new Z.b(void 0,(e,t)=>{t||this.processInvisibleDiv(e)})}clear(){this.lazyLoadQueue.clear()}renderSticker(e,t,s){return t||((t=document.createElement("div")).classList.add("grid-item","super-sticker"),e.animated&&this.observeAnimatedDiv(t)),Bs({doc:e,div:t,lazyLoadQueue:this.regularLazyLoadQueue,group:this.group,onlyThumb:e.animated,loadPromises:s}),t}observeAnimatedDiv(e){this.animatedDivs.add(e),this.lazyLoadQueue.observe({div:e,load:this.processVisibleDiv})}}class _a{constructor(){this.stickerSets={},this.recentStickers=[],this.mounted=!1,this.queueCategoryPush=[]}categoryPush(e,t="",s,i){const n=document.createElement("div");n.classList.add("category-items","super-stickers");const a=document.createElement("div");return a.classList.add("category-title"),t&&(a.innerHTML=t),e.append(a,n),this.stickyIntersector.observeStickyHeaderChanges(e),this.queueCategoryPush.push({element:e,prepend:i}),s.then(e=>{e.forEach(e=>{n.append(this.superStickerRenderer.renderSticker(e))}),this.queueCategoryPush.length&&(this.queueCategoryPush.forEach(({element:e,prepend:t})=>{t?this.recentDiv.parentElement?(this.stickersDiv.prepend(e),this.stickersDiv.prepend(this.recentDiv)):this.stickersDiv.prepend(e):this.stickersDiv.append(e)}),this.queueCategoryPush.length=0)}),{titleDiv:a}}renderStickerSet(e,t=!1){return Aa(this,void 0,void 0,(function*(){const s=document.createElement("div");s.classList.add("sticker-category"),s.dataset.id=""+e.id,s.dataset.access_hash=""+e.access_hash;const i=document.createElement("button");i.classList.add("btn-icon","menu-horizontal-div-item"),this.stickerSets[e.id]={stickers:s,tab:i},t?this.menu.insertBefore(i,this.menu.firstElementChild.nextSibling):this.menu.append(i);const n=Cs.a.getStickerSet(e);this.categoryPush(s,X.a.wrapEmojiText(e.title),n.then(e=>e.documents),t);yield n;Ns({set:e,container:i,group:Va,lazyLoadQueue:Ka.lazyLoadQueue,width:32,height:32,autoplay:!1})}))}init(){this.content=document.getElementById("content-stickers"),this.recentDiv=document.createElement("div"),this.recentDiv.classList.add("sticker-category","stickers-recent");let e=this.content.previousElementSibling;this.menu=e.firstElementChild;let t=new P.a(e);this.stickersDiv=document.createElement("div"),this.stickersDiv.classList.add("stickers-categories"),this.content.append(this.stickersDiv),a.a.addEventListener("stickers_installed",e=>{const t=e;!this.stickerSets[t.id]&&this.mounted&&this.renderStickerSet(t,!0)}),a.a.addEventListener("stickers_deleted",e=>{const t=e;if(this.stickerSets[t.id]&&this.mounted){const e=this.stickerSets[t.id];e.stickers.remove(),e.tab.remove(),delete this.stickerSets[t.id]}}),this.stickersDiv.addEventListener("click",e=>{const t=e.target;if(Object(Pe.a)(t,"category-title")){const e=Object(kt.a)(t,"data-id");new cn({id:e.dataset.id,access_hash:e.dataset.access_hash}).show()}else Ka.onMediaClick(e)});const s=(e=!1)=>{a.a.dispatchEvent("choosing_sticker",!e)};this.scroll=new P.b(this.content,"STICKERS"),this.scroll.setVirtualContainer(this.stickersDiv),this.scroll.onAdditionalScroll=()=>{s()},Wa.addEventListener("closed",()=>{s(!0)}),Wa.addEventListener("opened",()=>{s()}),this.stickyIntersector=Ka.menuOnClick(this.menu,this.scroll,t).stickyIntersector;const i=Object(ee.f)(this.content,!0);Promise.all([Cs.a.getRecentStickers().then(e=>{this.recentStickers=e.stickers.slice(0,20),this.stickerSets.recent={stickers:this.recentDiv,tab:this.menu.firstElementChild},i.remove();const{titleDiv:t}=this.categoryPush(this.recentDiv,"",Promise.resolve(this.recentStickers),!0);t.append(Object(T.d)("Stickers.Recent"))}),Cs.a.getAllStickers().then(e=>{i.remove();for(let t of e.sets)this.renderStickerSet(t)})]).finally(()=>{this.mounted=!0,s()}),this.superStickerRenderer=new Oa(Ka.lazyLoadQueue,Va),Wa.addLazyLoadQueueRepeat(this.superStickerRenderer.lazyLoadQueue,this.superStickerRenderer.processInvisibleDiv),this.init=null}pushRecentSticker(e){var t;if(Cs.a.pushRecentSticker(e),!(null===(t=this.recentDiv)||void 0===t?void 0:t.parentElement))return;let s=this.recentDiv.querySelector(`[data-doc-id="${e.id}"]`);s||(s=this.superStickerRenderer.renderSticker(e));const i=this.recentDiv.querySelector(".category-items");i.prepend(s),i.childElementCount>20&&Array.from(i.children).slice(20).forEach(e=>e.remove())}onClose(){}}var Fa=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};const ja=new class{constructor(){this.inlineResults={},this.setHash={}}getGeoInput(e){return"geoPoint"===e._?{_:"inputGeoPoint",lat:e.lat,long:e.long,accuracy_radius:e.accuracy_radius}:{_:"inputGeoPointEmpty"}}getInlineResults(e,t,s="",i="",n){return ft.a.invokeApi("messages.getInlineBotResults",{bot:E.a.getUserInput(t),peer:o.a.getInputPeerById(e),query:s,geo_point:n?this.getGeoInput(n):void 0,offset:i},{stopTime:-1,noErrorBox:!0}).then(e=>{const t=e.query_id;return e.results.forEach(e=>{"botInlineMediaResult"===e._&&(e.document&&(e.document=C.a.saveDoc(e.document)),e.photo&&(e.photo=r.a.savePhoto(e.photo))),this.inlineResults[this.generateQId(t,e.id)]=e}),e})}generateQId(e,t){return e+"_"+t}pushPopularBot(e){E.a.getTopPeers("bots_inline").then(t=>{const s=e.toPeerId(),i=t.findIndex(e=>e.id===s);let n;n=-1!==i?t[i]:{id:s,rating:0},++n.rating,Object($s.a)(t,n,"rating"),I.c.setKeyValueToStorage("topPeersCache")})}switchToPM(e,t,s){return this.setHash[t]={peerId:e,time:Date.now()},a.a.dispatchEvent("history_focus",{peerId:t.toPeerId()}),i.a.startBot(t,void 0,s)}checkSwitchReturn(e){return Fa(this,void 0,void 0,(function*(){const t=E.a.getUser(e);if(!t||!t.pFlags.bot||!t.bot_inline_placeholder)return;const s=this.setHash[e];return s&&(delete this.setHash[e],Date.now()-s.time<36e5)?s.peerId:void 0}))}switchInlineQuery(e,t,s,i){a.a.dispatchEvent("history_focus",{peerId:e,threadId:t}),Wi.a.setDraft(e,t,"@"+E.a.getUser(s).username+" "+i)}callbackButtonClick(e,t,s){return ft.a.invokeApi("messages.getBotCallbackAnswer",{peer:o.a.getInputPeerById(e),msg_id:v.a.getServerMessageId(t),data:s.data},{stopTime:-1,noErrorBox:!0}).then(e=>{"string"==typeof e.message&&e.message.length&&mt(X.a.wrapRichText(e.message,{noLinks:!0,noLinebreaks:!0}))})}sendInlineResult(e,t,s,n={}){var a;const o=this.inlineResults[s];if(!o)return;this.pushPopularBot(t);const l=s.split("_"),c=l.shift(),d=l.join("_");if(n.viaBotId=t,n.queryId=c,n.resultId=d,o.send_message.reply_markup&&(n.replyMarkup=o.send_message.reply_markup),"botInlineMessageText"===o.send_message._)n.entities=o.send_message.entities,i.a.sendText(e,o.send_message.message,n);else{let t,s="";const l=o.send_message;switch(l._){case"botInlineMessageMediaAuto":if(s=l.message,"botInlineMediaResult"===o._){const{document:e,photo:s}=o;t=e?C.a.getMediaInput(e):r.a.getMediaInput(s)}break;case"botInlineMessageMediaGeo":t={_:"inputMediaGeoPoint",geo_point:this.getGeoInput(l.geo)},n.geoPoint=l.geo;break;case"botInlineMessageMediaVenue":t={_:"inputMediaVenue",geo_point:this.getGeoInput(l.geo),title:l.title,address:l.address,provider:l.provider,venue_id:l.venue_id,venue_type:l.venue_type},n.geoPoint=l.geo;break;case"botInlineMessageMediaContact":t={_:"inputMediaContact",phone_number:l.phone_number,first_name:l.first_name,last_name:l.last_name,vcard:l.vcard}}t||(t={_:"messageMediaPending",type:o.type,file_name:o.title||(null===(a=o.content)||void 0===a?void 0:a.url)||o.url,size:0,progress:{percent:30,total:0}}),i.a.sendOther(e,t,n)}}};le.a&&(le.a.appInlineBotsManager=ja);var Da=ja,Ra=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class Ba extends H{constructor(){super(...arguments),this.nextOffset="",this.loadedAll=!1,this.onGifsClick=e=>{const t=Object(Pe.a)(e.target,"gif");if(!t)return;const s=t.dataset.docId;ic.chat.input.sendMessageWithDocument(s)?b.b.isMobile&&ds.onCloseBtnClick():console.warn("got no doc by id:",s)}}init(){this.container.id="search-gifs-container",this.inputSearch=new _("SearchGifsTitle",e=>{this.reset(),this.search(e)}),this.title.replaceWith(this.inputSearch.container),this.gifsDiv=document.createElement("div"),this.gifsDiv.classList.add("gifs-masonry"),Object(l.b)(this.gifsDiv,this.onGifsClick,{listenerSetter:this.listenerSetter}),this.scrollable.append(this.gifsDiv),this.masonry=new Ta(this.gifsDiv,"GIFS-SEARCH",this.scrollable)}onClose(){this.scrollable.onScrolledBottom=()=>{}}onCloseAfterTimeout(){return this.reset(),this.gifsDiv.innerHTML="",M.a.checkAnimations(void 0,"GIFS-SEARCH"),this.inputSearch.remove(),super.onCloseAfterTimeout()}reset(){this.searchPromise=null,this.nextOffset="",this.loadedAll=!1,this.masonry.clear()}open(){const e=super.open();return ds.toggleSidebar(!0).then(()=>{this.search("",!0),this.scrollable.onScrolledBottom=()=>{this.search(this.inputSearch.value,!1)}}),e}search(e,t=!0){return Ra(this,void 0,void 0,(function*(){if(!this.searchPromise&&!this.loadedAll){this.gifBotPeerId||(this.gifBotPeerId=(yield E.a.resolveUsername("gif")).id.toPeerId(!1));try{this.searchPromise=Da.getInlineResults(Ne.c,this.gifBotPeerId,e,this.nextOffset);const{results:s,next_offset:i}=yield this.searchPromise;if(this.inputSearch.value!==e)return;this.searchPromise=null,this.nextOffset=i,t&&(this.gifsDiv.innerHTML=""),s.length?s.forEach(e=>{"botInlineMediaResult"===e._&&e.document&&this.masonry.add(e.document)}):this.loadedAll=!0,this.scrollable.onScroll()}catch(e){throw this.searchPromise=null,console.error("gifs loading error:",e),e}}}))}}class Na extends H{init(){this.container.id="stickers-container",this.container.classList.add("chatlist-container"),this.lazyLoadQueue=new Z.d,this.inputSearch=new _("StickersTab.SearchPlaceholder",e=>{this.search(e)}),this.title.replaceWith(this.inputSearch.container),this.setsDiv=document.createElement("div"),this.setsDiv.classList.add("sticker-sets"),this.scrollable.append(this.setsDiv),Object(l.b)(this.setsDiv,e=>{const t=Object(Pe.a)(e.target,"sticker-set-sticker");if(t){const e=t.dataset.docId;return void ic.chat.input.sendMessageWithDocument(e)}const s=Object(Pe.a)(e.target,"sticker-set");if(!s)return;const i=s.dataset.stickerSet,n=s.dataset.access_hash,a=Object(Pe.a)(e.target,"sticker-set-button");a?(e.preventDefault(),e.cancelBubble=!0,a.setAttribute("disabled","true"),Cs.a.getStickerSet({id:i,access_hash:n}).then(e=>{Cs.a.toggleStickerSet(e.set).then(t=>{t&&(a.textContent="",a.append(Object(T.d)(e.set.installed_date?"Stickers.SearchAdded":"Stickers.SearchAdd")),a.classList.toggle("gray",!!e.set.installed_date))}).finally(()=>{a.removeAttribute("disabled")})})):Cs.a.getStickerSet({id:i,access_hash:n}).then(e=>{new cn(e.set).show()})},{listenerSetter:this.listenerSetter})}onCloseAfterTimeout(){return this.setsDiv.innerHTML="",M.a.checkAnimations(void 0,"STICKERS-SEARCH"),super.onCloseAfterTimeout()}renderSet(e){const t=document.createElement("div");t.classList.add("sticker-set");const s=document.createElement("div");s.classList.add("sticker-set-header");const i=document.createElement("div");i.classList.add("sticker-set-details"),i.innerHTML=`\n ${X.a.wrapEmojiText(e.title)}\n `;const n=document.createElement("div");n.classList.add("sticker-set-count"),n.append(Object(T.d)("Stickers",[e.count])),i.append(n);const a=document.createElement("button");a.classList.add("btn-primary","btn-color-primary","sticker-set-button"),a.append(Object(T.d)(e.installed_date?"Stickers.SearchAdded":"Stickers.SearchAdd")),e.installed_date&&a.classList.add("gray"),s.append(i,a);const o=document.createElement("div");o.classList.add("sticker-set-stickers");const r=Math.min(5,e.count);for(let e=0;e{for(let t=0;t{this.renderFeatured()}),e}renderFeatured(){return Cs.a.getFeaturedStickers().then(e=>{this.inputSearch.value||(e=this.filterRendered("",e)).forEach(e=>{this.renderSet(e.set)})})}filterRendered(e,t){t=t.slice();const s=Array.from(this.setsDiv.children);return Object(f.a)(s,s=>{const i=s.dataset.stickerSet,n=t.findIndex(e=>e.set.id===i);-1!==n?t.splice(n,1):e&&s.dataset.title.toLowerCase().includes(e.toLowerCase())||s.remove()}),M.a.checkAnimations(void 0,"STICKERS-SEARCH"),t}search(e){return e?Cs.a.searchStickerSets(e,!1).then(t=>{this.inputSearch.value===e&&(t=this.filterRendered(e,t)).forEach(e=>{this.renderSet(e.set)})}):this.renderFeatured()}}var Ua=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class Ha extends D.a{constructor(e){super(!1),this.forceClose=!1,this.inited=!1,this.onMouseOut=e=>{if(clearTimeout(this.displayTimeout),!this.isActive())return;const t=e.toElement;t&&Object(ci.a)(t,this.element)||(this.displayTimeout=window.setTimeout(()=>{this.toggle(!1)},200))},this.toggle=e=>Ua(this,void 0,void 0,(function*(){const t=!!this.element.style.display&&void 0===e||e;if(this.init){if(!t)return;this.init(),this.init=null}if(t!==this.isActive())if(this.element.style.display&&void 0===e||e){const e=this.dispatchResultableEvent("open");yield Promise.all(e),this.element.style.display="",this.element.offsetLeft,this.element.classList.add("active"),clearTimeout(this.displayTimeout),this.displayTimeout=window.setTimeout(()=>{this.forceClose=!1,this.dispatchEvent("opened")},he.a?0:200)}else this.dispatchEvent("close"),this.element.classList.remove("active"),clearTimeout(this.displayTimeout),this.displayTimeout=window.setTimeout(()=>{this.element.style.display="none",this.forceClose=!1,this.dispatchEvent("closed")},he.a?0:200)})),Object(w.a)(this,e)}attachButtonListener(e,t){let s=!0;he.a?Object(l.b)(e,()=>{s?(s=!1,this.toggle(!0)):this.toggle()},{listenerSetter:t}):t.add(e)("mouseover",i=>{s&&(t.add(e)("mouseout",this.onMouseOut),s=!1),clearTimeout(this.displayTimeout),this.displayTimeout=window.setTimeout(()=>{this.toggle(!0)},200)})}init(){he.a||(this.element.onmouseout=this.onMouseOut,this.element.onmouseover=e=>{this.forceClose||clearTimeout(this.displayTimeout)})}isActive(){return this.element.classList.contains("active")}}var za=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};const Va="emoticons-dropdown";class Ka extends Ha{constructor(){super({element:document.getElementById("emoji-dropdown")}),this.tabId=-1,this.onSelectTabClick=e=>{this.tabId!==e&&(M.a.checkAnimations(!0,Va),this.tabId=e,this.searchButton.classList.toggle("hide",0===this.tabId),this.deleteBtn.classList.toggle("hide",0!==this.tabId))},this.checkRights=()=>{const{peerId:e,threadId:t}=ic.chat,s=this.tabsEl.children,n=Array.from(s),a=i.a.canSendToPeer(e,t,"send_stickers");n[2].toggleAttribute("disabled",!a);const o=i.a.canSendToPeer(e,t,"send_gifs");n[3].toggleAttribute("disabled",!o);const r=this.tabsEl.querySelector(".active");!r||1===Object(Ws.a)(r)||a&&o||this.selectTab(0,!1)},this.addEventListener("open",()=>za(this,void 0,void 0,(function*(){he.a&&Object(ri.a)()&&(yield Object(pa.a)(100)),this.element.parentElement!==ic.chat.input.chatInput&&ic.chat.input.chatInput.append(this.element),this.savedRange=this.getGoodRange(),Ka.lazyLoadQueue.lock(),M.a.lockIntersectionGroup(Va)}))),this.addEventListener("opened",()=>{M.a.unlockIntersectionGroup(Va),Ka.lazyLoadQueue.unlock(),Ka.lazyLoadQueue.refresh(),this.container.classList.remove("disable-hover")}),this.addEventListener("close",()=>{Ka.lazyLoadQueue.lock(),M.a.lockIntersectionGroup(Va),M.a.checkAnimations(!0,Va)}),this.addEventListener("closed",()=>{M.a.unlockIntersectionGroup(Va),Ka.lazyLoadQueue.unlock(),Ka.lazyLoadQueue.refresh(),this.container.classList.remove("disable-hover"),this.savedRange=void 0})}init(){this.emojiTab=new Ea,this.stickersTab=new _a,this.gifsTab=new xa,this.tabs={0:this.emojiTab,1:this.stickersTab,2:this.gifsTab},this.container=this.element.querySelector(".emoji-container .tabs-container"),this.tabsEl=this.element.querySelector(".emoji-tabs"),this.selectTab=Object(J.a)(this.tabsEl,this.container,this.onSelectTabClick,()=>{const e=this.tabs[this.tabId];e.init&&e.init(),e.onCloseAfterTimeout&&e.onCloseAfterTimeout(),M.a.checkAnimations(!1,Va)}),this.searchButton=this.element.querySelector(".emoji-tabs-search"),this.searchButton.addEventListener("click",()=>{1===this.tabId?ds.isTabExists(Na)||new Na(ds).open():ds.isTabExists(Ba)||new Ba(ds).open()}),this.deleteBtn=this.element.querySelector(".emoji-tabs-delete"),this.deleteBtn.addEventListener("click",e=>{var t;const s=ic.chat.input.messageInput;(null===(t=s.lastChild)||void 0===t?void 0:t.tagName)?s.lastElementChild.remove():s.lastChild&&(s.lastChild.textContent.length?s.lastChild.textContent=s.lastChild.textContent.slice(0,-1):s.lastChild.remove());const i=new Event("input",{bubbles:!0,cancelable:!0});ic.chat.input.messageInput.dispatchEvent(i),Object(c.a)(e)});const e=ae.c,t=e?1:0;return e&&this.tabsEl.children[1].classList.add("hide"),this.tabsEl.children[t+1].click(),this.tabs[t].init&&this.tabs[t].init(),a.a.addEventListener("peer_changed",this.checkRights),this.checkRights(),super.init()}addLazyLoadQueueRepeat(e,t){this.addEventListener("close",()=>{e.lock()}),this.addEventListener("closed",()=>{const s=e.intersector.getVisible();for(const e of s)t(e);e.intersector.clearVisible()}),this.addEventListener("opened",()=>{e.unlockAndRefresh()})}getSavedRange(){return this.getGoodRange()||this.savedRange}getGoodRange(){const e=document.getSelection();if(e.rangeCount&&document.activeElement===ic.chat.input.messageInput)return e.getRangeAt(0)}}Ka.lazyLoadQueue=new Z.d,Ka.menuOnClick=(e,t,s,i=0)=>{let n=-1;const a=t=>t!==i&&(e.children[i].classList.remove("active"),e.children[t].classList.add("active"),i=t,!0),o=new ea(t.container,(i,o)=>{if(Math.abs(n-t.container.scrollTop)<=1)return;n=-1;const r=Object(Ws.a)(o);!i&&r||(a(r),s&&(r{let s=e.target;if(s=Object(Pe.a)(s,"menu-horizontal-div-item"),!s)return;const i=Object(Ws.a)(s);if(!a(i))return;const o=(t.splitUp||t.container).children[i].offsetTop+1;t.container.scrollTop=n=o}),{stickyIntersector:o,setActive:a}},Ka.onMediaClick=(e,t=!1)=>{let s=e.target;if(s=Object(It.a)(s,"DIV"),!s)return!1;const i=s.dataset.docId;return!!i&&(ic.chat.input.sendMessageWithDocument(i,void 0,t)?(Ga.container&&(Ga.forceClose=!0,Ga.container.classList.add("disable-hover"),Ga.toggle(!1)),!0):(console.warn("got no doc by id:",i),!1))};const Ga=new Ka;le.a.emoticonsDropdown=Ga;var Wa=Ga;var qa=s(187);var $a=!("undefined"==typeof RTCPeerConnection||ae.d);var Qa=$a;function Ya(e,t,s,i=e.getBoundingClientRect(),n=t.getBoundingClientRect()){let{top:a,right:o,bottom:r,left:l}=n;if(s){const e=t.querySelector(".sticky");if(e){a=e.getBoundingClientRect().bottom}}if(i.top>=r||i.bottom<=a||i.right<=l||i.left>=o)return null;const c={top:!1,right:!1,bottom:!1,left:!1,vertical:0,horizontal:0},d="visualViewport"in window?window.visualViewport:window,h=d.width||d.innerWidth,p=d.height||d.innerHeight;return{rect:{top:i.topo&&o!==h?(c.right=!0,++c.horizontal,o):i.right,bottom:i.bottom>r&&r!==p?(c.bottom=!0,++c.vertical,r):i.bottom,left:i.left{ft.a.invokeApi("messages.importChatInvite",{hash:e}).then(e=>{wi.a.processUpdateMessage(e);const t=e.chats[0].id.toPeerId(!0);a.a.dispatchEvent("history_focus",{peerId:t})},e=>{"INVITE_REQUEST_SENT"===e.type&&bt({langPackKey:"RequestToJoinSent"})})}}]),{closable:!0,overlayClosable:!0,body:!0}),this.header.remove();const s=new bc;s.classList.add("avatar-100"),s.isDialog=!1,"photo"===t.photo._?(t.photo=r.a.savePhoto(t.photo),js({container:s,message:null,photo:t.photo,boxHeight:100,boxWidth:100,withoutPreloader:!0}),s.style.width=s.style.height=""):d.a.putPhoto(s,Ne.c,!1,t.title);const i=document.createElement("div");i.classList.add("chat-title"),i.innerHTML=X.b.wrapEmojiText(t.title);const n=t.pFlags.broadcast,o=Object(T.d)(n?"Subscribers":"Members",[Object(Ja.a)(t.participants_count)]);if(o.classList.add("chat-participants-count"),this.body.append(s,i,o),t.pFlags.request_needed){const e=document.createElement("div");Object(T.b)(e,n?"RequestToJoinChannelDescription":"RequestToJoinGroupDescription"),e.classList.add("chat-participants-count","request-caption"),this.body.append(e)}}}!function(e){e[e.MESSAGE=0]="MESSAGE",e[e.PRIVATE_POST=1]="PRIVATE_POST",e[e.STICKER_SET=2]="STICKER_SET",e[e.JOIN_CHAT=3]="JOIN_CHAT",e[e.VOICE_CHAT=4]="VOICE_CHAT",e[e.USER_PHONE_NUMBER=5]="USER_PHONE_NUMBER"}(Xa||(Xa={}));class eo{constructor(e,t){this.scrollable=e,this.reverse=t}get container(){return this.scrollable.container}getSaved(){return{scrollHeight:this.scrollHeight,scrollTop:this.scrollTop,clientHeight:this.clientHeight}}save(){const{scrollTop:e,scrollHeight:t,clientHeight:s}=this.container;this.scrollHeight=t,this.scrollTop=e,this.clientHeight=s,this.scrollHeightMinusTop=this.reverse?t-e:e}restore(e){const{container:t,scrollHeightMinusTop:s,scrollable:i}=this;if(void 0===s)throw new Error("scroll was not saved");const n=t.scrollHeight;if(n===this.scrollHeight)return;this.scrollHeight=n;const a=this.reverse?n-s:s;this.scrollable.setScrollTopSilently(this.scrollTop=a),ae.g&&e&&ha(t)}}class to{constructor(e){this.observing=new Map,this.observingQueue=new Map,this.freezedObservingNew=!1,this.observer=new IntersectionObserver(e=>{const t=this.observing;for(let s=0,i=e.length;s{if(e.isIntersecting){const t=e.target,s=this.unreaded.get(t);this.onUnreadedInViewport(t,s)}},this.viewsObserverCallback=e=>{if(e.isIntersecting){const t=+e.target.dataset.mid;if(this.observer.unobserve(e.target,this.viewsObserverCallback),t)this.viewsMids.add(t),this.sendViewCountersDebounced();else{const{sponsoredMessage:e}=this;e&&e.random_id&&(delete e.random_id,this.chat.apiManager.invokeApiSingle("channels.viewSponsoredMessage",{channel:this.appChatsManager.getChannelInput(this.peerId.toChatId()),random_id:e.random_id}))}}},this.onBubblesMouseMove=e=>{const t=Object(Pe.a)(e.target,"bubble-content");if(t&&!this.chat.selection.isSelecting){const e=Object(Pe.a)(t,"bubble");if(!this.chat.selection.canSelectBubble(e))return void this.unhoverPrevious();let{hoverBubble:s,hoverReaction:i}=this;if(e===s)return;if(this.unhoverPrevious(),s=this.hoverBubble=e,i=this.hoverReaction,i)i.dataset.loaded&&this.setHoverVisible(i,!0);else{i=this.hoverReaction=document.createElement("div"),i.classList.add("bubble-hover-reaction");const s=document.createElement("div");s.classList.add("bubble-hover-reaction-sticker"),i.append(s),t.append(i);let n=this.chat.getMessage(+e.dataset.mid);n=this.appMessagesManager.getGroupsFirstMessage(n);const a=this.getMiddleware(()=>this.hoverReaction===i);Promise.all([this.appReactionsManager.getAvailableReactionsByMessage(n),Object(pa.a)(400)]).then(([e])=>{const t=e[0];t?Bs({div:s,doc:t.select_animation,width:18,height:18,needUpscale:!0,middleware:a,group:ec,withThumb:!1,needFadeIn:!1}).then(e=>{Object(ks.a)(e),a()&&(e.addEventListener("firstFrame",()=>{a()&&(i.dataset.loaded="1",this.setHoverVisible(i,!0))},{once:!0}),Object(l.b)(i,e=>{Object(c.a)(e),this.appReactionsManager.sendReaction(n,t.reaction),this.unhoverPrevious()},{listenerSetter:this.listenerSetter}))}):i.remove()})}}else this.unhoverPrevious()},this.unhoverPrevious=()=>{const{hoverBubble:e,hoverReaction:t}=this;e&&(this.setHoverVisible(t,!1),this.hoverBubble=void 0,this.hoverReaction=void 0)},this.onBubblesClick=e=>{var t;let s=e.target,i=null;try{i=Object(Pe.a)(s,"bubble")}catch(e){}if(!i)return;if(i.classList.contains("is-date")&&Object(Pe.a)(s,"bubble-content")){if(i.classList.contains("is-sticky")&&!this.chatInner.classList.contains("is-scrolling"))return;for(const e in this.dateMessages){if(this.dateMessages[e].div===i){new Zn(new Date(+e),this.onDatePick).show();break}}return}if(!he.a&&Object(Pe.a)(s,"time"))return void this.chat.selection.toggleByElement(i);if(this.chat.selection.isSelecting&&e.isTrusted){if(i.classList.contains("service")&&void 0===i.dataset.mid)return;return Object(c.a)(e),he.a&&this.chat.selection.selectedText?void(this.chat.selection.selectedText=void 0):void this.chat.selection.toggleByElement(Object(Pe.a)(s,"grouped-item")||i)}const n=Object(Pe.a)(s,"contact");if(n)return void this.chat.appImManager.setInnerPeer({peerId:n.dataset.peerId.toPeerId()});const a=Object(Pe.a)(s,"bubble-call");if(a)return void this.chat.appImManager.callUser(this.peerId.toUserId(),a.dataset.type);const o=Object(Pe.a)(s,"spoiler");if(o){const t=Object(Pe.a)(o,"message"),s="is-spoiler-visible",i=t.classList.contains(s);i||Object(c.a)(e);const n=200,a=5e3,r=i?0:2;r&&t.classList.add("will-change");const l=t.dataset.spoilerTimeout;return null!==l&&(clearTimeout(+l),delete t.dataset.spoilerTimeout),void Object(ps.a)(t,s,!0,n,()=>{t.dataset.spoilerTimeout=""+window.setTimeout(()=>{Object(ps.a)(t,s,!1,n,()=>{t.classList.remove("will-change"),delete t.dataset.spoilerTimeout})},a)},r)}const r=Object(It.a)(s,"REACTION-ELEMENT");if(r){if(Object(c.a)(e),r.classList.contains("is-inactive"))return;const t=r.parentElement,s=t.getReactionCount(r),i=t.getMessage();return void this.appReactionsManager.sendReaction(i,s.reaction)}if(Object(Pe.a)(s,"replies")){const e=+i.dataset.mid;if(this.peerId===Ne.d){const t=this.chat.getMessage(e),s=this.appPeersManager.getPeerId(t.reply_to.reply_to_peer_id),i=t.reply_to.reply_to_top_id,n=t.fwd_from.saved_from_msg_id;this.chat.appImManager.openThread(s,n,i)}else{const t=this.appMessagesManager.filterMessages(this.chat.getMessage(e),e=>!!e.replies)[0],s=t.replies;s&&this.appMessagesManager.getDiscussionMessage(this.peerId,t.mid).then(e=>{this.chat.appImManager.setInnerPeer({peerId:s.channel_id.toPeerId(!0),type:"discussion",threadId:e.mid})})}return}const d=Object(Pe.a)(s,"is-via");if(d){const t=d.querySelector(".peer-title");if(s===t||Object(ci.a)(s,t)){const s=t.innerText+" ";return this.appDraftsManager.setDraft(this.peerId,this.chat.threadId,s),void Object(c.a)(e)}}const h=Object(Pe.a)(s,"peer-title")||Object(It.a)(s,"AVATAR-ELEMENT")||Object(kt.a)(s,"data-saved-from");if(h&&h!==i){s=h||s;const e=s.dataset.peerId||s.getAttribute("peer")||s.peerId,t=s.dataset.savedFrom;if("string"==typeof e||t)if(t){const[e,s]=t.split("_");this.chat.appImManager.setInnerPeer({peerId:e.toPeerId(),lastMsgId:+s})}else{const t=e.toPeerId();t!==Ne.c?this.chat.appImManager.setInnerPeer({peerId:t}):mt(T.c.format("HidAccount",!0))}return}if(i.classList.contains("sticker")&&s.parentElement.classList.contains("attachment")){const e=+i.dataset.mid,s=null===(t=this.chat.getMessage(e).media)||void 0===t?void 0:t.document;return void((null==s?void 0:s.stickerSetInput)&&new cn(s.stickerSetInput).show())}const p=Object(Pe.a)(s,"document-with-thumb");if("IMG"===s.tagName&&!s.classList.contains("emoji")&&!s.classList.contains("document-thumb")||s.classList.contains("album-item")||"VIDEO"===s.tagName&&!i.classList.contains("round")||p&&!p.querySelector(".preloader-container")){const t=Object(Pe.a)(s,"album-item")||Object(Pe.a)(s,"document-container"),n=+(t||i).dataset.mid,a=this.chat.getMessage(n);if(!a)return void this.log.warn("no message by messageId:",n);const o=(t||i).querySelector(".preloader-container");if(o)return Object(l.d)(o),void Object(c.a)(e);const r="webpage",d=i.classList.contains(r),h=p?e=>rc.isMediaCompatibleForDocumentViewer(e):e=>"photo"===e._||["video","gif"].includes(e.type),u=[],g=d?[n]:Object.keys(this.bubbles).map(e=>+e).filter(e=>{const t=this.chat.getMessage(e),s=this.appMessagesManager.getMediaFromMessage(t);return s&&h(s)}).sort((e,t)=>e-t);g.forEach(e=>{let t;if(p)t=".document-container";else{t=".album-item video, .album-item img, .preview video, .preview img, ",t+=this.bubbles[e].classList.contains("with-media-tail")?".bubble__media-container":".attachment video, .attachment img"}const s=Array.from(this.bubbles[e].querySelectorAll(t)),i=new Set;if(p)s.forEach(e=>{u.push({element:e.querySelector(".document-ico"),mid:+e.dataset.mid,peerId:this.peerId})});else{const t=!!this.bubbles[e].querySelector(".media-container-aspecter");s.forEach(s=>{if(t&&!Object(Pe.a)(s,"media-container-aspecter"))return;let n=Object(Pe.a)(s,"album-item");const a=n||s.parentElement;i.has(a)||(i.add(a),u.push({element:s,mid:n?+n.dataset.mid:e,peerId:this.peerId}))})}}),u.sort((e,t)=>e.mid-t.mid);let m=u.findIndex(e=>e.mid===n);return le.b&&this.log("open mediaViewer single with ids:",g,m,u),u[m]?((new rc).setSearchContext({threadId:this.chat.threadId,peerId:this.peerId,inputFilter:{_:p?"inputMessagesFilterDocument":"inputMessagesFilterPhotoVideo"},useSearch:"scheduled"!==this.chat.type&&!d,isScheduled:"scheduled"===this.chat.type}).openMedia(a,u[m].element,0,!0,u.slice(0,m),u.slice(m+1)),void Object(c.a)(e)):void this.log("no target for media viewer!",s)}if(-1===["IMG","DIV","SPAN"].indexOf(s.tagName)&&(s=Object(It.a)(s,"DIV")),-1!==["DIV","SPAN"].indexOf(s.tagName)){if(s.classList.contains("goto-original")){const e=i.dataset.savedFrom,[t,s]=e.split("_");return void this.chat.appImManager.setInnerPeer({peerId:t.toPeerId(),lastMsgId:+s})}if(s.classList.contains("forward")){const e=+i.dataset.mid,t=this.appMessagesManager.getMessageByPeer(this.peerId,e);return void new ii({[this.peerId]:this.appMessagesManager.getMidsByMessage(t)})}let t=!1;try{t=!!Object(Pe.a)(e.target,"reply")}catch(e){}if(t&&i.classList.contains("is-reply")){const e=+i.dataset.mid;this.replyFollowHistory.push(e);const t=this.chat.getMessage(e),s=t.reply_to.reply_to_peer_id?this.appPeersManager.getPeerId(t.reply_to.reply_to_peer_id):this.peerId,n=t.reply_to.reply_to_msg_id;this.chat.appImManager.setInnerPeer({peerId:s,lastMsgId:n,type:this.chat.type,threadId:this.chat.threadId})}}},this.onScroll=(e,t)=>{var s,i;if(this.isHeavyAnimationInProgress){if(this.sliceViewportDebounced&&this.sliceViewportDebounced.clearTimeout(),this.scrolledDown&&!e)return}else this.chat.topbar.pinnedMessage&&this.chat.topbar.pinnedMessage.setCorrectIndexThrottled(this.scrollable.lastScrollDirection),this.sliceViewportDebounced&&this.sliceViewportDebounced(),this.setStickyDateManually();if(t&&t.distanceToEnd<300&&this.scrolledDown)return;const n=null!==(s=null==t?void 0:t.distanceToEnd)&&void 0!==s?s:this.scrollable.getDistanceToEnd();(0!==this.scrollable.lastScrollDirection&&n>0||t)&&(this.isScrollingTimeout?clearTimeout(this.isScrollingTimeout):this.chatInner.classList.contains("is-scrolling")||this.chatInner.classList.add("is-scrolling"),this.isScrollingTimeout=window.setTimeout(()=>{this.chatInner.classList.remove("is-scrolling"),this.isScrollingTimeout=0},1350+(null!==(i=null==t?void 0:t.duration)&&void 0!==i?i:0))),n<300&&(this.scrollable.loadedAll.bottom||this.chat.setPeerPromise||!this.peerId)?(this.bubblesContainer.classList.add("scrolled-down"),this.scrolledDown=!0):this.bubblesContainer.classList.contains("scrolled-down")&&(this.bubblesContainer.classList.remove("scrolled-down"),this.scrolledDown=!1)},this.onDatePick=e=>{const t=this.peerId;this.appMessagesManager.requestHistory(t,0,2,-1,e,this.chat.threadId).then(e=>{var s;(null===(s=null==e?void 0:e.messages)||void 0===s?void 0:s.length)?this.peerId===t&&this.chat.setMessageId(e.messages[0].mid):this.log.error("no history!")})},this.listenerSetter=new R.a,this.bubblesContainer=document.createElement("div"),this.bubblesContainer.classList.add("bubbles","scrolled-down"),this.chatInner=document.createElement("div"),this.chatInner.classList.add("bubbles-inner"),this.setScroll(),this.bubblesContainer.append(this.scrollable.container),this.log=this.chat.log,this.bubbleGroups=new Jn(this.chat),this.preloader=new ye.a({cancelable:!1}),this.lazyLoadQueue=new Z.d,this.lazyLoadQueue.queueId=++oo,this.listenerSetter.add(a.a)("history_update",({storage:e,peerId:t,mid:s})=>{if(this.chat.getMessagesStorage()===e){const e=this.bubbles[s];if(!e)return;const t=this.chat.getMessage(s);if(+e.dataset.timestamp>=t.date+at.a.serverTimeOffset-1)return void this.bubbleGroups.changeBubbleMid(e,s);this.setBubblePosition(e,t,!1),this.scrollingToBubble&&this.scrollToEnd()}}),this.listenerSetter.add(a.a)("dialog_flush",({peerId:e})=>{this.peerId===e&&this.deleteMessagesByIds(Object.keys(this.bubbles).map(e=>+e))}),this.listenerSetter.add(a.a)("message_sent",e=>{var t,s,i,n,o,r,l,c;const{storage:d,tempId:h,tempMessage:p,mid:u}=e;if(this.chat.getMessagesStorage()!==d)return;const g=this.getMountedBubble(h,p)||this.getMountedBubble(u);if(g){const e=this.chat.getMessage(u),a=g.bubble,d=Array.from(a.querySelectorAll("reactions-element"));if(d.length&&d.forEach(t=>{t.changeMessage(e)}),e.replies){const t=a.querySelector("replies-element");t&&(t.message=e,t.init())}if(null===(t=e.media)||void 0===t?void 0:t.document){const t=a.querySelector(`.document-container[data-mid="${h}"] .document`);if(t){const a=Object(Pe.a)(t,"document-container");!(null===(n=null===(i=null===(s=p.media)||void 0===s?void 0:s.document)||void 0===i?void 0:i.thumbs)||void 0===n?void 0:n.length)&&(null===(o=e.media.document.thumbs)||void 0===o?void 0:o.length)&&Object(Ks.c)().then(()=>{const s=t.querySelector(".time"),i=Fs({message:e});t.replaceWith(i),s&&i.querySelector(".document-size").append(s)}),a&&(a.dataset.mid=""+u)}}if(e.grouped_id){const e=a.querySelector(`.grouped-item[data-mid="${h}"]`)||a;e&&(e.dataset.mid=""+u)}if(null===(r=e.media)||void 0===r?void 0:r.poll){const t=a.querySelector("poll-element");if(t){const s=e.media.poll;t.message=e,t.setAttribute("poll-id",s.id),t.setAttribute("message-id",""+u)}}if(null===(l=e.media)||void 0===l?void 0:l.document){const t=a.querySelector(`audio-element[data-mid="${h}"], .document[data-doc-id="${h}"], .media-round[data-mid="${h}"]`);t&&(t instanceof Ge||t.classList.contains("media-round")?(t.dataset.mid=""+e.mid,delete t.dataset.isOutgoing,t.message=e,t.onLoad(!0)):t.dataset.docId=e.media.document.id)}(null===(c=e.media)||void 0===c?void 0:c.webpage)&&!a.querySelector(".web")&&Object(Ks.c)().then(()=>{this.safeRenderMessage(e,!0,!1,a,!1),this.scrollToBubbleIfLast(a)})}else this.log.warn("message_sent there is no bubble",e);const m=this.bubbles;if(m[h]){const e=m[h];m[u]=e,delete m[h],Object(Re.b)(()=>{const t=+e.dataset.mid;m[t]===e&&e.classList.contains("is-outgoing")&&(e.classList.remove("is-sending","is-outgoing"),e.classList.add(this.peerId===a.a.myId&&"scheduled"!==this.chat.type||!this.unreadOut.has(t)?"is-read":"is-sent"))}),e.dataset.mid=""+u}if(this.unreadOut.has(h)&&(this.unreadOut.delete(h),this.unreadOut.add(u)),"scheduled"===this.chat.type){(Date.now()/1e3|0)>=p.date-10&&this.deleteMessagesByIds([u])}}),this.listenerSetter.add(a.a)("message_edit",({storage:e,peerId:t,mid:s})=>{if(e!==this.chat.getMessagesStorage())return;const i=this.chat.getMessage(s),n=i.grouped_id?this.getGroupedBubble(i.grouped_id):this.getMountedBubble(s);if(!n)return;const a="scheduled"===this.chat.type,o=new eo(this.scrollable,!0);o.save(),this.safeRenderMessage(n.message,!0,!1,n.bubble,a),o.restore(),a&&(this.messagesQueuePromise||Promise.resolve()).then(()=>{this.deleteEmptyDateGroups()})}),"scheduled"!==this.chat.type&&(this.listenerSetter.add(a.a)("missed_reactions_element",({message:e,changedResults:t})=>{if(this.peerId!==e.peerId||!e.reactions||!e.reactions.results.length)return;const s=this.getBubbleByMessage(e);if(s){if(e.grouped_id){e=this.getGroupedBubble(e.grouped_id).message}this.appendReactionsElementToBubble(s,e,t)}}),this.listenerSetter.add(a.a)("messages_reactions",e=>{let t;for(const{message:s,changedResults:i}of e){if(this.peerId!==s.peerId)return;if(!this.getBubbleByMessage(s))return;t||(t=new eo(this.scrollable,!0),t.save());const e=s.peerId+"_"+s.mid,n=sa.get(e);if(n)for(const e of n)e.update(s,i);else a.a.dispatchEvent("missed_reactions_element",{message:s,changedResults:i})}t&&t.restore()})),this.listenerSetter.add(a.a)("album_edit",({peerId:e,groupId:t,deletedMids:s})=>{if(e!==this.peerId)return;const i=this.appMessagesManager.getMidsByAlbum(t).concat(s).find(e=>this.bubbles[e]);if(!i)return;const n=Object(gi.a)(this.appMessagesManager.groupedMessagesStorage[t],"asc").pop();this.safeRenderMessage(this.chat.getMessage(n),!0,!1,this.bubbles[i],!1)}),this.listenerSetter.add(a.a)("messages_downloaded",({peerId:e,mids:t})=>{const s=this.getMiddleware();Object(Ks.c)().then(()=>{s()&&t.forEach(t=>{Object(f.a)(this.needUpdate,(s,i)=>{if(s.replyMid===t&&s.replyToPeerId===e){const{mid:e,replyMid:t}=this.needUpdate.splice(i,1)[0],n=this.bubbles[e];if(!n)return;const a=this.chat.getMessage(e);this.appMessagesManager.getMessageByPeer(s.replyToPeerId,t).deleted&&delete a.reply_to_mid,ra.setReply({chat:this.chat,bubble:n,message:a})}})})})}),he.a){const e="is-gesturing-reply",t=64,s=.75*t;let i,n,a=!1;Zs({element:this.bubblesContainer,verifyTouchTarget:t=>!(this.chat.selection.isSelecting||!this.chat.canSend())&&(i=Object(Pe.a)(t.target,"bubble"),i&&(Object(ps.a)(i,e,!0,250),i.offsetLeft,n?(n.classList.remove("is-visible"),n.style.opacity=""):(n=document.createElement("span"),n.classList.add("tgico-reply_filled","bubble-gesture-reply-icon")),i.append(n)),!!i),onSwipe:(e,o)=>{a=e>=s,a&&!n.classList.contains("is-visible")&&n.classList.add("is-visible"),n.style.opacity=""+Math.min(1,e/s);const r=-Math.max(0,Math.min(t,e));i.style.transform=`translateX(${r}px)`,Object(ee.b)()},onReset:()=>{const t=i;Object(ps.a)(t,e,!1,250,()=>{n.parentElement===t&&(n.classList.remove("is-visible"),n.remove())}),Object(Re.b)(()=>{if(t.style.transform="",a){const{mid:e}=t.dataset;this.chat.input.initMessageReply(+e),a=!1}})},listenerOptions:{capture:!0}})}let m;Object(l.b)(this.scrollable.container,this.onBubblesClick,{listenerSetter:this.listenerSetter}),le.b&&this.listenerSetter.add(this.bubblesContainer)("dblclick",e=>{const t=Object(Pe.a)(e.target,"grouped-item")||Object(Pe.a)(e.target,"bubble");if(t){const e=+t.dataset.mid;this.log("debug message:",this.chat.getMessage(e)),this.highlightBubble(t)}}),ae.e||"pinned"===this.chat.type||this.listenerSetter.add(this.bubblesContainer)("dblclick",e=>{if(this.chat.selection.isSelecting||!this.chat.canSend())return;const t=e.target,s=t.classList.contains("bubble")?t:t.classList.contains("document-selection")?t.parentElement:null;if(s&&!s.classList.contains("bubble-first")){const e=+s.dataset.mid;if(this.chat.getMessage(e).pFlags.is_outgoing)return;this.chat.input.initMessageReply(e)}}),this.stickyIntersector=new ea(this.scrollable.container,(e,t)=>{for(const s in this.dateMessages){const i=this.dateMessages[s];if(i.container===t){const t=i.div;t.classList.toggle("is-sticky",e),e&&(this.previousStickyDate=t);break}}this.previousStickyDate}),ae.g||(this.sliceViewportDebounced=Object(vt.a)(this.sliceViewport.bind(this),3e3,!1,!0)),Object(Ks.a)(()=>{this.isHeavyAnimationInProgress=!0,this.lazyLoadQueue.lock(),m=this.getMiddleware()},()=>{this.isHeavyAnimationInProgress=!1,m&&m()&&(this.lazyLoadQueue.unlock(),this.lazyLoadQueue.refresh()),m=null},this.listenerSetter)}constructPeerHelpers(){this.listenerSetter.add(a.a)("history_append",({storage:e,mid:t})=>{if(e===this.chat.getMessagesStorage()&&(this.scrollable.loadedAll.bottom?this.renderNewMessagesByIds([t],!0):this.chat.setMessageId(),a.a.settings.animationsEnabled)){const e=this.chat.gradientRenderer;e&&e.toNextPosition()}}),this.listenerSetter.add(a.a)("history_multiappend",e=>{if(!(this.peerId in e))return;const t=Array.from(e[this.peerId]).slice().sort((e,t)=>t-e);this.renderNewMessagesByIds(t)}),this.listenerSetter.add(a.a)("history_delete",({peerId:e,msgs:t})=>{e===this.peerId&&this.deleteMessagesByIds(Array.from(t))}),this.listenerSetter.add(a.a)("dialog_unread",({peerId:e})=>{e===this.peerId&&(this.chat.input.setUnreadCount(),Object(Ks.c)().then(()=>{this.updateUnreadByDialog()}))}),this.listenerSetter.add(a.a)("dialogs_multiupdate",e=>{e[this.peerId]&&this.chat.input.setUnreadCount()}),this.listenerSetter.add(a.a)("dialog_notify_settings",e=>{this.peerId===e.peerId&&this.chat.input.setUnreadCount()}),this.listenerSetter.add(a.a)("chat_update",e=>{if(this.peerId===e.toPeerId(!0)){this.chatInner.classList.contains("has-rights")!==this.chat.canSend()&&(this.finishPeerChange(),this.chat.input.finishPeerChange())}}),this.listenerSetter.add(a.a)("settings_updated",e=>{if("settings.emoji.big"===e.key){const e=this.scrollable.isScrolledDown;e||this.setMessagesQueuePromise();Object(gi.a)(this.bubbles,"desc").forEach(e=>{const t=this.bubbles[e];if(t.classList.contains("can-have-big-emoji")){const s=this.chat.getMessage(e);this.safeRenderMessage(s,void 0,!1,t)}}),e?this.scrollable.setScrollTopSilently(99999):this.performHistoryResult([],!0,!1,void 0)}}),this.listenerSetter.add(a.a)("messages_views",e=>{Object(Re.b)(()=>{let t;for(const{peerId:s,views:i,mid:n}of e){if(this.peerId!==s)return;const e=this.bubbles[n];if(!e)return;const a=Array.from(e.querySelectorAll(".post-views"));if(a.length){const e=Gn(i,1);let s=!1;a.forEach(i=>{(s||i.innerHTML!==e)&&(t||(t=new eo(this.scrollable,!0),t.save()),s=!0,i.innerHTML=e)})}}t&&t.restore()})}),this.observer=new to({root:this.scrollable.container}),this.listenerSetter.add(a.a)("chat_changing",({to:e})=>{const t=e!==this.chat,s=()=>{this.observer.toggleObservingNew(t)};t?s():setTimeout(()=>{s()},400)}),this.sendViewCountersDebounced=Object(vt.a)(()=>{const e=[...this.viewsMids];this.viewsMids.clear(),this.appMessagesManager.incrementMessageViews(this.peerId,e)},1e3,!1,!0)}createResizeObserver(){if(!("ResizeObserver"in window)||this.resizeObserver)return;const e=this.scrollable.container;let t=0,s=!1,i=!1,n=0,a=0,o=0;const r=()=>{const r=e.offsetHeight,l=this.scrollable.isScrolledDown;r===t||i&&l||(a+=t-r),a&&this.scrollable.setScrollTopSilently(this.scrollable.scrollTop+Math.round(a)),t=r,n=0,o=0,a=0,s=!1,i=!1},l=e=>{o&&window.cancelAnimationFrame(o),o=window.requestAnimationFrame(e?r:()=>{o=window.requestAnimationFrame(r)})};(this.resizeObserver=new ResizeObserver(e=>{if(i)return void l(!1);const o=e[0].contentRect.height;if(!t)return void(t=o);const r=t-o;let c=r+a;const d=c%1;if(c-=d,!s&&(s=!0,r<0&&this.scrollable.isScrolledDown))return a=-r,i=!0,void l(!1);if(n+=c,c){const e=this.scrollable.scrollTop+c;this.scrollable.setScrollTopSilently(e)}l(!1),a=d,t=o})).observe(e)}destroyResizeObserver(){const e=this.resizeObserver;e&&(e.disconnect(),this.resizeObserver=void 0)}setReactionsHoverListeners(){this.listenerSetter.add(a.a)("context_menu_toggle",this.unhoverPrevious),this.listenerSetter.add(a.a)("overlay_toggle",this.unhoverPrevious),this.listenerSetter.add(this.chat.selection)("toggle",this.unhoverPrevious),this.listenerSetter.add(this.bubblesContainer)("mousemove",this.onBubblesMouseMove)}setHoverVisible(e,t){Object(ps.a)(e,"is-visible",t,200,t?void 0:()=>{e.remove()},2)}setStickyDateManually(){}getRenderedLength(){return Object.keys(this.bubbles).length-this.skippedMids.size}onUnreadedInViewport(e,t){this.unreadedSeen.add(t),this.observer.unobserve(e,this.unreadedObserverCallback),this.unreaded.delete(e),this.readUnreaded()}readUnreaded(){if(this.readPromise)return;const e=this.getMiddleware();this.readPromise=a.a.idle.focusPromise.then(()=>{if(!e())return;let t=Math.max(...Array.from(this.unreadedSeen));if(this.scrollable.loadedAll.bottom){const e=Math.max(...Object.keys(this.bubbles).map(e=>+e));t>=e&&(t=Math.max(this.appMessagesManager.getHistoryStorage(this.peerId,this.chat.threadId).maxId||0,t))}this.unreaded.forEach((e,s)=>{e<=t&&this.onUnreadedInViewport(s,e)});const s=[];for(const e of this.unreadedSeen){const t=this.chat.getMessage(e);this.appMessagesManager.isMentionUnread(t)&&s.push(e)}return this.appMessagesManager.readMessages(this.peerId,s),this.unreadedSeen.clear(),le.b&&this.log("will readHistory by maxId:",t),this.appMessagesManager.readHistory(this.peerId,t,this.chat.threadId).catch(e=>{this.log.error("readHistory err:",e),this.appMessagesManager.readHistory(this.peerId,t,this.chat.threadId)}).finally(()=>{e()&&(this.readPromise=void 0,this.unreadedSeen.size&&this.readUnreaded())})})}constructPinnedHelpers(){this.listenerSetter.add(a.a)("peer_pinned_messages",e=>{const{peerId:t,mids:s,pinned:i}=e;t===this.peerId&&s&&(i||this.deleteMessagesByIds(s))})}constructScheduledHelpers(){const e=()=>{this.chat.topbar.setTitle(this.appMessagesManager.getScheduledMessagesStorage(this.peerId).size)};this.listenerSetter.add(a.a)("scheduled_new",({peerId:t,mid:s})=>{t===this.peerId&&(this.renderNewMessagesByIds([s]),e())}),this.listenerSetter.add(a.a)("scheduled_delete",({peerId:t,mids:s})=>{t===this.peerId&&(this.deleteMessagesByIds(s),e())})}onGoDownClick(){if(this.replyFollowHistory.length){Object(f.a)(this.replyFollowHistory,(e,t)=>{const s=this.bubbles[e];let i=!0;if(s){const e=s.getBoundingClientRect();i=xt.a.height/2>e.top}else{this.chat.getMessage(e).deleted||(i=!1)}i&&this.replyFollowHistory.splice(t,1)}),this.replyFollowHistory.sort((e,t)=>t-e);const e=this.replyFollowHistory.pop();this.chat.setMessageId(e)}else this.chat.setMessageId()}getBubbleByPoint(e){let t=da(this.scrollable.container,e,"center");return t&&(t=Object(Pe.a)(t,"bubble")),t}getGroupedBubble(e){const t=this.appMessagesManager.groupedMessagesStorage[e];for(const[e]of t)if(this.bubbles[e]){const s=Math.max(...t.keys());return{bubble:this.bubbles[e],mid:+e,message:this.chat.getMessage(s)}}}getBubbleByMessage(e){if(!e.grouped_id)return this.bubbles[e.mid];const t=this.getGroupedBubble(e.grouped_id);return null==t?void 0:t.bubble}getBubbleGroupedItems(e){return Array.from(e.querySelectorAll(".grouped-item"))}getMountedBubble(e,t=this.chat.getMessage(e)){if(t.grouped_id&&this.appMessagesManager.getMidsByAlbum(t.grouped_id).length>1){const s=this.getGroupedBubble(t.grouped_id);if(s)return s.bubble=s.bubble.querySelector(`.document-container[data-mid="${e}"]`)||s.bubble,s}const s=this.bubbles[e];if(s)return{bubble:s,mid:e,message:t}}findNextMountedBubbleByMsgId(e){return this.bubbles[Object(gi.a)(this.bubbles).find(t=>{var s;return!(t+e).sort((e,t)=>e-t).filter(e=>e>0&&!this.skippedMids.has(e));if(s.length)if(e)le.b&&this.log("Will load more (up) history by id:",s[0],"maxId:",s[s.length-1],t),this.getHistory(s[0],!0,void 0,void 0,t);else{const e=this.appMessagesManager.getHistoryStorage(this.peerId,this.chat.threadId);if(-1!==s.indexOf(e.maxId))return void this.setLoaded("bottom",!0);le.b&&this.log("Will load more (down) history by id:",s[s.length-1],t),this.getHistory(s[s.length-1],!1,!0,void 0,t)}}setScroll(){this.scrollable=new P.b(null,"IM",300),this.setLoaded("top",!1),this.setLoaded("bottom",!1),this.scrollable.container.append(this.chatInner),this.scrollable.onAdditionalScroll=this.onScroll,this.scrollable.onScrolledTop=()=>this.loadMoreHistory(!0),this.scrollable.onScrolledBottom=()=>this.loadMoreHistory(!1),he.a}updateUnreadByDialog(){const e=this.appMessagesManager.getHistoryStorage(this.peerId,this.chat.threadId),t=this.peerId===a.a.myId?e.readMaxId:e.readOutboxMaxId;for(const e of this.unreadOut)if(e>0&&e<=t){const t=this.bubbles[e];if(t){if(this.unreadOut.delete(e),t.classList.contains("is-outgoing"))continue;t.classList.remove("is-sent","is-sending","is-outgoing"),t.classList.add("is-read")}}}deleteMessagesByIds(e,t=!0,s){let i=!1;e.forEach(e=>{if(!(e in this.bubbles))return;i=!0;const t=this.bubbles[e];delete this.bubbles[e],this.skippedMids.delete(e),this.firstUnreadBubble===t&&(this.firstUnreadBubble=null),this.bubbleGroups.removeBubble(t),this.observer&&(this.observer.unobserve(t,this.unreadedObserverCallback),this.unreaded.delete(t),this.observer.unobserve(t,this.viewsObserverCallback),this.viewsMids.delete(e)),t.remove(),this.emptyPlaceholderMid===e&&(this.emptyPlaceholderMid=void 0)}),i&&(this.scrollable.ignoreNextScrollEvent(),t&&this.chat.selection.isSelecting&&this.chat.selection.deleteSelectedMids(this.peerId,e),M.a.checkAnimations(!1,ec),this.deleteEmptyDateGroups(),s||this.onScroll())}setTopPadding(e=this.getMiddleware()){let t,s=!1;if(!this.isTopPaddingSet){const{clientHeight:e,scrollHeight:i}=this.scrollable.container;s=e===i,s&&(t=this.chatInner,t.style.paddingTop=e+"px",this.scrollable.setScrollTopSilently(i),this.isTopPaddingSet=!0)}return{isPaddingNeeded:s,unsetPadding:s?()=>{e()&&s&&(t.style.paddingTop="",this.isTopPaddingSet=!1)}:void 0}}renderNewMessagesByIds(e,t){if(!this.scrollable.loadedAll.bottom){const t=this.chat.setPeerPromise;if(t){const s=this.getMiddleware();t.then(()=>{s()&&this.renderNewMessagesByIds(e)})}return}this.chat.threadId&&(e=e.filter(e=>{const t=this.chat.getMessage(e).reply_to;return t&&(t.reply_to_top_id||t.reply_to_msg_id)===this.chat.threadId})),e=e.filter(e=>!this.bubbles[e]),t||(t=this.scrolledDown&&(!this.scrollingToBubble||this.scrollingToBubble===this.getLastBubble()||this.scrollingToBubble===this.chatInner));const s=this.getMiddleware(),{isPaddingNeeded:i,unsetPadding:n}=this.setTopPadding(s),a=this.performHistoryResult(e,!1,!0);t&&a.then(()=>{if(!s())return;let t;"scheduled"===this.chat.type&&(t=this.bubbles[Math.max(...e)]);const a=t?this.scrollToBubbleEnd(t):this.scrollToEnd();i&&a.then(n)})}getLastBubble(){const e=this.getLastDateGroup();if(e)return e.lastElementChild}scrollToBubble(e,t,s,i){const n=Object(Pe.a)(e,"bubble");let a;if(n&&"end"!==t&&Object(Ws.a)(n)===(this.stickyIntersector?3:1)){a=n.parentElement}const o=this.chat.input.messageInput&&this.chat.input.messageInput.classList.contains("is-changing-height")||this.chat.container.classList.contains("is-toggling-helper"),r=this.scrollable.scrollIntoViewNew({element:e,position:t,margin:4,forceDirection:s,forceDuration:i,axis:"y",getNormalSize:o?({rect:e})=>{let t=xt.a.height;return t-=this.bubblesContainer.offsetTop,t-=b.b.isMobile||xt.a.height<570?58:78,t}:void 0,fallbackToElementStartWhenCentering:a,startCallback:e=>{this.onScroll(!0,e)}});return s===Pt.a.Static&&(this.scrollable.lastScrollPosition=this.scrollable.scrollTop),r}scrollToEnd(){return this.scrollToBubbleEnd(this.chatInner)}scrollToBubbleEnd(e){return so(this,void 0,void 0,(function*(){if(e){this.scrollingToBubble=e;const t=this.getMiddleware();if(yield this.scrollToBubble(e,"end",void 0,void 0),!t())return;this.scrollingToBubble=void 0}}))}getLastDateGroup(){let e,t=0;for(const s in this.dateMessages){const i=this.dateMessages[s];i.firstTimestamp>t&&(e=i.container,t=i.firstTimestamp)}return e}scrollToBubbleIfLast(e){return so(this,void 0,void 0,(function*(){if(this.getLastBubble()===e)return this.scrollToEnd()}))}highlightBubble(e){const t="highlightTimeout";e.dataset[t]&&(clearTimeout(+e.dataset[t]),e.classList.remove("is-highlighted"),e.offsetWidth),e.classList.add("is-highlighted"),e.dataset[t]=""+setTimeout(()=>{e.classList.remove("is-highlighted"),delete e.dataset[t]},2e3)}createDateBubble(e,t=new Date(1e3*e)){let s;const i=new Date;i.setHours(0,0,0,0);const n="scheduled"===this.chat.type;if(i.getTime()===t.getTime())s=Object(T.d)(n?"Chat.Date.ScheduledForToday":"Date.Today");else if(n&&2147483646===e)s=Object(T.d)("MessageScheduledUntilOnline");else{const e={day:"numeric",month:"long"};t.getFullYear()!==i.getFullYear()&&(e.year="numeric"),s=new T.c.IntlDateElement({date:t,options:e}).element,n&&(s=Object(T.d)("Chat.Date.ScheduledFor",[s]))}const a=document.createElement("div");a.className="bubble service is-date";const o=document.createElement("div");o.classList.add("bubble-content");const r=document.createElement("div");return r.classList.add("service-msg"),r.append(s),o.append(r),a.append(o),a}getDateContainerByMessage(e,t){const s=new Date(1e3*e.date);s.setHours(0,0,0);const i=s.getTime();if(!this.dateMessages[i]){const t=this.createDateBubble(e.date,s),n=this.createDateBubble(e.date,s);n.classList.add("is-fake");const a=document.createElement("section");a.className="bubbles-date-group",a.append(t,n),this.dateMessages[i]={div:t,container:a,firstTimestamp:s.getTime()};const o=Object(gi.a)(this.dateMessages,"asc");let r,l=0,c=o.length;for(;l+e)))}else this.isFirstLoad=!0,this.destroyResizeObserver();const v=this.chatInner;this.cleanup();const f=this.chatInner=document.createElement("div");n?(f.className=v.className,f.classList.remove("disable-hover","is-scrolling")):f.classList.add("bubbles-inner"),this.lazyLoadQueue.lock();const y=r&&(u||n)||l,w=b>0&&(bthis.performHistoryResult(d.mids,!0,!1,void 0)),cached:!0}:this.getHistory(t,!0,u,m);const{promise:I,cached:E}=C;E||n||(g.container.textContent="",this.chat.finishPeerChange(l,u,t,s),this.preloader.attach(this.bubblesContainer));const P=this.getMiddleware();M.a.lockGroup(ec);const T=I.then(()=>{if(E&&(n||this.chat.finishPeerChange(l,u,t,s)),this.preloader.detach(),this.resolveLadderAnimation&&(this.resolveLadderAnimation(),this.resolveLadderAnimation=void 0),g.lastScrollDirection=0,g.lastScrollPosition=0,Object(k.a)(g.container,f),M.a.unlockGroup(ec),M.a.checkAnimations(!1,ec),this.lazyLoadQueue.unlock(),d)g.setScrollTopSilently(d.top);else if(y){let e;if(S)g.setScrollTopSilently(99999);else if(L){const t=this.setTopPadding();t.isPaddingNeeded&&(e=t.unsetPadding),g.setScrollTopSilently(0)}const s=this.getMountedBubble(t);let i,a=c&&this.firstUnreadBubble||(null==s?void 0:s.bubble);if((null==a?void 0:a.parentElement)||(a=this.findNextMountedBubbleByMsgId(t)),a){const e=this.getLastBubble(),t=c?"start":u||l||e!==a?"center":"end";i="end"===t&&e===a&&n?this.scrollToEnd():this.scrollToBubble(a,t,n?void 0:Pt.a.Static),!c&&l&&this.highlightBubble(a)}e&&(i||Promise.resolve()).then(()=>{e()})}else g.setScrollTopSilently(99999);this.onScroll();const i=this.getMiddleware(),o=Promise.all([T,Object(Ks.c)()]);o.then(()=>{g.checkForTriggers()}),this.chat.dispatchEvent("setPeer",t,!u);if(this.appPeersManager.isChannel(e)){const e=this.getMiddleware(),t=()=>{if(!e())return;const s=[];for(const e in this.bubbles){let t=this.chat.getMessage(+e);"message"===t._&&(t=this.appMessagesManager.getGroupsFirstMessage(t),s.push(t.mid))}(s.length?this.appReactionsManager.getMessagesReactions(this.peerId,s):Promise.resolve()).then(()=>{setTimeout(t,1e4)})};Promise.all([o,Object(Ks.c)(),Object(pa.a)(500)]).then(()=>{t()})}const h=this.appMessagesManager.isFetchIntervalNeeded(e);if(d||h?o.then(()=>{if(i()&&(g.checkForTriggers(),h)){const t=()=>{this.fetchNewPromise=new Promise(s=>{i()&&this.appMessagesManager.isFetchIntervalNeeded(e)?this.appMessagesManager.getNewHistory(e,this.chat.threadId).then(e=>{if(!i()||!e)return void s();const n=e.history.slice.isEnd(ca.a.Bottom);g.loadedAll.bottom&&g.loadedAll.bottom!==n&&(this.setLoaded("bottom",n),this.onScroll()),setTimeout(t,3e4),s()}):s()}).finally(()=>{this.fetchNewPromise=void 0})};n?setTimeout(t,3e4):t()}}):t&&!this.bubbles[r]&&t!==r||this.setLoaded("bottom",!0),this.log("scrolledAllDown:",g.loadedAll.bottom),g.loadedAll.bottom&&r&&!this.unreaded.size&&this.onScrolledAllDown(),"chat"===a){const t=this.appMessagesManager.getDialogOnly(e);(null==t?void 0:t.pFlags.unread_mark)&&this.appMessagesManager.markDialogUnread(e,!0)}}).catch(e=>{throw this.log.error("getHistory promise error:",e),P()||this.preloader.detach(),e});return{cached:E,promise:T}}onScrolledAllDown(){if("chat"===this.chat.type||"discussion"===this.chat.type){const e=this.appMessagesManager.getHistoryStorage(this.peerId,this.chat.threadId);this.appMessagesManager.readHistory(this.peerId,e.maxId,this.chat.threadId,!0)}}finishPeerChange(){const e=this.appPeersManager.isChannel(this.peerId),t=this.chat.canSend();this.chatInner.classList.toggle("has-rights",t),this.bubblesContainer.classList.toggle("is-chat-input-hidden",!t),this.chatInner.classList.toggle("is-chat",this.chat.isAnyGroup()),this.chatInner.classList.toggle("is-channel",e),this.createResizeObserver()}renderMessagesQueue(e,t,s,i){return this.messagesQueue.push({message:e,bubble:t,reverse:s,promises:i}),this.setMessagesQueuePromise()}setMessagesQueuePromise(){return this.messagesQueuePromise||!this.messagesQueue.length?Promise.resolve():this.messagesQueuePromise=new Promise((e,t)=>{setTimeout(()=>{const s=this.messagesQueue.slice();this.messagesQueue.length=0;const i=s.reduce((e,{promises:t})=>(e.push(...t),e),[]);this.log("promises to call",i,s,this.isHeavyAnimationInProgress);const n=this.getMiddleware();Promise.all(i).then(()=>{if(!n())throw"setMessagesQueuePromise: peer changed!";this.messagesQueueOnRender&&this.messagesQueueOnRender(),this.messagesQueueOnRenderAdditional&&this.messagesQueueOnRenderAdditional(),s.forEach(({message:e,bubble:t,reverse:s})=>{this.setBubblePosition(t,e,s)}),e(),this.messagesQueuePromise=null,this.messagesQueue.length&&this.setMessagesQueuePromise(),this.setUnreadDelimiter()}).catch(t)},0)})}setBubblePosition(e,t,s){if(t.pFlags.local)return void this.chatInner[t.pFlags.sponsored?"append":"prepend"](e);const i=this.getDateContainerByMessage(t,s);if("scheduled"===this.chat.type||"pinned"===this.chat.type){const s=this.stickyIntersector?3:1;let n=Array.from(i.container.children).slice(s),a=0,o=0;for(;as.includes(e)));i.className=n.join(" "),L=i.lastElementChild,L.classList.contains("bubble-content-wrapper")||(L=i.querySelector(".bubble-content-wrapper")),S=L.firstElementChild,S.innerHTML="",S.style.cssText="",L.innerHTML="",L.appendChild(S);const a=L.style.transitionDelay;L.style.cssText="",L.style.transitionDelay=a,i===this.firstUnreadBubble&&i.classList.add("is-first-unread");const o=+i.dataset.mid;+e.mid===o||(delete this.bubbles[o],this.skippedMids.delete(o))}else if(L=document.createElement("div"),L.classList.add("bubble-content-wrapper"),S=document.createElement("div"),S.classList.add("bubble-content"),(i=document.createElement("div")).classList.add("bubble"),L.appendChild(S),i.appendChild(L),!y&&!e.pFlags.out&&this.observer){(e.pFlags.unread||this.appMessagesManager.isMentionUnread(e)||void 0!==this.historyStorage.readMaxId&&this.historyStorage.readMaxId"messageEntityEmoji"===e._),t=M.length;if(e.reduce((e,t)=>e+t.length,0)===t&&e.length<=3&&I.length===e.length){if(a.a.settings.emoji.big){let t=this.appStickersManager.getAnimatedEmojiSticker(M);if(1===e.length&&!E&&t)E={_:"messageMediaDocument",document:t};else{let t=document.createElement("div");t.classList.add("attachment"),t.innerHTML=P,i.classList.add("emoji-"+e.length+"x"),S.append(t)}i.classList.add("is-message-empty","emoji-big"),x=!0,k=!1,A=!1}i.classList.add("can-have-big-emoji")}}A&&m(w,P);const O=ra.setTime({chatType:this.chat.type,message:e});if(w.append(O),S.prepend(w),u&&e.views){if(i.classList.add("channel-post"),!(null===(h=e.fwd_from)||void 0===h?void 0:h.saved_from_msg_id)&&"pinned"!==this.chat.type){const e=document.createElement("div");e.classList.add("bubble-beside-button","forward","tgico-forward_filled"),S.prepend(e),i.classList.add("with-beside-button")}!e.pFlags.is_outgoing&&this.observer&&this.observer.observe(i,this.viewsObserverCallback)}const _=u&&e.reply_markup;if(_&&"replyInlineMarkup"===_._&&_.rows&&_.rows.length){const t=_.rows,s=document.createElement("div");s.classList.add("reply-markup"),t.forEach(t=>{const i=t.buttons;if(!i||!i.length)return;const n=document.createElement("div");n.classList.add("reply-markup-row"),i.forEach(t=>{const s=X.b.wrapRichText(t.text,{noLinks:!0,noLinebreaks:!0});let i;switch(t._){case"keyboardButtonUrl":{const e=X.b.wrapRichText(" ",{entities:[{_:"messageEntityTextUrl",length:1,offset:0,url:t.url}]});i=Object(ai.a)(e).firstElementChild,i.classList.add("is-link","tgico");break}case"keyboardButtonSwitchInline":i=document.createElement("button"),i.classList.add("is-switch-inline","tgico"),Object(l.b)(i,s=>{Object(c.a)(s);const i=e.viaBotId||e.fromId;let n;n=t.pFlags.same_peer?Promise.resolve(this.peerId):this.appInlineBotsManager.checkSwitchReturn(i).then(e=>e||new Promise((e,t)=>{new ii({[this.peerId]:[]},t=>{e(t)},!0).addEventListener("close",()=>{t()})})),n.then(e=>{const s=this.peerId===e?this.chat.threadId:void 0;this.appInlineBotsManager.switchInlineQuery(e,s,i,t.query)})});break;default:i=document.createElement("button")}i.classList.add("reply-markup-button","rp"),i.insertAdjacentHTML("beforeend",s),Object(te.a)(i),n.append(i)}),s.append(n)}),Object(l.b)(s,s=>{let i=s.target;if(i.classList.contains("reply-markup-button")||(i=Object(Pe.a)(i,"reply-markup-button")),!i||i.classList.contains("is-link")||i.classList.contains("is-switch-inline"))return;Object(c.a)(s);const n=Object(Ws.a)(i),a=t[Object(Ws.a)(i.parentElement)];if(!a.buttons||!a.buttons[n])return void this.log.warn("no such button",a,n,e);const o=a.buttons[n];this.appInlineBotsManager.callbackButtonClick(this.peerId,e.mid,o)}),k=!1,i.classList.add("with-reply-markup"),L.append(s)}const F=e.pFlags.is_outgoing;if(y){(e.pFlags.unread||F)&&this.unreadOut.add(e.mid);let t="";t=F?"is-sending":e.pFlags.unread||e.pFlags.is_scheduled?"is-sent":"is-read",i.classList.add(t)}F&&i.classList.add("is-outgoing");const j=u&&this.appMessagesManager.getMessageWithReplies(e),D=!!j&&e.mid>0;D&&i.classList.add("with-replies");const R=u&&e.fwd_from,B=u&&e.fwdFromId,N=y&&(!R||this.peerId!==a.a.myId);let U=S;const H=!(e.viaBotId||e.fromId!==a.a.myId&&e.pFlags.out);if(E){let t=document.createElement("div");t.classList.add("attachment"),M||i.classList.add("is-message-empty");let s=!1;switch(E._){case"messageMediaPhoto":{const s=E.photo;M||(k=!1),H&&i.classList.add("hide-name"),i.classList.add("photo");const n=this.appMessagesManager.groupedMessagesStorage[g];if(g&&1!==n.size&&v){i.classList.add("is-album","is-grouped"),Vs({groupId:g,attachmentDiv:t,middleware:this.getMiddleware(),isOut:y,lazyLoadQueue:this.lazyLoadQueue,chat:this.chat,loadPromises:C,autoDownload:this.chat.autoDownload});break}const a=!ae.a&&k&&!D&&!1;a&&i.classList.add("with-media-tail"),js({photo:s,message:e,container:t,withTail:a,isOut:N,lazyLoadQueue:this.lazyLoadQueue,middleware:this.getMiddleware(),loadPromises:C,autoDownloadSize:this.chat.autoDownload.photo});break}case"messageMediaWebPage":{s=!0;let t=E.webpage;if("webPage"!==t._)break;i.classList.add("webpage");let n=document.createElement("div");n.classList.add("web");let a,o,r=document.createElement("div");r.classList.add("quote");const l=t.photo;(l||t.document)&&(a=document.createElement("div"),a.classList.add("preview-resizer"),o=document.createElement("div"),o.classList.add("preview"),a.append(o));const c=t.document;if(c)if("gif"===c.type||"video"===c.type||"round"===c.type){const t="round"===c.type?b.b.active.round:b.b.active.webpage;"round"===c.type?(i.classList.add("round"),o.classList.add("is-round")):i.classList.add("video"),_s({doc:c,container:o,message:e,boxWidth:t.width,boxHeight:t.height,lazyLoadQueue:this.lazyLoadQueue,middleware:this.getMiddleware(),isOut:N,group:ec,loadPromises:C,autoDownload:this.chat.autoDownload})}else{const t=Fs({message:e,autoDownloadSize:this.chat.autoDownload.file,lazyLoadQueue:this.lazyLoadQueue,loadPromises:C,sizeType:"documentName"});o.append(t),o.classList.add("preview-with-document")}let d,h=document.createElement("div");if(h.classList.add("quote-text"),a&&h.append(a),t.site_name){const e=X.b.wrapRichText(t.url),s=Object(ai.a)(e).firstElementChild;s.classList.add("webpage-name");const i=document.createElement("strong");m(i,X.b.wrapEmojiText(t.site_name)),s.textContent="",s.append(i),h.append(s),d=s}if(t.rTitle){let e=document.createElement("div");e.classList.add("title");const s=document.createElement("strong");m(s,t.rTitle),e.append(s),h.append(e),d=e}if(t.rDescription){let e=document.createElement("div");e.classList.add("text"),m(e,t.rDescription),h.append(e),d=e}if(r.append(h),l&&!c){i.classList.add("photo");const t=l.sizes[l.sizes.length-1];let s=!1;t.w===t.h&&d?(i.classList.add("is-square-photo"),s=!0,this.appPhotosManager.setAttachmentSize(l,o,48,48,!1)):t.h>t.w&&i.classList.add("is-vertical-photo"),js({photo:l,message:e,container:o,boxWidth:s?0:b.b.active.webpage.width,boxHeight:s?0:b.b.active.webpage.height,isOut:N,lazyLoadQueue:this.lazyLoadQueue,middleware:this.getMiddleware(),loadPromises:C,withoutPreloader:s,autoDownloadSize:this.chat.autoDownload.photo})}n.append(r),w.insertBefore(n,O);break}case"messageMediaDocument":{const n=E.document;if(n.sticker){i.classList.add("sticker"),k=!1,x=!0,n.animated&&i.classList.add("sticker-animated");const e=b.b.active,s=i.classList.contains("emoji-big")?e.emojiSticker:n.animated?e.animatedSticker:e.staticSticker;this.appPhotosManager.setAttachmentSize(n,t,s.width,s.height),S.style.minWidth=t.style.width,S.style.minHeight=t.style.height,Bs({doc:n,div:t,middleware:this.getMiddleware(),lazyLoadQueue:this.lazyLoadQueue,group:ec,play:!0,loop:!0,emoji:i.classList.contains("emoji-big")?M:void 0,withThumb:!0,loadPromises:C})}else if("video"===n.type||"gif"===n.type||"round"===n.type){const s="round"===n.type;s&&(x=!0),!s&&M||(k=!1),H&&i.classList.add("hide-name"),i.classList.add(s?"round":"video");const a=this.appMessagesManager.groupedMessagesStorage[g];if(g&&1!==a.size&&v)i.classList.add("is-album","is-grouped"),Vs({groupId:g,attachmentDiv:t,middleware:this.getMiddleware(),isOut:y,lazyLoadQueue:this.lazyLoadQueue,chat:this.chat,loadPromises:C,autoDownload:this.chat.autoDownload});else{const a=!ae.a&&!ae.b&&!s&&k&&!D&&!1;a&&i.classList.add("with-media-tail"),_s({doc:n,container:t,message:e,boxWidth:b.b.active.regular.width,boxHeight:b.b.active.regular.height,withTail:a,isOut:N,lazyLoadQueue:this.lazyLoadQueue,middleware:this.getMiddleware(),group:ec,loadPromises:C,autoDownload:this.chat.autoDownload,searchContext:s?{peerId:this.peerId,inputFilter:{_:"inputMessagesFilterRoundVoice"},threadId:this.chat.threadId,useSearch:!e.pFlags.is_scheduled,isScheduled:e.pFlags.is_scheduled}:void 0})}}else{const t=function({albumMustBeRenderedFull:e,message:t,bubble:s,messageDiv:i,chat:n,loadPromises:a,autoDownloadSize:o,lazyLoadQueue:r,searchContext:l,useSearch:c,sizeType:d}){let h;const p=e?n.getMidsByMid(t.mid):[t.mid];return p.forEach((e,t)=>{const s=n.getMessage(e),c=Fs({message:s,loadPromises:a,autoDownloadSize:o,lazyLoadQueue:r,searchContext:l,sizeType:d}),u=document.createElement("div");u.classList.add("document-container"),u.dataset.mid=""+e,u.dataset.peerId=""+s.peerId;const g=document.createElement("div");if(g.classList.add("document-wrapper"),s.message){const e=document.createElement("div");e.classList.add("document-message");const t=X.b.wrapRichText(s.message,{entities:s.totalEntities});e.innerHTML=t,g.append(e)}if(p.length>1){const e=document.createElement("div");e.classList.add("document-selection"),u.append(e),u.classList.add("grouped-item"),0===t&&(h=g)}g.append(c),u.append(g),i.append(u)}),p.length>1&&s.classList.add("is-multiple-documents","is-grouped"),h}({albumMustBeRenderedFull:v,message:e,bubble:i,messageDiv:w,chat:this.chat,loadPromises:C,autoDownloadSize:this.chat.autoDownload.file,lazyLoadQueue:this.lazyLoadQueue,searchContext:"voice"===n.type||"audio"===n.type?{peerId:this.peerId,inputFilter:{_:"voice"===n.type?"inputMessagesFilterRoundVoice":"inputMessagesFilterMusic"},threadId:this.chat.threadId,useSearch:!e.pFlags.is_scheduled,isScheduled:e.pFlags.is_scheduled}:void 0,sizeType:"documentName"});t&&(U=t);const a=w.lastElementChild.querySelector(".document-message, .document-size, .audio");a&&a.append(O),i.classList.remove("is-message-empty"),w.classList.add((["photo","pdf"].includes(n.type)?"document":n.type||"document")+"-message"),s=!0}break}case"messageMediaCall":{const e=E.action,t=document.createElement("div");t.classList.add("bubble-call",e.pFlags.video?"tgico-videocamera":"tgico-phone");const n=e.pFlags.video?"video":"voice";t.dataset.type=n;const a=document.createElement("div");a.classList.add("bubble-call-title"),Object(T.b)(a,N?e.pFlags.video?"CallMessageVideoOutgoing":"CallMessageOutgoing":e.pFlags.video?"CallMessageVideoIncoming":"CallMessageIncoming");const o=document.createElement("div");if(o.classList.add("bubble-call-subtitle"),void 0!==e.duration)o.append(Object(qa.a)(e.duration));else{let t;switch(e.reason._){case"phoneCallDiscardReasonBusy":t="Call.StatusBusy";break;case"phoneCallDiscardReasonMissed":t="Chat.Service.Call.Missed";break;default:t="Chat.Service.Call.Cancelled"}o.classList.add("is-reason"),Object(T.b)(o,t)}o.classList.add("tgico","arrow-"+(void 0!==e.duration?"green":"red")),t.append(a,o),s=!0,i.classList.remove("is-message-empty"),w.classList.add("call-message"),w.append(t);break}case"messageMediaContact":{const e=E,t=document.createElement("div");t.classList.add("contact"),t.dataset.peerId=""+e.user_id,s=!0;const n=[];e.first_name&&n.push(X.b.wrapEmojiText(e.first_name)),e.last_name&&n.push(X.b.wrapEmojiText(e.last_name)),t.innerHTML=`\n \n ${n.join(" ")}\n ${e.phone_number?"+"+Object(ti.a)(e.phone_number).formatted:"Unknown phone number"}\n `;const a=new bc;a.updateWithOptions({lazyLoadQueue:this.lazyLoadQueue,peerId:e.user_id.toPeerId()}),a.classList.add("contact-avatar","avatar-54"),t.prepend(a),i.classList.remove("is-message-empty"),w.classList.add("contact-message"),w.append(t);break}case"messageMediaPoll":{i.classList.remove("is-message-empty");const t=function(e){const t=new ws;return t.message=e,t.setAttribute("peer-id",""+e.peerId),t.setAttribute("poll-id",e.media.poll.id),t.setAttribute("message-id",""+e.mid),t.render(),t}(e);w.prepend(t),w.classList.add("poll-message");break}default:i.classList.remove("is-message-empty"),w.append(Object(T.d)(T.a),O),this.log.warn("unrecognized media type:",E._,e)}s||S.append(t)}x&&i.classList.add("just-media"),this.chat.selection.isSelecting&&this.chat.selection.toggleElementCheckbox(i,!0);let z="";const V=e.fromId!==a.a.myId&&this.appPeersManager.isAnyGroup(f)||e.viaBotId||e.pFlags.sponsored;if(V||R||e.reply_to_mid){let t,s;const n=e.from_id&&"peerChannel"===e.from_id._&&e.fromId===B;let o,r=R&&!R.from_id;if(e.viaBotId&&(s=document.createElement("span"),s.innerText="@"+this.appUsersManager.getUser(e.viaBotId).username,s.classList.add("peer-title"),i.classList.add("must-have-name")),r?(t=document.createElement("span"),t.innerHTML=X.b.wrapEmojiText(R.from_name),t.classList.add("peer-title"),i.classList.add("hidden-profile")):t=new Tt.a({peerId:B||e.fromId}).element,e.reply_to_mid&&e.reply_to_mid!==this.chat.threadId&&u&&ra.setReply({chat:this.chat,bubble:i,bubbleContainer:S,message:e}),B||R)if(this.peerId===a.a.myId||n||i.classList.add("forwarded"),e.savedFrom&&(z=e.savedFrom,t.dataset.savedFrom=z),o=document.createElement("div"),t.dataset.peerId=""+B,this.peerId!==a.a.myId&&this.peerId!==Ne.d&&!n||x){const e=[t];x&&e.unshift(document.createElement("br")),o.append(Object(T.d)("ForwardedFrom",[e]))}else o.style.color=this.appPeersManager.getPeerColorById(B,!1),o.append(t);else if(!e.viaBotId)if(!x&&V){o=document.createElement("div"),o.append(t);const s=null===(p=this.appPeersManager.getPeer(e.fromId))||void 0===p?void 0:p.pFlags;s&&(s.scam||s.fake)&&o.append(Jt(s.scam)),y||(o.style.color=this.appPeersManager.getPeerColorById(e.fromId,!1)),o.dataset.peerId=""+e.fromId}else i.classList.add("hide-name");if(e.viaBotId){o?o.append(" "):o=document.createElement("div");const e=document.createElement("span");e.append(Object(T.d)("ViaBot")," ",s),e.classList.add("is-via"),o.append(e)}o&&(o.classList.add("name"),U.append(o));if(this.chat.isAnyGroup()&&!N){let t=new bc;t.classList.add("user-avatar","avatar-40"),t.updateWithOptions({lazyLoadQueue:this.lazyLoadQueue,peerId:(R&&(this.peerId===a.a.myId||this.peerId===Ne.d)||n?B:e.fromId)||Ne.c,peerTitle:!B&&R&&R.from_name?R.from_name:void 0,loadPromises:C}),L.append(t)}}else i.classList.add("hide-name");"pinned"===this.chat.type&&(z=`${this.chat.peerId}_${e.mid}`);if(j&&j.mid===this.chat.threadId&&i.classList.add("is-thread-starter","is-group-last"),z&&("pinned"===this.chat.type||R.saved_from_msg_id)&&this.peerId!==Ne.d){const e=document.createElement("div");e.classList.add("bubble-beside-button","goto-original","tgico-arrow_next"),S.append(e),i.dataset.savedFrom=z,i.classList.add("with-beside-button")}if(i.classList.add(N?"is-out":"is-in"),n&&this.renderMessagesQueue(e,i,t,C),D){ra.renderReplies({bubble:i,bubbleContainer:S,message:j,messageDiv:w,loadPromises:C,lazyLoadQueue:this.lazyLoadQueue})&&(k=!0)}return u&&this.appendReactionsElementToBubble(i,e),k&&(i.classList.add("can-have-tail"),S.append(lo())),i}appendReactionsElementToBubble(e,t,s){if(this.peerId.isUser())return;const i=this.appMessagesManager.getGroupsFirstMessage(t);if(!i.reactions||!i.reactions.results.length)return;const n=new ia;if(n.init(i,"block"),n.render(s),e.classList.contains("is-message-empty"))e.querySelector(".bubble-content-wrapper").append(n);else{const s=e.querySelector(".message");if(e.classList.contains("is-multiple-documents")){const e=s.lastElementChild;let i=e.querySelector(".document-message"),a=i&&i.querySelector(".time");a||(a=ra.setTime({chatType:this.chat.type,message:t})),n.append(a),i||(i=document.createElement("div"),i.classList.add("document-message"),e.querySelector(".document-wrapper").prepend(i)),i.append(n)}else{const t=Array.from(e.querySelectorAll(".time")).pop();n.append(t),s.append(n)}}}safeRenderMessage(e,t,s,i,n){try{return this.renderMessage(e,t,s,i,n)}catch(e){this.log.error("renderMessage error:",e)}}performHistoryResult(e,t,s,i){return so(this,void 0,void 0,(function*(){let s,n;e=e.slice(),i&&e.unshift(i),this.messagesQueueOnRender=()=>{if(s=new eo(this.scrollable,t),this.getRenderedLength()&&!this.chat.setPeerPromise){const e=this.getViewportSlice();this.deleteViewportSlice(e,!0)}s.save();const e=s.getSaved();n=e.scrollHeight!==e.clientHeight},this.needReflowScroll&&(ha(this.scrollable.container),this.needReflowScroll=!1);const a=e=>{const s="number"==typeof e?this.chat.getMessage(e):e;s.pFlags.local?this.processLocalMessageRender(s):this.safeRenderMessage(s,t,!0)},o=e.length;if(t)for(let t=0;t=0;--t)a(e[t]);if("scheduled"!==this.chat.type){const t=this.appMessagesManager.getHistoryStorage(this.peerId,this.chat.threadId),s=t.history.first,i=t.history.last;!s.isEnd(ca.a.Bottom)||s.length&&!e.includes(s[0])||this.setLoaded("bottom",!0,!1),!i.isEnd(ca.a.Top)||i.length&&!e.includes(i[i.length-1])||this.setLoaded("top",!0,!1)}else this.setLoaded("top",!0),this.setLoaded("bottom",!0);if(yield this.messagesQueuePromise,this.scrollable.loadedAll.top&&this.messagesQueueOnRenderAdditional&&(this.messagesQueueOnRenderAdditional(),this.messagesQueueOnRenderAdditional&&this.messagesQueueOnRenderAdditional()),s){s.restore(!(1===e.length&&!t));const i="has-sticky-dates",n=s.getSaved(),a=!this.preloader.detached;if(!(n.scrollHeight!==n.clientHeight)&&!a||this.bubblesContainer.classList.contains(i))this.willScrollOnLoad=void 0;else{const e=this.getMiddleware(),t=()=>{e()&&this.bubblesContainer.classList.add(i)};this.willScrollOnLoad?t():setTimeout(t,600)}}return!0}))}requestHistory(e,t,s){if("chat"===this.chat.type||"discussion"===this.chat.type)return this.appMessagesManager.getHistory(this.peerId,e,t,s,this.chat.threadId);if("pinned"===this.chat.type){return this.appMessagesManager.getSearch({peerId:this.peerId,inputFilter:{_:"inputMessagesFilterPinned"},maxId:e,limit:t,backLimit:s}).then(e=>({history:e.history.map(e=>e.mid)}))}return"scheduled"===this.chat.type?this.appMessagesManager.getScheduledMessages(this.peerId).then(e=>({history:e.slice().reverse()})):void 0}animateAsLadder(e,t,s,i,n){return so(this,void 0,void 0,(function*(){if(this.chat.setPeerPromise&&!this.resolveLadderAnimation)return void(this.resolveLadderAnimation=this.animateAsLadder.bind(this,e,t,s,i,n));if(!Object.keys(this.bubbles).length)return;let a,o=Object(gi.a)(this.bubbles,"desc");s&&t.length&&(o=o.filter(e=>!t.includes(e))),a=i?n||Math.max(...o):e||Math.max(...o);const r=o.slice(o.findIndex(e=>a>e)),l=s?[]:[a],c=s?[]:o.slice(0,o.findIndex(e=>a>=e)).reverse();le.b&&this.log("getHistory: targeting mid:",a,n,e,r.map(e=>this.appMessagesIdsManager.getServerMessageId(e)),c.map(e=>this.appMessagesIdsManager.getServerMessageId(e)));const d=[];this.chatInner.classList.add("zoom-fading");const h=s?10:40,p=s?0:1,u=(e,t=0)=>{const s=Object(ie.a)();let i=0;return e.forEach((n,a)=>{if(!this.bubbles[n]||this.skippedMids.has(n))return void this.log.warn("animateAsLadder: no bubble by mid:",n);const o=this.bubbles[n].lastElementChild;if(i=(a+t||.1)*h,o.classList.add("zoom-fade"),o.style.transitionDelay=i+"ms",a===e.length-1){const e=t=>{t.target===o&&(s.resolve(),o.removeEventListener("transitionend",e))};o.addEventListener("transitionend",e)}d.push(o)}),e.length||s.resolve(),{lastMsDelay:i,animationPromise:s}},g=u(r,p),m=u(l),b=u(c,p),v=[g.animationPromise,m.animationPromise,b.animationPromise],f=[g.lastMsDelay,m.lastMsDelay,b.lastMsDelay];let y;return this.onAnimateLadder&&(yield this.onAnimateLadder()),Object(Re.b)(()=>{this.setStickyDateManually(),d.forEach(e=>{e.classList.remove("zoom-fade")})}),(r.length||l.length||c.length)&&(y=Promise.all(v),Object(Ks.b)(y,Math.max(...f)+200).then(()=>{Object(Re.b)(()=>{d.forEach(e=>{e.style.transitionDelay=""}),this.chatInner.classList.remove("zoom-fading")})})),y}))}renderEmptyPlaceholder(e,t,s,i){const n="empty-bubble-placeholder";let a,o;if(t.classList.add(n,n+"-"+e),"group"===e?a=Object(T.d)("GroupEmptyTitle1"):"saved"===e?a=Object(T.d)("ChatYourSelfTitle"):"noMessages"===e||"greeting"===e?a=Object(T.d)("NoMessages"):"noScheduledMessages"===e?a=Object(T.d)("NoScheduledMessages"):"restricted"===e&&(a=document.createElement("span"),a.innerText=this.appPeersManager.getRestrictionReasonText(this.peerId)),a.classList.add("center",n+"-title"),i.push(a),"group"===e)i.push(Object(T.d)("GroupEmptyTitle2")),o=[Object(T.d)("GroupDescription1"),Object(T.d)("GroupDescription2"),Object(T.d)("GroupDescription3"),Object(T.d)("GroupDescription4")];else if("saved"===e)o=[Object(T.d)("ChatYourSelfDescription1"),Object(T.d)("ChatYourSelfDescription2"),Object(T.d)("ChatYourSelfDescription3"),Object(T.d)("ChatYourSelfDescription4")];else if("greeting"===e){const e=Object(T.d)("NoMessagesGreetingsDescription");e.classList.add("center",n+"-subtitle"),Object(Ot.a)(this.messagesQueue,e=>e.bubble===t);const a=document.createElement("div");a.classList.add(n+"-sticker");const o=this.getMiddleware(),r=this.appStickersManager.getGreetingSticker().then(e=>{if(!o())return;const t=[];return Bs({doc:e,div:a,middleware:o,lazyLoadQueue:this.lazyLoadQueue,group:ec,play:!0,loop:!0,withThumb:!0,loadPromises:t}),Object(l.b)(a,e=>{Object(c.a)(e),Ka.onMediaClick({target:e.target})}),Promise.all(t)});this.renderMessagesQueue(s,t,!1,[r]),i.push(e,a)}o&&(i.push(...o.map(e=>{const t=document.createElement("span");return t.classList.add(n+"-list-item"),t.append(e),t})),"group"===e?o.forEach(e=>{const t=document.createElement("span");t.classList.add("tgico-check"),e.prepend(t)}):"saved"===e&&o.forEach(e=>{const t=document.createElement("span");t.classList.add(n+"-list-bullet"),t.innerText="•",e.prepend(t)})),i.length>1&&t.classList.add("has-description"),i.forEach(e=>e.classList.add(n+"-line"))}processLocalMessageRender(e){const t=!!e.pFlags.sponsored,s=this.safeRenderMessage(e,void 0,void 0,void 0,t);s.classList.add("is-group-last","is-group-first"),t||(s.classList.add("bubble-first"),s.classList.remove("can-have-tail","is-in"));const i=[],n=this.appPeersManager.isBot(this.peerId);if(this.chat.isRestricted)this.renderEmptyPlaceholder("restricted",s,e,i);else{if(t){let t,i,n,o;s.classList.add("avoid-selection");const r=this.sponsoredMessage=e.sponsoredMessage,c=this.appPeersManager.getPeerId(r.from_id);r.channel_post?(t="OpenChannelPost",i=this.appMessagesIdsManager.generateMessageId(r.channel_post)):r.start_param||this.appUsersManager.isBot(c.toUserId())?(t="Chat.Message.ViewBot",n=r.start_param):t=this.appPeersManager.isAnyGroup(c)?"Chat.Message.ViewGroup":"Chat.Message.ViewChannel",o=r.chat_invite?()=>{new Za(r.chat_invite_hash,r.chat_invite).show()}:r.chat_invite_hash?()=>{const e={_:Xa.JOIN_CHAT,invite:r.chat_invite_hash};this.chat.appImManager.processInternalLink(e)}:()=>{a.a.dispatchEvent("history_focus",{peerId:c,mid:i,startParam:n})};const d=Object(B.a)("btn-primary btn-primary-transparent bubble-view-button",{text:t});return this.observer.observe(d,this.viewsObserverCallback),o&&Object(l.b)(d,o),void s.querySelector(".bubble-content").prepend(d)}if(n&&"message"===e._){const e=document.createElement("b");e.append(Object(T.d)("BotInfoTitle")),i.push(e,"\n\n")}else this.appPeersManager.isAnyGroup(this.peerId)&&this.appPeersManager.getPeer(this.peerId).pFlags.creator?this.renderEmptyPlaceholder("group",s,e,i):"scheduled"===this.chat.type?this.renderEmptyPlaceholder("noScheduledMessages",s,e,i):a.a.myId===this.peerId?this.renderEmptyPlaceholder("saved",s,e,i):this.appPeersManager.isUser(this.peerId)&&!n&&this.chat.canSend()&&"chat"===this.chat.type?this.renderEmptyPlaceholder("greeting",s,e,i):this.renderEmptyPlaceholder("noMessages",s,e,i)}if(i.length){s.querySelector(".message, .service-msg").prepend(...i)}const o=t?"append":"prepend";this.messagesQueueOnRenderAdditional?this.onAnimateLadder=()=>{if(this.chatInner[o](s),this.onAnimateLadder=void 0,!this.messagesQueuePromise)return Object(Re.d)()}:this.chatInner[o](s),this.emptyPlaceholderMid=e.mid}generateLocalMessageId(e=0){let t=("scheduled"===this.chat.type?-1:0)+e;const s=-Math.abs(t);return{id:s,mid:-Math.abs(this.appMessagesIdsManager.generateMessageId(s))}}generateLocalFirstMessage(e,t,s=0){const{id:i,mid:n}=this.generateLocalMessageId(s),a={_:e?"messageService":"message",date:0,id:i,mid:n,peer_id:this.appPeersManager.getOutputPeer(this.peerId),pFlags:{local:!0}};return e||(a.message=""),Object(ks.a)(a),t&&t(a),this.appMessagesManager.saveMessages([a],{storage:new Map}),a.mid=n,a}getViewportSlice(){return function({overflowElement:e,selector:t,extraSize:s}){const i=e.getBoundingClientRect(),n=Array.from(e.querySelectorAll(t)),a=[],o=[],r=[];let l=!1;for(const t of n){const s=t.getBoundingClientRect(),n=Ya(t,e,!1,s,i);let c;!!n?(l=!0,c=o):c=l?r:a,c.push({element:t,rect:s,visibleRect:n})}if(s&&o.length){const e=o[0].rect.top-s,t=o[o.length-1].rect.bottom+s;for(let t=a.length-1;t>=0;--t){const s=a[t];s.rect.top>=e&&(a.splice(t,1),o.unshift(s))}for(let e=0,s=r.length;e+e.dataset.mid);let o;!!s.length==!!i.length||t||(o=new eo(this.scrollable,!!s.length),o.save()),this.deleteMessagesByIds(a,!1,!0),o?o.restore():s.length&&(this.scrollable.lastScrollPosition=this.scrollable.scrollTop)}sliceViewport(e){if(ae.g||this.isHeavyAnimationInProgress&&!e)return;const t=this.getViewportSlice();this.deleteViewportSlice(t)}setLoaded(e,t,s=!0){if(this.scrollable.loadedAll[e]!==t){if(this.scrollable.loadedAll[e]=t,"bottom"===e&&this.appPeersManager.isBroadcast(this.peerId)&&!this.chat.isRestricted){const{mid:e}=this.generateLocalMessageId(1);if(t){const t=this.getMiddleware(()=>this.scrollable.loadedAll.bottom&&!this.bubbles[e]&&this.getSponsoredMessagePromise===s),s=this.getSponsoredMessagePromise=this.chat.apiManager.invokeApiCacheable("channels.getSponsoredMessages",{channel:this.appChatsManager.getChannelInput(this.peerId.toChatId())},{cacheSeconds:300}).then(e=>{if(!t())return;this.appUsersManager.saveApiUsers(e.users),this.appChatsManager.saveApiChats(e.chats);const s=e.messages.shift();if(!s)return;e.messages.push(s);const i=this.generateLocalFirstMessage(!1,e=>{e.message=s.message,e.from_id=s.from_id,e.entities=s.entities,e.pFlags.sponsored=!0,e.sponsoredMessage=s},1);return Promise.all([this.getHistoryTopPromise,this.messagesQueuePromise]).then(()=>{if(!t())return;this.performHistoryResult([i],!1,!0)})}).finally(()=>{this.getSponsoredMessagePromise=void 0})}else this.deleteMessagesByIds([e]),this.getSponsoredMessagePromise=void 0}if("top"===e&&t&&this.appPeersManager.isBot(this.peerId)&&!this.chat.isRestricted){this.log("inject bot description");const e=this.getMiddleware();return Promise.resolve(this.appProfileManager.getProfile(this.peerId.toUserId())).then(t=>{var s;if(!e())return;if(!(null===(s=t.bot_info)||void 0===s?void 0:s.description))return void this.checkIfEmptyPlaceholderNeeded();const i=this.generateLocalFirstMessage(!1,e=>{e.message=t.bot_info.description});this.processLocalMessageRender(i)})}this.checkIfEmptyPlaceholderNeeded()}}checkIfEmptyPlaceholderNeeded(){if(this.scrollable.loadedAll.top&&this.scrollable.loadedAll.bottom&&void 0===this.emptyPlaceholderMid&&(this.chat.isRestricted||!this.appMessagesManager.getHistoryStorage(this.peerId).count||Object.keys(this.bubbles).length&&!this.getRenderedLength()||"scheduled"===this.chat.type&&!Object.keys(this.bubbles).length)){this.log("inject empty peer placeholder");const e=this.generateLocalFirstMessage(!0);return this.processLocalMessageRender(e),!0}return!1}getHistory(e=0,t=!1,s=!1,i=0,n=!1){const o=this.peerId,r=this.appPeersManager.isBroadcast(o),l=Math.min(30,xt.a.height/40|0);let c=r?20:Object.keys(this.bubbles).length>0?Math.max(35,l):l;if(void 0!==ao){if(!ao)return{cached:!1,promise:Promise.resolve(!0)};Object.keys(this.bubbles).length>0&&--ao}let d,h=0;if(s&&(h=c,t||(c=0)),i&&!s)if("pinned"===this.chat.type)d=[i];else{const t=this.appMessagesManager.getHistoryStorage(o,this.chat.threadId).history.slice;if(t.length=0;--e){if(!this.chat.getMessage(d[e]).grouped_id)break;d.splice(e,1)}e=d[d.length-1]||e}}let p,u=this.requestHistory(e,c,h);const g=(null==d?void 0:d.length)&&u instanceof Promise,m=this.isFirstLoad&&h&&u instanceof Promise||g;g&&(p=u,u={history:d}),this.isFirstLoad=!1;const b=e=>so(this,void 0,void 0,(function*(){if("offsetIdOffset"in e&&e.history.isEnd(ca.a.Top)){if("discussion"===this.chat.type){const t=this.appMessagesManager.threadsServiceMessagesIdsStorage[this.peerId+"_"+this.chat.threadId];t&&e.history.push(t),e.history.push(...this.chat.getMidsByMid(this.chat.threadId).reverse())}yield this.setLoaded("top",!0)}})),v=e=>Object(Ks.c)().then(()=>b(e)).then(()=>this.performHistoryResult(e.history||[],t,s,!g&&i)),f=e=>{const s=e.then(e=>(t?this.getHistoryTopPromise!==s:this.getHistoryBottomPromise!==s)?(this.log.warn("getHistory: peer changed"),Promise.reject()):n?(this.scrollable.onScroll(),!0):v(e),e=>{throw this.log.error("getHistory error:",e),e});return s};let y,w;if(u instanceof Promise)w=!1,y=f(u);else{if(n)return this.scrollable.onScroll(),null;w=!0,y=v(u)}const S=g?f(p):y;if(m&&a.a.settings.animationsEnabled){let s=g?2:1;this.messagesQueueOnRenderAdditional=()=>{if(this.log("ship went past rocks of magnets"),--s)return;this.messagesQueueOnRenderAdditional=void 0;this.animateAsLadder(i,d,g,h,e).then(()=>{setTimeout(()=>{this.loadMoreHistory(t,!0)},0)})}}else this.messagesQueueOnRenderAdditional=void 0;return t?this.getHistoryTopPromise=S:this.getHistoryBottomPromise=S,S.then(()=>{t?this.getHistoryTopPromise=void 0:this.getHistoryBottomPromise=void 0}),n?null:(y.then(()=>{"chat"===this.chat.type&&setTimeout(()=>{t?this.loadMoreHistory(!0,!0):this.loadMoreHistory(!1,!0)},0)}),{cached:w,promise:y})}setUnreadDelimiter(){if("chat"!==this.chat.type&&"discussion"!==this.chat.type)return;if(this.attachedUnreadBubble)return;const e=this.appMessagesManager.getHistoryStorage(this.peerId,this.chat.threadId);let t=this.appMessagesManager.getReadMaxIdIfUnread(this.peerId,this.chat.threadId);if(t&&(t=Object.keys(this.bubbles).filter(e=>!this.bubbles[e].classList.contains("is-out")).map(e=>+e).sort((e,t)=>e-t).find(e=>e>t),t&&this.bubbles[t])){let s=this.bubbles[t];this.firstUnreadBubble&&this.firstUnreadBubble!==s&&(this.firstUnreadBubble.classList.remove("is-first-unread"),this.firstUnreadBubble=null),t!==e.maxId&&s.classList.add("is-first-unread"),this.firstUnreadBubble=s,this.attachedUnreadBubble=!0}}deleteEmptyDateGroups(){const e=this.stickyIntersector?3:1;let t=!1;for(const s in this.dateMessages){const i=this.dateMessages[s];i.container.childElementCount===e&&(i.container.remove(),this.stickyIntersector&&this.stickyIntersector.unobserve(i.container,i.div),delete this.dateMessages[s],t=!0)}t&&(this.checkIfEmptyPlaceholderNeeded(),this.setStickyDateManually())}}function lo(){const e=document.createElementNS("http://www.w3.org/2000/svg","svg");e.setAttributeNS(null,"viewBox","0 0 11 20"),e.setAttributeNS(null,"width","11"),e.setAttributeNS(null,"height","20"),e.classList.add("bubble-tail");const t=document.createElementNS("http://www.w3.org/2000/svg","use");return t.setAttributeNS(null,"href","#message-tail-filled"),e.append(t),e}class co{constructor(e,t,s,n){var r;let l,c,d,h=[],p=[];const u=o.a.canPinMessage(e),g=(a,o,r)=>{setTimeout(()=>{let a;a=s&&!t?u?i.a.unpinAllMessages(e):i.a.hidePinnedMessages(e):i.a.updatePinnedMessage(e,t,s,r,o),n&&a.then(n)},300)};if(s){let s="UnpinMessage";t?(l="UnpinMessageAlertTitle",c="Chat.Confirm.Unpin"):u?(l="Popup.Unpin.AllTitle",c="Chat.UnpinAllMessagesConfirmation",d=[""+((null===(r=i.a.pinnedMessages[e])||void 0===r?void 0:r.count)||1)]):(l="Popup.Unpin.HideTitle",c="Popup.Unpin.HideDescription",s="Popup.Unpin.Hide"),h.push({langKey:s,isDanger:!0,callback:g})}else{l="PinMessageAlertTitle";const t="PinMessage";e.isAnyChat()?(h.push({langKey:t,callback:e=>g(0,!1,!e.size)}),G.a.isBroadcast(e.toChatId())?c="PinMessageAlertChannel":(c="PinMessageAlert",p.push({text:"PinNotify",checked:!0}))):(c="PinMessageAlertChat",e===a.a.myId?h.push({langKey:t,callback:g}):(h.push({langKey:t,callback:e=>g(0,!e.size)}),p.push({text:"PinAlsoFor",textArgs:[new Tt.a({peerId:e}).element],checked:!0})))}Object(wt.a)(h);new Lt("popup-delete-chat",{peerId:e,titleLangKey:l,descriptionLangKey:c,descriptionLangArgs:d,buttons:h,checkboxes:p}).show()}}function ho(e=window.getSelection()){if(!e||!e.rangeCount)return!0;const t=e.getRangeAt(0);return!t.toString()||!t.START_TO_END}class po extends Lt{constructor(e,t,s,n){super("popup-report-messages-confirm",{noTitle:!0,descriptionLangKey:"ReportInfo",buttons:[{langKey:"ReportChat",callback:()=>{o.isValid()&&(n&&n(),i.a.reportMessages(e,t,s,o.value).then(e=>{e&&bt({langPackKey:"ReportSentInfo"})}))}}],body:!0});const a=document.createElement("div");Bs({doc:Cs.a.getAnimatedEmojiSticker(po.STICKER_EMOJI),div:a,emoji:po.STICKER_EMOJI,width:100,height:100,loop:!1,play:!0}).finally(()=>{this.show()}),this.header.append(a);const o=new O.b({label:"ReportHint",maxLength:512,placeholder:"ReportChatDescription"});o.input.addEventListener("input",()=>{this.buttons[0].element.toggleAttribute("disabled",!o.isValid())}),this.body.append(o.container)}}po.STICKER_EMOJI="👮♀️";class uo extends Lt{constructor(e,t,s){super("popup-report-messages",{titleLangKey:"ChatTitle.ReportMessages",buttons:[],body:!0}),t=t.slice();const i=[["ReportChatSpam","inputReportReasonSpam"],["ReportChatViolence","inputReportReasonViolence"],["ReportChatChild","inputReportReasonChildAbuse"],["ReportChatPornography","inputReportReasonPornography"],["ReportChatOther","inputReportReasonOther"],["ReportChatPersonalDetails","inputReportReasonPersonalDetails"],["ReportChatIllegalDrugs","inputReportReasonIllegalDrugs"]];i.forEach(e=>{const t=Object(B.a)("btn-primary btn-transparent",{text:e[0]});this.body.append(t)});const n=Cs.a.preloadAnimatedEmojiSticker(po.STICKER_EMOJI);Object(l.b)(this.body,a=>{const o=Object(Pe.a)(a.target,"btn-primary"),r=i[Object(Ws.a)(o)][1];n.then(()=>{this.hide(),new po(e,t,r,s)})},{listenerSetter:this.listenerSetter}),this.body.style.margin="0 -1rem",this.buttonsEl.style.marginTop=".5rem",this.show()}}class go extends Lt{constructor(){super("popup-sponsored",{titleLangKey:"Chat.Message.Sponsored.What",descriptionLangKey:"Chat.Message.Ad.Text",descriptionLangArgs:[Object(T.d)("Chat.Message.Sponsored.Link")],buttons:[{langKey:"OK",isCancel:!0},{langKey:"Chat.Message.Ad.ReadMore",callback:()=>{window.open(T.c.format("Chat.Message.Sponsored.Link",!0))},isCancel:!0}]});const e=new P.b(void 0);e.onAdditionalScroll=()=>{e.container.classList.toggle("scrolled-top",!e.scrollTop),e.container.classList.toggle("scrolled-bottom",e.isScrolledDown)},this.description.replaceWith(e.container),e.container.append(this.description),e.container.classList.add("scrolled-top"),this.show()}}var mo=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class bo extends wt.b{constructor(e,t){super("popup-reacted-list",null,{closable:!0,overlayClosable:!0,body:!0}),this.appMessagesManager=e,this.message=t,this.init()}init(){return mo(this,void 0,void 0,(function*(){const e=this.appMessagesManager.getGroupsFirstMessage(this.message),t=this.appMessagesManager.canViewMessageReadParticipants(e),s=new ia,i=Object.assign(Object.assign({},e),{mid:0,id:0,reactions:Object.assign(Object.assign({_:"messageReactions",results:[]},e.reactions),{pFlags:{},recent_reactions:[]})});i.reactions.results=i.reactions.results.map(e=>Object.assign(Object.assign({},e),{pFlags:{}})),s.init(i,"block"),s.render(),s.classList.add("no-stripe"),s.classList.remove("has-no-reactions"),s.append(this.btnClose),this.header.append(s);const n=document.createElement("div");n.classList.add("tabs-container"),n.dataset.animation="tabs";const a=new Map;let o=!1;if(i.reactions.results.length){const e=this.createFakeReaction("reactions",i.reactions.results.reduce((e,t)=>e+t.count,0));s.prepend(e),i.reactions.results.unshift(e.reactionCount),o=!0}let r=!1;if(t)try{const t=yield this.appMessagesManager.getMessageReadParticipants(e.peerId,e.mid);if(!t.length)throw"";const n=this.createFakeReaction("checks",t.length);s.prepend(n),i.reactions.results.unshift(n.reactionCount),r=!0}catch(e){}i.reactions.results.forEach(t=>{const s=new P.b(void 0);s.container.classList.add("tabs-tab");const i=new Wn({noShadow:!0,noDelimiter:!0}),o=Oc.createChatList({dialogSize:72});Oc.setListClickListener(o,()=>{this.hide()},void 0,!1,!0),i.content.append(o),s.container.append(i.container);const r="checks"!==t.reaction,l="checks"===t.reaction;let c;["checks","reactions"].includes(t.reaction)&&(t.reaction=void 0);const d=new Et({scrollable:s,getPromise:()=>mo(this,void 0,void 0,(function*(){const s=yield this.appMessagesManager.getMessageReactionsListAndReadParticipants(e,void 0,t.reaction,c,r,l);return c=s.nextOffset,s.combined.forEach(({peerId:e,reaction:t})=>{const{dom:s}=Oc.addDialogNew({dialog:e,autonomous:!0,container:o,avatarSize:54,rippleEnabled:!1,meAsSaved:!1,drawStatus:!1});if(t){const e=document.createElement("div");e.classList.add("reacted-list-reaction-icon");Bs({doc:zt.a.getReactionCached(t).static_icon,div:e,width:24,height:24}),s.listEl.append(e)}Object(k.a)(s.lastMessageSpan,E.a.getUserStatusString(e.toUserId()))}),!c}))});a.set(s.container,d),n.append(s.container)}),this.body.append(n);const l=Object(J.a)(s,n,(e,t)=>{if(e===s.childElementCount-1)return!1;const i=s.children[e],n=l.prevId();-1!==n&&s.children[n].setIsChosen(!1),i.setIsChosen(!0);a.get(t).load()});l(0,!1),this.show()}))}createFakeReaction(e,t){const s=new ta;s.init("block"),s.reactionCount={_:"reactionCount",count:t,reaction:e},s.setCanRenderAvatars(!1),s.renderCounter();const i=document.createElement("div");return i.classList.add("reaction-counter","reaction-sticker-icon","tgico-"+e),s.prepend(i),s}}const vo="btn-menu-reactions-reaction",fo=!ae.g;class yo{constructor(e,t,s){this.appReactionsManager=e,this.type=t,this.onScroll=()=>{this.reactionsMap.forEach((e,t)=>{this.onScrollProcessItem(t,e)})},this.onMouseMove=e=>{var t;const s=Object(Pe.a)(e.target,vo);if(!s)return;const i=this.reactionsMap.get(s);if(!i)return;if(!(null===(t=i.appear)||void 0===t?void 0:t.paused))return;const n=i.select;n&&n.paused&&(n.autoplay=!0,n.restart())};const i=this.widthContainer=document.createElement("div");i.classList.add("btn-menu-reactions-container"),i.classList.add("btn-menu-reactions-container-"+t);const n=this.container=document.createElement("div");n.classList.add("btn-menu-reactions");const a=this.scrollable="vertical"===t?new P.b(void 0):new P.a(void 0);n.append(a.container),a.onAdditionalScroll=this.onScroll,a.setListeners(),a.container.classList.add("no-scrollbar"),["big"].forEach(e=>{const t=document.createElement("div");t.classList.add("btn-menu-reactions-bubble","btn-menu-reactions-bubble-"+e),n.append(t)}),this.reactionsMap=new Map,this.animationGroup="CHAT-MENU-REACTIONS-"+Date.now(),M.a.setOverrideIdleGroup(this.animationGroup,!0),he.a||n.addEventListener("mousemove",this.onMouseMove),Object(l.b)(n,e=>{const t=Object(Pe.a)(e.target,vo);if(!t)return;const s=this.reactionsMap.get(t);s&&this.appReactionsManager.sendReaction(this.message,s.reaction)}),i.append(n),this.middleware=null!=s?s:Object(Gs.a)()}init(e){this.message=e;const t=this.middleware.get(),s=this.appReactionsManager.getAvailableReactionsByMessage(e);Object(Xt.a)(s,e=>{if(!t()||!e.length)return;e.forEach(e=>{this.renderReaction(e)});const i=()=>{this.container.classList.add("is-visible")};s instanceof Promise?Object(Re.b)(i):i()})}cleanup(){this.middleware.clean(),this.scrollable.removeListeners(),this.reactionsMap.clear(),M.a.setOverrideIdleGroup(this.animationGroup,!1),M.a.checkAnimations(!0,this.animationGroup,!0)}canUseAnimations(){return a.a.settings.animationsEnabled&&!ae.e}renderReaction(e){const t=document.createElement("div");t.classList.add(vo);const s=document.createElement("div");s.classList.add(vo+"-scale");const i=document.createElement("div");let n;i.classList.add(vo+"-appear"),this.canUseAnimations()&&(n=document.createElement("div"),n.classList.add(vo+"-select","hide"));const a={selectWrapper:n,appearWrapper:i,reaction:e.reaction};this.reactionsMap.set(t,a);const o=this.middleware.get(),r=28*(he.a?1:1.25),l={width:r,height:r,skipRatio:1,needFadeIn:!1,withThumb:!1,group:this.animationGroup,middleware:o};if(this.canUseAnimations()){let t=!0;Bs(Object.assign({doc:e.appear_animation,div:i,play:!0},l)).then(e=>{Object(ks.a)(e),a.appear=e,e.addEventListener("enterFrame",o=>{e.maxFrame===o&&s.then(e=>{Object(ks.a)(e),i.classList.add("hide"),n.classList.remove("hide"),t&&(a.select=e,t=!1)},je.a)})},je.a);const s=Bs(Object.assign({doc:e.select_animation,div:n},l)).then(e=>(Object(ks.a)(e),oe.a.waitForFirstFrame(e))).catch(je.a)}else delete l.needFadeIn,delete l.withThumb,Bs(Object.assign({doc:e.static_icon,div:i},l));s.append(i),n&&s.append(n),t.append(s),this.scrollable.append(t)}onScrollProcessItem(e,t){const s=e.firstElementChild,i=Ya(e,this.scrollable.container);let n;if(i)if(i.overflow.left||i.overflow.right){const e=Math.abs(i.rect.left-i.rect.right);n="scale("+Math.min(Math.pow(e,2)/Math.pow(36,2),1)+")"}else n="";else{if(!t.appearWrapper.classList.contains("hide")||!t.appear)return;t.select&&t.select.stop(),t.appear.stop(),t.appear.autoplay=!0,t.appearWrapper.classList.remove("hide"),t.selectWrapper.classList.add("hide"),n=""}fo&&(s.style.transform=n)}}class wo{constructor(e,t,s,i,n,a,o,r){this.attachTo=e,this.chat=t,this.appMessagesManager=s,this.appPeersManager=i,this.appPollsManager=n,this.appDocsManager=a,this.appMessagesIdsManager=o,this.appReactionsManager=r,this.onContextMenu=e=>{let t,s;try{s=Object(Pe.a)(e.target,"bubble-content-wrapper"),t=s?s.parentElement:Object(Pe.a)(e.target,"bubble")}catch(e){}if(!t||t.classList.contains("bubble-first"))return;let i=this.element;if((e instanceof MouseEvent||e.hasOwnProperty("preventDefault"))&&e.preventDefault(),i&&i.classList.contains("active"))return!1;(e instanceof MouseEvent||e.hasOwnProperty("cancelBubble"))&&(e.cancelBubble=!0);let n=+t.dataset.mid;if(!n)return;const a=this.isSponsored=n<0;if(this.isSelectable=this.chat.selection.canSelectBubble(t),this.peerId=this.chat.peerId,this.target=e.target,this.isTextSelected=!ho(),this.isAnchorTarget="A"===this.target.tagName&&("_blank"===this.target.target||this.target.classList.contains("anchor-url")),this.isUsernameTarget="A"===this.target.tagName&&this.target.classList.contains("mention"),this.chat.selection.isSelecting&&!s){if(a)return;const e=this.chat.getMidsByMid(n);if(e.length>1){const t=this.chat.selection.isMidSelected(this.peerId,n)?n:e.find(e=>this.chat.selection.isMidSelected(this.peerId,e));t&&(n=t)}}this.isOverBubble=!!s;const o=Object(Pe.a)(this.target,"grouped-item");this.isTargetAGroupedItem=!!o,this.mid=o?+o.dataset.mid:n,this.isSelected=this.chat.selection.isMidSelected(this.peerId,this.mid),this.message=this.chat.getMessage(this.mid),this.noForwards=!a&&!this.appMessagesManager.canForward(this.message),this.viewerPeerId=void 0,this.canOpenReactedList=void 0;const r=this.init();i=r.element;const{cleanup:l,destroy:c,menuPadding:d}=r,h=t.classList.contains("is-in")?"left":"right";Object(ee.e)(e.touches?e.touches[0]:e,i,h,d),Object(ee.d)(i,()=>{this.mid=0,this.peerId=void 0,this.target=null,this.viewerPeerId=void 0,this.canOpenReactedList=void 0,l(),setTimeout(()=>{c()},300)})},this.onSendScheduledClick=()=>{this.chat.selection.isSelecting?Object(l.d)(this.chat.selection.selectionSendNowBtn):new oi(this.peerId,this.chat.getMidsByMid(this.mid))},this.onReplyClick=()=>{this.chat.input.initMessageReply(this.mid)},this.onEditClick=()=>{this.chat.input.initMessageEditing(this.mid)},this.onCopyClick=()=>{if(ho()){dt((this.chat.selection.isSelecting?[...this.chat.selection.selectedMids.get(this.peerId)].sort((e,t)=>e-t):[this.mid]).reduce((e,t)=>{const s=this.chat.getMessage(t);return e+((null==s?void 0:s.message)?s.message+"\n":"")},"").trim())}else document.execCommand("copy")},this.onCopyAnchorLinkClick=()=>{dt(this.target.href)},this.onCopyLinkClick=()=>{let e;"discussion"===this.chat.type&&(e=this.appMessagesManager.getMessageByPeer(this.peerId,this.chat.threadId));const t=this.appPeersManager.getPeerUsername(e?e.fromId:this.peerId),s=this.appMessagesIdsManager.getServerMessageId(this.mid);let i,n="https://t.me/";t?(n+=t+"/"+(e?this.appMessagesIdsManager.getServerMessageId(e.fwd_from.channel_post):s),e&&(n+="?comment="+s),i="LinkCopied"):(n+="c/"+this.peerId.toChatId()+"/"+s,e&&(n+="?thread="+this.appMessagesIdsManager.getServerMessageId(e.mid)),i="LinkCopiedPrivateInfo"),mt(T.c.format(i,!0)),dt(n)},this.onPinClick=()=>{new co(this.peerId,this.mid)},this.onUnpinClick=()=>{new co(this.peerId,this.mid,!0)},this.onRetractVote=()=>{this.appPollsManager.sendVote(this.message,[])},this.onStopPoll=()=>{this.appPollsManager.stopPoll(this.message)},this.onForwardClick=()=>{if(this.chat.selection.isSelecting)Object(l.d)(this.chat.selection.selectionForwardBtn);else{const e=this.isTargetAGroupedItem?[this.mid]:this.chat.getMidsByMid(this.mid);new ii({[this.peerId]:e})}},this.onSelectClick=()=>{this.chat.selection.toggleByElement(Object(Pe.a)(this.target,"grouped-item")||Object(Pe.a)(this.target,"bubble"))},this.onClearSelectionClick=()=>{this.chat.selection.cancelSelection()},this.onDeleteClick=()=>{this.chat.selection.isSelecting?Object(l.d)(this.chat.selection.selectionDeleteBtn):new ni(this.peerId,this.isTargetAGroupedItem?[this.mid]:this.chat.getMidsByMid(this.mid),this.chat.type)},this.listenerSetter=new R.a,this.middleware=Object(Gs.a)(),he.a?Object(l.b)(e,e=>{if(t.selection.isSelecting)return;t.log("touchend",e);!e.target.closest([".name",".peer-title",".reply",".document","audio-element","avatar-element","a",".bubble-beside-button","replies-element","[data-saved-from]:not(.bubble)","poll-element","attachment"].join(", "))&&(Object(c.a)(e),this.onContextMenu(e))},{listenerSetter:this.chat.bubbles.listenerSetter}):Object(ee.a)(e,this.onContextMenu,this.chat.bubbles.listenerSetter)}cleanup(){this.listenerSetter.removeAll(),this.reactionsMenu&&this.reactionsMenu.cleanup(),this.middleware.clean()}destroy(){this.cleanup()}filterButtons(e){return this.isSponsored?e.filter(e=>e.isSponsored):e.filter(e=>{let t;return this.chat.selection.isSelecting&&!e.withSelection?t=!1:(this.isOverBubble||he.a,t=e.verify()),t})}setButtons(){this.buttons=[{icon:"send2",text:"MessageScheduleSend",onClick:this.onSendScheduledClick,verify:()=>"scheduled"===this.chat.type&&!this.message.pFlags.is_outgoing},{icon:"send2",text:"Message.Context.Selection.SendNow",onClick:this.onSendScheduledClick,verify:()=>"scheduled"===this.chat.type&&this.isSelected&&!this.chat.selection.selectionSendNowBtn.hasAttribute("disabled"),notDirect:()=>!0,withSelection:!0},{icon:"schedule",text:"MessageScheduleEditTime",onClick:()=>{this.chat.input.scheduleSending(()=>{Object(ks.a)(this.message),this.appMessagesManager.editMessage(this.message,this.message.message,{scheduleDate:this.chat.input.scheduleDate,entities:this.message.entities}),this.chat.input.onMessageSent(!1,!1)},new Date(1e3*this.message.date))},verify:()=>"scheduled"===this.chat.type},{icon:"reply",text:"Reply",onClick:this.onReplyClick,verify:()=>this.chat.canSend()&&!this.message.pFlags.is_outgoing&&!!this.chat.input.messageInput&&"scheduled"!==this.chat.type},{icon:"edit",text:"Edit",onClick:this.onEditClick,verify:()=>this.appMessagesManager.canEditMessage(this.message,"text")&&!!this.chat.input.messageInput},{icon:"copy",text:"Copy",onClick:this.onCopyClick,verify:()=>!(this.noForwards||!this.message.message||this.isTextSelected||this.isAnchorTarget&&this.message.message===this.target.innerText)},{icon:"copy",text:"Chat.CopySelectedText",onClick:this.onCopyClick,verify:()=>!this.noForwards&&!!this.message.message&&this.isTextSelected},{icon:"copy",text:"Message.Context.Selection.Copy",onClick:this.onCopyClick,verify:()=>{if(!this.isSelected||this.noForwards)return!1;for(const[e,t]of this.chat.selection.selectedMids)for(const s of t)if(this.appMessagesManager.getMessageByPeer(e,s).message)return!0;return!1},notDirect:()=>!0,withSelection:!0},{icon:"copy",text:"CopyLink",onClick:this.onCopyAnchorLinkClick,verify:()=>this.isAnchorTarget,withSelection:!0},{icon:"copy",text:"Text.Context.Copy.Username",onClick:()=>{dt(this.target.innerHTML)},verify:()=>this.isUsernameTarget,withSelection:!0},{icon:"copy",text:"Text.Context.Copy.Hashtag",onClick:()=>{dt(this.target.innerHTML)},verify:()=>this.target.classList.contains("anchor-hashtag"),withSelection:!0},{icon:"link",text:"MessageContext.CopyMessageLink1",onClick:this.onCopyLinkClick,verify:()=>this.appPeersManager.isChannel(this.peerId)&&!this.message.pFlags.is_outgoing},{icon:"pin",text:"Message.Context.Pin",onClick:this.onPinClick,verify:()=>!this.message.pFlags.is_outgoing&&"messageService"!==this.message._&&!this.message.pFlags.pinned&&this.appPeersManager.canPinMessage(this.peerId)&&"scheduled"!==this.chat.type},{icon:"unpin",text:"Message.Context.Unpin",onClick:this.onUnpinClick,verify:()=>this.message.pFlags.pinned&&this.appPeersManager.canPinMessage(this.peerId)},{icon:"download",text:"MediaViewer.Context.Download",onClick:()=>{this.appDocsManager.saveDocFile(this.message.media.document)},verify:()=>{var e;if(this.message.pFlags.is_outgoing)return!1;const t=null===(e=this.message.media)||void 0===e?void 0:e.document;if(!t)return!1;let s=!!he.a;const i=!t.type||!["gif","video","sticker"].includes(t.type);return i&&(s=s||!!Object(Pe.a)(this.target,"document")||!!Object(Pe.a)(this.target,"audio")),i&&s}},{icon:"checkretract",text:"Chat.Poll.Unvote",onClick:this.onRetractVote,verify:()=>{var e;const t=null===(e=this.message.media)||void 0===e?void 0:e.poll;return t&&t.chosenIndexes.length&&!t.pFlags.closed&&!t.pFlags.quiz}},{icon:"stop",text:"Chat.Poll.Stop",onClick:this.onStopPoll,verify:()=>{var e;const t=null===(e=this.message.media)||void 0===e?void 0:e.poll;return this.appMessagesManager.canEditMessage(this.message,"poll")&&t&&!t.pFlags.closed&&!this.message.pFlags.is_outgoing}},{icon:"forward",text:"Forward",onClick:this.onForwardClick,verify:()=>!(this.noForwards||"scheduled"===this.chat.type||this.message.pFlags.is_outgoing&&this.message.pFlags.out||"messageService"===this.message._)},{icon:"forward",text:"Message.Context.Selection.Forward",onClick:this.onForwardClick,verify:()=>this.chat.selection.selectionForwardBtn&&this.isSelected&&!this.chat.selection.selectionForwardBtn.hasAttribute("disabled"),notDirect:()=>!0,withSelection:!0},{icon:"flag",text:"ReportChat",onClick:()=>{new uo(this.peerId,[this.mid])},verify:()=>!this.message.pFlags.out&&"message"===this.message._&&!this.message.pFlags.is_outgoing&&this.appPeersManager.isChannel(this.peerId),notDirect:()=>!0,withSelection:!0},{icon:"select",text:"Message.Context.Select",onClick:this.onSelectClick,verify:()=>!this.message.action&&!this.isSelected&&this.isSelectable,notDirect:()=>!0,withSelection:!0},{icon:"select",text:"Message.Context.Selection.Clear",onClick:this.onClearSelectionClick,verify:()=>this.isSelected,notDirect:()=>!0,withSelection:!0},{onClick:()=>{if(this.viewerPeerId)this.chat.appImManager.setInnerPeer({peerId:this.viewerPeerId});else{if(!this.canOpenReactedList)return!1;new bo(this.appMessagesManager,this.message)}},verify:()=>{var e,t;return!this.peerId.isUser()&&(!!(null===(t=null===(e=this.message.reactions)||void 0===e?void 0:e.recent_reactions)||void 0===t?void 0:t.length)||this.appMessagesManager.canViewMessageReadParticipants(this.message))},notDirect:()=>!0},{icon:"delete danger",text:"Delete",onClick:this.onDeleteClick,verify:()=>this.appMessagesManager.canDeleteMessage(this.message)},{icon:"delete danger",text:"Message.Context.Selection.Delete",onClick:this.onDeleteClick,verify:()=>this.isSelected&&!this.chat.selection.selectionDeleteBtn.hasAttribute("disabled"),notDirect:()=>!0,withSelection:!0},{icon:"info",text:"Chat.Message.Sponsored.What",onClick:()=>{new go},verify:()=>!1,isSponsored:!0}]}init(){this.cleanup(),this.setButtons();const e=this.filterButtons(this.buttons),t=this.element=Me(e,this.listenerSetter);t.id="bubble-contextmenu",t.classList.add("contextmenu");const s=e.find(e=>!e.icon);if(s){const e=this.message.reactions,t=null==e?void 0:e.recent_reactions,i=!!(null==t?void 0:t.length),n=this.appMessagesManager.canViewMessageReadParticipants(this.message)?this.appPeersManager.getPeer(this.peerId).participants_count:void 0,a=e?e.results.reduce((e,t)=>e+t.count,0):void 0;s.element.classList.add("tgico-"+(i?"reactions":"checks"));const o=new T.c.IntlElement({key:i?void 0===n?"Chat.Context.ReactedFast":"Chat.Context.Reacted":"NobodyViewed",args:i?void 0===n?[a]:[n,n]:void 0,element:s.textElement});let r;r=i?void 0===n?Object(T.d)("Chat.Context.ReactedFast",[a]):Object(T.d)(t.length===n?"Chat.Context.ReactedFast":"Chat.Context.Reacted",[t.length,n]):Object(T.d)("Loading"),r.classList.add("btn-menu-item-text-fake"),s.element.append(r);const l=3,c=.875;o.element.style.visibility="hidden",o.element.style.paddingRight=i?c*Math.min(l,t.length)+"rem":"1rem";const d=this.middleware.get();this.appMessagesManager.getMessageReactionsListAndReadParticipants(this.message).then(e=>{if(!d())return;r&&r.remove();const a=e.combined,h=void 0===n?e.reactionsCount:i?a.filter(e=>e.reaction).length:a.length;let p;if(1===a.length)p=new Tt.a({peerId:a[0].peerId,onlyFirstName:!0,dialog:!1}).element,(!i||e.readParticipants.length<=1)&&(this.viewerPeerId=a[0].peerId);else if(i){const e=h===a.length||void 0===n;p=Object(T.d)(e?"Chat.Context.ReactedFast":"Chat.Context.Reacted",e?[h]:[h,a.length])}else a.length?p=Object(T.d)("MessageSeen",[a.length]):o.element.style.visibility="";if(p&&(p.style.paddingRight=c*Math.min(l,h)+"rem",p.classList.add("btn-menu-item-text-fake"),s.element.append(p)),a.length){const e=new us({avatarSize:24});e.render(t?t.map(e=>this.appPeersManager.getPeerId(e.peer_id)):a.map(e=>e.peerId)),s.element.append(e.container),this.canOpenReactedList=!0}})}let i,n;if("message"===this.message._&&!this.chat.selection.isSelecting&&!this.message.pFlags.is_outgoing&&!this.message.pFlags.is_scheduled){const e=ae.b||he.a?"horizontal":"vertical";n=this.reactionsMenu=new yo(this.appReactionsManager,e,this.middleware),n.init(this.appMessagesManager.getGroupsFirstMessage(this.message)),t.prepend(n.widthContainer);const s=42+8;i="vertical"===e?{top:24,left:s}:{top:s,right:36,left:24}}return this.chat.container.append(t),{element:t,cleanup:()=>{this.cleanup(),n&&n.cleanup()},destroy:()=>{t.remove()},menuPadding:i}}}var So=s(191),Lo=s.n(So),Co=s(171);class Mo{constructor(e){this.sendMenuButtons=[{icon:"mute",text:"Chat.Send.WithoutSound",onClick:e.onSilentClick,verify:()=>"schedule"===this.type},{icon:"schedule",text:"Chat.Send.ScheduledMessage",onClick:e.onScheduleClick,verify:()=>"schedule"===this.type},{icon:"schedule",text:"Chat.Send.SetReminder",onClick:e.onScheduleClick,verify:()=>"reminder"===this.type}],this.sendMenu=Me(this.sendMenuButtons,e.listenerSetter),this.sendMenu.classList.add("menu-send",e.openSide),Object(ee.a)(e.onContextElement,t=>{e.onOpen&&!e.onOpen()||(this.sendMenuButtons.forEach(e=>{e.element.classList.toggle("hide",!e.verify())}),Object(c.a)(t),Object(ee.d)(this.sendMenu))},e.listenerSetter)}setPeerId(e){this.type=e===a.a.myId?"reminder":"schedule"}}var Io=s(94),Eo=s(114);class Po extends wt.b{constructor(e){if(super("popup-create-poll popup-new-media",null,{closable:!0,withConfirm:"Create",body:!0}),this.chat=e,this.tempId=0,this.onSubmitClick=()=>{this.send()},this.onInput=e=>{const t=e.target,s=Object(It.a)(t,"LABEL"),i=Object(Eo.a)(t);i||(t.parentElement.classList.add("is-filled"),s.classList.remove("hidden-widget"),s.firstElementChild.removeAttribute("disabled"));!s.nextElementSibling&&!i&&this.questions.childElementCount<10&&this.appendMoreField(),this.handleChange()},this.onDeleteClick=e=>{const t=e.target,s=Object(It.a)(t,"LABEL"),i=Object(Ws.a)(s);this.correctAnswers&&this.correctAnswers[0][0]===i&&(this.correctAnswers=void 0),s.remove(),this.optionInputFields.splice(i,1),this.optionInputFields.forEach((e,t)=>{e.options.labelOptions.length=0,e.options.labelOptions.push(t+1);T.c.weakMap.get(e.label.firstElementChild).update()}),this.handleChange()},Object(T.b)(this.title,"NewPoll"),this.questionInputField=new O.b({placeholder:"AskAQuestion",label:"AskAQuestion",name:"question",maxLength:255}),this.listenerSetter.add(this.questionInputField.input)("input",()=>{this.handleChange()}),this.optionInputFields=[],"scheduled"!==this.chat.type){const e=new Mo({onSilentClick:()=>{this.chat.input.sendSilent=!0,this.send()},onScheduleClick:()=>{this.chat.input.scheduleSending(()=>{this.send()})},openSide:"bottom-left",onContextElement:this.btnConfirm});e.setPeerId(this.chat.peerId),this.header.append(e.sendMenu)}this.header.append(this.questionInputField.container);const t=document.createElement("hr"),s=document.createElement("div");s.classList.add("caption"),Object(T.b)(s,"PollOptions"),this.questions=document.createElement("form"),this.questions.classList.add("poll-create-questions");const i=document.createElement("div");i.classList.add("poll-create-settings");const n=document.createElement("div");n.classList.add("caption"),Object(T.b)(n,"Settings"),this.chat.appPeersManager.isBroadcast(this.chat.peerId)||(this.anonymousCheckboxField=new St.a({text:"NewPoll.Anonymous",name:"anonymous"}),this.anonymousCheckboxField.input.checked=!0,i.append(this.anonymousCheckboxField.label)),this.multipleCheckboxField=new St.a({text:"NewPoll.MultipleChoice",name:"multiple"}),this.quizCheckboxField=new St.a({text:"NewPoll.Quiz",name:"quiz"}),this.listenerSetter.add(this.multipleCheckboxField.input)("change",()=>{const e=this.multipleCheckboxField.input.checked;this.quizCheckboxField.input.toggleAttribute("disabled",e)}),this.listenerSetter.add(this.quizCheckboxField.input)("change",()=>{const e=this.quizCheckboxField.input.checked;Array.from(this.questions.children).map(t=>{t.classList.toggle("radio-field",e)}),e||(this.correctAnswers=void 0,this.quizSolutionField.setValueSilently("")),a.forEach(t=>t.classList.toggle("hide",!e)),this.multipleCheckboxField.input.toggleAttribute("disabled",e),this.handleChange()}),i.append(this.multipleCheckboxField.label,this.quizCheckboxField.label);const a=[],o=document.createElement("div");o.classList.add("caption"),Object(T.b)(o,"AccDescrQuizExplanation");const r=document.createElement("hr"),c=document.createElement("div");c.classList.add("poll-create-questions"),this.quizSolutionField=new O.b({placeholder:"NewPoll.Explanation.Placeholder",label:"NewPoll.Explanation.Placeholder",name:"solution",maxLength:200}),this.listenerSetter.add(this.questionInputField.input)("input",()=>{this.handleChange()});const d=document.createElement("div");d.classList.add("subtitle"),Object(T.b)(d,"AddAnExplanationInfo"),c.append(this.quizSolutionField.container,d),a.push(r,o,c),a.forEach(e=>e.classList.add("hide")),this.body.parentElement.insertBefore(t,this.body),this.body.append(s,this.questions,document.createElement("hr"),n,i,...a),Object(l.b)(this.btnConfirm,this.onSubmitClick,{listenerSetter:this.listenerSetter}),this.scrollable=new P.b(this.body),this.appendMoreField(),this.onEscape=()=>!this.getFilledAnswers().length,this.handleChange()}getFilledAnswers(){return Array.from(this.questions.children).map((e,t)=>{const s=e.querySelector(".input-field-input");return s instanceof HTMLInputElement?s.value:Object(Io.a)(s,!1).value}).filter(e=>!!e.trim())}validate(){var e;const t=this.questionInputField.value;if(!t)return!1;if(t.length>255)return!1;if(this.quizCheckboxField.input.checked&&!(null===(e=this.correctAnswers)||void 0===e?void 0:e.length))return!1;const s=this.getFilledAnswers();if(s.length<2)return!1;if(s.find(e=>e.length>100))return!1;const{value:i}=Object(Io.a)(this.quizSolutionField.input,!1);return!(i.length>200)}handleChange(){const e=this.validate();this.btnConfirm.toggleAttribute("disabled",!e)}send(e=!1){const t=this.questionInputField.value,s=this.getFilledAnswers(),{value:i,entities:n}=Object(Io.a)(this.quizSolutionField.input);if("scheduled"===this.chat.type&&!e)return void this.chat.input.scheduleSending(()=>{this.send(!0)});this.hide();const a={};this.anonymousCheckboxField&&!this.anonymousCheckboxField.input.checked&&(a.public_voters=!0),this.multipleCheckboxField.input.checked&&(a.multiple_choice=!0),this.quizCheckboxField.input.checked&&(a.quiz=!0);const o={_:"poll",pFlags:a,question:t,answers:s.map((e,t)=>({_:"pollAnswer",text:e,option:new Uint8Array([t])})),id:void 0},r=this.chat.appPollsManager.getInputMediaPoll(o,this.correctAnswers,i,n);this.chat.appMessagesManager.sendOther(this.chat.peerId,r,Object.assign({},this.chat.getMessageSendingParams())),"reply"===this.chat.input.helperType&&this.chat.input.clearHelper(),this.chat.input.onMessageSent(!1,!1)}appendMoreField(){const e=this.tempId++,t=this.questions.childElementCount+1,s=new O.b({placeholder:"NewPoll.OptionsAddOption",label:"NewPoll.OptionLabel",labelOptions:[t],name:"question-"+e,maxLength:100});this.listenerSetter.add(s.input)("input",this.onInput);const i=new ut({text:"",name:"question"});i.main.append(s.container),Object(l.b)(s.input,c.a,{listenerSetter:this.listenerSetter}),i.label.classList.add("hidden-widget"),i.input.disabled=!0,this.quizCheckboxField.input.checked||i.label.classList.remove("radio-field"),this.listenerSetter.add(i.input)("change",()=>{if(i.input.checked){const e=Object(Ws.a)(i.label);this.correctAnswers=[new Uint8Array([e])],this.handleChange()}});const n=document.createElement("span");n.classList.add("btn-icon","tgico-close"),s.container.append(n),Object(l.b)(n,this.onDeleteClick,{listenerSetter:this.listenerSetter,once:!0}),this.questions.append(i.label),this.scrollable.scrollIntoViewNew({element:this.questions.lastElementChild,position:"center"}),this.optionInputFields.push(s)}}var ko=s(117);function To(e){const t=e.src;return fetch(t).then(e=>e.arrayBuffer()).then(e=>{const t=new Uint8Array(e);let s=0;for(let e=0,i=t.length;e{const t=e.target;if(t!==this.input){if("INPUT"===t.tagName||t.hasAttribute("contenteditable"))return;this.input.focus(),Object(ko.a)(this.input)}},this.attachFile=e=>{const t=this.willAttach,s=this.shouldCompress(e.type),i={};i.file=e;const n=document.createElement("div");n.classList.add("popup-item"),i.itemDiv=n;const a=s?this.attachMedia(e,i,n):this.attachDocument(e,i,n);return t.sendFileDetails.push(i),a},this.willAttach={type:s,sendFileDetails:[],group:!1},Object(l.b)(this.btnConfirm,()=>this.send(),{listenerSetter:this.listenerSetter}),"scheduled"!==this.chat.type){const e=new Mo({onSilentClick:()=>{this.chat.input.sendSilent=!0,this.send()},onScheduleClick:()=>{this.chat.input.scheduleSending(()=>{this.send()})},openSide:"bottom-left",onContextElement:this.btnConfirm,listenerSetter:this.listenerSetter});e.setPeerId(this.chat.peerId),this.header.append(e.sendMenu)}this.mediaContainer=document.createElement("div"),this.mediaContainer.classList.add("popup-photo");const i=new P.b(null);i.container.append(this.mediaContainer),this.inputField=new O.b({placeholder:"PreviewSender.CaptionPlaceholder",label:"Caption",name:"photo-caption",maxLength:a.a.config.caption_length_max}),this.input=this.inputField.input,this.inputField.value=this.wasInputValue=this.chat.input.messageInputField.input.innerHTML,this.chat.input.messageInputField.value="",this.body.append(i.container),this.container.append(this.inputField.container),this.attachFiles(),this.addEventListener("close",()=>{this.files=[],xo=void 0}),xo=this}appendDrops(e){this.body.append(e)}get type(){return this.willAttach.type}set type(e){this.willAttach.type=e}appendGroupCheckboxField(){var e;const t=this.files.length>1;t&&!this.groupCheckboxField?(this.groupCheckboxField=new St.a({text:"PreviewSender.GroupItems",name:"group-items"}),this.container.append(...[this.groupCheckboxField.label,null===(e=this.mediaCheckboxField)||void 0===e?void 0:e.label,this.inputField.container].filter(Boolean)),this.willAttach.group=!0,this.groupCheckboxField.setValueSilently(this.willAttach.group),this.listenerSetter.add(this.groupCheckboxField.input)("change",()=>{const e=this.groupCheckboxField.checked;this.willAttach.group=e,this.attachFiles()})):this.groupCheckboxField&&this.groupCheckboxField.label.classList.toggle("hide",!t)}appendMediaCheckboxField(){var e;const t=!!this.files.find(e=>g.has(e.type));t&&!this.mediaCheckboxField?(this.mediaCheckboxField=new St.a({text:"PreviewSender.CompressFile",name:"compress-items"}),this.container.append(...[null===(e=this.groupCheckboxField)||void 0===e?void 0:e.label,this.mediaCheckboxField.label,this.inputField.container].filter(Boolean)),this.mediaCheckboxField.setValueSilently("media"===this.willAttach.type),this.listenerSetter.add(this.mediaCheckboxField.input)("change",()=>{const e=this.mediaCheckboxField.checked;this.willAttach.type=e?"media":"document",this.attachFiles()})):this.mediaCheckboxField&&this.mediaCheckboxField.label.classList.toggle("hide",!t)}addFiles(e){const t=e.filter(e=>!this.files.find(t=>t.lastModified===e.lastModified&&t.name===e.name&&t.size===e.size));t.length&&(this.files.push(...t),this.attachFiles())}send(e=!1){if("scheduled"===this.chat.type&&!e)return void this.chat.input.scheduleSending(()=>{this.send(!0)});let t=this.inputField.value;if(t.length>a.a.config.caption_length_max)return void mt(T.c.format("Error.PreviewSender.CaptionTooLong",!0));this.hide();const s=this.willAttach;s.isMedia="media"===s.type||void 0;const{sendFileDetails:i,isMedia:n}=s,{peerId:o,input:r}=this.chat;i.forEach(e=>{e.itemDiv=void 0});const{length:l}=i,c=this.chat.getMessageSendingParams();this.iterate(e=>{t&&e.length!==l&&(this.chat.appMessagesManager.sendText(o,t,Object.assign(Object.assign({},c),{clearDraft:!0})),t=void 0);const i=Object.assign(Object.assign({},s),{sendFileDetails:e});this.chat.appMessagesManager.sendAlbum(o,i.sendFileDetails.map(e=>e.file),Object.assign(Object.assign(Object.assign({},c),{caption:t,isMedia:n,clearDraft:!0}),i)),t=void 0}),r.replyToMsgId=this.chat.threadId,r.onMessageSent()}attachMedia(e,t,s){s.classList.add("popup-item-media");let i;if(e.type.startsWith("video/")){const n=document.createElement("video"),a=document.createElement("source");a.src=t.objectURL=URL.createObjectURL(e),n.autoplay=!0,n.controls=!1,n.muted=!0,n.setAttribute("playsinline","true"),n.addEventListener("timeupdate",()=>{n.pause()},{once:!0}),i=Object(pe.e)(n).then(()=>{t.width=n.videoWidth,t.height=n.videoHeight,t.duration=Math.floor(n.duration);const e=n.webkitAudioDecodedByteCount;return void 0!==e&&(t.noSound=!e),s.append(n),Object(pe.c)(n).then(e=>{t.thumb=Object.assign({url:URL.createObjectURL(e.blob)},e)})}),n.append(a)}else{const n=new Image;i=new Promise(i=>{n.onload=()=>{t.width=n.naturalWidth,t.height=n.naturalHeight,s.append(n),"image/gif"===e.type?(t.noSound=!0,Promise.all([To(n).then(e=>{t.duration=Math.ceil(e)}),Object(pe.b)(n).then(e=>{t.thumb=Object.assign({url:URL.createObjectURL(e.blob)},e)})]).then(()=>{i()})):i()}}),n.src=t.objectURL=URL.createObjectURL(e)}return i}attachDocument(e,t,s){s.classList.add("popup-item-document");const i=e.type.startsWith("image/"),n=e.type.startsWith("audio/");(i||n||e.size<2e7)&&(t.objectURL=URL.createObjectURL(e));const a={_:"document",file:e,file_name:e.name||"",fileName:e.name?X.b.wrapEmojiText(e.name):"",size:e.size,type:i?"photo":"doc"};if(t.objectURL){const s=ce.a.getCacheContext(a);s.url=t.objectURL,s.downloaded=e.size}const o=Fs({message:{_:"message",pFlags:{is_outgoing:!0},mid:0,peerId:0,media:{_:"messageMediaDocument",document:a}}});return new Promise(e=>{const n=()=>{s.append(o),e()};if(i){const e=new Image;e.src=t.objectURL,e.onload=()=>{t.width=e.naturalWidth,t.height=e.naturalHeight,n()},e.onerror=n}else n()})}shouldCompress(e){return"media"===this.willAttach.type&&g.has(e)}onRender(){this.element.classList.contains("active")||(this.listenerSetter.add(document.body)("keydown",this.onKeyDown),this.addEventListener("close",()=>{this.wasInputValue&&(this.chat.input.messageInputField.value=this.wasInputValue)}),this.show())}setTitle(){const{willAttach:e,title:t,files:s}=this;let i;const n=[];if("document"===e.type)i="PreviewSender.SendFile",n.push(s.length);else{let e=0,t=0,a=0;s.forEach(s=>{s.type.startsWith("image/")?++e:s.type.startsWith("video/")?++t:++a}),[e,t,a].filter(e=>e>0).length>1?(i="PreviewSender.SendFile",n.push(s.length)):e?(i="PreviewSender.SendPhoto",n.push(e)):t&&(i="PreviewSender.SendVideo",n.push(t))}Object(k.a)(t,Object(T.d)(i,n))}appendMediaToContainer(e,t){if(this.shouldCompress(t.file.type)){const s=Object(Pa.a)(t.width,t.height,380,320);e.style.width=s.width+"px",e.style.height=s.height+"px"}this.mediaContainer.append(e)}iterate(e){const{sendFileDetails:t}=this.willAttach;if(!this.willAttach.group)return void t.forEach(t=>e([t]));const s=t.length;for(let i=0;i{s.innerHTML="",e.length&&(this.setTitle(),this.iterate(e=>{if(this.shouldCompress(e[0].file.type)&&e.length>1){const t=document.createElement("div");t.classList.add("popup-item-album","popup-item"),t.append(...e.map(e=>e.itemDiv)),zs({container:t,items:e.map(e=>({w:e.width,h:e.height})),maxWidth:380,minWidth:100,spacing:4}),s.append(t)}else e.forEach(e=>{this.appendMediaToContainer(e.itemDiv,e)})}))}).then(()=>{this.onRender()})}}const _o=["ArrowUp","ArrowDown"],Fo=["ArrowLeft","ArrowRight"];function jo({list:e,type:t,onSelect:s,once:i,waitForKey:n}){let a=(null==n?void 0:n.length)?new Set(n):void 0;const o=new Set("xy"===t?_o.concat(Fo):"x"===t?Fo:_o);let r;const d=()=>r||e.querySelector(".active")||e.firstElementChild,h=(e,s)=>{if(r===e)return;let i=!1;r&&(i=!0,r.classList.remove("active")),r=e,r&&(r.classList.add("active"),i&&m&&s&&Object(Pt.b)({container:m,element:r,position:"center",forceDuration:100,axis:"x"===t?"x":"y"}))},p=(t,s)=>{let i;return i=s?t.nextElementSibling||e.firstElementChild:t.previousElementSibling||e.lastElementChild,i};let u;u="xy"===t?(t,s)=>"ArrowUp"===s||"ArrowDown"===s?((t,s)=>{const i=s?"nextElementSibling":"previousElementSibling",n=s?"firstElementChild":"lastElementChild",a=t.getBoundingClientRect();let o=t[i]||e[n];for(;o!==t;){const t=o.getBoundingClientRect();if(t.x===a.x&&t.y!==a.y)break;o=o[i]||e[n]}return o})(t,"ArrowDown"===s):p(t,"ArrowRight"===s):(e,t)=>p(e,"ArrowRight"===t||"ArrowDown"===t);let g=s=>{const i=s.key;if(o.has(i)){if(Object(c.a)(s),e.childElementCount>1){let e=d();e=u(e,i),h(e,!0)}}else("Enter"===i||"xy"!==t&&"Tab"===i)&&(Object(c.a)(s),f(d()))};const m=Object(Pe.a)(e,"scrollable");e.classList.add("navigable-list");const b=t=>{const s=Object(ci.a)(t.target,e);s&&h(s,!1)},v=t=>{Object(c.a)(t);const s=Object(ci.a)(t.target,e);s&&(h(s,!1),f(d()))},f=e=>{const t=s(e);(void 0!==t?!t:i)&&S()};let y=!1;const w=()=>{y||(y=!0,document.addEventListener("keydown",g,{capture:!0,passive:!1}),e.addEventListener("mousemove",b,{passive:!0}),Object(l.b)(e,v))},S=()=>{y&&(y=!1,document.removeEventListener("keydown",g,{capture:!0}),e.removeEventListener("mousemove",b),Object(l.c)(e,v))},L=()=>{a||h(e.firstElementChild,!1)};if(a){const e=g;g=t=>{a.has(t.key)&&(Object(c.a)(t),document.removeEventListener("keydown",g,{capture:!0}),g=e,document.addEventListener("keydown",g,{capture:!0,passive:!1}),a=void 0,L())}}else L();return w(),{attach:w,detach:S,resetTarget:L}}class Do extends D.a{constructor(e){super(!1),this.hidden=!0,this.onVisible=()=>{this.detach&&this.detach();const e=this.list,{attach:t,detach:s,resetTarget:i}=jo({list:e,type:this.listType,onSelect:this.onSelect,once:!0,waitForKey:this.waitForKey});this.attach=t,this.detach=s,this.resetTarget=i,ae.e||this.navigationItem||(this.navigationItem={type:"autocomplete-helper",onPop:()=>{this.navigationItem=void 0,this.toggle(!0)},noBlurOnPop:!0},j.a.pushItem(this.navigationItem)),this.addEventListener("hidden",()=>{this.resetTarget=void 0,this.attach=void 0,this.detach=void 0,e.innerHTML="",s(),this.navigationItem&&(j.a.removeItem(this.navigationItem),this.navigationItem=void 0)},{once:!0})},Object(w.a)(this,e),this.container=document.createElement("div"),this.container.classList.add("autocomplete-helper","z-depth-1"),e.appendTo.append(this.container),this.attachNavigation(),this.controller&&this.controller.addHelper(this)}toggleListNavigation(e){e?this.attach&&this.attach():this.detach&&this.detach()}attachNavigation(){this.addEventListener("visible",this.onVisible)}toggle(e,t=!1,s){if(this.init)return;if(void 0===e&&(e=this.container.classList.contains("is-visible")&&!this.container.classList.contains("backwards")),this.hidden===e)return void(e||this.dispatchEvent("visible"));this.hidden=e,e?(this.navigationItem&&(j.a.removeItem(this.navigationItem),this.navigationItem=void 0),!t&&this.controller&&this.controller.hideOtherHelpers(),this.detach&&this.detach()):(this.controller&&this.controller.hideOtherHelpers(this),this.dispatchEvent("visible"));const i=this.controller||e?0:2;e&&this.dispatchEvent("hiding"),Object(ps.a)(this.container,"is-visible",!e,a.a.settings.animationsEnabled&&!s?300:0,()=>{this.hidden&&this.dispatchEvent("hidden")},i)}}class Ro extends Do{constructor(e,t){super({appendTo:e,controller:t,listType:"xy",onSelect:e=>!Ka.onMediaClick({target:e},!0),waitForKey:["ArrowUp","ArrowDown"]}),this.container.classList.add("stickers-helper"),this.addEventListener("visible",()=>{setTimeout(()=>{this.scrollable.container.scrollTop=0},0),a.a.dispatchEvent("choosing_sticker",!0)}),this.addEventListener("hidden",()=>{this.onChangeScreen&&(b.b.removeEventListener("changeScreen",this.onChangeScreen),this.onChangeScreen=void 0),a.a.dispatchEvent("choosing_sticker",!1)})}checkEmoticon(e){const t=this.controller.getMiddleware();this.lazyLoadQueue&&this.lazyLoadQueue.clear(),Cs.a.preloadAnimatedEmojiSticker(e),Cs.a.getStickersByEmoticon(e).then(e=>{if(!t())return;this.init&&(this.init(),this.init=null);const s=this.list.cloneNode();let i;this.lazyLoadQueue.clear(),i=e.length?new Promise(t=>{const i=[];e.forEach(e=>{s.append(this.superStickerRenderer.renderSticker(e,void 0,i))}),Promise.all(i).finally(t)}):Promise.resolve(),i.then(()=>{this.list.replaceWith(s),this.list=s,this.onChangeScreen||(this.onChangeScreen=()=>{const e=this.list.childElementCount*b.b.active.esgSticker.width+(this.list.childElementCount-1);this.list.style.width=e+"px"},b.b.addEventListener("changeScreen",this.onChangeScreen)),this.onChangeScreen(),this.toggle(!e.length),this.scrollable.scrollTop=0})})}init(){this.list=document.createElement("div"),this.list.classList.add("stickers-helper-stickers","super-stickers"),this.container.append(this.list),this.scrollable=new P.b(this.container),this.lazyLoadQueue=new Z.d,this.superStickerRenderer=new Oa(this.lazyLoadQueue,ec)}}const Bo=()=>{const e=new Date;return e.setHours(0,0,0,0),e},No=()=>{const e=new Date;return e.setFullYear(e.getFullYear()+1),e.setDate(e.getDate()-1),e};class Uo extends Zn{constructor(e,t,s){var i;if(super((i=e).getTime()>No().getTime()?new Date:i,t,{noButtons:!0,noTitle:!0,closable:!0,withConfirm:!0,minDate:Bo(),maxDate:No(),withTime:!0,showOverflowMonths:!0,confirmShortcutIsSendShortcut:!0}),this.element.classList.add("popup-schedule"),this.header.append(this.controlsDiv),this.title.replaceWith(this.monthTitle),this.body.append(this.btnConfirm),s){const e=Object(B.a)("btn-primary btn-secondary btn-primary-transparent primary",{text:"Schedule.SendWhenOnline"});this.body.append(e),Object(l.b)(e,()=>{t(2147483646),this.hide()})}}}var Ho=s(166),zo=s(105);function Vo(e,t=!0){const s=[],i=[],n=window.getSelection();let a,o;if(n&&n.rangeCount){const t=n.getRangeAt(0),s=t.startOffset;if(t.startContainer&&t.startContainer==t.endContainer&&s==t.endOffset){const i=s-1,n=e.childNodes;if(t.startContainer===e&&n[i]){a=n[i],o=0;for(let e=0;e{s.onEmojiSelected(Ia(e),!0)}}),this.appEmojiManager=i,this.container.classList.add("emoji-helper")}init(){this.list=document.createElement("div"),this.list.classList.add("emoji-helper-emojis","super-emojis"),this.container.append(this.list),this.scrollable=new P.a(this.container),this.addEventListener("visible",()=>{setTimeout(()=>{this.scrollable.container.scrollLeft=0},0)})}render(e,t){if(this.init){if(!e.length)return;this.init(),this.init=null}(e=e.slice(0,80)).length&&(this.list.innerHTML="",e.forEach(e=>{Ma(e,this.list,!1,!0)})),this.waitForKey=t?["ArrowUp","ArrowDown"]:void 0,this.toggle(!e.length)}checkQuery(e,t){const s=this.controller.getMiddleware();this.appEmojiManager.getBothEmojiKeywords().then(()=>{if(!s())return;const i=e.replace(/^:/,""),n=this.appEmojiManager.searchEmojis(i);this.render(n,":"!==t)})}}class Go extends Do{constructor(e,t,s,i){super({appendTo:e,controller:t,listType:"y",onSelect:i}),this.className=s,this.container.classList.add(Go.BASE_CLASS,s)}init(){this.list=document.createElement("div"),this.list.classList.add(Go.BASE_CLASS+"-list",this.className+"-list"),this.container.append(this.list),this.scrollable=new P.b(this.container),this.addEventListener("visible",()=>{setTimeout(()=>{this.scrollable.container.scrollTop=0},0)})}render(e,t){if(this.init){if(!e.length)return;this.init(),this.init=null}e.length&&(this.list.innerHTML="",e.forEach(e=>{const t=Go.listElement({className:this.className,peerId:e.peerId,name:e.name,description:e.description});this.list.append(t)})),t||this.toggle(!e.length)}static listElement(e){const t=Go.BASE_CLASS_LIST_ELEMENT;e.className+="-list-element";const s=document.createElement("div");s.classList.add(t,e.className),s.dataset.peerId=""+e.peerId;const i=new bc;i.classList.add("avatar-30",t+"-avatar",e.className+"-avatar"),i.updateWithOptions({isDialog:!1,peerId:e.peerId});const n=document.createElement("div");if(n.classList.add(t+"-name",e.className+"-name"),e.name?n.innerHTML=X.b.wrapEmojiText(e.name):n.append(new Tt.a({peerId:e.peerId,dialog:!1,onlyFirstName:!1,plainText:!1}).element),s.append(i,n),e.description){const i=document.createElement("div");i.classList.add(t+"-description",e.className+"-description"),i.innerHTML=X.b.wrapEmojiText(e.description),s.append(i)}return s}}function Wo(e,t){const s=[].concat(e.bot_info);let i;void 0!==t&&(i=new ma.a({ignoreCase:!0}));const n=new Map;let a;if(s.forEach(e=>{e.commands.forEach((t,s)=>{const a="/"+t.command;n.set(t.command,{peerId:e.user_id.toPeerId(!1),command:t.command,name:a,description:t.description,index:s}),i&&i.indexObject(t.command,a)})}),i){const e=i.search(t);a=Array.from(e).map(e=>n.get(e))}else a=[...n.values()];return a=a.sort((e,t)=>n.get(e.command).index-n.get(t.command).index),a}Go.BASE_CLASS="autocomplete-peer-helper",Go.BASE_CLASS_LIST_ELEMENT=Go.BASE_CLASS+"-list-element";class qo extends Go{constructor(e,t,s,i,n){super(e,t,"commands-helper",e=>{const t=e.querySelector(`.${Go.BASE_CLASS_LIST_ELEMENT}-name`).innerHTML;return s.getReadyToSend(()=>{s.messageInput.innerHTML=t,s.sendMessage(!0)})}),this.appProfileManager=i,this.appUsersManager=n}checkQuery(e,t){if(!this.appUsersManager.isBot(t))return!1;const s=this.controller.getMiddleware();return Promise.resolve(this.appProfileManager.getProfileByPeerId(t)).then(t=>{if(!s())return;const i=Wo(t,e);this.render(i)}),!0}}class $o{constructor(){this.helpers=new Set,this.middleware=Object(Gs.a)()}toggleListNavigation(e){for(const t of this.helpers)t.toggleListNavigation(e)}getMiddleware(){return this.middleware.clean(),this.middleware.get()}addHelper(e){this.helpers.add(e)}hideOtherHelpers(e){this.helpers.forEach(t=>{t!==e&&t.toggle(!0,!0)}),e||this.middleware.clean()}}class Qo extends Go{constructor(e,t,s,i,n){super(e,t,"mentions-helper",e=>{const t=n.getUser(e.dataset.peerId.toUserId());let i,a="";t.username?a="@"+t.username:(a=t.first_name||t.last_name,i={_:"messageEntityMentionName",length:a.length,offset:0,user_id:t.id}),a+=" ",s.insertAtCaret(a,i)}),this.appProfileManager=i,this.appUsersManager=n}checkQuery(e,t,s){const i=e.trim();if(e.length!==i.length)return!1;const n=this.controller.getMiddleware();return this.appProfileManager.getMentions(t&&t.toChatId(),i,s).then(e=>{if(!n())return;const t=i.slice(1).toLowerCase();this.render(e.map(e=>{const s=this.appUsersManager.getUser(e);if(!s.username||s.username.toLowerCase()!==t)return{peerId:e,description:s.username?"@"+s.username:void 0}}).filter(Boolean))}),!0}}var Yo=s(31);class Xo extends Ha{constructor(e){super({element:document.createElement("div")}),this.onBodyTouchStart=e=>{const t=e.touches[0].target;Object(ci.a)(t,this.element)||t===this.btnHover||(Object(c.a)(e),this.toggle(!1))},Object(w.a)(this,e),this.element.classList.add(Xo.BASE_CLASS),this.element.style.display="none",this.attachButtonListener(this.btnHover,this.listenerSetter),this.listenerSetter.add(a.a)("history_reply_markup",({peerId:e})=>{this.peerId===e&&(this.checkAvailability()&&this.isActive()&&this.render(),Object(Ks.c)().then(()=>{this.checkForceReply()}))})}init(){return this.appendTo.append(this.element),this.listenerSetter.add(this)("open",()=>{this.render(),he.a&&(this.touchListener=this.listenerSetter.add(document.body)("touchstart",this.onBodyTouchStart,{passive:!1,capture:!0}),this.listenerSetter.add(this)("close",()=>{this.listenerSetter.remove(this.touchListener)},{once:!0}))}),this.listenerSetter.add(this.element)("click",e=>{const t=Object(Pe.a)(e.target,"btn");if(!t)return;const s=t.dataset.type,{peerId:i}=this;switch(s){case"keyboardButtonRequestPhone":Pn({titleLangKey:"ShareYouPhoneNumberTitle",button:{langKey:"OK"},descriptionLangKey:"AreYouSureShareMyContactInfoBot"}).then(()=>{this.appMessagesManager.sendContact(i,a.a.myId)});break;default:this.appMessagesManager.sendText(i,t.dataset.text)}this.toggle(!1)}),super.init()}checkForceReply(){const e=this.getReplyMarkup();"replyKeyboardForceReply"!==e._||e.pFlags.hidden||e.pFlags.used||(e.pFlags.used=!0,this.chatInput.initMessageReply(e.mid))}getReplyMarkup(){var e;return null!==(e=this.appMessagesManager.getHistoryStorage(this.peerId).replyMarkup)&&void 0!==e?e:{_:"replyKeyboardHide"}}render(e=this.getReplyMarkup()){this.element.innerHTML="";for(const t of e.rows){const e=document.createElement("div");e.classList.add(Xo.BASE_CLASS+"-row");for(const s of t.buttons){const t=document.createElement("button");t.classList.add(Xo.BASE_CLASS+"-button","btn"),t.innerHTML=X.b.wrapEmojiText(s.text),t.dataset.text=s.text,t.dataset.type=s._,e.append(t)}this.element.append(e)}}checkAvailability(e=this.getReplyMarkup()){var t;const s="replyKeyboardHide"===e._||!(null===(t=e.rows)||void 0===t?void 0:t.length);return this.btnHover.classList.toggle("hide",s),s&&this.toggle(!1),!s}setPeer(e){this.peerId=e,this.checkAvailability(),this.checkForceReply()}}Xo.BASE_CLASS="reply-keyboard";var Jo=s(186),Zo=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class er extends Do{constructor(e,t,s,i,n){super({appendTo:e,controller:t,listType:"xy",waitForKey:["ArrowUp","ArrowDown"],onSelect:e=>{if(!e)return!1;const{peerId:t,botId:s,queryId:i}=this.list.dataset;return this.chat.input.getReadyToSend(()=>{const n=this.appInlineBotsManager.generateQId(i,e.dataset.resultId);this.appInlineBotsManager.sendInlineResult(t.toPeerId(),s,n,Object.assign(Object.assign({},this.chat.getMessageSendingParams()),{clearDraft:!0})),this.chat.input.onMessageSent(!0,!0)})}}),this.chat=s,this.appUsersManager=i,this.appInlineBotsManager=n,this._checkQuery=(e,t,s)=>Zo(this,void 0,void 0,(function*(){const i=this.controller.getMiddleware(),n=yield this.appUsersManager.resolveUsername(t);if(!i())throw"PEER_CHANGED";if("user"!==n._)throw"NOT_A_BOT";const a=this.appInlineBotsManager.getInlineResults(e,n.id,s).then(t=>{var s;if(!i())throw"PEER_CHANGED";this.init&&(this.init(),this.init=null);const a=this.list.cloneNode();a.dataset.peerId=""+e,a.dataset.botId=""+n.id,a.dataset.queryId=""+t.query_id;const o=new Ta(null,"INLINE-HELPER",this.scrollable,!1);this.lazyLoadQueue.clear(),this.superStickerRenderer.clear();const r=[],c=!!t.pFlags.gallery;for(const e of t.results){const t=document.createElement("div");t.classList.add("inline-helper-result"),t.dataset.resultId=e.id;const n=c?void 0:document.createElement("div");if(n&&(n.classList.add("inline-helper-result-preview"),t.append(n)),a.append(t),c)t.classList.add("grid-item");else{n.classList.add("empty"),n.innerHTML=X.b.wrapEmojiText([...e.title.trim()][0]);const s=document.createElement("div");s.classList.add("inline-helper-result-title"),s.innerHTML=X.b.wrapEmojiText(e.title);const i=document.createElement("div");i.classList.add("inline-helper-result-description"),i.innerHTML=X.b.wrapRichText(e.description,{noCommands:!0,noLinks:!0}),t.append(s,i);const o=document.createElement("div");o.classList.add("inline-helper-separator"),a.append(o)}if("botInlineResult"===e._){if(e.thumb&&0===e.thumb.mime_type.indexOf("image/")){let s;n?(s=document.createElement("div"),n.append(s)):s=t,s.classList.add("media-container"),c&&s.classList.add("no-border-radius"),this.lazyLoadQueue.push({div:t,load:()=>ce.a.download({dcId:4,location:{_:"inputWebFileLocation",access_hash:e.thumb.access_hash,url:e.thumb.url},size:e.thumb.size,mimeType:e.thumb.mime_type}).then(e=>{const t=new Image;t.classList.add("media-photo"),Object(Jo.a)(e).then(e=>{Ds(s,t,e,!0)})})})}}else{const a=e.document||e.photo;if(["sticker","gif"].includes(null===(s=a)||void 0===s?void 0:s.type)&&c)Object(ks.a)(a),"gif"===a.type?o.add(a,t):"sticker"===a.type&&(t.classList.add("super-sticker"),this.superStickerRenderer.renderSticker(a,t,r),2===a.sticker&&this.superStickerRenderer.observeAnimatedDiv(t));else if(a){const e=c?48:void 0;c&&t.classList.add("no-border-radius"),js({photo:a,container:c?t:n,boxWidth:e,boxHeight:e,middleware:i,lazyLoadQueue:this.lazyLoadQueue,loadPromises:r})}}}return Promise.all(r).then(()=>{if(!i())return void o.clear();a.classList.toggle("is-gallery",c),a.classList.toggle("super-stickers",c),this.container.classList.toggle("is-gallery",c);const s=this.list.parentElement;if(s.textContent="",t.switch_pm){const i=Object(B.a)("btn-primary btn-secondary btn-primary-transparent primary");i.insertAdjacentHTML("beforeend",X.b.wrapEmojiText(t.switch_pm.text)),Object(l.b)(i,s=>{this.appInlineBotsManager.switchToPM(e,n.id,t.switch_pm.start_param)}),s.append(i)}s.append(this.list=a),this.gifsMasonry&&this.gifsMasonry.detach(),this.gifsMasonry=o,o.attach(),this.onChangeScreen||(this.onChangeScreen=()=>{if(this.list.classList.contains("is-gallery")){const e=this.list.childElementCount*b.b.active.esgSticker.width+(this.list.childElementCount-1);this.list.style.width=e+"px"}else this.list.style.width=""},b.b.addEventListener("changeScreen",this.onChangeScreen)),this.onChangeScreen(),this.toggle(!t.results.length&&!t.switch_pm),this.scrollable.scrollTop=0})});return{user:n,renderPromise:a}})),this.container.classList.add("inline-helper"),this.addEventListener("visible",()=>{setTimeout(()=>{this.scrollable.container.scrollTop=0},0)}),this.checkQuery=Object(vt.a)(this._checkQuery,200,!0,!0),this.addEventListener("hidden",()=>{this.onChangeScreen&&(b.b.removeEventListener("changeScreen",this.onChangeScreen),this.onChangeScreen=void 0)})}init(){this.list=document.createElement("div"),this.list.classList.add("inline-helper-results"),this.container.append(this.list),this.scrollable=new P.b(this.container),this.lazyLoadQueue=new Z.d,this.superStickerRenderer=new Oa(this.lazyLoadQueue,"INLINE-HELPER")}}var tr=s(30);class sr extends Go{constructor(e,t,s){super(e,void 0,"bot-commands",e=>{const s=e.querySelector(`.${Go.BASE_CLASS_LIST_ELEMENT}-name`).innerHTML;return t.getReadyToSend(()=>{t.messageInput.innerHTML=s,t.sendMessage(!0),this.toggle(!0)})}),this.chatInput=t,this.appProfileManager=s}setUserId(e,t){var s;if(this.userId!==e||!(null===(s=this.list)||void 0===s?void 0:s.childElementCount))return this.userId=e,Object(Xt.a)(this.appProfileManager.getProfile(e),e=>{if(!t())return;const s=Wo(e),i=50*s.length+8+24;this.container.style.setProperty("--height",i+"px"),this.render(s)});this.toggle(!1)}}class ir{constructor(e,t,s,i,n,o,r,d,h,p,u,g,m,b,v){this.chat=e,this.appMessagesManager=t,this.appMessagesIdsManager=s,this.appDocsManager=i,this.appChatsManager=n,this.appPeersManager=o,this.appWebPagesManager=r,this.appImManager=d,this.appDraftsManager=h,this.serverTimeManager=p,this.appNotificationsManager=u,this.appEmojiManager=g,this.appUsersManager=m,this.appInlineBotsManager=b,this.appProfileManager=v,this.lastUrl="",this.lastTimeType=0,this.replyElements={},this.willSendWebPage=null,this.recording=!1,this.recordCanceled=!1,this.recordStartTime=0,this.lockRedo=!1,this.canRedoFromHTML="",this.undoHistory=[],this.executedHistory=[],this.canUndoFromHTML="",this.onCancelRecordClick=e=>{e&&Object(c.a)(e),this.recordCanceled=!0,this.recorder.stop(),Co.a.setKeepAlive(!1)},this.onEmoticonsOpen=()=>{const e=he.a?"flip-icon":"active";this.btnToggleEmoticons.classList.toggle(e,!0)},this.onEmoticonsClose=()=>{const e=he.a?"flip-icon":"active";this.btnToggleEmoticons.classList.toggle(e,!1)},this.scheduleSending=(e=this.sendMessage.bind(this,!0),t=new Date)=>{const{peerId:s}=this.chat,i=this.chat.bubbles.getMiddleware(),n=a.a.myId!==s&&s.isUser()&&this.appUsersManager.isUserOnlineVisible(s);new Uo(t,t=>{if(!i())return;t<=10+(Date.now()/1e3|0)&&(t=void 0),this.scheduleDate=t,e(),"scheduled"!==this.chat.type&&t&&setTimeout(()=>{i()&&this.appImManager.openScheduled(s)},0)},n).show()},this.prepareDocumentExecute=()=>(this.executedHistory.push(this.messageInput.innerHTML),()=>this.canUndoFromHTML=this.messageInput.innerHTML),this.undoRedo=(e,t,s)=>{Object(c.a)(e);let i=this.messageInput.innerHTML;if(i&&i!==s){this.lockRedo=!0;let e=0;do{document.execCommand(t,!1,null);const s=this.messageInput.innerHTML;if(i===s){if(++e>2)break}else e=0;i=s}while(i!==s);this.lockRedo=!1}},this.handleMarkdownShortcut=e=>{const t={KeyB:"bold",KeyI:"italic",KeyU:"underline",KeyS:"strikethrough",KeyM:"monospace",KeyP:"spoiler"};this.appImManager.markupTooltip&&(t.KeyK="link");const s=e.code,i=t[s];if(document.getSelection().toString().trim().length&&i&&("KeyK"===s?this.appImManager.markupTooltip.showLinkEditor():this.applyMarkdown(i),Object(c.a)(e)),"KeyZ"===s){let t=this.messageInput.innerHTML;e.shiftKey?this.undoHistory.length&&(this.executedHistory.push(t),t=this.undoHistory.pop(),this.undoRedo(e,"redo",t),t=this.messageInput.innerHTML,this.canRedoFromHTML=this.undoHistory.length?t:"",this.canUndoFromHTML=t):!this.executedHistory.length||this.canUndoFromHTML&&t!==this.canUndoFromHTML||(this.undoHistory.push(t),t=this.executedHistory.pop(),this.undoRedo(e,"undo",t),this.canUndoFromHTML=this.canRedoFromHTML=this.messageInput.innerHTML)}},this.onMessageInput=e=>{var t;const{value:s,entities:i,caretPos:n}=Vo(this.messageInputField.input),a=X.b.parseMarkdown(s,i,!0),o=X.b.mergeEntities(i,X.b.parseEntities(a));this.canRedoFromHTML&&!this.lockRedo&&this.messageInput.innerHTML!==this.canRedoFromHTML&&(this.canRedoFromHTML="",this.undoHistory.length=0);const r=(!(null===(t=this.editMessage)||void 0===t?void 0:t.media)||"messageMediaWebPage"===this.editMessage.media._)&&o.filter(e=>"messageEntityUrl"===e._||"messageEntityTextUrl"===e._);if(r.length)for(const e of r){let t;if("messageEntityTextUrl"===e._)t=e.url;else if(t=s.slice(e.offset,e.offset+e.length),!t.includes("http://")&&!t.includes("https://"))continue;if(this.lastUrl!==t){this.lastUrl=t;const e=this.getWebPagePromise=ft.a.invokeApiHashable({method:"messages.getWebPage",processResult:e=>this.appWebPagesManager.saveWebPage(e),params:{url:t}}).then(s=>{this.getWebPagePromise===e&&(this.getWebPagePromise=void 0),this.lastUrl===t&&("webPage"===s._?(this.setTopInfo("webpage",()=>{},s.site_name||s.title||"Webpage",s.description||s.url||""),delete this.noWebPage,this.willSendWebPage=s):this.willSendWebPage&&this.onHelperCancel())})}break}else this.lastUrl&&(this.lastUrl="",delete this.noWebPage,this.willSendWebPage=null,this.helperType?this.helperFunc():this.clearHelper());if(!s.trim())this.lastTimeType&&this.appMessagesManager.setTyping(this.chat.peerId,{_:"sendMessageCancelAction"}),this.appImManager.markupTooltip&&this.appImManager.markupTooltip.hide();else{const e=Date.now();e-this.lastTimeType>=6e3&&(this.lastTimeType=e,this.appMessagesManager.setTyping(this.chat.peerId,{_:"sendMessageTypingAction"})),this.botCommands&&this.botCommands.toggle(!0)}this.botCommands&&this.updateBotCommandsToggle(),this.editMsgId||this.saveDraftDebounced(),this.checkAutocomplete(s,n,o),this.updateSendBtn()},this.onEmojiSelected=(e,t)=>{this.insertAtCaret(e,X.b.getEmojiEntityFromEmoji(e),t)},this.onBtnSendClick=e=>{if(Object(c.a)(e),!this.recorder||this.recording||!this.isInputEmpty()||this.forwarding||this.editMsgId)this.recording?Date.now()-this.recordStartTime<500?this.onCancelRecordClick():this.recorder.stop():this.sendMessage();else{if(this.chat.peerId.isAnyChat()&&!this.chat.canSend("send_media"))return void mt("Posting media content isn't allowed in this group.");this.chatInput.classList.add("is-locked"),Object(ri.a)(),this.recorder.start().then(()=>{this.releaseMediaPlayback=fe.setSingleMedia(),this.recordCanceled=!1,this.setRecording(!0),Co.a.setKeepAlive(!0);const e=()=>{new Lt("popup-cancel-record",{titleLangKey:"DiscardVoiceMessageTitle",descriptionLangKey:"DiscardVoiceMessageDescription",buttons:[{langKey:"DiscardVoiceMessageAction",callback:()=>{Object(l.d)(this.btnCancelRecord)}},{langKey:"Continue",isCancel:!0}]}).show()};this.recordingOverlayListener=this.listenerSetter.add(document.body)("mousedown",t=>{Object(Pe.a)(t.target,"chat-input")||Object(Pe.a)(t.target,"popup-cancel-record")||(Object(c.a)(t),e())},{capture:!0,passive:!1}),j.a.pushItem(this.recordingNavigationItem={type:"voice",onPop:()=>(setTimeout(()=>{e()},0),!1)}),this.recordStartTime=Date.now();const t=this.recorder.sourceNode,s=t.context.createAnalyser();t.connect(s),s.fftSize=32;const i=new Uint8Array(s.frequencyBinCount),n=255*i.length;let a=()=>{if(!this.recording)return;s.getByteFrequencyData(i);let e=0;i.forEach(t=>{e+=t});let t=Math.min(1,e/n+.36);this.recordRippleEl.style.transform=`scale(${t})`;let o=Date.now()-this.recordStartTime,r=o%1e3,l=xe(o/1e3)+","+("00"+Math.round(r/10)).slice(-2);this.recordTimeEl.innerText=l,Object(Re.b)(a)};a()}).catch(e=>{switch(e.name){case"NotAllowedError":mt("Please allow access to your microphone");break;case"NotReadableError":mt(e.message);break;default:console.error("Recorder start error:",e,e.name,e.message),mt(e.message)}this.setRecording(!1),this.chatInput.classList.remove("is-locked")})}},this.onHelperCancel=(e,t)=>{if(e&&Object(c.a)(e),this.willSendWebPage){const e=this.lastUrl;let t=!1;if(this.helperType&&(this.helperFunc(),t=!0),this.lastUrl=e,this.noWebPage=!0,this.willSendWebPage=null,t)return}if("edit"===this.helperType&&!t){const e=this.editMessage,t=X.b.parseMarkdown(this.messageInputField.value,[]);if(e.message!==t)return void new Lt("discard-editing",{buttons:[{langKey:"Alert.Confirm.Discard",callback:()=>{this.onHelperCancel(void 0,!0)}}],descriptionLangKey:"Chat.Edit.Cancel.Text"}).show()}this.clearHelper(),this.updateSendBtn()},this.onHelperClick=e=>{if(Object(c.a)(e),Object(Pe.a)(e.target,"reply"))if("forward"===this.helperType){const{forwardElements:e}=this;e&&he.a&&!e.container.classList.contains("active")&&Object(ee.d)(e.container)}else"reply"===this.helperType?this.chat.setMessageId(this.replyToMsgId):"edit"===this.helperType&&this.chat.setMessageId(this.editMsgId)},this.listenerSetter=new R.a}construct(){this.chatInput=document.createElement("div"),this.chatInput.classList.add("chat-input"),this.chatInput.style.display="none",this.inputContainer=document.createElement("div"),this.inputContainer.classList.add("chat-input-container"),this.rowsWrapperWrapper=document.createElement("div"),this.rowsWrapperWrapper.classList.add("rows-wrapper-wrapper"),this.rowsWrapper=document.createElement("div"),this.rowsWrapper.classList.add("rows-wrapper","chat-input-wrapper"),this.rowsWrapperWrapper.append(this.rowsWrapper);const e=lo();this.rowsWrapper.append(e);const t=this.fakeRowsWrapper=document.createElement("div");t.classList.add("fake-wrapper","fake-rows-wrapper");const s=this.fakeSelectionWrapper=document.createElement("div");s.classList.add("fake-wrapper","fake-selection-wrapper"),this.inputContainer.append(this.rowsWrapperWrapper,t,s),this.chatInput.append(this.inputContainer),this.goDownBtn=$({icon:"arrow_down",className:"bubbles-corner-button bubbles-go-down hide"}),this.inputContainer.append(this.goDownBtn),Object(l.b)(this.goDownBtn,e=>{Object(c.a)(e),this.chat.bubbles.onGoDownClick()},{listenerSetter:this.listenerSetter});const i=this.controlContainer=document.createElement("div");i.classList.add("chat-input-control","chat-input-wrapper"),this.inputContainer.append(i)}constructPeerHelpers(){this.replyElements.container=document.createElement("div"),this.replyElements.container.classList.add("reply-wrapper"),this.replyElements.iconBtn=N(""),this.replyElements.cancelBtn=N("close reply-cancel",{noRipple:!0}),this.replyElements.container.append(this.replyElements.iconBtn,this.replyElements.cancelBtn);const e=()=>(i=!0,this.canToggleHideAuthor()),t=()=>{i=!1},s=this.forwardElements={};let i=!1;const n=[s.showSender={text:"Chat.Alert.Forward.Action.Show1",onClick:e,checkboxField:new St.a({checked:!0})},s.hideSender={text:"Chat.Alert.Forward.Action.Hide1",onClick:e,checkboxField:new St.a({checked:!1})},s.showCaption={text:"Chat.Alert.Forward.Action.ShowCaption",onClick:t,checkboxField:new St.a({checked:!0})},s.hideCaption={text:"Chat.Alert.Forward.Action.HideCaption",onClick:t,checkboxField:new St.a({checked:!1})},s.changePeer={text:"Chat.Alert.Forward.Action.Another",onClick:()=>{this.changeForwardRecipient()},icon:"replace"}],o=s.container=Me(n,this.listenerSetter),r=Array.from(o.children);if([{elements:r.slice(0,2),onChange:(e,t)=>{const n=!!+e;i&&(this.forwardWasDroppingAuthor=!n);const a=this.replyElements.container.querySelector(".reply-title");if(a){const e=a.firstElementChild,t=T.c.weakMap.get(e),i=s.showSender.checkboxField.checked?"Chat.Accessory.Forward":"Chat.Accessory.Hidden";t.key=i,t.update()}}},{elements:r.slice(2,4),onChange:e=>{const t=!!+e;let i;i=t&&void 0!==this.forwardWasDroppingAuthor?this.forwardWasDroppingAuthor?s.hideSender:s.showSender:t?s.showSender:s.hideSender,i.checkboxField.checked=!0}}].forEach(e=>{const t=rt(e.elements.map(e=>({container:e,input:e.querySelector("input")})),e.onChange),s=document.createElement("hr");t.append(s),o.append(t)}),o.append(s.changePeer.element),!he.a){this.forwardHover=new Ha({element:o})}s.modifyArgs=n.slice(0,-1),this.replyElements.container.append(o),s.modifyArgs.forEach((e,t)=>{const{input:s}=e.checkboxField;s.type="radio",s.name=t<2?"author":"caption",s.value=""+ +!(t%2)}),this.newMessageWrapper=document.createElement("div"),this.newMessageWrapper.classList.add("new-message-wrapper"),this.sendAsContainer=document.createElement("div"),this.sendAsContainer.classList.add("new-message-send-as-container"),this.sendAsCloseBtn=document.createElement("div"),this.sendAsCloseBtn.classList.add("new-message-send-as-close","new-message-send-as-avatar","tgico-close");const d=[{text:"SendMessageAsTitle",onClick:void 0}];let h;const p=e=>{e&&(h=this.sendAsAvatar);const t=this.sendAsAvatar!==h,s=!e&&t?2:0;Object(ps.a)(this.sendAsCloseBtn,"is-visible",e,300,void 0,s),t||Object(ps.a)(h,"is-visible",!e,300,void 0,s)};if(Ee({noRipple:!0,listenerSetter:this.listenerSetter,container:this.sendAsContainer},"top-right",d,()=>{p(!0)},()=>{p(!1)}),d[0].element.classList.add("btn-menu-item-header"),this.sendAsBtnMenu=this.sendAsContainer.firstElementChild,this.sendAsBtnMenu.classList.add("scrollable","scrollable-y"),this.sendAsContainer.append(this.sendAsCloseBtn),this.btnToggleEmoticons=N("none toggle-emoticons",{noRipple:!0}),this.inputMessageContainer=document.createElement("div"),this.inputMessageContainer.classList.add("input-message-container"),"chat"===this.chat.type){this.goDownUnreadBadge=document.createElement("span"),this.goDownUnreadBadge.classList.add("badge","badge-24","badge-primary"),this.goDownBtn.append(this.goDownUnreadBadge),this.goMentionBtn=$({icon:"mention",className:"bubbles-corner-button bubbles-go-mention"}),this.goMentionUnreadBadge=document.createElement("span"),this.goMentionUnreadBadge.classList.add("badge","badge-24","badge-primary"),this.goMentionBtn.append(this.goMentionUnreadBadge),this.inputContainer.append(this.goMentionBtn),Object(l.b)(this.goMentionBtn,e=>{Object(c.a)(e),this.appMessagesManager.goToNextMention(this.chat.peerId)},{listenerSetter:this.listenerSetter}),this.btnScheduled=N("scheduled btn-scheduled float hide",{noRipple:!0}),Object(l.b)(this.btnScheduled,e=>{this.appImManager.openScheduled(this.chat.peerId)},{listenerSetter:this.listenerSetter}),this.listenerSetter.add(a.a)("scheduled_new",({peerId:e})=>{this.chat.peerId===e&&this.btnScheduled.classList.remove("hide")}),this.listenerSetter.add(a.a)("scheduled_delete",({peerId:e})=>{this.chat.peerId===e&&this.appMessagesManager.getScheduledMessages(this.chat.peerId).then(e=>{this.btnScheduled.classList.toggle("hide",!e.length)})}),this.btnToggleReplyMarkup=N("botcom toggle-reply-markup float hide",{noRipple:!0}),this.replyKeyboard=new Xo({appendTo:this.rowsWrapper,listenerSetter:this.listenerSetter,appMessagesManager:this.appMessagesManager,btnHover:this.btnToggleReplyMarkup,chatInput:this}),this.listenerSetter.add(this.replyKeyboard)("open",()=>this.btnToggleReplyMarkup.classList.add("active")),this.listenerSetter.add(this.replyKeyboard)("close",()=>this.btnToggleReplyMarkup.classList.remove("active")),this.botCommands=new sr(this.rowsWrapper,this,this.appProfileManager),this.botCommandsToggle=document.createElement("div"),this.botCommandsToggle.classList.add("new-message-bot-commands");const e=document.createElement("div");e.classList.add("new-message-bot-commands-icon-scale");const t=this.botCommandsIcon=document.createElement("div");t.classList.add("animated-menu-icon","animated-menu-close-icon"),e.append(t),this.botCommandsToggle.append(e),Object(l.b)(this.botCommandsToggle,e=>{Object(c.a)(e);t.classList.contains("state-back")?(this.botCommands.toggle(!0),t.classList.remove("state-back")):(this.botCommands.setUserId(this.chat.peerId.toUserId(),this.chat.bubbles.getMiddleware()),t.classList.add("state-back"))},{listenerSetter:this.listenerSetter}),this.botCommands.addEventListener("visible",()=>{t.classList.add("state-back")}),this.botCommands.addEventListener("hiding",()=>{t.classList.remove("state-back")})}this.attachMenuButtons=[{icon:"image",text:"Chat.Input.Attach.PhotoOrVideo",onClick:()=>{this.fileInput.value="";const e=[...g].join(", ");this.fileInput.setAttribute("accept",e),this.willAttachType="media",this.fileInput.click()},verify:()=>this.chat.canSend("send_media")},{icon:"document",text:"Chat.Input.Attach.Document",onClick:()=>{this.fileInput.value="",this.fileInput.removeAttribute("accept"),this.willAttachType="document",this.fileInput.click()},verify:()=>this.chat.canSend("send_media")},{icon:"poll",text:"Poll",onClick:()=>{new Po(this.chat).show()},verify:e=>e.isAnyChat()&&this.chat.canSend("send_polls")}],this.attachMenu=Ee({noRipple:!0,listenerSetter:this.listenerSetter},"top-left",this.attachMenuButtons),this.attachMenu.classList.add("attach-file","tgico-attach"),this.attachMenu.classList.remove("tgico-more"),this.recordTimeEl=document.createElement("div"),this.recordTimeEl.classList.add("record-time"),this.fileInput=document.createElement("input"),this.fileInput.type="file",this.fileInput.multiple=!0,this.fileInput.style.display="none",this.newMessageWrapper.append(...[this.sendAsContainer,this.botCommandsToggle,this.btnToggleEmoticons,this.inputMessageContainer,this.btnScheduled,this.btnToggleReplyMarkup,this.attachMenu,this.recordTimeEl,this.fileInput].filter(Boolean)),this.rowsWrapper.append(this.replyElements.container),this.autocompleteHelperController=new $o,this.stickersHelper=new Ro(this.rowsWrapper,this.autocompleteHelperController),this.emojiHelper=new Ko(this.rowsWrapper,this.autocompleteHelperController,this,this.appEmojiManager),this.commandsHelper=new qo(this.rowsWrapper,this.autocompleteHelperController,this,this.chat.appProfileManager,this.chat.appUsersManager),this.mentionsHelper=new Qo(this.rowsWrapper,this.autocompleteHelperController,this,this.chat.appProfileManager,this.chat.appUsersManager),this.inlineHelper=new er(this.rowsWrapper,this.autocompleteHelperController,this.chat,this.appUsersManager,this.appInlineBotsManager),this.rowsWrapper.append(this.newMessageWrapper),this.btnCancelRecord=N("delete btn-circle z-depth-1 btn-record-cancel"),this.btnSendContainer=document.createElement("div"),this.btnSendContainer.classList.add("btn-send-container"),this.recordRippleEl=document.createElement("div"),this.recordRippleEl.classList.add("record-ripple"),this.btnSend=N("none btn-circle z-depth-1 btn-send animated-button-icon"),this.btnSend.insertAdjacentHTML("afterbegin",'\n \n \n \n \n '),this.btnSendContainer.append(this.recordRippleEl,this.btnSend),"scheduled"!==this.chat.type&&(this.sendMenu=new Mo({onSilentClick:()=>{this.sendSilent=!0,this.sendMessage()},onScheduleClick:()=>{this.scheduleSending(void 0)},listenerSetter:this.listenerSetter,openSide:"top-left",onContextElement:this.btnSend,onOpen:()=>!this.isInputEmpty()||!!Object.keys(this.forwarding).length}),this.btnSendContainer.append(this.sendMenu.sendMenu)),this.inputContainer.append(this.btnCancelRecord,this.btnSendContainer),Wa.attachButtonListener(this.btnToggleEmoticons,this.listenerSetter),this.listenerSetter.add(Wa)("open",this.onEmoticonsOpen),this.listenerSetter.add(Wa)("close",this.onEmoticonsClose),this.attachMessageInputField(),this.listenerSetter.add(a.a)("settings_updated",()=>{(this.stickersHelper||this.emojiHelper)&&(this.previousQuery="",this.checkAutocomplete()),this.messageInputField&&this.messageInputField.onFakeInput()}),this.listenerSetter.add(a.a)("draft_updated",({peerId:e,threadId:t,draft:s,force:i})=>{this.chat.threadId===t&&this.chat.peerId===e&&this.setDraft(s,!0,i)}),this.listenerSetter.add(a.a)("peer_changing",e=>{this.chat===e&&this.saveDraft()}),this.listenerSetter.add(a.a)("chat_changing",({from:e,to:t})=>{this.chat===e?this.autocompleteHelperController.toggleListNavigation(!1):this.chat===t&&this.autocompleteHelperController.toggleListNavigation(!0)}),this.sendAsContainer&&this.listenerSetter.add(a.a)("peer_full_update",e=>{e.isChannel()&&this.chat.peerId===e&&this.updateSendAs()}),"scheduled"===this.chat.type?this.listenerSetter.add(a.a)("scheduled_delete",({peerId:e,mids:t})=>{this.chat.peerId===e&&t.includes(this.editMsgId)&&this.onMessageSent()}):(this.listenerSetter.add(a.a)("history_delete",({peerId:e,msgs:t})=>{this.chat.peerId===e&&(t.has(this.editMsgId)&&this.onMessageSent(),this.replyToMsgId&&t.has(this.replyToMsgId)&&this.clearHelper("reply"))}),this.listenerSetter.add(a.a)("dialogs_multiupdate",e=>{e[this.chat.peerId]&&(this.startParam===Ne.a?this.setStartParam():this.center(!0))}));try{this.recorder=new Lo.a({encoderSampleRate:48e3,monitorGain:0,numberOfChannels:1,recordingGain:1,reuseWorker:!0})}catch(e){console.error("Recorder constructor error:",e)}this.updateSendBtn(),this.listenerSetter.add(this.fileInput)("change",e=>{let t=e.target.files;t.length&&(new Oo(this.chat,Array.from(t).slice(),this.willAttachType),this.fileInput.value="")},!1),Object(l.b)(this.btnSend,this.onBtnSendClick,{listenerSetter:this.listenerSetter,touchMouseDown:!0}),this.recorder&&(Object(l.b)(this.btnCancelRecord,this.onCancelRecordClick,{listenerSetter:this.listenerSetter}),this.recorder.onstop=()=>{this.setRecording(!1),this.chatInput.classList.remove("is-locked"),this.recordRippleEl.style.transform=""},this.recorder.ondataavailable=e=>{if(this.releaseMediaPlayback&&(this.releaseMediaPlayback(),this.releaseMediaPlayback=void 0),this.recordingOverlayListener&&(this.listenerSetter.remove(this.recordingOverlayListener),this.recordingOverlayListener=void 0),this.recordingNavigationItem&&(j.a.removeItem(this.recordingNavigationItem),this.recordingNavigationItem=void 0),this.recordCanceled)return;const{peerId:t,threadId:s}=this.chat,i=this.replyToMsgId,n=(Date.now()-this.recordStartTime)/1e3|0,a=new Blob([e],{type:"audio/ogg"});Co.a.decode(e,!0).then(e=>{Co.a.setKeepAlive(!1),this.appMessagesManager.sendFile(t,a,{isVoiceMessage:!0,isMedia:!0,duration:n,waveform:e.waveform,objectURL:e.url,replyToMsgId:i,threadId:s,clearDraft:!0}),this.onMessageSent(!1,!0)})}),Object(l.b)(this.replyElements.cancelBtn,this.onHelperCancel,{listenerSetter:this.listenerSetter}),Object(l.b)(this.replyElements.container,this.onHelperClick,{listenerSetter:this.listenerSetter}),this.saveDraftDebounced=Object(vt.a)(()=>this.saveDraft(),2500,!1,!0),this.botStartBtn=Object(B.a)("btn-primary btn-transparent text-bold chat-input-control-button"),this.botStartBtn.append(Object(T.d)("BotStart")),Object(l.b)(this.botStartBtn,()=>{const{startParam:e}=this;if(void 0===e)return;const t=this.toggleBotStartBtnDisability=Object(Ct.a)([this.botStartBtn],!0),s=this.chat.peerId,i=this.chat.bubbles.getMiddleware(()=>this.chat.peerId===s&&this.startParam===e&&this.toggleBotStartBtnDisability===t);this.appMessagesManager.startBot(s.toUserId(),void 0,e).then(()=>{i()&&(t(),this.toggleBotStartBtnDisability=void 0,this.setStartParam())})},{listenerSetter:this.listenerSetter}),this.controlContainer.append(this.botStartBtn)}constructPinnedHelpers(){this.pinnedControlBtn=Object(B.a)("btn-primary btn-transparent text-bold chat-input-control-button",{icon:"unpin"}),this.controlContainer.append(this.pinnedControlBtn),this.listenerSetter.add(this.pinnedControlBtn)("click",()=>{const e=this.chat.peerId;new co(e,0,!0,()=>{this.chat.appImManager.setPeer();const e=this.chat.appImManager.chat;e.topbar.pinnedMessage&&e.topbar.pinnedMessage.pinnedMessageContainer.toggle(!0)})}),this.chatInput.classList.add("type-pinned")}center(e=!1){const t=this.getNeededFakeContainer();if(!t&&!this.inputContainer.classList.contains("is-centering"))return;if(t===this.fakeWrapperTo)return;const s=t||this.fakeWrapperTo,i=!!t,n=this.fakeWrapperTo;let a,o="",r="";const l=s.getBoundingClientRect(),c=this.fakeRowsWrapper.getBoundingClientRect(),d=c.width,h=l.width;if(d!==h){const e=h/d,t=(d-h)/2;if(a=l.left-c.left-t,i&&(o=`translateX(${a}px) scaleX(${e})`,e<1)){const t=12;r=t+t*(1-e)+"px"}}this.fakeWrapperTo=t;const p=e?200:0;return Object(ps.a)(this.inputContainer,"is-centering",i,p),Object(ps.a)(this.rowsWrapperWrapper,"is-centering-to-control",!!(i&&t&&t.classList.contains("chat-input-control")),p),this.rowsWrapper.style.transform=o,this.rowsWrapper.style.borderRadius=r,{transform:o,borderRadius:r,needTranslateX:n&&(t&&t.classList.contains("chat-input-control")&&n===this.fakeSelectionWrapper||n.classList.contains("chat-input-control"))?-.5*a:a,widthFrom:d,widthTo:h}}setStartParam(e){this.startParam!==e&&(this.startParam=e,this.center(!0))}getNeededFakeContainer(){return this.chat.selection.isSelecting?this.fakeSelectionWrapper:void 0!==this.startParam||!this.chat.canSend()||"pinned"===this.chat.type||this.chat.isStartButtonNeeded()?this.controlContainer:void 0}getReadyToSend(e){return"scheduled"===this.chat.type?(this.scheduleSending(e),!0):(e(),!1)}setUnreadCount(){if(!this.goDownUnreadBadge)return;const e=this.appMessagesManager.getDialogOnly(this.chat.peerId),t=null==e?void 0:e.unread_count;if(this.goDownUnreadBadge.innerText=""+(t||""),this.goDownUnreadBadge.classList.toggle("badge-gray",this.appNotificationsManager.isPeerLocalMuted(this.chat.peerId,!0)),this.goMentionUnreadBadge&&"chat"===this.chat.type){const t=!(!(null==e?void 0:e.unread_mentions_count)||!e.unread_count);this.goMentionUnreadBadge.innerText=t?""+e.unread_mentions_count:"",this.goMentionBtn.classList.toggle("is-visible",t)}}saveDraft(){if(!this.chat.peerId||this.editMsgId||"scheduled"===this.chat.type)return;const{value:e,entities:t}=Object(Io.a)(this.messageInputField.input);let s;(e.length||this.replyToMsgId)&&(s={_:"draftMessage",date:Object(ne.h)(!0)+this.serverTimeManager.serverTimeOffset,message:e,entities:t.length?t:void 0,pFlags:{no_webpage:this.noWebPage},reply_to_msg_id:this.replyToMsgId}),this.appDraftsManager.syncDraft(this.chat.peerId,this.chat.threadId,s)}destroy(){this.listenerSetter.removeAll()}cleanup(e=!0){this.chat.peerId||(this.chatInput.style.display="none",this.goDownBtn.classList.add("hide")),li(),this.lastTimeType=0,this.startParam=void 0,this.toggleBotStartBtnDisability&&(this.toggleBotStartBtnDisability(),this.toggleBotStartBtnDisability=void 0),this.messageInput&&(this.clearInput(),e&&this.clearHelper())}setDraft(e,t=!0,s=!1){return!(!s&&!Object(Eo.a)(this.messageInput)||"scheduled"===this.chat.type)&&(e||(e=this.appDraftsManager.getDraft(this.chat.peerId,this.chat.threadId))?(this.messageInputField.value!==e.rMessage||this.replyToMsgId!==e.reply_to_msg_id)&&(t&&this.clearHelper(),this.noWebPage=e.pFlags.no_webpage,e.reply_to_msg_id&&this.initMessageReply(e.reply_to_msg_id),this.setInputValue(e.rMessage,t,t),!0):(s&&(this.chat.container.classList.contains("is-helper-active")&&this.t(),this.messageInputField.inputFake.textContent="",this.messageInputField.onFakeInput(!1),(this.chat.bubbles.messagesQueuePromise||Promise.resolve()).then(()=>{Object(Re.b)(()=>{this.onMessageSent()})})),!1))}finishPeerChange(e){const t=this.chat.peerId,{forwardElements:s,btnScheduled:i,replyKeyboard:n,sendMenu:a,goDownBtn:o,chatInput:r,sendAsContainer:l,botCommandsToggle:c}=this;r.style.display="";const d=this.appPeersManager.isBroadcast(t);if(o.classList.toggle("is-broadcast",d),o.classList.remove("hide"),this.goDownUnreadBadge&&this.setUnreadCount(),"pinned"===this.chat.type&&r.classList.toggle("can-pin",this.appPeersManager.canPinMessage(t)),s&&(this.forwardWasDroppingAuthor=!1,s.showCaption.checkboxField.setValueSilently(!0),s.showSender.checkboxField.setValueSilently(!0)),i){i.classList.add("hide");const e=this.chat.bubbles.getMiddleware();this.appMessagesManager.getScheduledMessages(t).then(t=>{e()&&i.classList.toggle("hide",!t.length)})}if(this.newMessageWrapper&&this.updateOffset(null,!1,!0),c&&(this.hasBotCommands=void 0,this.botCommands.toggle(!0,void 0,!0),this.updateBotCommandsToggle(!0),c.remove(),this.appPeersManager.isBot(t))){const e=t.toUserId(),s=this.chat.bubbles.getMiddleware(),i=this.appProfileManager.getProfile(e);Object(Xt.a)(i,e=>{s()&&this.updateBotCommands(e,!(i instanceof Promise))})}l&&(this.sendAsAvatar&&(this.sendAsAvatar.remove(),this.sendAsAvatar=void 0),l.remove(),this.sendAsPeerId=void 0,this.updatingSendAsPromise=void 0,this.updateSendAs(!0)),n&&n.setPeer(t),a&&a.setPeerId(t),this.messageInput?this.updateMessageInput():this.pinnedControlBtn&&this.pinnedControlBtn.append(Object(T.d)(this.appPeersManager.canPinMessage(this.chat.peerId)?"Chat.Input.UnpinAll":"Chat.Pinned.DontShow")),this.startParam=e,this.center(!1)}updateOffset(e,t,s,i){e?this.newMessageWrapper.dataset.offset=e:delete this.newMessageWrapper.dataset.offset,Object(ps.a)(this.newMessageWrapper,"has-offset",t,s?0:300,void 0,i)}updateBotCommands(e,t){this.hasBotCommands=e.bot_info&&e.bot_info.commands.length,this.updateBotCommandsToggle(t)}updateBotCommandsToggle(e){const{botCommandsToggle:t,hasBotCommands:s}=this,i=!!s&&this.isInputEmpty();if(!s){if(!t.parentElement)return;t.remove()}const n=i,a=t.parentElement?0:2;t.parentElement||this.newMessageWrapper.prepend(t),this.updateOffset("commands",n,e,a)}updateSendAsButtons(e){const t=e.map((e,t)=>{const s=document.createElement("div"),i=document.createElement("div");return i.classList.add("btn-menu-item-subtitle"),e.isUser()?i.append(Object(T.d)("Chat.SendAs.PersonalAccount")):e===this.chat.peerId?i.append(Object(T.d)("VoiceChat.DiscussionGroup")):i.append(this.appProfileManager.getChatMembersString(e.toChatId())),s.append(new Tt.a({peerId:e}).element,i),{onClick:t?()=>{const t=this.chat.peerId;if(t.isChannel()){const s=this.appProfileManager.getCachedFullChat(t.toChatId());if(s){s.default_send_as=this.appPeersManager.getOutputPeer(e),this.sendAsPeerId=e,this.updateSendAsAvatar(e),this.updateMessageInputPlaceholder();const t=this.chat.bubbles.getMiddleware(),i=()=>{if(this.sendAsPeerId!==e||!t())return;const s=this.sendAsPeerIds.slice();Object(V.a)(s,e),s.unshift(e),this.updateSendAsButtons(s)};a.a.settings.animationsEnabled?setTimeout(i,250):i()}}ft.a.invokeApi("messages.saveDefaultSendAs",{peer:this.appPeersManager.getInputPeerById(t),send_as:this.appPeersManager.getInputPeerById(e)})}:void 0,textElement:s}}),s=Me(t);t.forEach((t,s)=>{const i=e[s],n=new bc;n.classList.add("avatar-32","btn-menu-item-icon"),n.updateWithOptions({peerId:i}),s||n.classList.add("active"),t.element.prepend(n)}),Array.from(this.sendAsBtnMenu.children).slice(1).forEach(e=>e.remove()),this.sendAsBtnMenu.append(...Array.from(s.children))}updateSendAsAvatar(e,t){const s=this.sendAsAvatar;if(s&&s.peerId===e)return;s||(t=!0);let i=t?0:2;const n=t?0:300,a=this.sendAsAvatar=new bc;a.classList.add("new-message-send-as-avatar","avatar-30"),a.updateWithOptions({isDialog:!1,peerId:e}),Object(ps.a)(a,"is-visible",!0,n,void 0,i),s&&Object(ps.a)(s,"is-visible",!1,n,()=>{s.remove()},i),this.sendAsContainer.append(a)}getDefaultSendAs(){return Object(Xt.a)(this.appProfileManager.getChannelFull(this.chat.peerId.toChatId()),e=>e.default_send_as?this.appPeersManager.getPeerId(e.default_send_as):void 0)}updateSendAs(e){const t=this.chat.peerId;if(!t.isChannel()||this.updatingSendAsPromise)return;const s=this.chat.bubbles.getMiddleware(()=>!this.updatingSendAsPromise||this.updatingSendAsPromise===r),{sendAsContainer:i}=this,n=t.toChatId(),a=this.getDefaultSendAs();a instanceof Promise&&(e=void 0);const o=Object(Xt.a)(a,t=>{if(!s()||void 0===t)return;this.sendAsPeerId=t,this.updateSendAsAvatar(t,e),this.updateMessageInputPlaceholder(),this.appChatsManager.getSendAs(n).then(e=>{if(!s())return;const i=e.map(e=>this.appPeersManager.getPeerId(e));this.sendAsPeerIds=i.slice(),Object(V.a)(i,t),i.unshift(t),this.updateSendAsButtons(i)});let a=0;i.parentElement||(this.newMessageWrapper.prepend(i),a=2),this.updateOffset("as",!0,e,a),this.updatingSendAsPromise=void 0}),r=this.updatingSendAsPromise=Promise.resolve(o);return r}updateMessageInputPlaceholder(){const e=T.c.weakMap.get(this.messageInput);if(e){const{peerId:t,threadId:s}=this.chat;let i;i=s?"Comment":this.appPeersManager.isBroadcast(t)?"ChannelBroadcast":void 0!==this.sendAsPeerId&&this.sendAsPeerId!==a.a.myId||this.appMessagesManager.isAnonymousSending(t)?"SendAnonymously":"Message",e.compareAndUpdate({key:i})}}updateMessageInput(){const{chatInput:e,attachMenu:t,messageInput:s}=this,{peerId:i,threadId:n}=this.chat,a=this.chat.canSend();e.classList.contains("is-hidden")!==!a&&(e.classList.add("no-transition"),e.classList.toggle("is-hidden",!a),e.offsetLeft,e.classList.remove("no-transition")),this.updateMessageInputPlaceholder();const o=this.attachMenuButtons.filter(e=>{const t=e.verify(i,n);return e.element.classList.toggle("hide",!t),t});a?(s.setAttribute("contenteditable","true"),this.setDraft(void 0,!1),s.innerHTML||this.messageInputField.onFakeInput()):s.removeAttribute("contenteditable"),t.toggleAttribute("disabled",!o.length),t.classList.toggle("btn-disabled",!o.length),this.updateSendBtn()}attachMessageInputField(){const e=this.messageInputField;this.messageInputField=new O.b({placeholder:"Message",name:"message",animate:!0}),this.messageInputField.input.classList.replace("input-field-input","input-message-input"),this.messageInputField.inputFake.classList.replace("input-field-input","input-message-input"),this.messageInput=this.messageInputField.input,this.messageInput.classList.add("no-scrollbar"),this.attachMessageInputListeners(),tr.a&&Object(tr.b)(this.messageInput),e?(e.input.replaceWith(this.messageInputField.input),e.inputFake.replaceWith(this.messageInputField.inputFake)):this.inputMessageContainer.append(this.messageInputField.input,this.messageInputField.inputFake)}attachMessageInputListeners(){this.listenerSetter.add(this.messageInput)("keydown",e=>{const t=e.key;if(Object(Ho.a)(e))Object(c.a)(e),this.sendMessage();else if(e.ctrlKey||e.metaKey)this.handleMarkdownShortcut(e);else if(("PageUp"===t||"PageDown"===t)&&!e.shiftKey)if(e.preventDefault(),"PageUp"===t){const e=document.createRange(),t=window.getSelection();e.setStart(this.messageInput.childNodes[0]||this.messageInput,0),e.collapse(!0),t.removeAllRanges(),t.addRange(e)}else Object(ko.a)(this.messageInput)}),he.a&&Object(l.b)(this.messageInput,e=>{this.appImManager.selectTab(1),Wa.toggle(!1)},{listenerSetter:this.listenerSetter}),this.listenerSetter.add(this.messageInput)("input",this.onMessageInput),this.listenerSetter.add(this.messageInput)("keyup",()=>{this.checkAutocomplete()}),"chat"!==this.chat.type&&"discussion"!==this.chat.type||this.listenerSetter.add(this.messageInput)("focusin",()=>{this.chat.bubbles.scrollable.loadedAll.bottom&&this.appMessagesManager.readAllHistory(this.chat.peerId,this.chat.threadId)})}applyMarkdown(e,t){const s={bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",monospace:()=>document.execCommand("fontName",!1,"monospace"),link:t?()=>document.execCommand("createLink",!1,t):()=>document.execCommand("unlink",!1,null),spoiler:()=>document.execCommand("fontName",!1,"spoiler")};if(!s[e])return!1;const i=s[e],n=this.prepareDocumentExecute(),a=[];if(a.push(document.execCommand("styleWithCSS",!1,"true")),"monospace"===e||"spoiler"===e){let t=!1;const s=window.getSelection();if(!s.isCollapsed){const i=s.getRangeAt(0),n=zo.b[e],a=i.commonAncestorContainer;(a.parentNode.matches(n.match)||a instanceof HTMLElement&&a.matches(n.match))&&(t=!0)}t?a.push(document.execCommand("fontName",!1,"Roboto")):a.push("function"==typeof i?i():document.execCommand(i,!1,null))}else a.push("function"==typeof i?i():document.execCommand(i,!1,null));return a.push(document.execCommand("styleWithCSS",!1,"false")),n(),this.appImManager.markupTooltip&&this.appImManager.markupTooltip.setActiveMarkupButton(),!0}insertAtCaret(e,t,s=!0){const{value:i,caretPos:n,entities:a}=Vo(this.messageInput),o=n>=0?n:i.length,r=i.substr(0,o),l=i.substr(o),c=s?r.match(ir.AUTO_COMPLETE_REG_EXP):null,d=c?c.index+(c[0].length-c[2].length):r.length,h=r.slice(0,d)+e+l,p=X.b.parseEntities(i);X.b.mergeEntities(a,p);const u=t?Math.max(t.length,e.length):e.length,g=[];t&&(g.push(t),t.offset=d);const m=c?u-c[2].length:u;a.forEach(e=>{e.offset>=d&&(e.offset+=m)}),X.b.mergeEntities(a,g);{const e={_:"messageEntityCaret",offset:d+u,length:0};let t=0;for(let s=a.length;te.offset)break}a.splice(t,0,e)}const b=X.b.wrapDraftText(h,{entities:a});this.messageInputField.setValueSilently(b,!0);const v=this.messageInput.querySelector(".composer-sel");v&&(!function(e){const t=e;if(1===(e=e.previousSibling).nodeType){const s=document.createTextNode("");e.parentNode.insertBefore(s,t.nextSibling&&t.nextSibling.nodeType!==e.nodeType?t.nextSibling:t),e=s}if(window.getSelection&&document.createRange){const t=document.createRange();e&&(t.setStartAfter(e),t.insertNode(e),t.setStart(e,e.nodeValue.length)),t.collapse(!0);const s=window.getSelection();s.removeAllRanges(),s.addRange(t)}}(v),v.remove()),this.onMessageInput()}checkAutocomplete(e,t,s){if(void 0===e){const i=Vo(this.messageInputField.input,!0);e=i.value,t=i.caretPos,s=i.entities}if(-1===t&&(t=e.length),void 0===s){const t=X.b.parseMarkdown(e,s,!0);s=X.b.mergeEntities(s,X.b.parseEntities(t))}if(e=e.slice(0,t),this.previousQuery===e)return;this.previousQuery=e;const i=e.match(ir.AUTO_COMPLETE_REG_EXP);let n;if(i){const t=s[0];let o=i[2];const r=o[0];if(this.stickersHelper&&a.a.settings.stickers.suggest&&this.chat.canSend("send_stickers")&&"messageEntityEmoji"===(null==t?void 0:t._)&&t.length===e.length&&!t.offset)n=this.stickersHelper,this.stickersHelper.checkEmoticon(e);else if("@"===r){const e=this.chat.threadId?this.appMessagesIdsManager.getServerMessageId(this.chat.threadId):void 0;this.mentionsHelper.checkQuery(o,this.chat.peerId.isUser()?Ne.c:this.chat.peerId,e)&&(n=this.mentionsHelper)}else i[1]||"/"!==r?a.a.settings.emoji.suggest&&(o=o.replace(/^\s*/,""),e.match(/^\s*:(.+):\s*$/)||e.match(/:[;!@#$%^&*()-=|]/)||!o||(n=this.emojiHelper,this.emojiHelper.checkQuery(o,r))):this.commandsHelper.checkQuery(o,this.chat.peerId)&&(n=this.commandsHelper)}n=this.checkInlineAutocomplete(e,n),this.autocompleteHelperController.hideOtherHelpers(n)}checkInlineAutocomplete(e,t){let s=!1;if(!t){const i=e.match(/^@([a-zA-Z\\d_]{3,32})\s/);if(i){const n=i[1],a=e.slice(i[0].length);s=i[0].length===e.length,t=this.inlineHelper,this.btnPreloader?Object(ps.a)(this.btnPreloader,"show",!0,400):(this.btnPreloader=N("none btn-preloader float show disable-hover",{noRipple:!0}),Object(ee.f)(this.btnPreloader,!0),this.inputMessageContainer.parentElement.insertBefore(this.btnPreloader,this.inputMessageContainer.nextSibling)),this.inlineHelper.checkQuery(this.chat.peerId,n,a).then(({user:e,renderPromise:t})=>{s&&e.bot_inline_placeholder&&(this.messageInput.dataset.inlinePlaceholder=e.bot_inline_placeholder),t.then(()=>{Object(ps.a)(this.btnPreloader,"show",!1,400)})}).catch(je.a)}}return s||delete this.messageInput.dataset.inlinePlaceholder,t!==this.inlineHelper&&this.btnPreloader&&Object(ps.a)(this.btnPreloader,"show",!1,400),t}setRecording(e){this.recording!==e&&(Object(ps.a)(this.chatInput,"is-recording",e,200),this.recording=e,this.updateSendBtn())}changeForwardRecipient(){if(this.helperWaitingForward)return;this.helperWaitingForward=!0;const e=Object(ue.a)(this.forwarding),t=this.helperFunc;this.clearHelper(),this.updateSendBtn();let s=!1;new ii(e,()=>{s=!0}).addEventListener("close",()=>{this.helperWaitingForward=!1,s||t()})}clearInput(e=!0,t=!0,s=""){if(document.activeElement===this.messageInput&&ae.f){const e=document.createElement("input");document.body.append(e),Object(Yo.a)(e),this.messageInputField.setValueSilently(s),Object(Yo.a)(this.messageInput),e.remove()}else this.messageInputField.setValueSilently(s);he.a||(this.canRedoFromHTML="",this.undoHistory.length=0,this.executedHistory.length=0,this.canUndoFromHTML="");let i=!1;e&&(i=this.setDraft(void 0,!1)),!i&&t&&this.onMessageInput()}isInputEmpty(){return Object(Eo.a)(this.messageInput)}updateSendBtn(){let e;const t=this.isInputEmpty();e=this.editMsgId?"edit":!this.recorder||this.recording||!t||this.forwarding?"scheduled"===this.chat.type?"schedule":"send":"record",["send","record","edit","schedule"].forEach(t=>{this.btnSend.classList.toggle(t,e===t)}),this.btnScheduled&&this.btnScheduled.classList.toggle("show",t),this.btnToggleReplyMarkup&&this.btnToggleReplyMarkup.classList.toggle("show",t)}onMessageSent(e=!0,t){"scheduled"!==this.chat.type&&this.appMessagesManager.readAllHistory(this.chat.peerId,this.chat.threadId,!0),this.scheduleDate=void 0,this.sendSilent=void 0;const s=this.messageInputField.value;X.b.parseEntities(s).filter(e=>"messageEntityEmoji"===e._).forEach(e=>{const t=Object(se.a)(e.unicode);this.appEmojiManager.pushRecentEmoji(t)}),e&&(this.lastUrl="",delete this.noWebPage,this.willSendWebPage=null,this.clearInput()),(t||e)&&this.clearHelper(),this.updateSendBtn()}sendMessage(e=!1){const{editMsgId:t,chat:s}=this;if("scheduled"===s.type&&!e&&!t)return void this.scheduleSending();const{peerId:i}=s,{noWebPage:n}=this,a=this.chat.getMessageSendingParams(),{value:o,entities:r}=Object(Io.a)(this.messageInputField.input);if(t){const e=this.editMessage;if(!o.trim()&&!e.media)return void new ni(i,[t],s.type);this.appMessagesManager.editMessage(e,o,{entities:r,noWebPage:n}),this.onMessageSent()}else o.trim()&&(this.appMessagesManager.sendText(i,o,Object.assign(Object.assign({entities:r},a),{noWebPage:n,webPage:this.getWebPagePromise?void 0:this.willSendWebPage,clearDraft:!0})),this.onMessageSent(!1,!1));if(this.forwarding){const e=Object(ue.a)(this.forwarding);setTimeout(()=>{for(const t in e)this.appMessagesManager.forwardMessages(i,t.toPeerId(),e[t],Object.assign(Object.assign({},a),{dropAuthor:this.forwardElements&&this.forwardElements.hideSender.checkboxField.checked,dropCaptions:this.isDroppingCaptions()}));o||this.onMessageSent()},0)}}sendMessageWithDocument(e,t=!1,s=!1){var i;const n="sticker"===(e=this.appDocsManager.getDoc(e)).type?"send_stickers":"gif"===e.type?"send_gifs":"send_media";return this.chat.peerId.isAnyChat()&&!this.chat.canSend(n)?(mt("Posting media content isn't allowed in this group."),!1):"scheduled"!==this.chat.type||t?!!e&&(this.appMessagesManager.sendFile(this.chat.peerId,e,Object.assign(Object.assign({},this.chat.getMessageSendingParams()),{isMedia:!0,clearDraft:s||void 0})),this.onMessageSent(s,!0),"sticker"===e.type&&(null===(i=Wa.stickersTab)||void 0===i||i.pushRecentSticker(e)),!0):(this.scheduleSending(()=>this.sendMessageWithDocument(e,!0,s)),!1)}canToggleHideAuthor(){const{forwardElements:e}=this;if(!e)return!1;const t=e.hideCaption.checkboxField;return!t.checked||Object(It.a)(t.label,"FORM").classList.contains("hide")}isDroppingCaptions(){return!this.canToggleHideAuthor()}initMessageEditing(e){const t=this.chat.getMessage(e);let s=X.b.wrapDraftText(t.message,{entities:t.totalEntities});const i=()=>{const n=this.appMessagesManager.wrapMessageForReply(t,void 0,[t.mid]);this.setTopInfo("edit",i,Object(T.d)("AccDescrEditing"),n,s,t),this.editMsgId=e,this.editMessage=t,s=void 0};i()}initMessagesForward(e){const t=()=>{const s=Object.keys(e).map(e=>e.toPeerId()),i=new Set;let n=0,o=0;s.forEach(t=>{const s=e[t];s.forEach(e=>{var s;const n=this.appMessagesManager.getMessageByPeer(t,e);!(null===(s=n.fwd_from)||void 0===s?void 0:s.from_name)||n.fromId||n.fwdFromId?i.add("P"+n.fromId):i.add("N"+n.fwd_from.from_name),n.media&&n.message&&++o}),n+=s.length});const r=i.size>2,l=[...i].map(e=>{const t=e[0];if(e=e.slice(1),"P"===t){const t=e.toPeerId();return t===a.a.myId?Object(T.d)("Chat.Accessory.Forward.You"):new Tt.a({peerId:t,dialog:!1,onlyFirstName:r}).element}return r?e.split(" ")[0]:e}),{forwardElements:c}=this;Object(It.a)(c.showCaption.checkboxField.label,"FORM").classList.toggle("hide",!o);const d=c.hideCaption.checkboxField.checked;o&&d?c.hideSender.checkboxField.setValueSilently(!0):void 0!==this.forwardWasDroppingAuthor&&(this.forwardWasDroppingAuthor?c.hideSender:c.showSender).checkboxField.setValueSilently(!0);const h=c.showSender.checkboxField.checked?"Chat.Accessory.Forward":"Chat.Accessory.Hidden",p=Object(T.d)(h,[n]),u=document.createDocumentFragment();let g,m;if(l.length<3?u.append(...Object(T.f)(l,!1)):u.append(l[0],Object(T.d)("AndOther",[l.length-1])),1===s.length){const t=s[0],i=e[t];if(g=this.appMessagesManager.getMessageByPeer(t,i[0]),m=!!g.grouped_id,m){const e=this.appMessagesManager.getMidsByMessage(g);(e.length!==n||e.find(e=>!i.includes(e)))&&(m=!1)}}const b=document.createDocumentFragment();if(m||1===n){const t=e[s[0]],i=this.appMessagesManager.wrapMessageForReply(g,void 0,t);b.append(u,": ",i)}else b.append(Object(T.d)("Chat.Accessory.Forward.From"),": ",u);let v=this.setTopInfo("forward",t,p,b);c.modifyArgs.forEach((e,t)=>{const i=e.textElement,n=T.c.weakMap.get(i);n.args=[t<2?s.length:o],n.update()}),this.forwardHover&&this.forwardHover.attachButtonListener(v,this.listenerSetter),this.forwarding=e};t()}initMessageReply(e){if(this.replyToMsgId===e)return;let t=this.chat.getMessage(e);const s=()=>{let i;"messageEmpty"===t._?(i=Object(T.d)("Loading"),this.chat.appMessagesManager.wrapSingleMessage(this.chat.peerId,e).then(i=>{this.replyToMsgId===e&&(t=i,"messageEmpty"===t._?this.clearHelper("reply"):s())})):i=new Tt.a({peerId:t.fromId,dialog:!1}).element,this.setTopInfo("reply",s,i,t&&t.message,void 0,t),this.replyToMsgId=e};s()}clearHelper(e){"edit"===this.helperType&&"edit"!==e&&this.clearInput(),e&&(this.lastUrl="",delete this.noWebPage,this.willSendWebPage=null),"reply"!==e&&(this.replyToMsgId=void 0,this.forwarding=void 0),this.editMsgId=this.editMessage=void 0,this.helperType=this.helperFunc=void 0,this.chat.container.classList.contains("is-helper-active")&&(j.a.removeByType("input-helper"),this.chat.container.classList.remove("is-helper-active"),this.t())}t(){Object(ps.a)(this.chat.container,"is-toggling-helper",!0,150,()=>{this.chat.container.classList.remove("is-toggling-helper")})}setInputValue(e,t=!0,s=!0){e||(e=""),t?this.clearInput(!1,!1,e):this.messageInputField.setValueSilently(e),Object(Re.b)(()=>{s&&Object(ko.a)(this.messageInput),this.onMessageInput(),this.messageInput.scrollTop=this.messageInput.scrollHeight})}setTopInfo(e,t,s="",i="",n,a){if(this.willSendWebPage&&"reply"===e)return;"webpage"!==e&&(this.clearHelper(e),this.helperType=e,this.helperFunc=t);const o=this.replyElements.container,r=o.lastElementChild.previousElementSibling,l=r.classList.contains("reply");this.replyElements.iconBtn.replaceWith(this.replyElements.iconBtn=N(("webpage"===e?"link":e)+" active reply-icon",{noRipple:!0}));const c=Hs(s,i,a);return l?r.replaceWith(c):o.insertBefore(c,o.lastElementChild),"webpage"===e&&(c.style.cursor="default"),this.chat.container.classList.contains("is-helper-active")||(this.chat.container.classList.add("is-helper-active"),this.t()),ae.e||j.a.pushItem({type:"input-helper",onPop:()=>{this.onHelperCancel()}}),void 0!==n&&this.setInputValue(n),setTimeout(()=>{this.updateSendBtn()},0),c}}ir.AUTO_COMPLETE_REG_EXP=/(\s|^)((?:(?:@|^\/)\S*)|(?::|^[^:@\/])(?!.*[:@\/]).*)$/;class nr{constructor(e){this.floating=!1,Object(w.a)(this,e);const{divAndCaption:t,className:s}=this;t.container.classList.add("pinned-container","hide"),t.title.classList.add("pinned-container-title"),t.subtitle.classList.add("pinned-container-subtitle"),t.content.classList.add("pinned-container-content"),this.btnClose=document.createElement("button"),this.btnClose.classList.add("pinned-container-close",`pinned-${s}-close`,"btn-icon","tgico-close"),this.wrapper=document.createElement("div"),this.wrapper.classList.add("pinned-container-wrapper"),Object(te.a)(this.wrapper),this.wrapperUtils=document.createElement("div"),this.wrapperUtils.classList.add("pinned-container-wrapper-utils"),this.wrapperUtils.append(this.btnClose),this.wrapper.append(...Array.from(t.container.children),this.wrapperUtils),t.container.append(this.wrapper),this.attachOnCloseEvent(this.btnClose)}attachOnCloseEvent(e){Object(l.b)(e,e=>{Object(c.a)(e),((this.onClose?this.onClose():null)||Promise.resolve(!0)).then(e=>{e&&this.toggle(!0)})},{listenerSetter:this.listenerSetter})}toggle(e){const t=this.divAndCaption.container.classList.contains("hide");if(void 0===e)e=!t;else if(e===t)return;const s=(this.floating||b.b.isMobile)&&!e;this.divAndCaption.container.classList.toggle("is-floating",s),this.divAndCaption.container.classList.toggle("hide",e),this.topbar.container.classList.toggle("is-pinned-floating",s),this.topbar.container.classList.toggle(`is-pinned-${this.className}-shown`,!e),this.topbar.setFloating(),this.topbar.setUtilsWidth()}isVisible(){return!this.divAndCaption.container.classList.contains("hide")}isFloating(){return this.divAndCaption.container.classList.contains("is-floating")}fill(e,t,s){this.divAndCaption.container.dataset.peerId=""+s.peerId,this.divAndCaption.container.dataset.mid=""+s.mid,this.divAndCaption.fill(e,t,s),this.topbar.setUtilsWidth()}}class ar extends nr{constructor(e,t,s){super({topbar:e,chat:t,listenerSetter:e.listenerSetter,className:"audio",divAndCaption:new qe("pinned-audio",(e,t)=>{Object(k.a)(this.divAndCaption.title,e),Object(k.a)(this.divAndCaption.subtitle,t)}),onClose:()=>{fe.stop()},floating:!0}),this.topbar=e,this.chat=t,this.appMessagesManager=s,this.onPlaybackParams=e=>{this.fasterEl.classList.toggle("active",e.playbackRate>1),this.repeatEl.classList.remove("tgico-audio_repeat","tgico-audio_repeat_single"),this.repeatEl.classList.add(e.loop?"tgico-audio_repeat_single":"tgico-audio_repeat"),this.repeatEl.classList.toggle("active",e.loop||e.round)},this.onPause=()=>{this.toggleEl.classList.remove("flip-icon")},this.onStop=()=>{this.toggle(!0)},this.onMediaPlay=({doc:e,message:t,media:s})=>{var i;let n,a;const o="voice"!==e.type&&"round"!==e.type;o?(n=e.audioTitle||e.fileName,a=e.audioPerformer||Object(T.d)("AudioUnknownArtist")):(n=new Tt.a({peerId:t.fromId,fromName:null===(i=t.fwd_from)||void 0===i?void 0:i.from_name}).element,a=Object(ne.d)(t.date)),this.fasterEl.classList.toggle("hide",o),this.repeatEl.classList.toggle("hide",!o),this.progressLine.setMedia(s),this.fill(n,a,t),this.toggleEl.classList.toggle("flip-icon",!s.paused),this.toggle(!1)},this.divAndCaption.border.remove();const i=N("fast_rewind active",{noRipple:!0}),n=N("fast_forward active",{noRipple:!0}),o=(e,t)=>{Object(l.b)(e,e=>{Object(c.a)(e),t()},{listenerSetter:this.topbar.listenerSetter})};o(i,()=>{fe.previous()}),o(n,()=>{fe.next()}),this.toggleEl=N("",{noRipple:!0}),this.toggleEl.classList.add("active","pinned-audio-ico","tgico"),o(this.toggleEl,()=>{fe.toggle()}),this.wrapper.prepend(this.wrapper.firstElementChild,i,this.toggleEl,n),this.volumeSelector=new Oe(this.listenerSetter,!0);const r=document.createElement("div");r.classList.add("progress-line-container"),r.append(this.volumeSelector.container);const d=document.createElement("div");d.classList.add("pinned-audio-volume-tunnel"),this.volumeSelector.btn.classList.add("pinned-audio-volume","active"),this.volumeSelector.btn.prepend(d),this.volumeSelector.btn.append(r),this.repeatEl=N("audio_repeat",{noRipple:!0}),o(this.repeatEl,()=>{const e=fe.getPlaybackParams();e.round?e.loop?(fe.round=!1,fe.loop=!1):fe.loop=!fe.loop:fe.round=!0});const h=this.fasterEl=N("playback_2x",{noRipple:!0});o(h,()=>{fe.playbackRate=h.classList.contains("active")?1:1.75}),this.wrapperUtils.prepend(this.volumeSelector.btn,h,this.repeatEl);const p=document.createElement("div");p.classList.add("pinned-audio-progress-wrapper"),this.progressLine=new Ae(void 0,void 0,!0,!0),this.progressLine.container.classList.add("pinned-audio-progress"),p.append(this.progressLine.container),this.wrapper.insertBefore(p,this.wrapperUtils),this.topbar.listenerSetter.add(a.a)("media_play",this.onMediaPlay),this.topbar.listenerSetter.add(a.a)("media_pause",this.onPause),this.topbar.listenerSetter.add(a.a)("media_stop",this.onStop),this.topbar.listenerSetter.add(a.a)("media_playback_params",this.onPlaybackParams);const u=fe.getPlayingDetails();u&&(this.onMediaPlay(u),this.onPlaybackParams(u.playbackParams))}destroy(){this.progressLine&&this.progressLine.removeListeners()}}var or;!function(e){e[e.ONE=32]="ONE",e[e.TWO=15]="TWO",e[e.THREE=10]="THREE",e[e.FOUR=8]="FOUR",e[e.MORE=8]="MORE"}(or||(or={}));class rr{constructor(){this.drawRect=(e,t,s,i,n)=>`M${e},${t+n}a${n},${n},0,0,1,${s},0v${i-2*n}a${n},${n},0,0,1,${-s},0Z`,this.getClipPath=(e,t,s)=>{let i="";if(2===s)i=this.drawRect(0,0,2,t,1)+this.drawRect(0,t+2,2,t,1);else for(let e=0;e{let s;return e<=1?s=or.ONE:2===e?s=or.TWO:3===e?s=or.THREE:4===e?s=or.FOUR:e>3&&(s=or.MORE),s},this.getMarkHeight=(e,t)=>{let s;return e<=1?s=or.ONE:2===e?s=or.TWO:3===e?s=or.THREE:4===e?s=or.FOUR:e>3&&(s=or.MORE),s},this.getMarkTranslateY=(e,t,s)=>1===s?0:2===s?e?t+1:0:3===s?e?1===e?t+1:2*t+2+1:0:(t+1)*e,this.getTrackTranslateY=(e,t,s,i)=>t<=4||e<=1?0:e>=t-2?i-or.ONE-s:(e-2)*s+1*e,this.getTrackHeight=(e,t)=>e<=3?or.ONE:t*e+1*(e-1)}render(e,t){if(this.border||(this.border=document.createElement("div"),this.border.classList.add("pinned-message-border"),this.wrapper=document.createElement("div"),this.border.append(this.wrapper)),1===e)return this.count!==e&&(this.wrapper.className="pinned-message-border-wrapper-1",this.border.classList.remove("pinned-message-border-mask"),this.wrapper.innerHTML=this.wrapper.style.cssText=""),this.border;const s=this.getBarHeight(e,t),i=this.getMarkHeight(e,t),n=this.getTrackHeight(e,s),a="clipPath_"+e,o=this.getClipPath(a,s,e),r=this.getMarkTranslateY(t,s,e),l=this.getTrackTranslateY(t,e,s,n);return this.border.classList.toggle("pinned-message-border-mask",e>4),t<=1?(this.border.classList.add("mask-bottom"),this.border.classList.remove("mask-top")):t>=e-2?(this.border.classList.add("mask-top"),this.border.classList.remove("mask-bottom")):this.border.classList.add("mask-top","mask-bottom"),this.wrapper.className="pinned-message-border-wrapper",this.wrapper.style.cssText=`clip-path: url(#${a}); width: 2px; height: ${n}px; transform: translateY(-${l}px);`,this.svg||(this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.setAttributeNS(null,"height","0"),this.svg.setAttributeNS(null,"width","0"),this.defs=document.createElementNS("http://www.w3.org/2000/svg","defs"),this.defs.append(o),this.svg.append(this.defs),this.mark=document.createElement("div"),this.mark.classList.add("pinned-message-border-mark")),this.svg.parentElement||this.wrapper.append(this.svg,this.mark),this.mark.style.cssText=`height: ${i}px; transform: translateY(${r}px);`,this.count=e,this.index=t,this.border}}var lr=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class cr{constructor(){this.rows={},this.container=document.createElement("div"),this.container.className=cr.BASE_CLASS}getRow(e,t=!1){if(this.rows[e])return this.rows[e].element;const s=document.createElement("div"),i=!Object.keys(this.rows).length&&!t;return s.className=cr.BASE_CLASS+"-row"+(i?"":" is-hiding hide"),this.rows[e]={element:s,new:!0},this.container.append(s),s}clearRow(e){this.rows[e]&&(this.rows[e].element.remove(),delete this.rows[e])}clearRows(e){this.clearTimeout&&clearTimeout(this.clearTimeout),this.clearTimeout=window.setTimeout(()=>{for(const t in this.rows)+t!==e&&this.clearRow(+t)},cr.DURATION)}setNewRow(e,t=!1){const s=this.rows[e];s.new&&(t?(s.element.classList.remove("hide"),s.element.offsetLeft):s.element.classList.remove("is-hiding","hide"),delete s.new),this.clearRows(e)}animate(e,t,s=e>t,i=!1){if(e===t)return this.setNewRow(e);const n=this.rows[e],a=this.rows[t];if(!a&&!i)return this.setNewRow(e);const o=["from-top","from-bottom"];s||o.reverse(),n.element.classList.add(o[0]),n.element.classList.remove(o[1]),a&&(a.element.classList.add(o[1]),a.element.classList.remove(o[0])),n.new&&this.setNewRow(e,!0),n.element.classList.toggle("is-hiding",!1),a&&a.element.classList.toggle("is-hiding",!0),this.clearRows(e)}}cr.DURATION=200,cr.BASE_CLASS="animated-super";class dr{constructor(e=!1){this.reverse=e,this.decimals=[],this.previousNumber=0,this.container=document.createElement("div"),this.container.className=dr.BASE_CLASS}getDecimal(e){if(this.decimals[e])return this.decimals[e];const t=document.createElement("div");t.className=dr.BASE_CLASS+"-decimal";const s=document.createElement("div");s.className=dr.BASE_CLASS+"-decimal-placeholder";const i=new cr;return i.container.className=dr.BASE_CLASS+"-decimal-wrapper",t.append(s,i.container),this.container.append(t),this.decimals[e]={container:t,placeholder:s,animatedSuper:i}}clear(e){this.clearTimeout&&clearTimeout(this.clearTimeout);const t=(""+e).length;t>=this.decimals.length||(this.clearTimeout=window.setTimeout(()=>{this.decimals.splice(t,this.decimals.length-t).forEach(e=>{e.container.remove()})},cr.DURATION))}hideLeft(e){const t=(""+e).length;this.decimals.slice(t).forEach(t=>{const s=+t.placeholder.innerText||0;t.animatedSuper.getRow(dr.EMPTY_INDEX,!0);t.animatedSuper.animate(dr.EMPTY_INDEX,s,this.reverse?ethis.previousNumber,!0)}),this.clear(e)}setCount(e){const t=Array.from(""+this.previousNumber).map(e=>+e);Array.from(""+e).map(e=>+e).forEach((s,i)=>{var n;const a=this.getDecimal(i),o=a.animatedSuper.getRow(s,!0),r=null!==(n=t[i])&&void 0!==n?n:dr.EMPTY_INDEX;o.innerText=a.placeholder.innerText=""+s,a.animatedSuper.animate(s,r,this.reverse?ethis.previousNumber,!0)}),this.hideLeft(e),this.previousNumber=e}}dr.EMPTY_INDEX=-1,dr.BASE_CLASS="animated-counter";class hr{constructor(e,t,s,i){this.topbar=e,this.chat=t,this.appMessagesManager=s,this.appPeersManager=i,this.pinnedMaxMid=0,this.pinnedMid=0,this.pinnedIndex=-1,this.wasPinnedIndex=0,this.wasPinnedMediaIndex=0,this.locked=!1,this.waitForScrollBottom=!1,this.count=0,this.mids=[],this.offsetIndex=0,this.loading=!1,this.loadedBottom=!1,this.loadedTop=!1,this.scrollDownListenerSetter=null,this.hidden=!1,this.getCurrentIndexPromise=null,this.isStatic=!1,this.debug=!1,this.listenerSetter=new R.a;const n=new Qe("pinned-message");this.pinnedMessageContainer=new nr({topbar:e,chat:t,listenerSetter:this.listenerSetter,className:"message",divAndCaption:n,onClose:()=>lr(this,void 0,void 0,(function*(){return i.canPinMessage(this.topbar.peerId)?new co(this.topbar.peerId,this.pinnedMid,!0):new co(this.topbar.peerId,0,!0),!1}))}),this.pinnedMessageBorder=new rr,n.border.replaceWith(this.pinnedMessageBorder.render(1,0)),this.animatedSubtitle=new cr,n.subtitle.append(this.animatedSubtitle.container),this.animatedMedia=new cr,this.animatedMedia.container.classList.add("pinned-message-media-container"),n.content.prepend(this.animatedMedia.container),this.animatedCounter=new dr(!0),n.title.append(Object(T.d)("PinnedMessage")," ",this.animatedCounter.container);const o=this.pinnedMessageContainer.btnClose.cloneNode(!0);this.pinnedMessageContainer.attachOnCloseEvent(o),n.container.prepend(o),this.btnOpen=N("pinlist pinned-container-close pinned-message-pinlist",{noRipple:!0}),this.pinnedMessageContainer.wrapperUtils.prepend(this.btnOpen),Object(l.b)(this.btnOpen,e=>{Object(c.a)(e),this.topbar.openPinned(!0)},{listenerSetter:this.listenerSetter}),this.listenerSetter.add(a.a)("peer_pinned_messages",({peerId:e})=>{e===this.topbar.peerId&&(this.hidden&&this.pinnedMessageContainer.toggle(this.hidden=!1),this.loadedTop=this.loadedBottom=!1,this.pinnedIndex=-1,this.pinnedMid=0,this.count=0,this.mids=[],this.offsetIndex=0,this.pinnedMaxMid=0,this.setCorrectIndex(0))}),this.listenerSetter.add(a.a)("peer_pinned_hidden",({peerId:e})=>{e===this.topbar.peerId&&this.pinnedMessageContainer.toggle(this.hidden=!0)}),this.setPinnedMessage=Object(vt.a)(()=>this._setPinnedMessage(),100,!0,!0),this.setCorrectIndexThrottled=Object(Ts.a)(this.setCorrectIndex.bind(this),100,!1),this.isStatic="discussion"===this.chat.type}destroy(){this.pinnedMessageContainer.divAndCaption.container.remove(),this.pinnedMessageContainer.toggle(!0),this.listenerSetter.removeAll(),this.unsetScrollDownListener(!1)}setCorrectIndex(e){if(this.isStatic)return;if(this.locked||this.hidden)return;if((this.loadedBottom||this.loadedTop)&&!this.count)return;let t=this.chat.bubbles.getBubbleByPoint("bottom");if(!t)return;const s=t.dataset.mid;t&&void 0!==s&&this.testMid(+s,e)}testMid(e,t){if(this.isStatic)return;if(this.hidden)return;let s=this.mids.findIndex(t=>t<=e);if(-1===s||this.isNeededMore(s)){if(!(this.loadedTop&&es))return;this.pinnedIndex=s,this.pinnedMid=this.mids.find(t=>t<=e)||this.mids[this.mids.length-1],this.setPinnedMessage()}}isNeededMore(e){return this.count>hr.LOAD_COUNT&&(!this.loadedBottom&&e<=hr.LOAD_OFFSET||!this.loadedTop&&this.count-1-e<=hr.LOAD_OFFSET)}getCurrentIndex(e,t=!0){return lr(this,void 0,void 0,(function*(){if(!this.loading){this.loading=!0;try{let s=!1;const i=[this.appMessagesManager.getSearch({peerId:this.topbar.peerId,inputFilter:{_:"inputMessagesFilterPinned"},maxId:e,limit:hr.LOAD_COUNT,backLimit:hr.LOAD_COUNT}).then(e=>(s=!0,e))];if(!this.pinnedMaxMid){const e=this.appMessagesManager.getPinnedMessage(this.topbar.peerId).then(e=>{e.maxId&&(this.pinnedMaxMid=e.maxId,!s&&t&&(this.mids=[this.pinnedMaxMid],this.count=e.count,this.pinnedIndex=0,this.pinnedMid=this.mids[0],this.setPinnedMessage()))});i.push(e)}const n=(yield Promise.all(i))[0];let a=n.history.findIndex(t=>t.mid<=e);-1===a&&(a=n.history.length),this.offsetIndex=n.offset_id_offset?n.offset_id_offset-a:0,this.mids=n.history.map(e=>e.mid).slice(),this.count=n.count,this.count||this.pinnedMessageContainer.toggle(!0),this.loadedTop=this.offsetIndex+this.mids.length===this.count,this.loadedBottom=!this.offsetIndex,this.debug&&this.chat.log("[PM]: getCurrentIndex result:",e,n,a,this.offsetIndex,this.loadedTop,this.loadedBottom)}catch(e){this.chat.log.error("[PM]: getCurrentIndex error",e)}this.loading=!1,this.locked?this.testMid(e):t&&this.setCorrectIndex(0),this.getCurrentIndexPromise=null}}))}setScrollDownListener(){this.waitForScrollBottom=!0,this.scrollDownListenerSetter||(this.scrollDownListenerSetter=new R.a,function(e,t,s,i){if(he.a){let n;const a={passive:!0};i.add(e)("touchstart",t=>{t.touches.length>1?r():(n=t.touches[0].clientY,i.add(e)("touchmove",o,a),i.add(e)("touchend",r,a))},a);const o=e=>{const i=e.touches[0].clientY,a=i{i.removeManual(e,"touchmove",o,a),i.removeManual(e,"touchend",r,a)}}else i.add(e)("wheel",e=>{const i=e.deltaY>0;"bottom"===t&&i?s():"top"!==t||i||s()},{passive:!0})}(this.chat.bubbles.scrollable.container,"bottom",()=>{this.unsetScrollDownListener()},this.scrollDownListenerSetter))}unsetScrollDownListener(e=!0){this.waitForScrollBottom=!1,this.scrollDownListenerSetter&&(this.scrollDownListenerSetter.removeAll(),this.scrollDownListenerSetter=null),e&&this.setCorrectIndex(0)}handleFollowingPinnedMessage(){return lr(this,void 0,void 0,(function*(){this.locked=!0,this.debug&&this.chat.log("[PM]: handleFollowingPinnedMessage");try{this.setScrollDownListener();const e=this.chat.setPeerPromise;e instanceof Promise&&(yield e),yield Object(Ks.c)(),this.getCurrentIndexPromise&&(yield this.getCurrentIndexPromise),this.debug&&this.chat.log("[PM]: handleFollowingPinnedMessage: unlock"),this.locked=!1}catch(e){this.chat.log.error("[PM]: handleFollowingPinnedMessage error:",e),this.locked=!1,this.waitForScrollBottom=!1,this.setCorrectIndex(0)}}))}followPinnedMessage(e){return lr(this,void 0,void 0,(function*(){const t=this.chat.getMessage(e);t&&!t.deleted&&(this.chat.setMessageId(e),(this.chat.setPeerPromise||Promise.resolve()).then(()=>{this.handleFollowingPinnedMessage(),this.testMid(this.pinnedIndex>=this.count-1?this.pinnedMaxMid:e-1)}))}))}_setPinnedMessage(){return lr(this,void 0,void 0,(function*(){const e=this.count;if(e){const t=this.pinnedIndex,s=this.chat.getMessage(this.pinnedMid),i=0===t;this.animatedCounter.container.classList.toggle("is-last",i),i||this.animatedCounter.setCount(e-t),this.pinnedMessageContainer.toggle(!1);const n=t>this.wasPinnedIndex;this.debug&&this.chat.log("[PM]: setPinnedMessage: fromTop",n,t,this.wasPinnedIndex);const a=this.animatedSubtitle.getRow(t),o=this.animatedMedia.getRow(t);o.classList.add("pinned-message-media");const r=[],l=$e({title:void 0,titleEl:null,subtitle:s.message,subtitleEl:a,message:s,mediaEl:o,loadPromises:r});yield Promise.all(r),this.pinnedMessageContainer.divAndCaption.container.classList.toggle("is-media",l),this.animatedSubtitle.animate(t,this.wasPinnedIndex),l?(this.animatedMedia.animate(t,this.wasPinnedMediaIndex),this.wasPinnedMediaIndex=t):this.animatedMedia.clearRows(),this.pinnedMessageBorder.render(e,e-t-1),this.wasPinnedIndex=t,this.pinnedMessageContainer.divAndCaption.container.dataset.mid=""+s.mid}else this.pinnedMessageContainer.toggle(!0),this.wasPinnedIndex=0;this.pinnedMessageContainer.divAndCaption.container.classList.toggle("is-many",this.count>1)}))}}hr.LOAD_COUNT=50,hr.LOAD_OFFSET=5;var pr=$a,ur=s(42);class gr extends Lt{constructor(e){super("popup-mute",{peerId:e,titleLangKey:"Notifications",buttons:[{langKey:"ChatList.Context.Mute",callback:()=>{i.a.mutePeer(e,-1===s?Ne.b:Object(ur.a)(!0)+s)}}],body:!0});const t=[{time:3600,langKey:"ChatList.Mute.1Hour"},{time:14400,langKey:"ChatList.Mute.4Hours"},{time:28800,langKey:"ChatList.Mute.8Hours"},{time:86400,langKey:"ChatList.Mute.1Day"},{time:259200,langKey:"ChatList.Mute.3Days"},{time:-1,langKey:"ChatList.Mute.Forever"}].map(e=>new lt({radioField:new ut({langKey:e.langKey,name:"mute-time",value:""+e.time})}));let s;const n=ct(t,e=>{s=+e});t[t.length-1].radioField.checked=!0;const a=new Wn({noShadow:!0,noDelimiter:!0});a.content.append(n),this.body.append(a.container),this.show()}}class mr{constructor(e,t,s,i,n,a,o,r,l){this.chat=e,this.appSidebarRight=t,this.appMessagesManager=s,this.appPeersManager=i,this.appChatsManager=n,this.appNotificationsManager=a,this.appProfileManager=o,this.appUsersManager=r,this.appGroupCallsManager=l,this.verifyButtons=e=>{const t=!!e||!(!this.btnMore||!this.btnMore.classList.contains("menu-open"));e&&Object(c.a)(e);const s=e=>{e.forEach(e=>{e.element.classList.toggle("hide",!e.verify())})};t&&(s(this.menuButtons),this.menuButtons[this.menuButtons.length-1].element.lastChild.replaceWith(Object(T.d)(this.appPeersManager.getDeleteButtonText(this.peerId)))),s(this.buttonsToVerify)},this.verifyVideoChatButton=e=>{var t;if(!pr||this.peerId.isUser())return!1;const s=this.appGroupCallsManager.groupCall,i=this.peerId.toChatId();if((null==s?void 0:s.chatId)===i)return!1;if(e&&(this.peerId.isBroadcast()&&"group"===e||this.peerId.isAnyGroup()&&"broadcast"===e))return!1;return(null===(t=this.appChatsManager.getChatTyped(i).pFlags)||void 0===t?void 0:t.call_active)||this.appChatsManager.hasRights(i,"manage_call")},this.verifyCallButton=e=>{if(!Qa||!this.peerId.isUser())return!1;const t=this.peerId.toUserId(),s=this.appProfileManager.getCachedFullUser(t);return!!s&&!!("voice"===e?s.pFlags.phone_calls_available:s.pFlags.video_calls_available)},this.onJoinGroupCallClick=()=>{this.chat.appImManager.joinGroupCall(this.peerId)},this.onMuteClick=()=>{new gr(this.peerId)},this.onResize=()=>{this.setUtilsWidth(!0),this.setFloating()},this.onChangeScreen=(e,t)=>{this.container.classList.toggle("is-pinned-floating",b.b.isMobile),this.pinnedMessage&&this.pinnedMessage.pinnedMessageContainer.divAndCaption.container.classList.toggle("is-floating",t===b.a.mobile),this.onResize()},this.setUtilsWidth=(e=!1)=>{this.setUtilsRAF&&window.cancelAnimationFrame(this.setUtilsRAF),ae.g&&e&&this.chatUtils.classList.add("hide"),this.setUtilsRAF=window.requestAnimationFrame(()=>{ae.g&&e&&this.chatUtils.classList.remove("hide");const t=this.chatUtils.getBoundingClientRect().width;this.chat.log("utils width:",t),this.container.style.setProperty("--utils-width",t+"px"),this.setUtilsRAF=0})},this.setFloating=()=>{const e=[this.chatAudio,this.pinnedMessage&&this.pinnedMessage.pinnedMessageContainer].filter(Boolean).reduce((e,t)=>{const s=t.isFloating();return this.container.classList.toggle(`is-pinned-${t.className}-floating`,s),t.isVisible()?e+ +s:e},0);this.container.dataset.floating=""+e},this.setPeerStatus=(e=!1)=>{if(!this.subtitle)return;const t=this.peerId;this.chat.appImManager.setPeerStatus(this.peerId,this.subtitle,e,!1,()=>t===this.peerId)},this.listenerSetter=new R.a,this.menuButtons=[],this.buttonsToVerify=[]}construct(){this.container=document.createElement("div"),this.container.classList.add("sidebar-header","topbar"),this.container.dataset.floating="0",this.btnBack=N("left sidebar-close-button",{noRipple:!0}),this.chatInfoContainer=document.createElement("div"),this.chatInfoContainer.classList.add("chat-info-container"),this.chatInfo=document.createElement("div"),this.chatInfo.classList.add("chat-info");const e=document.createElement("div");e.classList.add("person");const t=document.createElement("div");t.classList.add("content");const s=document.createElement("div");s.classList.add("top"),this.title=document.createElement("div"),this.title.classList.add("user-title"),s.append(this.title);const i=document.createElement("div");i.classList.add("bottom"),this.subtitle&&i.append(this.subtitle),t.append(s,i),this.avatarElement&&e.append(this.avatarElement),e.append(t),this.chatInfo.append(e),this.chatUtils=document.createElement("div"),this.chatUtils.classList.add("chat-utils"),this.chatAudio=new ar(this,this.chat,this.appMessagesManager),this.menuButtons.length&&(this.btnMore=Ee({listenerSetter:this.listenerSetter},"bottom-left",this.menuButtons,this.verifyButtons)),this.chatUtils.append(...[this.pinnedMessage?this.pinnedMessage.pinnedMessageContainer.divAndCaption.container:null,this.btnJoin,this.btnPinned,this.btnCall,this.btnGroupCall,this.btnMute,this.btnSearch,this.btnMore].filter(Boolean)),this.pushButtonToVerify(this.btnCall,this.verifyCallButton.bind(this,"voice")),this.pushButtonToVerify(this.btnGroupCall,this.verifyVideoChatButton),this.chatInfoContainer.append(this.btnBack,this.chatInfo,this.chatUtils),this.container.append(this.chatInfoContainer),this.chatAudio&&this.container.append(this.chatAudio.divAndCaption.container),this.listenerSetter.add(window)("resize",this.onResize),this.listenerSetter.add(b.b)("changeScreen",this.onChangeScreen),Object(l.b)(this.container,e=>{const t=Object(Pe.a)(e.target,"pinned-container");if(Object(ri.a)(),t){if(Object(c.a)(e),Object(Pe.a)(e.target,"progress-line"))return;const s=+t.dataset.mid;if(t.classList.contains("pinned-message"))this.pinnedMessage.followPinnedMessage(s);else{const e=t.dataset.peerId.toPeerId(),i=fe.getSearchContext();this.chat.appImManager.setInnerPeer({peerId:e,lastMsgId:s,type:i.isScheduled?"scheduled":i.threadId?"discussion":void 0,threadId:i.threadId})}}else b.b.activeScreen===b.a.medium&&document.body.classList.contains("is-left-column-shown")?n():Object(It.a)(e.target,"AVATAR-ELEMENT")?this.appSidebarRight.toggleSidebar(!document.body.classList.contains("is-right-column-shown")):this.appSidebarRight.toggleSidebar(!0)},{listenerSetter:this.listenerSetter});const n=e=>{if(e&&Object(c.a)(e),b.b.activeScreen===b.a.medium&&document.body.classList.contains("is-left-column-shown"))this.chat.appImManager.setPeer({peerId:this.peerId});else{const e=0===this.chat.appImManager.chats.indexOf(this.chat);j.a.back(e?"im":"chat")}};Object(l.b)(this.btnBack,n,{listenerSetter:this.listenerSetter})}pushButtonToVerify(e,t){e&&this.buttonsToVerify.push({element:e,verify:t})}constructUtils(){this.menuButtons=[{icon:"search",text:"Search",onClick:()=>{this.chat.initSearch()},verify:()=>b.b.isMobile},{icon:"mute",text:"ChatList.Context.Mute",onClick:this.onMuteClick,verify:()=>"chat"===this.chat.type&&a.a.myId!==this.peerId&&!this.appNotificationsManager.isPeerLocalMuted(this.peerId,!1)},{icon:"unmute",text:"ChatList.Context.Unmute",onClick:()=>{this.appMessagesManager.togglePeerMute(this.peerId)},verify:()=>"chat"===this.chat.type&&a.a.myId!==this.peerId&&this.appNotificationsManager.isPeerLocalMuted(this.peerId,!1)},{icon:"comments",text:"ViewDiscussion",onClick:()=>{const e=this.chat.bubbles.getMiddleware();Promise.resolve(this.appProfileManager.getChannelFull(this.peerId.toChatId())).then(t=>{e()&&t.linked_chat_id&&this.chat.appImManager.setInnerPeer({peerId:t.linked_chat_id.toPeerId(!0)})})},verify:()=>{var e;const t=this.appProfileManager.getCachedFullChat(this.peerId.toChatId());return"chat"===this.chat.type&&!!(null===(e=t)||void 0===e?void 0:e.linked_chat_id)}},{icon:"phone",text:"Call",onClick:this.onCallClick.bind(this,"voice"),verify:this.verifyCallButton.bind(this,"voice")},{icon:"videocamera",text:"VideoCall",onClick:this.onCallClick.bind(this,"video"),verify:this.verifyCallButton.bind(this,"video")},{icon:"videochat",text:"PeerInfo.Action.LiveStream",onClick:this.onJoinGroupCallClick,verify:this.verifyVideoChatButton.bind(this,"broadcast")},{icon:"videochat",text:"PeerInfo.Action.VoiceChat",onClick:this.onJoinGroupCallClick,verify:this.verifyVideoChatButton.bind(this,"group")},{icon:"select",text:"Chat.Menu.SelectMessages",onClick:()=>{const e=this.chat.selection;e.toggleSelection(!0,!0),I.c.getState().then(t=>{if(t.chatContextMenuHintWasShown)return;const s=e.toggleByElement.bind(e);e.toggleByElement=t=>{I.c.pushToState("chatContextMenuHintWasShown",!0),mt(Object(T.d)("Chat.Menu.Hint")),e.toggleByElement=s,e.toggleByElement(t)}})},verify:()=>!this.chat.selection.isSelecting&&!!Object.keys(this.chat.bubbles.bubbles).length},{icon:"select",text:"Chat.Menu.ClearSelection",onClick:()=>{this.chat.selection.cancelSelection()},verify:()=>this.chat.selection.isSelecting},{icon:"adduser",text:"AddContact",onClick:()=>{if(!this.appSidebarRight.isTabExists($t)){const e=new $t(this.appSidebarRight);e.peerId=this.peerId,e.open(),this.appSidebarRight.toggleSidebar(!0)}},verify:()=>this.peerId.isUser()&&!this.appPeersManager.isContact(this.peerId)},{icon:"forward",text:"ShareContact",onClick:()=>{const e=this.peerId;new Dt({peerTypes:["dialogs","contacts"],onSelect:t=>new Promise((s,i)=>{new Lt("",{titleLangKey:"SendMessageTitle",descriptionLangKey:"SendContactToGroupText",descriptionLangArgs:[new Tt.a({peerId:t,dialog:!0}).element],buttons:[{langKey:"Send",callback:()=>{s(),this.appMessagesManager.sendContact(t,e),this.chat.appImManager.setInnerPeer({peerId:t})}},{langKey:"Cancel",callback:()=>{i()},isCancel:!0}],peerId:t,overlayClosable:!0}).show()}),placeholder:"ShareModal.Search.Placeholder",chatRightsAction:"send_messages",selfPresence:"ChatYourSelf"})},verify:()=>a.a.myId!==this.peerId&&this.peerId.isUser()&&this.appPeersManager.isContact(this.peerId)&&!!this.appUsersManager.getUser(this.peerId.toUserId()).phone},{icon:"lock",text:"BlockUser",onClick:()=>{new Lt("",{peerId:this.peerId,titleLangKey:"BlockUser",descriptionLangKey:"AreYouSureBlockContact2",descriptionLangArgs:[new Tt.a({peerId:this.peerId}).element],buttons:[{langKey:"BlockUser",isDanger:!0,callback:()=>{this.appUsersManager.toggleBlock(this.peerId,!0).then(e=>{e&&bt({langPackKey:"UserBlocked"})})}}]}).show()},verify:()=>{var e;if(!this.peerId.isUser())return!1;const t=this.appProfileManager.getCachedFullUser(this.peerId.toUserId());return this.peerId!==a.a.myId&&t&&!(null===(e=t.pFlags)||void 0===e?void 0:e.blocked)}},{icon:"lockoff",text:"Unblock",onClick:()=>{this.appUsersManager.toggleBlock(this.peerId,!1).then(e=>{e&&bt({langPackKey:"UserUnblocked"})})},verify:()=>{var e;const t=this.appProfileManager.getCachedFullUser(this.peerId.toUserId());return!!(null===(e=null==t?void 0:t.pFlags)||void 0===e?void 0:e.blocked)}},{icon:"delete danger",text:"Delete",onClick:()=>{new Ht(this.peerId)},verify:()=>"chat"===this.chat.type&&!!this.appMessagesManager.getDialogOnly(this.peerId)}],this.btnSearch=N("search"),this.attachClickEvent(this.btnSearch,e=>{this.chat.initSearch()},!0)}attachClickEvent(e,t,s){Object(l.b)(e,e=>{Object(c.a)(e),!s&&Object(ri.a)(),t(e)},{listenerSetter:this.listenerSetter})}onCallClick(e){this.chat.appImManager.callUser(this.peerId.toUserId(),e)}constructPeerHelpers(){return this.avatarElement=new bc,this.avatarElement.isDialog=!0,this.avatarElement.classList.add("avatar-42","person-avatar"),this.subtitle=document.createElement("div"),this.subtitle.classList.add("info"),this.pinnedMessage=new hr(this,this.chat,this.appMessagesManager,this.appPeersManager),this.btnJoin=Object(B.a)("btn-primary btn-color-primary chat-join hide"),this.btnCall=N("phone"),this.btnGroupCall=N("videochat"),this.btnPinned=N("pinlist"),this.btnMute=N("mute"),this.attachClickEvent(this.btnCall,this.onCallClick.bind(this,"voice")),this.attachClickEvent(this.btnGroupCall,this.onJoinGroupCallClick),this.attachClickEvent(this.btnPinned,()=>{this.openPinned(!0)}),this.attachClickEvent(this.btnMute,this.onMuteClick),this.attachClickEvent(this.btnJoin,()=>{const e=this.chat.bubbles.getMiddleware();this.btnJoin.setAttribute("disabled","true");const t=this.peerId.toChatId();let s;s=this.appChatsManager.isChannel(t)?this.appChatsManager.joinChannel(t):this.appChatsManager.addChatUser(t,a.a.myId),s.finally(()=>{e()&&this.btnJoin.removeAttribute("disabled")})}),this.listenerSetter.add(a.a)("chat_update",e=>{var t,s;if(this.peerId===e.toPeerId(!0)){const i=this.appChatsManager.getChat(e);this.btnJoin.classList.toggle("hide",!(null===(s=null===(t=i)||void 0===t?void 0:t.pFlags)||void 0===s?void 0:s.left)),this.setUtilsWidth(),this.verifyButtons()}}),this.listenerSetter.add(a.a)("dialog_notify_settings",e=>{e.peerId===this.peerId&&this.setMutedState()}),this.listenerSetter.add(a.a)("peer_typings",({peerId:e})=>{this.peerId===e&&this.setPeerStatus()}),this.listenerSetter.add(a.a)("user_update",e=>{this.peerId===e.toPeerId()&&this.setPeerStatus()}),this.listenerSetter.add(a.a)("peer_full_update",e=>{this.peerId===e&&this.verifyButtons()}),this.pinnedMessage&&this.chat.addEventListener("setPeer",(e,t)=>{const s=this.chat.bubbles.getMiddleware();I.c.getState().then(i=>{s()&&(this.pinnedMessage.hidden=!!i.hiddenPinnedMessages[this.chat.peerId],t?(this.pinnedMessage.unsetScrollDownListener(),this.pinnedMessage.testMid(e,0)):this.pinnedMessage.locked||(this.pinnedMessage.handleFollowingPinnedMessage(),this.pinnedMessage.testMid(e)))})}),this.setPeerStatusInterval=window.setInterval(this.setPeerStatus,6e4),this}constructPinnedHelpers(){this.listenerSetter.add(a.a)("peer_pinned_messages",({peerId:e,mids:t})=>{e===this.peerId&&t&&this.setTitle()})}constructDiscussionHelpers(){this.pinnedMessage=new hr(this,this.chat,this.appMessagesManager,this.appPeersManager)}openPinned(e){this.chat.appImManager.setInnerPeer({peerId:this.peerId,lastMsgId:e?+this.pinnedMessage.pinnedMessageContainer.divAndCaption.container.dataset.mid:0,type:"pinned"})}destroy(){this.listenerSetter.removeAll(),window.clearInterval(this.setPeerStatusInterval),this.pinnedMessage&&this.pinnedMessage.destroy(),this.chatAudio&&this.chatAudio.destroy(),delete this.chatAudio,delete this.pinnedMessage}setPeer(e){this.wasPeerId=this.peerId,this.peerId=e,this.container.style.display=e?"":"none"}finishPeerChange(e,t,s){var i,n;const a=this.peerId;this.avatarElement&&this.avatarElement.updateWithOptions({peerId:a});const o=this.appPeersManager.isBroadcast(a);if(this.btnMute&&this.btnMute.classList.toggle("hide",!o),this.btnJoin)if(this.appPeersManager.isAnyChat(a)){const e=a.toChatId();Object(k.a)(this.btnJoin,Object(T.d)(this.appChatsManager.isBroadcast(e)?"Chat.Subscribe":"ChannelJoin")),this.btnJoin.classList.toggle("hide",!(null===(n=null===(i=this.appChatsManager.getChat(e))||void 0===i?void 0:i.pFlags)||void 0===n?void 0:n.left))}else this.btnJoin.classList.add("hide");this.setUtilsWidth(),this.verifyButtons();const r=this.chat.bubbles.getMiddleware();if(this.pinnedMessage)if("chat"===this.chat.type){if(void 0!==this.wasPeerId){const e=new hr(this,this.chat,this.appMessagesManager,this.appPeersManager);this.pinnedMessage.pinnedMessageContainer.divAndCaption.container.replaceWith(e.pinnedMessageContainer.divAndCaption.container),this.pinnedMessage.destroy(),this.pinnedMessage=e}I.c.getState().then(t=>{r()&&(this.pinnedMessage.hidden=!!t.hiddenPinnedMessages[a],e||this.pinnedMessage.setCorrectIndex(0))})}else"discussion"===this.chat.type&&(this.pinnedMessage.pinnedMid=this.chat.threadId,this.pinnedMessage.count=1,this.pinnedMessage.pinnedIndex=0,this.pinnedMessage._setPinnedMessage());Object(Re.b)(()=>{this.setTitle(),this.setPeerStatus(!0),this.setMutedState()})}setTitle(e){let t;"pinned"===this.chat.type?(t=void 0===e?Object(T.d)("Loading"):Object(T.d)("PinnedMessagesCount",[e]),void 0===e&&this.appMessagesManager.getSearchCounters(this.peerId,[{_:"inputMessagesFilterPinned"}],!1).then(e=>{const t=e[0].count;if(this.setTitle(t),!t){this.chat.appImManager.setPeer();const e=this.chat.appImManager.chat;e.topbar.pinnedMessage&&e.topbar.pinnedMessage.pinnedMessageContainer.toggle(!0)}})):"scheduled"===this.chat.type?(t=this.peerId===a.a.myId?Object(T.d)("Reminders"):Object(T.d)("ScheduledMessages"),void 0===e&&this.appMessagesManager.getScheduledMessages(this.peerId).then(e=>{this.setTitle(e.length)})):"discussion"===this.chat.type?(t=void 0===e?Object(T.d)("Loading"):Object(T.d)("Chat.Title.Comments",[e]),void 0===e&&Promise.all([this.appMessagesManager.getHistory(this.peerId,0,1,0,this.chat.threadId),Promise.resolve()]).then(()=>{const e=this.appMessagesManager.getHistoryStorage(this.peerId,this.chat.threadId).count;null===e?setTimeout(()=>{this.setTitle()},30):this.setTitle(e)})):"chat"===this.chat.type&&(t=new Tt.a({peerId:this.peerId,dialog:!0}).element),Object(k.a)(this.title,t),"chat"===this.chat.type&&this.title.append(...Zt(this.peerId))}setMutedState(){if(!this.btnMute)return;const e=this.peerId;let t=this.appNotificationsManager.isPeerLocalMuted(e,!1);this.appPeersManager.isBroadcast(e)?(this.btnMute.classList.remove("tgico-mute","tgico-unmute"),this.btnMute.classList.add(t?"tgico-unmute":"tgico-mute"),this.btnMute.style.display=""):this.btnMute.style.display="none"}}class br extends H{constructor(){super(...arguments),this.threadId=0,this.query=""}onOpenAfterTimeout(){this.appSearch.beginSearch(this.peerId,this.threadId,this.query)}init(){this.container.id="search-private-container",this.container.classList.add("chatlist-container"),this.inputSearch=new _("Search"),this.title.replaceWith(this.inputSearch.container),this.btnPickDate=N("calendar sidebar-header-right"),this.header.append(this.btnPickDate);const e=document.createElement("div");e.classList.add("chatlist-container"),this.scrollable.container.replaceWith(e),this.appSearch=new A(e,this.inputSearch,{messages:new x("Chat.Search.PrivateSearch","messages")})}open(e,t,s,i){const n=super.open();return this.peerId?this.appSearch.beginSearch(this.peerId,this.threadId,i):(this.query=i,this.peerId=e,this.threadId=t,this.onDatePick=s,this.btnPickDate.classList.toggle("hide",!this.onDatePick),this.onDatePick&&Object(l.b)(this.btnPickDate,()=>{new Zn(new Date,this.onDatePick).show()}),i&&this.appSearch.searchInput.inputField.setValueSilently(i),ds.toggleSidebar(!0)),n}}class vr{constructor(e,t,s){this.topbar=e,this.chat=t,this.foundCount=0,this.selectedIndex=0,this.onDateClick=e=>{Object(c.a)(e),new Zn(new Date,this.chat.bubbles.onDatePick).show()},this.onResultsClick=e=>{const t=Object(It.a)(e.target,"LI");t&&this.selectResult(t)},this.onFooterClick=e=>{this.foundCount&&(this.chat.bubbles.bubblesContainer.classList.toggle("search-results-active"),this.results.classList.toggle("active"))},this.onUpClick=e=>{Object(c.a)(e),this.selectResult(this.searchGroup.list.children[this.selectedIndex+1])},this.onDownClick=e=>{Object(c.a)(e),this.selectResult(this.searchGroup.list.children[this.selectedIndex-1])},this.element=document.createElement("div"),this.element.classList.add("sidebar-header","chat-search","chatlist-container"),this.backBtn=document.createElement("button"),this.backBtn.classList.add("btn-icon","tgico-left","sidebar-close-button"),Object(te.a)(this.backBtn);const i=this.listenerSetter=new R.a,n=(e,t)=>{Object(l.b)(e,t,{listenerSetter:i})};n(this.backBtn,()=>{this.destroy()}),this.inputSearch=new _("Search"),this.results=document.createElement("div"),this.results.classList.add("chat-search-results","chatlist-container"),this.searchGroup=new x(!1,"messages",void 0,"",!1),n(this.searchGroup.list,this.onResultsClick),this.appSearch=new A(this.results,this.inputSearch,{messages:this.searchGroup},e=>{this.foundCount=e,this.foundCount?this.selectResult(this.searchGroup.list.children[0]):(Object(k.a)(this.foundCountEl,this.inputSearch.value?Object(T.d)("NoResult"):""),this.results.classList.remove("active"),this.chat.bubbles.bubblesContainer.classList.remove("search-results-active"),this.upBtn.setAttribute("disabled","true"),this.downBtn.setAttribute("disabled","true"))}),this.appSearch.beginSearch(this.chat.peerId,this.chat.threadId),this.chat.bubbles.bubblesContainer.append(this.results),this.footer=document.createElement("div"),this.footer.classList.add("chat-search-footer"),n(this.footer,this.onFooterClick),Object(te.a)(this.footer),this.foundCountEl=document.createElement("span"),this.foundCountEl.classList.add("chat-search-count"),this.dateBtn=document.createElement("button"),this.dateBtn.classList.add("btn-icon","tgico-calendar"),this.controls=document.createElement("div"),this.controls.classList.add("chat-search-controls"),this.upBtn=document.createElement("button"),this.upBtn.classList.add("btn-icon","tgico-up"),this.downBtn=document.createElement("button"),this.downBtn.classList.add("btn-icon","tgico-down"),this.upBtn.setAttribute("disabled","true"),this.downBtn.setAttribute("disabled","true"),n(this.dateBtn,this.onDateClick),n(this.upBtn,this.onUpClick),n(this.downBtn,this.onDownClick),this.controls.append(this.upBtn,this.downBtn),this.footer.append(this.foundCountEl,this.dateBtn,this.controls),this.topbar.container.parentElement.insertBefore(this.footer,t.input.chatInput),this.element.append(this.backBtn,this.inputSearch.container),this.topbar.container.classList.add("hide-pinned"),this.topbar.container.parentElement.append(this.element),this.inputSearch.input.focus(),s&&this.setQuery(s),ae.f||(this.navigationItem={type:"mobile-search",onPop:()=>{this.destroy()}},j.a.pushItem(this.navigationItem))}destroy(){this.topbar.container.classList.remove("hide-pinned"),this.element.remove(),this.inputSearch.remove(),this.results.remove(),this.footer.remove(),this.listenerSetter.removeAll(),this.chat.bubbles.bubblesContainer.classList.remove("search-results-active"),this.chat.search=void 0,j.a.removeItem(this.navigationItem)}setQuery(e){this.inputSearch.inputField.value=e}selectResult(e){if(this.setPeerPromise)return this.setPeerPromise;const t=e.dataset.peerId.toPeerId(),s=+e.dataset.mid||void 0,i=Object(Ws.a)(e);i===this.foundCount-1?this.upBtn.setAttribute("disabled","true"):this.upBtn.removeAttribute("disabled"),i?this.downBtn.removeAttribute("disabled"):this.downBtn.setAttribute("disabled","true"),this.results.classList.remove("active"),this.chat.bubbles.bubblesContainer.classList.remove("search-results-active");const n=this.chat.setPeer(t,s);this.setPeerPromise=(n instanceof Promise?n:Promise.resolve(n)).then(()=>{this.selectedIndex=i,Object(k.a)(this.foundCountEl,Object(T.d)("Of",[i+1,this.foundCount]));const e=this.searchGroup.list.childElementCount;this.selectedIndex>=e-6&&this.appSearch.searchMore()}).finally(()=>{this.setPeerPromise=null})}}class fr{constructor(){this.canvases=new Set}static getInstance(e){let t=this.INSTANCES.find(t=>Object(ge.a)(t.options,e));return t||(t=new fr,t.init(e),this.INSTANCES.push(t)),t}init(e){this.options=e}renderToCanvas(e){return this.renderImageFromUrl(this.options.url).then(()=>this.fillCanvas(e))}renderImageFromUrl(e){if(this.renderImageFromUrlPromise)return this.renderImageFromUrlPromise;const t=this.img=document.createElement("img");return t.crossOrigin="anonymous",this.renderImageFromUrlPromise=Object(Ss.b)(t,e,!1).then(()=>t)}cleanup(e){this.canvases.delete(e),this.canvases.size||(Object(V.a)(fr.INSTANCES,this),this.objectUrl&&URL.revokeObjectURL(this.objectUrl))}fillCanvas(e){const t=e.getContext("2d");t.fillStyle instanceof CanvasPattern&&t.clearRect(0,0,e.width,e.height);const s=this.img;let i=s.width,n=s.height;i*=e.height/n,n=e.height,this.options.mask?(t.fillStyle="#000",t.fillRect(0,0,e.width,e.height),t.globalCompositeOperation="destination-out"):t.globalCompositeOperation="source-over";for(let a=0;as.resize(e,t)))}}fr.INSTANCES=[];class yr extends D.a{constructor(e,t,s,i,n,a,o,r,l,c,d,h,p,u,g,m,b,v,f,y,w){super(),this.appImManager=e,this.appChatsManager=t,this.appDocsManager=s,this.appInlineBotsManager=i,this.appMessagesManager=n,this.appPeersManager=a,this.appPhotosManager=o,this.appProfileManager=r,this.appStickersManager=l,this.appUsersManager=c,this.appWebPagesManager=d,this.appPollsManager=h,this.apiManager=p,this.appDraftsManager=u,this.serverTimeManager=g,this.storage=m,this.appNotificationsManager=b,this.appEmojiManager=v,this.appMessagesIdsManager=f,this.appGroupCallsManager=y,this.appReactionsManager=w,this.type="chat",this.container=document.createElement("div"),this.container.classList.add("chat","tabs-tab"),this.backgroundEl=document.createElement("div"),this.backgroundEl.classList.add("chat-background"),this.log=Object(Y.b)("CHAT",Y.a.Log|Y.a.Warn|Y.a.Debug|Y.a.Error),this.peerId=Ne.c,this.container.append(this.backgroundEl),this.appImManager.chatsContainer.append(this.container),this.backgroundTempId=0}setBackground(e,t){const s=a.a.getTheme();let i;if(!!s.background.color&&!s.background.slug&&!s.background.intensity&&"grabbing"===document.documentElement.style.cursor&&this.gradientRenderer&&!this.patternRenderer)return this.gradientCanvas.dataset.colors=s.background.color,this.gradientRenderer.init(this.gradientCanvas),Promise.resolve();const n=++this.backgroundTempId,o=this.gradientRenderer,r=this.patternRenderer,l=(this.gradientCanvas,this.patternCanvas);this.gradientRenderer=this.patternRenderer=this.gradientCanvas=this.patternCanvas=void 0;const c=s.background.intensity&&s.background.intensity/100,d=!!c&&c<0;let h,p,u,g=null==i?void 0:i.firstElementChild;if(!i)if(i=document.createElement("div"),i.classList.add("chat-background-item"),e)if(c){i.classList.add("is-pattern");const t=this.appImManager.chatsContainer.getBoundingClientRect();h=this.patternRenderer=fr.getInstance({url:e,width:t.width,height:t.height,mask:d}),g=this.patternCanvas=h.createCanvas(),g.classList.add("chat-background-item-canvas","chat-background-item-pattern-canvas"),d&&i.classList.add("is-dark")}else s.background.slug&&i.classList.add("is-image");else s.background.color&&i.classList.add("is-color");const m=s.background.color;if(m){const{canvas:e,gradientRenderer:t}=nn.create(m);u=this.gradientRenderer=t,p=this.gradientCanvas=e,p.classList.add("chat-background-item-canvas","chat-background-item-color-canvas"),a.a.settings.animationsEnabled&&u.scrollAnimate(!0)}if(h){(d?p:g).style.setProperty("--opacity-max",""+Math.abs(c))}const b=new Promise(s=>{const a=()=>{if(this.backgroundTempId!==n)return h&&h.cleanup(g),void(u&&u.cleanup());const e=this.backgroundEl.lastElementChild;if(e===i)return void s();const a=[p,g].filter(Boolean);a.length&&i.append(...a),this.backgroundEl.append(i),Object(ps.a)(i,"is-visible",!0,t?0:200,e?()=>{r&&r.cleanup(l),o&&o.cleanup(),e.remove()}:null,2),s()};if(h){h.renderToCanvas(g).then(()=>{if(this.backgroundTempId!==n)return;let e;e=Promise.resolve(),e.then(a)})}else e?Object(Ss.a)(i,e,a):a()});return this.setBackgroundPromise=Promise.race([Object(pa.a)(500),b])}setType(e){this.type=e,"scheduled"===this.type&&(this.getMessagesStorage=()=>this.appMessagesManager.getScheduledMessagesStorage(this.peerId))}init(){this.topbar=new mr(this,ds,this.appMessagesManager,this.appPeersManager,this.appChatsManager,this.appNotificationsManager,this.appProfileManager,this.appUsersManager,this.appGroupCallsManager),this.bubbles=new ro(this,this.appMessagesManager,this.appStickersManager,this.appUsersManager,this.appInlineBotsManager,this.appPhotosManager,this.appPeersManager,this.appProfileManager,this.appDraftsManager,this.appMessagesIdsManager,this.appChatsManager,this.appReactionsManager),this.input=new ir(this,this.appMessagesManager,this.appMessagesIdsManager,this.appDocsManager,this.appChatsManager,this.appPeersManager,this.appWebPagesManager,this.appImManager,this.appDraftsManager,this.serverTimeManager,this.appNotificationsManager,this.appEmojiManager,this.appUsersManager,this.appInlineBotsManager,this.appProfileManager),this.selection=new ui(this,this.bubbles,this.input,this.appMessagesManager),this.contextMenu=new wo(this.bubbles.bubblesContainer,this,this.appMessagesManager,this.appPeersManager,this.appPollsManager,this.appDocsManager,this.appMessagesIdsManager,this.appReactionsManager),"chat"===this.type?(this.topbar.constructUtils(),this.topbar.constructPeerHelpers()):"pinned"===this.type?this.topbar.constructPinnedHelpers():"discussion"===this.type&&(this.topbar.constructUtils(),this.topbar.constructDiscussionHelpers()),this.topbar.construct(),this.input.construct(),"chat"===this.type?(this.bubbles.constructPeerHelpers(),this.input.constructPeerHelpers()):"pinned"===this.type?(this.bubbles.constructPinnedHelpers(),this.input.constructPinnedHelpers()):"scheduled"===this.type?(this.bubbles.constructScheduledHelpers(),this.input.constructPeerHelpers()):"discussion"===this.type&&(this.bubbles.constructPeerHelpers(),this.input.constructPeerHelpers()),"scheduled"===this.type||he.a||this.bubbles.setReactionsHoverListeners(),this.container.classList.add("type-"+this.type),this.container.append(this.topbar.container,this.bubbles.bubblesContainer,this.input.chatInput),this.bubbles.listenerSetter.add(a.a)("dialog_migrate",({migrateFrom:e,migrateTo:t})=>{this.peerId===e&&this.setPeer(t)}),this.bubbles.listenerSetter.add(a.a)("dialog_drop",e=>{e.peerId===this.peerId&&this.appImManager.setPeer()})}beforeDestroy(){this.bubbles.cleanup()}cleanupBackground(){++this.backgroundTempId,this.patternRenderer&&(this.patternRenderer.cleanup(this.patternCanvas),this.patternRenderer=void 0),this.gradientRenderer&&(this.gradientRenderer.cleanup(),this.gradientRenderer=void 0)}destroy(){this.topbar.destroy(),this.bubbles.destroy(),this.input.destroy(),this.contextMenu&&this.contextMenu.destroy(),this.cleanupBackground(),delete this.topbar,delete this.bubbles,delete this.input,delete this.selection,delete this.contextMenu,this.container.remove()}cleanup(e=!0){this.input.cleanup(e),this.selection.cleanup()}setPeer(e,t,s){e?this.inited||(this.init&&(this.init(),this.init=null),this.inited=!0):this.inited=void 0;const i=this.peerId===e;if(i){if(this.setPeerPromise)return}else a.a.dispatchEvent("peer_changing",this),this.peerId=e||Ne.c;if(!e)return ds.toggleSidebar(!1),this.cleanup(!0),this.topbar.setPeer(e),this.bubbles.setPeer(e),void a.a.dispatchEvent("peer_changed",e);if(!i){const t=ds.getTab(br);t&&t.close(),this.noForwards=this.appPeersManager.noForwards(e),this.isRestricted=this.appPeersManager.isRestricted(e),this.container.classList.toggle("no-forwards",this.noForwards),ds.sharedMediaTab.setPeer(e,this.threadId),this.input.clearHelper(),this.selection.cleanup(),this.setAutoDownloadMedia()}this.peerChanged=i,void 0===s&&this.isStartButtonNeeded()&&(s=Ne.a);const n=this.bubbles.setPeer(e,t,s);if(!n)return;const{promise:o}=n,r=this.setPeerPromise=o.finally(()=>{this.setPeerPromise===r&&(this.setPeerPromise=null)});return i||(ds.sharedMediaTab.setLoadMutex(this.setPeerPromise),ds.sharedMediaTab.loadSidebarMedia(!0)),n}setAutoDownloadMedia(){this.autoDownload=function(e){let t,s=0,i=0,n=0;const o=a.a.settings;return!o.autoDownloadNew.pFlags.disabled&&e&&(t=e.isUser()?e.isContact()?"contacts":"private":e.isBroadcast()?"channels":"groups",o.autoDownload.photo[t]&&(s=o.autoDownloadNew.photo_size_max),o.autoDownload.video[t]&&(i=o.autoDownloadNew.video_size_max),o.autoDownload.file[t]&&(n=o.autoDownloadNew.file_size_max)),{photo:s,video:i,file:n}}(this.peerId)}setMessageId(e){return this.setPeer(this.peerId,e)}finishPeerChange(e,t,s,i){if(this.peerChanged)return;let n=this.peerId;this.peerChanged=!0,this.cleanup(!1),this.topbar.setPeer(n),this.topbar.finishPeerChange(e,t,s),this.bubbles.finishPeerChange(),this.input.finishPeerChange(i),ds.sharedMediaTab.fillProfileElements(),this.log.setPrefix("CHAT-"+n+"-"+this.type),a.a.dispatchEvent("peer_changed",n),this.wasAlreadyUsed=!0}getMessagesStorage(){return this.appMessagesManager.getMessagesStorage(this.peerId)}getMessage(e){return this.appMessagesManager.getMessageFromStorage(this.getMessagesStorage(),e)}getMidsByMid(e){return this.appMessagesManager.getMidsByMessage(this.getMessage(e))}isAnyGroup(){return this.peerId===a.a.myId||this.peerId===Ne.d||this.appPeersManager.isAnyGroup(this.peerId)}initSearch(e){if(this.peerId)if(b.b.isMobile)this.search?this.search.setQuery(e):this.search=new vr(this.topbar,this,e);else{let t=ds.getTab(br);t||(t=new br(ds)),t.open(this.peerId,this.threadId,this.bubbles.onDatePick,e)}}canSend(e){return this.appMessagesManager.canSendToPeer(this.peerId,this.threadId,e)}isStartButtonNeeded(){return this.appPeersManager.isBot(this.peerId)&&!this.appMessagesManager.getDialogOnly(this.peerId)&&!this.appMessagesManager.getHistoryStorage(this.peerId).history.length}getMessageSendingParams(){return{threadId:this.threadId,replyToMsgId:this.input.replyToMsgId,scheduleDate:this.input.scheduleDate,sendSilent:this.input.sendSilent,sendAsPeerId:this.input.sendAsPeerId}}}var wr=s(174);class Sr{constructor(e){this.appImManager=e,this.buttons={},this.addedListener=!1,this.waitingForMouseUp=!1,this.mouseUpCounter=0,this.onMouseUpSingle=e=>{if(this.waitingForMouseUp=!1,he.a){if(e&&Object(c.a)(e),0!=this.mouseUpCounter++)return void this.hide();this.resetSelection(this.savedRange)}this.show()}}init(){this.container=document.createElement("div"),this.container.classList.add("markup-tooltip","z-depth-1","hide"),this.wrapper=document.createElement("div"),this.wrapper.classList.add("markup-tooltip-wrapper");const e=document.createElement("div"),t=document.createElement("div");e.classList.add("markup-tooltip-tools"),t.classList.add("markup-tooltip-tools");["bold","italic","underline","strikethrough","monospace","spoiler","link"].forEach(t=>{const s=N(t,{noRipple:!0});e.append(this.buttons[t]=s),"link"!==t?s.addEventListener("mousedown",e=>{Object(c.a)(e),this.appImManager.chat.input.applyMarkdown(t),this.cancelClosening()}):Object(l.b)(s,e=>{Object(c.a)(e),this.showLinkEditor(),this.cancelClosening()})}),this.linkBackButton=N("left",{noRipple:!0}),this.linkInput=document.createElement("input"),Object(T.b)(this.linkInput,"MarkupTooltip.LinkPlaceholder",void 0,"placeholder"),this.linkInput.classList.add("input-clear"),this.linkInput.addEventListener("keydown",e=>{const t=!this.linkInput.value.length||!!X.b.matchUrl(this.linkInput.value);"Enter"===e.key&&(t?this.applyLink(e):(this.linkInput.classList.contains("error")&&(this.linkInput.classList.remove("error"),this.linkInput.offsetLeft),this.linkInput.classList.add("error")))}),this.linkInput.addEventListener("input",e=>{const t=this.isLinkValid();this.linkInput.classList.toggle("is-valid",t),this.linkInput.classList.remove("error")}),this.linkBackButton.addEventListener("mousedown",e=>{Object(c.a)(e),this.container.classList.remove("is-link"),this.resetSelection(),this.setTooltipPosition(),this.cancelClosening()}),this.linkApplyButton=N("check markup-tooltip-link-apply",{noRipple:!0}),this.linkApplyButton.addEventListener("mousedown",e=>{this.applyLink(e)});const s=document.createElement("div");s.classList.add("markup-tooltip-link-apply-container");const i=document.createElement("span"),n=document.createElement("span"),a=document.createElement("span");i.classList.add("markup-tooltip-delimiter"),n.classList.add("markup-tooltip-delimiter"),a.classList.add("markup-tooltip-delimiter"),e.insertBefore(i,this.buttons.link),s.append(a,this.linkApplyButton),t.append(this.linkBackButton,n,this.linkInput,s),this.wrapper.append(e,t),this.container.append(this.wrapper),document.body.append(this.container),window.addEventListener("resize",()=>{this.hide()})}showLinkEditor(){this.container&&this.container.classList.contains("is-visible")||this.show();const e=this.buttons.link;this.container.classList.add("is-link");const t=document.getSelection();if(this.savedRange=t.getRangeAt(0),e.classList.contains("active")){const e=this.savedRange.startContainer.parentElement;this.linkInput.value=e.href}else this.linkInput.value="";this.setTooltipPosition(!0),setTimeout(()=>{this.linkInput.focus()},200),this.linkInput.classList.toggle("is-valid",this.isLinkValid())}applyLink(e){Object(c.a)(e),this.resetSelection();let t=this.linkInput.value;t&&!X.b.matchUrlProtocol(t)&&(t="https://"+t),this.appImManager.chat.input.applyMarkdown("link",t),setTimeout(()=>{this.hide()},0)}isLinkValid(){return!this.linkInput.value.length||!!X.b.matchUrl(this.linkInput.value)}resetSelection(e=this.savedRange){const t=window.getSelection();t.removeAllRanges(),t.addRange(e),this.appImManager.chat.input.messageInput.focus()}hide(){this.init||(this.container.classList.remove("is-visible"),document.removeEventListener("mouseup",this.onMouseUpSingle),this.waitingForMouseUp=!1,j.a.removeByType("markup"),this.hideTimeout&&clearTimeout(this.hideTimeout),this.hideTimeout=window.setTimeout(()=>{this.hideTimeout=void 0,this.container.classList.add("hide"),this.container.classList.remove("is-link")},200))}getActiveMarkupButton(){const e=function(){const e=[],t=window.getSelection();for(let s=0;s!!e)}(),t=[...new Set(e.map(e=>e.parentNode))],s=new Set;return t.forEach(e=>{for(const t in zo.b){const i=zo.b[t];e.closest(i.match+", [contenteditable]")!==this.appImManager.chat.input.messageInput&&s.add(this.buttons[t])}}),[...s]}setActiveMarkupButton(){const e=this.getActiveMarkupButton();for(const t in this.buttons){const s=this.buttons[t];s.classList.toggle("active",e.includes(s))}}setTooltipPosition(e=!1){const t=document.getSelection().getRangeAt(0),s=document.body.getBoundingClientRect(),i=t.getBoundingClientRect(),n=this.appImManager.chat.input.rowsWrapper.getBoundingClientRect();this.container.style.maxWidth=n.width+"px";const a=Ya(void 0,this.appImManager.chat.input.messageInput,!1,i).rect.top+-1*s.top,o=(this.container.classList.contains("is-link")?this.wrapper.lastElementChild:this.wrapper.firstElementChild).getBoundingClientRect(),r=a-o.height-8,l=n.left,c=n.left+n.width-Math.min(n.width,o.width);let d;if(e){const e=this.container.getBoundingClientRect();d=Object(Se.a)(e.left,l,c)}else{const e=i.left+(i.width-o.width)/2;d=Object(Se.a)(e,l,c)}this.container.style.transform=`translate3d(${d}px, ${r}px, 0)`}show(){if(this.init&&(this.init(),this.init=null),ho())return void this.hide();if(void 0!==this.hideTimeout&&clearTimeout(this.hideTimeout),this.container.classList.contains("is-visible"))return;this.setActiveMarkupButton(),this.container.classList.remove("is-link");const e=this.container.classList.contains("hide");e&&(this.container.classList.remove("hide"),this.container.classList.add("no-transition")),this.setTooltipPosition(),e&&(this.container.offsetLeft,this.container.classList.remove("no-transition")),this.container.classList.add("is-visible"),ae.e||j.a.pushItem({type:"markup",onPop:()=>{this.hide()}})}setMouseUpEvent(){this.waitingForMouseUp||(this.waitingForMouseUp=!0,document.addEventListener("mouseup",this.onMouseUpSingle,{once:!0}))}cancelClosening(){he.a&&!ae.b&&(document.removeEventListener("mouseup",this.onMouseUpSingle),document.addEventListener("mouseup",e=>{Object(c.a)(e),this.mouseUpCounter=1,this.waitingForMouseUp=!1,this.setMouseUpEvent()},{once:!0}))}handleSelection(){this.addedListener||(this.addedListener=!0,document.addEventListener("selectionchange",e=>{if(document.activeElement===this.linkInput)return;const t=this.appImManager.chat.input.messageInput;if(document.activeElement!==t)return void this.hide();const s=document.getSelection();if(ho(s))this.hide();else if(he.a)if(ae.b)this.show(),this.setTooltipPosition();else{if(2===this.mouseUpCounter)return void(this.mouseUpCounter=0);this.savedRange=s.getRangeAt(0),this.setMouseUpEvent()}else this.container&&this.container.classList.contains("is-visible")?this.setTooltipPosition():t.matches(":active")?this.setMouseUpEvent():this.show()}))}}function Lr(e,t,s,i,n,a,o){return[e,",",t," ",s," ",i,",",n," ",a,",",o].join("")}function Cr(e,t,s,i,n,a,o,r){const l=[];return l.push("M"+(e+s/2)+","+t),l.push("H"+(e+s-a)),a>0&&l.push("A"+Lr(a,a,0,0,1,e+s,t+a)),l.push("V"+(t+i-o)),o>0&&l.push("A"+Lr(o,o,0,0,1,e+s-o,t+i)),l.push("H"+(e+r)),r>0&&l.push("A"+Lr(r,r,0,0,1,e+0,t+i-r)),l.push("V"+(t+n)),n>0&&l.push("A"+Lr(n,n,0,0,1,e+n,t+0)),l.push("Z"),l.join(" ")}le.a.generatePathData=Cr;class Mr{constructor(e,t){let s;this.options=t,this.onDragOver=e=>{this.container.classList.add("is-dragover")},this.onDragLeave=e=>{this.container.classList.remove("is-dragover")},this.onDrop=e=>{this.options.onDrop(e)},this.container=document.createElement("div"),this.container.classList.add("drop","z-depth-1"),this.outlineWrapper=document.createElement("div"),this.outlineWrapper.classList.add("drop-outline-wrapper"),this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.classList.add("drop-outline"),this.path=document.createElementNS("http://www.w3.org/2000/svg","path"),this.path.classList.add("drop-outline-path"),t.icon&&(s=document.createElement("div"),s.classList.add("drop-icon","tgico-"+t.icon));const i=document.createElement("div");let n;i.classList.add("drop-header"),i.append(Object(T.d)(t.header,t.headerArgs)),t.subtitle&&(n=document.createElement("div"),n.classList.add("drop-subtitle"),n.append(Object(T.d)(t.subtitle))),this.svg.append(this.path),this.outlineWrapper.append(this.svg),this.container.append(...[this.outlineWrapper,s,i,n].filter(Boolean)),e.append(this.container),this.container.addEventListener("dragover",this.onDragOver),this.container.addEventListener("dragleave",this.onDragLeave),this.container.addEventListener("drop",this.onDrop)}destroy(){delete this.options,this.container.remove(),this.container.removeEventListener("dragover",this.onDragOver),this.container.removeEventListener("dragleave",this.onDragLeave),this.container.removeEventListener("drop",this.onDrop)}setPath(){const e=this.outlineWrapper.getBoundingClientRect();this.svg.setAttributeNS(null,"preserveAspectRatio","none"),this.svg.setAttributeNS(null,"viewBox",`0 0 ${e.width} ${e.height}`),this.svg.setAttributeNS(null,"width",""+e.width),this.svg.setAttributeNS(null,"height",""+e.height);const t=Cr(5,5,e.width-10,e.height-10,10,10,10,10);this.path.setAttributeNS(null,"d",t)}}function Ir(e){e.forEach(e=>e.classList.add("no-transition")),Object(Re.a)().then(()=>{e.forEach(e=>e.classList.remove("no-transition"))})}var Er=s(49),Pr=s(47),kr=s(135),Tr=s(126);class xr{constructor(e){this.maxRadius=10,this.minRadius=0,this.N=e,this.radius=new Array(e+1),this.radiusNext=new Array(e+1),this.progress=new Array(e+1),this.speed=new Array(e+1);for(let t=0;t<=e;t++)this.generateBlob(this.radius,t),this.generateBlob(this.radiusNext,t),this.progress[t]=0}generateBlob(e,t){const{maxRadius:s,minRadius:i,speed:n}=this,a=s-i;e[t]=i+Math.random()*a,n[t]=.017+.003*Math.random()}generateNextBlob(){const{radius:e,radiusNext:t,progress:s,N:i}=this;for(let n=0;n=1&&(i[r]=0,a[r]=o[r],this.generateBlob(o,r))}draw(e,t,s,i,n,a,o,r){if(n.getContext){const l=n.getContext("2d");l.beginPath(),l.moveTo(s,i),l.lineTo(e,i);const{radius:c,radiusNext:d,N:h}=this;for(let n=0;n<=h;n++)if(0===n){const s=this.progress[n],i=(t-(c[n]*(1-s)+d[n]*s))*r+o*(1-r);l.lineTo(e,i)}else{const a=this.progress[n-1],p=c[n-1]*(1-a)+d[n-1]*a,u=this.progress[n],g=(s-e)/h*(n-1),m=(s-e)/h*n,b=g+(m-g)/2,v=(t-p)*r+o*(1-r),f=(t-(c[n]*(1-u)+d[n]*u))*r+o*(1-r);l.bezierCurveTo(b,v,b,f,m,f),n===h&&l.lineTo(s,i)}a(l),l.fill(),l.closePath()}}}class Ar{constructor(e){this.stateId=e,this.createGradient(e)}createGradient(e){this.shader=(t,s,i,n,a)=>{t.fillStyle=Ar.getGradientFromType(t,e,s,i,n,a)}}static getGradientFromType(e,t,s,i,n,a){const o=e.createLinearGradient(s,i,n,a);return t===Tr.a.MUTED_BY_ADMIN?(o.addColorStop(0,"#F05459"),o.addColorStop(.4,"#766EE9"),o.addColorStop(1,"#57A4FE")):t===Tr.a.UNMUTED?(o.addColorStop(0,"#52CE5D"),o.addColorStop(1,"#00B1C0")):t===Tr.a.MUTED?(o.addColorStop(0,"#0976E3"),o.addColorStop(1,"#2BCEFF")):t===Tr.a.CONNECTING&&(o.addColorStop(0,"#8599aa"),o.addColorStop(1,"#8599aa")),o}update(e,t,s,i){}}class Or{constructor(){this.handleDevicePixelRatioChanged=e=>{this.setSize(),this.forceUpdate()},this.handleResize=()=>{this.resizeHandler&&(clearTimeout(this.resizeHandler),this.resizeHandler=null),this.resizing=!0,this.resizeCanvas(),this.resizeHandler=window.setTimeout(()=>{this.resizing=!1,this.invokeDraw()},250)},this.handleFocus=()=>{this.focused=!0,this.invokeDraw()},this.handleBlur=()=>{this.focused=!1},this.invokeDraw=()=>{this.raf||this.draw()},this.draw=(e=!1)=>{if(this.raf=null,!this.mounted)return;const{lbd:t,lbd1:s,lbd2:i,scale:n,left:a,top:o,right:r,bottom:l,currentState:c,previousState:d,focused:h,resizing:p,canvas:u}=this;if(!h&&!p&&this.progressToState>=1)return;let g=Date.now()-this.lastUpdateTime;g>20&&(g=17),this.animateToAmplitude!==this.amplitude&&(this.amplitude+=this.animateAmplitudeDiff*g,this.animateAmplitudeDiff>0?this.amplitude>this.animateToAmplitude&&(this.amplitude=this.animateToAmplitude):this.amplitude0?this.amplitude2>this.animateToAmplitude&&(this.amplitude2=this.animateToAmplitude):this.amplitude21&&(this.progressToState=1,this.previousState=null));const{amplitude:m,amplitude2:b,progressToState:v}=this,f=6*b*n,y=6*b*n;u.getContext("2d").clearRect(0,0,u.width,u.height),t.minRadius=0,t.maxRadius=(2+2*m)*n,s.minRadius=0,s.maxRadius=(3+9*m)*n,i.minRadius=0,i.maxRadius=(3+9*m)*n,t.update(m,.3),s.update(m,.7),i.update(m,.7);for(let e=0;e<2;e++){if(0===e&&!d)continue;let n=1,h=null;0===e?(n=1-v,h=d):(n=d?v:1,c.update(l-o,r-a,g,m),h=c);const p=e=>{e.globalAlpha=.3*n,h.shader(e,a,o,r,l)},b=t=>{t.globalAlpha=0===e?1:n,h.shader(t,a,o,r,l)};s.draw(a,o-f,r,l,u,p,o,1),i.draw(a,o-y,r,l,u,p,o,1),t.draw(a,o,r,l,u,b,o,1)}e||(this.raf=requestAnimationFrame(()=>this.draw()))},this.setCurrentState=(e,t)=>{const{currentState:s,states:i}=this;(null==s?void 0:s.stateId)!==e&&(this.previousState=t?s:null,this.currentState=i.get(e),this.progressToState=this.previousState?0:1)},this.focused=!0,this.resizing=!1,this.lastUpdateTime=Date.now(),this.amplitude=0,this.amplitude2=0,this.states=new Map([[Tr.a.UNMUTED,new Ar(Tr.a.UNMUTED)],[Tr.a.MUTED,new Ar(Tr.a.MUTED)],[Tr.a.MUTED_BY_ADMIN,new Ar(Tr.a.MUTED_BY_ADMIN)],[Tr.a.CONNECTING,new Ar(Tr.a.CONNECTING)]]),this.previousState=null,this.currentState=this.states.get(Tr.a.CONNECTING),this.progressToState=1}componentDidMount(){this.mounted||(this.mounted=!0,window.addEventListener("resize",this.handleResize),this.media=window.matchMedia("screen and (min-resolution: 2dppx)"),this.media.addEventListener("change",this.handleDevicePixelRatioChanged),this.setSize(),this.forceUpdate(),this.lbd=new xr(3),this.lbd1=new xr(7),this.lbd2=new xr(8),this.setAmplitude(this.amplitude),this.draw())}componentWillUnmount(){this.mounted=!1,window.removeEventListener("resize",this.handleResize),this.media.addEventListener("change",this.handleDevicePixelRatioChanged);const{canvas:e}=this;e.getContext("2d").clearRect(0,0,e.width,e.height)}setSize(){this.scale=window.devicePixelRatio,this.top=20*this.scale,this.right=(this.mounted?this.container.offsetWidth:1261)*this.scale,this.bottom=(this.mounted?this.container.offsetHeight:68)*this.scale,this.left=0*this.scale,this.setCanvasSize()}setCanvasSize(){this.canvas.width=this.right,this.canvas.height=this.bottom}resizeCanvas(){this.scale=window.devicePixelRatio,this.right=this.container.offsetWidth*this.scale,this.forceUpdate(),this.invokeDraw()}setAmplitude(e){const{amplitude:t}=this;this.animateToAmplitude=e,this.animateAmplitudeDiff=(e-t)/250,this.animateAmplitudeDiff2=(e-t)/120}forceUpdate(){this.setCanvasSize()}render(e){const t=this.container=document.createElement("div");t.classList.add(e);const s=this.canvas=document.createElement("canvas");return s.classList.add(e+"-canvas"),t.append(s),t}}var _r=new class{constructor(){this.cache={},a.a.addEventListener("theme_change",()=>{this.computedStyle=void 0;const e=this.cache;this.cache={};for(let t in e)this.getProperty(t)})}getProperty(e){let t=this.cache[e];return t||(this.computedStyle||(this.computedStyle=window.getComputedStyle(document.documentElement)),t=this.computedStyle.getPropertyValue("--"+e).trim(),this.cache[e]=t)}};class Fr{constructor(e,t){this.item=e,Object(w.a)(this,t)}play(e){return this.item.playPart(this,e)}}class jr{constructor(e,t){this.icon=e,this.autoplay=!1,Object(w.a)(this,t),this.parts=this.parts.map(e=>this.createPart(e))}load(){var e;let t=this.loadPromise;if(t)return t;const{container:s,canvas:i,width:n,height:a}=this.icon;return t=oe.a.loadAnimationAsAsset({container:s,canvas:i,width:n,height:a,group:"none",loop:!1,autoplay:null!==(e=this.autoplay)&&void 0!==e&&e,initFrame:this.initFrame,skipFirstFrameRendering:void 0===this.initFrame,color:this.color,inverseColor:this.inverseColor},this.name).then(e=>oe.a.waitForFirstFrame(e)).then(e=>{this.player=e,this.onLoadForColor&&(this.onLoadForColor(),this.onLoadForColor=void 0),this.onLoadForPart&&(this.onLoadForPart(),this.onLoadForPart=void 0)}),this.loadPromise=t,this.icon.loadPromises.set(this.name,t),t}createPart(e){return new Fr(this,e)}getPart(e){return e instanceof Fr?e:"string"==typeof e?this.parts.find(t=>t.name===e):this.parts[e]}playPart(e,t){return this.icon.playPart(this,e,t)}}class Dr{constructor(e){Object(w.a)(this,e),this.container||(this.container=document.createElement("div")),this.container.classList.add("rlottie-icon");const{width:t,height:s}=this;this.container.style.width=t+"px",this.container.style.height=s+"px";const i=this.canvas=document.createElement("canvas");i.classList.add("rlottie"),i.width=t,i.height=s,this.items=new Map,this.loadPromises=new Map}get loadPromise(){return Promise.all([...this.loadPromises.values()]).then(je.a)}getItem(e){return e||1!==this.items.size?this.items.get(e):this.items.values().next().value}add(e){const t=new jr(this,e);return this.items.set(e.name,t),t}playPart(e,t,s){if(!e.player)return void(e.onLoadForPart=()=>{this.playPart(e,t,s)});const i=e.getPart(t);e.player.playPart({from:a.a.settings.animationsEnabled&&!this.skipAnimation?i.startFrame:i.endFrame,to:i.endFrame,callback:s})}static generateEqualParts(e,t){return new Array(e).fill(0).map((e,s)=>{const i=s*t;return{startFrame:i,endFrame:i+t-1}})}}class Rr extends Dr{constructor(e){super({width:e.width,height:e.height}),Object(w.a)(this,e)}load(e,t){if(this.loaded)return this.loadPromise;this.loaded=!0,this.partState=e,this.colorState=t;const s=this.getPart(e),i=void 0!==t&&this.getColor&&this.getColor(t),n=s.item;n.initFrame=s.endFrame,n.color=i;const a=[...this.items.values()].map(e=>e.load());return Promise.all(a).then(je.a)}setState(e,t,s){this.loaded||this.load(e,t);let i=!1,n=!1;return void 0!==e?i=this.setPartState(e,t,s):void 0!==t&&(n=this.setColorState(t)),i||n}setPartState(e,t,s){const{partState:i}=this;if(i===e)return void 0!==t&&this.setColorState(t);void 0!==t&&this.setColorState(t,!1),this.partState=e;return this.getPart(e,i).play(s),!0}setColorState(e,t=!0){const{colorState:s}=this;if(s===e||!this.getColor)return!1;this.colorState=e;const i=this.getItem(),n=this.getColor(e,s),a=()=>{i.player.setColor(n,t)};return i.player?a():i.onLoadForColor=a,!0}destroy(){this.items.forEach(e=>{e.loadPromise.then(()=>{e.player.remove()})})}}class Br extends Rr{constructor(){super({width:36,height:36,getPart:(e,t)=>{const s=el;let i;switch(e){case s.HAND:i=t===s.MUTED?"muted-to-hand":"unmuted-to-hand";break;case s.MUTED:i=t===s.HAND?"hand-to-muted":"mute";break;case s.UNMUTED:i="unmute"}return this.getItem().getPart(i)}});this.container.classList.add("group-call-microphone-icon-container");this.add({name:"voip_filled",parts:[{startFrame:0,endFrame:35,name:"hand-to-muted"},{startFrame:36,endFrame:68,name:"unmute"},{startFrame:69,endFrame:98,name:"mute"},{startFrame:99,endFrame:135,name:"muted-to-hand"},{startFrame:136,endFrame:172,name:"unmuted-to-hand"},{startFrame:173,endFrame:201,name:"scheduled-crossing"},{startFrame:202,endFrame:236,name:"scheduled-to-muted"},{startFrame:237,endFrame:273,name:"scheduled-to-hand"},{startFrame:274,endFrame:310,name:"scheduled-crossed-to-hand"},{startFrame:311,endFrame:343,name:"scheduled-uncrossing"},{startFrame:344,endFrame:375,name:"scheduled-to-muted"},{startFrame:376,endFrame:403,name:"play-to-muted"}]})}}class Nr extends Rr{constructor(e){super({width:32,height:32,getPart:(e,t)=>{const s=Zr;let i;switch(e){case s.HAND:i=3;break;case s.MUTED:i=t===s.HAND?0:2;break;case s.UNMUTED:i=1}return this.getItem().getPart(i)},getColor:e?(e,t)=>function(e){const t=Zr;let s,i;switch(e){case t.HAND:i="blue";break;case t.MUTED:case t.MUTED_FOR_ME:case t.MUTED_BY_ADMIN:i=e===t.MUTED?"secondary":"red";break;case t.UNMUTED:i="green"}const n=_r.getProperty("gc-"+i+"-text-color");return s=Zi(n),s}(e):void 0}),this.colored=e;this.container.classList.add("group-call-participant-muted-icon-container");const t=Dr.generateEqualParts(4,21);this.add({name:"voice_outlined2",parts:t})}setState(e){return super.setState(function(e){const t=Zr;switch(e){case t.MUTED_BY_ADMIN:case t.MUTED_FOR_ME:return t.MUTED;default:return e}}(e),e)}}class Ur{constructor(e){this.withIcons=e,this.container=document.createElement("div"),this.container.classList.add("group-call-participant-status-container")}setState(e,t){const s=Zr,i=this.withIcons.filter(e=>!!t[e]).map(e=>{const t="tgico-"+("presentation"===e?"listscreenshare":"videocamera_filled"),s=document.createElement("i");return s.classList.add("group-call-participant-status-icon","group-call-participant-status-icon-"+e,t),s});let n,a;if(e===s.MUTED_FOR_ME)n=Object(T.d)("VoiceChat.Status.MutedForYou"),a="is-muted";else if(e===s.UNMUTED)n=Object(T.d)("VoiceChat.Status.Speaking"),a="is-speaking";else if(e===s.HAND)n=Object(T.d)("VoiceChat.Status.WantsSpeak"),a="is-waiting";else{if(t.about&&!i.length)return void m(this.container,X.b.wrapEmojiText(t.about));n=Object(T.d)("VoiceChat.Status.Listening"),a="is-listening"}const o=document.createElement("span");o.classList.add("group-call-participant-status",a),o.append(...i,n),Object(k.a)(this.container,o)}}class Hr extends Qs{constructor(e){super({getIndex:e=>e.participant.date,onDelete:e=>{e.dom.listEl.remove(),this.onElementDestroy(e)},onUpdate:e=>{const{participant:t}=e,s=al(t);e.mutedIcon.setState(s),e.status.setState(s,t)},onSort:(e,t)=>{qs(e.dom.listEl,this.list,t)},onElementCreate:t=>{const{dom:s}=Oc.addDialogNew({dialog:t.id,container:!1,drawStatus:!1,avatarSize:this.avatarSize,autonomous:this.autonomous,meAsSaved:!1,rippleEnabled:this.rippleEnabled,lazyLoadQueue:this.lazyLoadQueue});s.listEl.classList.add("group-call-participant");const i=e.participants.get(t.id),n=al(i),a=new Nr(!0),o=new Ur(["presentation","video"]);return a.setState(n),o.setState(n,i),Object(k.a)(s.lastMessageSpan,o.container),s.listEl.append(a.container),t.dom=s,t.participant=i,t.mutedIcon=a,t.status=o,t},updateElementWith:Re.b}),this.instance=e,this.avatarSize=54,this.rippleEnabled=!0,this.autonomous=!0,this.createChatListOptions={dialogSize:72},this.list=Oc.createChatList(this.createChatListOptions)}destroy(){this.elements.forEach(e=>{this.onElementDestroy(e)})}onElementDestroy(e){e.mutedIcon.destroy()}}function zr(e){const t=document.createElement("canvas");t.classList.add("call-video-blur");t.width=16,t.height=16;const s=t.getContext("2d");s.filter="blur(2px)";const i=()=>{s.drawImage(e,0,0,e.videoWidth,e.videoHeight,0,0,t.width,t.height)};return Object(He.a)(()=>(i(),t.isConnected)),i(),t}class Vr{constructor(e,t,s){this.appPeersManager=e,this.instance=t,this.source=s,this.container=document.createElement("div"),this.container.classList.add("group-call-participant-video-container"),this.info=document.createElement("div"),this.info.classList.add("group-call-participant-video-info"),this.left=document.createElement("div"),this.left.classList.add("group-call-participant-video-info-left"),this.right=document.createElement("div"),this.right.classList.add("group-call-participant-video-info-right"),this.info.append(this.left,this.right),this.container.append(this.info)}setPinned(e){if(!e)return void(this.header&&(this.header.remove(),this.header=void 0));if(this.header)return;this.header=document.createElement("div"),this.header.classList.add("group-call-participant-video-header");const t=document.createElement("i");t.classList.add("group-call-pin-icon","tgico-pin"),this.header.append(t),this.container.append(this.header)}setParticipant(e,t,s){let i;e.pFlags.self?(i=Object(T.d)("VoiceChat.Status.You"),i.classList.add("peer-title")):(this.peerTitle=new Tt.a({peerId:this.appPeersManager.getPeerId(e.peer)}),i=this.peerTitle.element),this.groupCallParticipantMutedIcon=new Nr(!1),this.groupCallParticipantStatus=new Ur([t]),this.left.append(i,this.groupCallParticipantStatus.container),this.right.append(this.groupCallParticipantMutedIcon.container),s.classList.add("group-call-participant-video","call-video"),s.paused&&s.play();const n=zr(s);n.classList.add("group-call-participant-video-blur"),this.container.prepend(n,s),this.updateParticipant(e)}updateParticipant(e){const t=al(e);this.groupCallParticipantMutedIcon.setState(t),this.groupCallParticipantStatus.setState(t,e)}destroy(){this.groupCallParticipantMutedIcon.destroy()}}class Kr extends ke{constructor(e){super(),Object(w.a)(this,e);const t=this.container=document.createElement("div");this.container.classList.add("group-call-participants-video-container"),e.appendTo.append(t),this.participantsElements=new Map,this.containers=new Map;const{listenerSetter:s}=this;s.add(a.a)("group_call_participant",({groupCallId:e,participant:t})=>{this.instance.id===e&&this.updateParticipant(t)}),s.add(this.instance)("pinned",e=>{this.participantsElements.forEach(t=>{t.forEach(t=>{this.setElementDisplay(t,e)})})}),Object(l.b)(this.container,e=>{const t=Object(Pe.a)(e.target,"group-call-participant-video-container");if(!t)return;const s=this.containers.get(t);this.instance.pinnedSource!==s.source?this.instance.pinSource(s.source):this.instance.unpinAll()},{listenerSetter:s}),this.setInstance(this.instance),this.setup({element:t,listenerSetter:s,showOnLeaveToClassName:"group-call-buttons"})}shouldDisplayElement(e,t){return this.displayPinned?!t||e.source===t:t&&e.source!==t}setElementDisplay(e,t){const s=this.shouldDisplayElement(e,t);e.container.classList.toggle("video-hidden",!s);const i=e.source===t;e.setPinned(i)}updateParticipant(e){const t=this.appPeersManager.getPeerId(e.peer),s=["video","presentation"],i=s.some(t=>!!e[t]);let n=this.participantsElements.get(t);(i||n)&&(n||this.participantsElements.set(t,n=new Map),s.forEach(s=>{let i=n.get(s);const a=e[s];if(!!a!=!!i){if(a){const t=this.instance.getVideoElementFromParticipantByType(e,s);if(!t)return;const{video:a,source:o}=t;i=new Vr(this.appPeersManager,this.instance,o),this.containers.set(i.container,i),this.setElementDisplay(i,this.instance.pinnedSource),n.set(s,i),i.setParticipant(e,s,a),this.container.prepend(i.container)}else n.delete(s),i.container.remove(),n.size||(this.participantsElements.delete(t),this.containers.delete(i.container),i.destroy());this._onLengthChange()}else i&&i.updateParticipant(e)}))}_onLengthChange(){const e=this.container.childElementCount;this.container.dataset.length=""+e,this.container.dataset.layout=e<=2?"1":3===e?"3":"4",this.onLengthChange&&this.onLengthChange(e)}setInstance(e){e.participants.forEach(e=>{this.updateParticipant(e)})}destroy(){this.containers.forEach(e=>{e.destroy()})}}class Gr{constructor(e){this.onOpenProfileClick=()=>{const e=wt.b.getPopups(rl)[0];e&&e.hide(),a.a.dispatchEvent("history_focus",{peerId:this.targetPeerId})},this.toggleParticipantMuted=e=>{this.appGroupCallsManager.editParticipant(this.instance.id,this.participant,{muted:e})},this.buttons=[{icon:"gc_microphoneoff",text:"VoiceChat.MutePeer",verify:()=>this.canManageCall&&this.participant.pFlags.can_self_unmute,onClick:()=>this.toggleParticipantMuted(!0)},{icon:"gc_microphone",text:"VoiceChat.UnmutePeer",verify:()=>this.canManageCall&&!this.participant.pFlags.can_self_unmute,onClick:()=>this.toggleParticipantMuted(!1)},{icon:"gc_microphoneoff",text:"VoiceChat.MuteForMe",verify:()=>!this.canManageCall&&!this.participant.pFlags.muted_by_you,onClick:()=>this.toggleParticipantMuted(!0)},{icon:"gc_microphone",text:"VoiceChat.UnmuteForMe",verify:()=>!this.canManageCall&&this.participant.pFlags.muted_by_you,onClick:()=>this.toggleParticipantMuted(!1)},{icon:"newprivate",text:"VoiceChat.OpenProfile",verify:()=>!0,onClick:this.onOpenProfileClick},{icon:"deleteuser danger",text:"VoiceChat.RemovePeer",verify:()=>this.appChatsManager.hasRights(this.chatId,"ban_users"),onClick:()=>{Pn({peerId:this.targetPeerId,title:new Tt.a({peerId:this.targetPeerId}).element,descriptionLangKey:this.appChatsManager.isBroadcast(this.chatId)?"VoiceChat.RemovePeer.Confirm.Channel":"VoiceChat.RemovePeer.Confirm",descriptionLangArgs:[new Tt.a({peerId:this.targetPeerId}).element],button:{langKey:"VoiceChat.RemovePeer.Confirm.OK",isDanger:!0}}).then(()=>{this.appChatsManager.kickFromChat(this.chatId,this.targetPeerId)},je.a)}}];const{listenerSetter:t}=e;this.appChatsManager=e.appChatsManager,this.appPeersManager=e.appPeersManager,this.appGroupCallsManager=e.appGroupCallsManager,this.instance=e.instance,this.chatId=this.instance.chatId,this.element=Me(this.buttons,t),this.element.classList.add("group-call-participant-menu","night"),Object(ee.a)(e.onContextElement,e=>{const t=Object(Pe.a)(e.target,"group-call-participant");if(!t)return;this.element.parentElement!==s&&s.append(this.element);const i=this.targetPeerId=t.dataset.peerId.toPeerId();this.participant=this.instance.getParticipantByPeerId(i),this.participant.pFlags.self||(this.canManageCall=this.appChatsManager.hasRights(this.chatId,"manage_call"),this.buttons.forEach(e=>{e.element.classList.toggle("hide",!e.verify(i))}),Object(c.a)(e),Object(ee.e)(e.touches?e.touches[0]:e,this.element,"right"),Object(ee.d)(this.element))},t),t.add(a.a)("group_call_participant",({groupCallId:e,participant:t})=>{if(this.instance.id===e){const e=this.appPeersManager.getPeerId(t.peer);this.targetPeerId===e&&Object(ee.c)()}});let s=document.body;Object(Te.a)(document.body,()=>{const e=Object(Te.d)();s=e?wt.b.getPopups(rl)[0].getContainer():document.body,e||Object(ee.c)()},t)}}class Wr{constructor(e){Object(w.a)(this,e);const t=new P.b(void 0);t.container.classList.add("group-call-participants-scrollable");const s=this.container=document.createElement("div");s.classList.add("group-call-participants");const i=this.sortedList=new Hr(this.instance),{instance:n,listenerSetter:o}=this;this.contextMenu=new Gr(Object.assign(Object.assign({},e),{onContextElement:i.list,listenerSetter:o,instance:n})),this.groupCallParticipantsVideo=new Kr(Object.assign(Object.assign({},e),{appendTo:t.container,displayPinned:!1})),t.append(i.list),s.append(t.container),e.appendTo.append(s),o.add(a.a)("group_call_participant",({groupCallId:e,participant:t})=>{this.instance.id===e&&this.updateParticipant(t)});new Et({scrollable:t,getPromise:()=>this.appGroupCallsManager.getGroupCallParticipants(this.instance.id).then(({participants:e,isEnd:t})=>(e.forEach(e=>{this.updateParticipant(e)}),t))});this.setInstance(n)}updateParticipant(e){const t=this.appPeersManager.getPeerId(e.peer),s=this.sortedList.has(t);e.pFlags.left?s&&this.sortedList.delete(t):s?this.sortedList.update(t):this.sortedList.add(t)}setInstance(e){e.participants.forEach(e=>{this.updateParticipant(e)})}destroy(){this.sortedList.destroy(),this.groupCallParticipantsVideo.destroy()}}class qr{constructor(e){this.appendTo=e,this.descriptionIntl=new T.c.IntlElement({key:"VoiceChat.Status.Connecting"}),this.descriptionIntl.element.classList.add("group-call-description")}detach(){this.descriptionIntl.element.remove()}update(e){const{state:t}=e;let s,i;t===Tr.a.CONNECTING?s="VoiceChat.Status.Connecting":(s="VoiceChat.Status.Members",i=[e.groupCall.participants_count]);const{descriptionIntl:n}=this;n.compareAndUpdate({key:s,args:i}),this.descriptionIntl.element.parentElement||this.appendTo.append(this.descriptionIntl.element)}}class $r{constructor(e){this.appendTo=e,this.peerTitle=new Tt.a({peerId:0})}update(e){const{peerTitle:t,appendTo:s}=this,i=e.groupCall,n=e.chatId.toPeerId(!0);i.title?m(s,X.b.wrapEmojiText(i.title)):(t.peerId!==n&&(t.peerId=n,t.update()),t.element.parentElement!==s&&s.append(t.element))}}var Qr=!!("getDisplayMedia"in((null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||{}));function Yr(e,t,s){const i=e+"-button",n=document.createElement("div");n.classList.add(i,"call-button","rp-overflow"),s.icon&&n.classList.add("tgico-"+s.icon),s.noRipple||Object(te.a)(n),s.isDanger&&n.classList.add(i+"-red"),s.isConfirm&&n.classList.add(i+"-green"),s.callback&&Object(l.b)(n,s.callback,{listenerSetter:t});let a=n;if(s.text){const e=document.createElement("div");e.classList.add(i+"-container","call-button-container");const t="string"==typeof s.text?Object(T.d)(s.text):s.text;t.classList.add(i+"-text","call-button-text"),e.append(n,t),a=e}return a}class Xr extends D.a{constructor(e){super(!0),this.onResize=()=>{this.fixDimensions(),this.fixPosition(),this.setPosition()},Object(w.a)(this,e),this.top=this.left=this.width=this.height=0,this.element.classList.add("movable-element"),this.addResizeHandlers(),this.setSwipeHandler(),b.b.addEventListener("resize",this.onResize)}destroyElements(){this.element.classList.remove("movable-element"),this.handlers&&this.handlers.forEach(e=>{e.remove()})}destroy(){b.b.removeEventListener("resize",this.onResize),this.swipeHandler.removeListeners()}addResizeHandlers(){this.handlers=["n","e","s","w","ne","se","sw","nw"].map(e=>{const t=document.createElement("div");return t.dataset.side=e,t.classList.add("movable-element-resize-handler","movable-element-resize-handler-side-"+e),this.element.append(t),t})}setSwipeHandler(){let e,t,s,i,n;const a=this.swipeHandler=new is({element:this.element,onSwipe:(a,o,r)=>{if(a*=-1,o*=-1,n){if(n.includes("e")||n.includes("w")){const e=n.includes("e")&&a>0||n.includes("w")&&a<0,i=Math.abs(a)*(e?1:-1),o=n.includes("e")?xt.a.width-t:s+t;this.width=Math.min(o,s+i)}if(n.includes("n")||n.includes("s")){const t=n.includes("s")&&o>0||n.includes("n")&&o<0,s=Math.abs(o)*(t?1:-1),a=n.includes("s")?xt.a.height-e:i+e;this.height=Math.min(a,i+s)}this.fixDimensions(),n.includes("w")&&(this.left=Math.min(t+s-this.minWidth,t+a)),n.includes("n")&&(this.top=Math.min(e+i-this.minHeight,e+o))}else this.top=e+o,this.left=t+a;this.fixPosition(),this.setPosition()},verifyTouchTarget:e=>{const t=e.target;if(this.verifyTouchTarget&&!this.verifyTouchTarget(e))return!1;const s=Object(Pe.a)(t,"movable-element-resize-handler");return s?(n=s.dataset.side,a.setCursor("")):(n=void 0,a.setCursor("grabbing")),!0},onFirstSwipe:()=>{e=this.top,t=this.left,s=this.width,i=this.height}})}setPositionToCenter(){this.top=xt.a.height/2-this.height/2,this.left=xt.a.width/2-this.width/2,this.setPosition()}fixDimensions(){this.width=Object(Se.a)(this.width,this.minWidth,xt.a.width),this.height=Object(Se.a)(this.height,this.minHeight,xt.a.height)}fixPosition(){this.top=Object(Se.a)(this.top,0,xt.a.height-this.height),this.left=Object(Se.a)(this.left,0,xt.a.width-this.width)}setPosition(){this.element.style.top=this.top+"px",this.element.style.left=this.left+"px",this.element.style.right="auto",this.element.style.bottom="auto",this.element.style.width=this.width+"px",this.element.style.height=this.height+"px",this.dispatchEvent("resize")}get width(){return this._width}get height(){return this._height}set width(e){this._width=e}set height(e){this._height=e}get state(){const{top:e,left:t,width:s,height:i}=this;return{top:e,left:t,width:s,height:i}}set state(e){const{top:t,left:s,width:i,height:n}=e;this.top=t,this.left=s,this.width=i,this.height=n,this.onResize()}}var Jr,Zr,el,tl=function(e,t,s,i){if("a"===s&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===s?i:"a"===s?i.call(e):i?i.value:t.get(e)},sl=function(e,t,s,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(e,s):n?n.value=s:t.set(e,s),s};class il{constructor(e){Jr.set(this,void 0),Object(w.a)(this,e),this.toggleMovable(!he.a),this.listenerSetter.add(b.b)("changeScreen",(e,t)=>{t!==b.a.mobile&&e!==b.a.mobile||this.toggleMovable(!he.a)})}destroy(){const e=this.movable;e&&e.destroy()}get movable(){return tl(this,Jr,"f")}get state(){return this.movable?this.movable.state:this.previousState}set state(e){this.previousState=e}toggleMovable(e){let{movable:t}=this;if(e){if(t)return;t=sl(this,Jr,new Xr(this.movableOptions),"f"),t.state=this.previousState,void 0===this.previousState.top&&t.setPositionToCenter(),this.onResize&&this.listenerSetter.add(t)("resize",this.onResize)}else{if(!t)return;this.previousState=t.state,t.destroyElements(),t.destroy(),sl(this,Jr,void 0,"f")}}}function nl(e,t,s){return t.forEach(t=>{t.classList.toggle(e,s)}),()=>nl(e,t,!s)}function al(e){const t=Zr;return e.pFlags.muted_by_you?t.MUTED_FOR_ME:void 0!==e.raise_hand_rating?t.HAND:e.pFlags.muted?e.pFlags.can_self_unmute?t.MUTED:t.MUTED_BY_ADMIN:t.UNMUTED}Jr=new WeakMap,function(e){e[e.UNMUTED=0]="UNMUTED",e[e.MUTED=1]="MUTED",e[e.MUTED_FOR_ME=2]="MUTED_FOR_ME",e[e.MUTED_BY_ADMIN=3]="MUTED_BY_ADMIN",e[e.HAND=4]="HAND"}(Zr||(Zr={})),function(e){e[e.HAND=0]="HAND",e[e.MUTED=1]="MUTED",e[e.UNMUTED=2]="UNMUTED"}(el||(el={}));let ol={width:420,height:640};class rl extends wt.b{constructor(e){super("popup-group-call",void 0,{body:!0,withoutOverlay:!0,closable:!0}),this.onFullScreenClick=()=>{Object(Te.e)(this.container)},this.onToggleControls=e=>{this.container.classList.toggle("show-controls",e),this.buttonsContainer.classList.toggle("show-controls",e)},this.toggleDisability=nl.bind(null,"btn-disabled"),this.onVideoClick=()=>{const e=this.toggleDisability([this.btnVideo],!0);this.instance.toggleVideoSharing().finally(()=>{e()})},this.onScreenClick=()=>{const e=this.toggleDisability([this.btnScreen],!0);this.instance.toggleScreenSharing().finally(()=>{e()})},this.onMuteClick=()=>{const e=this.instance.participant;e.pFlags.can_self_unmute?this.instance.toggleMuted():void 0===e.raise_hand_rating&&this.instance.changeRaiseHand(!0)},this.onLeaveClick=()=>{const e=e=>{this.instance.hangUp(e)};this.appChatsManager.hasRights(this.instance.chatId,"manage_call")?new Lt("popup-end-video-chat",{titleLangKey:"VoiceChat.End.Title",descriptionLangKey:"VoiceChat.End.Text",checkboxes:[{text:"VoiceChat.End.Third"}],buttons:[{langKey:"VoiceChat.End.OK",callback:t=>{e(!!t.size)},isDanger:!0}]}).show():e(!1)},this.onFullScreenChange=()=>{this.toggleBigLayout();const e=Object(Te.d)(),{btnFullScreen:t,btnExitFullScreen:s}=this,i=this.container.classList.contains("is-full-screen");this.container.classList.toggle("is-full-screen",e),t&&t.classList.toggle("hide",e),s&&s.classList.toggle("hide",!e),this.btnClose.classList.toggle("hide",e),e!==i&&(M.a.checkAnimations(e),a.a.setThemeColor(e?"#000000":void 0))},this.toggleBigLayout=()=>{var e;const t=Object(Te.d)(),s=null===(e=this.movablePanel)||void 0===e?void 0:e.movable,i=(t||!!(s&&s.width>=680))&&!!this.videosCount,n=this.container.classList.contains("is-big-layout");let a;i&&!n&&(a=Array.from(this.buttonsContainer.children),a.forEach(e=>{e.style.opacity="0"}),this.buttonsContainer.offsetLeft),this.container.classList.toggle("is-big-layout",i),this.btnInvite.classList.toggle("hide",i),this.btnShowColumn.classList.toggle("hide",!i),a&&a.forEach(e=>{e.style.opacity=""})},this.toggleRightColumn=()=>{this.container.classList.toggle("is-right-column-shown")},Object(w.a)(this,e),this.videosCount=0,this.container.classList.add("group-call","night");const t=this.instance=this.appGroupCallsManager.groupCall,{listenerSetter:s}=this;if(!ae.c){const e=this.btnFullScreen=N("fullscreen"),t=this.btnFullScreen2=N("fullscreen group-call-cfs"),i=this.btnExitFullScreen=N("smallscreen");Object(l.b)(e,this.onFullScreenClick,{listenerSetter:s}),Object(l.b)(t,this.onFullScreenClick,{listenerSetter:s}),Object(l.b)(i,()=>{Object(Te.b)()},{listenerSetter:s}),Object(Te.a)(this.container,this.onFullScreenChange,s)}this.btnInvite=N("adduser");const i=this.btnShowColumn=N("rightpanel group-call-only-big");Object(l.b)(i,this.toggleRightColumn,{listenerSetter:s});const n=document.createElement("div");n.classList.add("group-call-header-info"),this.title.classList.add("group-call-header-title");const o=document.createElement("div");o.classList.add("group-call-header-subtitle"),n.append(this.title,o),this.header.classList.add("group-call-header"),this.header.append(...[this.btnExitFullScreen,n,this.btnFullScreen,i].filter(Boolean));const r=this.header.cloneNode(!1),c=n.cloneNode(!1),d=this.title.cloneNode(!1);c.append(d);const h=N("rightpanel");r.append(...[h,c,this.btnFullScreen2].filter(Boolean)),Object(l.b)(h,this.toggleRightColumn,{listenerSetter:s}),this.body.prepend(r);const p=new P.b(void 0);p.container.classList.add("group-call-big-video-container"),this.container.append(p.container),this.groupCallTitle=new $r(this.title),this.groupCallDescription=new qr(o),this.groupCallBodyHeaderDescription=new qr(d),this.constructButtons(),this.groupCallParticipantsVideo=new Kr(Object.assign({appendTo:p.container,instance:t,listenerSetter:s,displayPinned:!0,onLengthChange:e=>{this.videosCount=e,this.toggleBigLayout()}},e)),this.groupCallParticipants=new Wr(Object.assign({appendTo:this.body,instance:t,listenerSetter:s},e)),this.movablePanel=new il({listenerSetter:s,movableOptions:{minWidth:400,minHeight:480,element:this.element,verifyTouchTarget:e=>{const t=e.target;return!(Object(Pe.a)(t,"chatlist")||Object(Pe.a)(t,"group-call-button")||Object(Pe.a)(t,"btn-icon")||Object(Pe.a)(t,"group-call-participants-video-container")||Object(Te.d)())}},onResize:()=>this.toggleBigLayout(),previousState:ol}),s.add(t)("state",()=>{this.updateInstance()}),s.add(a.a)("group_call_update",e=>{var t;(null===(t=this.instance)||void 0===t?void 0:t.id)===e.id&&this.updateInstance()}),s.add(t)("pinned",()=>{this.setHasPinned()}),s.add(this.groupCallParticipantsVideo)("toggleControls",this.onToggleControls),this.addEventListener("close",()=>{const{movablePanel:e}=this;ol=e.state,this.groupCallParticipantsVideo.destroy(),this.groupCallParticipants.destroy(),this.groupCallMicrophoneIcon.destroy(),e.destroy()}),this.toggleRightColumn(),this.onFullScreenChange(),this.updateInstance()}constructButtons(){const e=this.buttonsContainer=document.createElement("div");e.classList.add("group-call-buttons");const t=Yr.bind(null,"group-call",this.listenerSetter),s=this.btnVideo=t({callback:this.onVideoClick,icon:"videocamera_filled"}),i=this.btnScreen=t({callback:this.onScreenClick,icon:"sharescreen_filled"});i.classList.toggle("hide",!Qr);const n=t({noRipple:!0,callback:Object(Ts.a)(this.onMuteClick,600,!0)});n.classList.add("group-call-microphone-button");const a=this.groupCallMicrophoneIcon=new Br;n.append(a.container);const o=t({icon:"settings_filled"});o.classList.add("btn-disabled"),o.classList.toggle("hide",!Qr);const r=t({isDanger:!0,callback:this.onLeaveClick,icon:"close"});e.append(s,i,n,o,r),this.container.append(e)}getContainer(){return this.container}setHasPinned(){this.container.classList.toggle("has-pinned",!!this.instance.pinnedSource)}updateInstance(){if(this.instance.state===Tr.a.CLOSED)return this.container.classList.contains("is-full-screen")&&Object(Te.b)(),void this.hide();const{participant:e,groupCall:t}=this.instance;if(!e)return;this.setTitle(),this.setDescription(),this.setHasPinned();const s=function(e,t){const s=el;return t.pFlags.can_self_unmute?t.pFlags.muted?s.MUTED:s.UNMUTED:s.HAND}(0,e);this.container.dataset.micState=s===el.HAND?"hand":s===el.MUTED?"muted":"unmuted",this.groupCallMicrophoneIcon.setState(s)}setTitle(){this.groupCallTitle.update(this.instance)}setDescription(){this.groupCallDescription.update(this.instance),this.groupCallBodyHeaderDescription.update(this.instance)}}var ll,cl=s(182);!function(e){e[e.CONNECTED=0]="CONNECTED",e[e.CONNECTING=1]="CONNECTING",e[e.EXCHANGING_KEYS=2]="EXCHANGING_KEYS",e[e.PENDING=3]="PENDING",e[e.REQUESTING=4]="REQUESTING",e[e.CLOSING=5]="CLOSING",e[e.CLOSED=6]="CLOSED"}(ll||(ll={}));var dl=ll;class hl{constructor(e){this.appendTo=e,this.container=document.createElement("div"),this.container.classList.add("call-description")}detach(){void 0!==this.interval&&(clearInterval(this.interval),this.interval=void 0),this.container.remove(),this.state=void 0}update(e){const{connectionState:t}=e;if(this.state===t)return;let s;if(this.state=t,t===dl.CONNECTED){s=document.createElement("span"),s.classList.add("call-description-duration");const t=()=>{s.innerText=xe(e.duration,!0)};this.interval=window.setInterval(t,1e3),t()}else{let i;switch(t){case dl.PENDING:i=e.isOutgoing?"Call.StatusRinging":"Call.StatusCalling";break;case dl.REQUESTING:i="Call.StatusRequesting";break;case dl.EXCHANGING_KEYS:i="VoipExchangingKeys";break;case dl.CLOSED:i=void 0!==e.connectedAt?"Call.StatusEnded":"Call.StatusFailed";break;default:i="Call.StatusConnecting"}s=Object(T.d)(i),void 0!==this.interval&&(clearInterval(this.interval),this.interval=void 0)}this.container.classList.toggle("has-duration",t===dl.CONNECTED),Object(k.a)(this.container,s),this.container.parentElement||this.appendTo.append(this.container)}}class pl extends Rr{constructor(e,t){super({width:36,height:36,getPart:e=>this.getItem().getPart(e?"unmute":"mute"),getColor:e?e=>e?[255,255,255]:[158,158,158]:void 0,skipAnimation:t}),this.add({name:"voice_mini",parts:[{startFrame:0,endFrame:35,name:"hand-to-muted"},{startFrame:36,endFrame:68,name:"unmute"},{startFrame:69,endFrame:98,name:"mute"},{startFrame:99,endFrame:135,name:"muted-to-hand"},{startFrame:136,endFrame:171,name:"unmuted-to-hand"}]})}}const ul={width:400,height:580};let gl=Object.assign({},ul);class ml extends wt.b{constructor(e){super("popup-call",void 0,{withoutOverlay:!0,closable:!0}),this.onFullScreenClick=()=>{Object(Te.e)(this.container)},this.onFullScreenChange=()=>{const e=Object(Te.d)(),{btnFullScreen:t,btnExitFullScreen:s}=this,i=this.container.classList.contains("is-full-screen");this.container.classList.toggle("is-full-screen",e),t&&t.classList.toggle("hide",e),s&&s.classList.toggle("hide",!e),this.btnClose.classList.toggle("hide",e),e!==i&&(M.a.checkAnimations(e),a.a.setThemeColor(e?"#000000":void 0),this.resizeVideoContainers())},Object(w.a)(this,e),this.videoContainers={};const{container:t,listenerSetter:s,instance:i}=this;t.classList.add("call","night");const n=document.createElement("div");n.classList.add("call-avatar");const o=this.peerId=this.instance.interlocutorUserId.toPeerId(),r=new bc;r.classList.add("avatar-full"),r.updateWithOptions({isBig:!0,peerId:o}),n.append(r);const c=new Tt.a({peerId:o}).element;c.classList.add("call-title");const d=document.createElement("div");d.classList.add("call-subtitle");this.description=new hl(d);const h=this.emojisSubtitle=document.createElement("div");h.classList.add("call-emojis"),t.append(n,c,d),ae.e?this.header.append(h):(this.btnFullScreen=N("fullscreen"),this.btnExitFullScreen=N("smallscreen hide"),Object(l.b)(this.btnFullScreen,this.onFullScreenClick,{listenerSetter:s}),Object(l.b)(this.btnExitFullScreen,()=>Object(Te.b)(),{listenerSetter:s}),Object(Te.a)(this.container,this.onFullScreenChange,s),this.header.prepend(this.btnExitFullScreen),this.header.append(this.btnFullScreen),t.append(h)),this.partyStates=document.createElement("div"),this.partyStates.classList.add("call-party-states"),this.partyMutedState=document.createElement("div"),this.partyMutedState.classList.add("call-party-state");const p=Object(T.d)("VoipUserMicrophoneIsOff",[new Tt.a({peerId:o,onlyFirstName:!0,limitSymbols:18}).element]);p.classList.add("call-party-state-text");const u=new pl(!1,!0);u.setState(!1,!1),this.partyMutedState.append(u.container,p),this.partyStates.append(this.partyMutedState),this.container.append(this.partyStates),this.makeButton=Yr.bind(null,"call",this.listenerSetter),this.constructFirstButtons(),this.constructSecondButtons(),s.add(i)("state",()=>{this.updateInstance()}),s.add(i)("mediaState",()=>{this.updateInstance()}),this.movablePanel=new il({listenerSetter:s,movableOptions:{minWidth:400,minHeight:580,element:this.element,verifyTouchTarget:e=>{const t=e.target;return!(Object(Pe.a)(t,"call-button")||Object(Pe.a)(t,"btn-icon")||Object(Te.d)())}},previousState:this.instance.wasTryingToJoin||this.instance.isOutgoing?gl:Object.assign({},ul)});const g=this.movablePanel.movable;g&&this.listenerSetter.add(g)("resize",()=>{this.resizeVideoContainers()});const m=this.controlsHover=new ke;m.setup({element:this.container,listenerSetter:this.listenerSetter,showOnLeaveToClassName:"call-buttons"}),m.showControls(!1),this.addEventListener("close",()=>{const{movablePanel:e}=this;gl=e.state,this.microphoneIcon.destroy(),e.destroy()}),this.updateInstance()}getCallInstance(){return this.instance}constructFirstButtons(){const e=this.firstButtonsRow=document.createElement("div");e.classList.add("call-buttons","is-first");const t=nl.bind(null,"btn-disabled"),s=this.btnVideo=this.makeButton({text:"Call.Camera",icon:"videocamera_filled",callback:()=>{const e=t([s,i],!0);this.instance.toggleVideoSharing().finally(e)}}),i=this.btnScreen=this.makeButton({text:"Call.Screen",icon:"sharescreen_filled",callback:()=>{const e=t([s,i],!0);this.instance.toggleScreenSharing().finally(e)}});Qr||(i.classList.add("hide"),this.container.classList.add("no-screen")),this.muteI18nElement=new T.c.IntlElement({key:"Call.Mute"});const n=this.btnMute=this.makeButton({text:this.muteI18nElement.element,callback:()=>{this.instance.toggleMuted()}}),a=this.microphoneIcon=new pl(!0,!0);n.firstElementChild.append(a.container),e.append(s,i,n),this.container.append(e)}constructSecondButtons(){const e=this.secondButtonsRow=document.createElement("div");e.classList.add("call-buttons","is-second"),this.declineI18nElement=new T.c.IntlElement({key:"Call.Decline"});const t=this.btnDecline=this.makeButton({text:this.declineI18nElement.element,icon:"endcall_filled",callback:()=>{this.instance.hangUp("phoneCallDiscardReasonHangup")},isDanger:!0}),s=this.btnAccept=this.makeButton({text:"Call.Accept",icon:"phone_filled",callback:()=>{this.instance.acceptCall()},isConfirm:!0});e.append(t,s),this.container.append(e)}createVideoContainer(e){const t=document.createElement("div");t.classList.add("call-video-container"),e.classList.add("call-video"),e.paused&&e.play(),Object(l.b)(t,()=>{if(!t.classList.contains("small"))return;const e=Object.values(this.videoContainers).find(e=>!e.classList.contains("small"));e.classList.add("small"),e.style.cssText=t.style.cssText,t.classList.remove("small"),t.style.cssText="",this.resizeVideoContainers()});const s=zr(e);return s.classList.add("call-video-blur"),t.append(s,e),t}updateInstance(){const{instance:e}=this,{connectionState:t}=e;if(t===dl.CLOSED)return this.container.classList.contains("is-full-screen")&&Object(Te.b)(),this.btnVideo.classList.add("disabled"),void this.hide();const s=!e.isOutgoing&&t===dl.PENDING;this.declineI18nElement.compareAndUpdate({key:t===dl.PENDING?"Call.Decline":"Call.End"}),this.btnAccept.classList.toggle("disable",!s),this.btnAccept.classList.toggle("hide-me",!s),this.container.classList.toggle("two-button-rows",s);const i=e.isMuted,n=()=>{this.btnMute.firstElementChild.classList.toggle("active",i)},a=this.microphoneIcon.getItem().player;this.microphoneIcon.setState(!i,!i,n),a||n(),this.muteI18nElement.compareAndUpdate({key:i?"VoipUnmute":"Call.Mute"});const o=e.isSharingVideo;this.btnVideo.firstElementChild.classList.toggle("active",o);const r=e.isSharingScreen;this.btnScreen.firstElementChild.classList.toggle("active",r);const l=e.getMediaState("output");Object(ps.a)(this.partyMutedState,"is-visible",!!(null==l?void 0:l.muted),300);const c=this.videoContainers,d=Object.assign({},c);["input","output"].forEach(t=>{const s=e.getMediaState(t),i=e.getVideoElement(t),n=!!(i&&i.videoWidth&&i.videoHeight);!i||n||i.dataset.hasPromise||(i.dataset.hasPromise="1",Object(pe.e)(i).then(()=>{delete i.dataset.hasPromise,this.updateInstance()}));const a=!!i&&n&&!(!s||"active"!==s.videoState&&"active"!==s.screencastState);let o=c[t];a&&i&&!o&&(o=c[t]=this.createVideoContainer(i),this.container.append(o)),!a&&o&&(o.remove(),delete c[t])});{const e=c.input,t=c.output;Object.keys(d).length!==Object.keys(c).length&&e&&e.classList.toggle("small",!!t),t&&!e&&t.classList.remove("small")}this.resizeVideoContainers(),this.container.classList.toggle("no-video",!Object.keys(c).length),!this.emojisSubtitle.textContent&&t{this.emojisSubtitle.innerHTML=X.b.wrapEmojiText(e.join(""))}),this.setDescription()}resizeVideoContainers(){Object.values(this.videoContainers).forEach(e=>{if(e.classList.contains("small")){const t=e.querySelector("video"),s=this.movablePanel.state,i=240,n=240,a=t.videoHeight>t.videoWidth,o=a?n:i,r=1/3*(Object(Te.d)()?65535:a?s.height:s.width),l=a?t.videoWidth/t.videoHeight:1,c=a?1:t.videoHeight/t.videoWidth;e.style.width=r*l+"px",e.style.height=r*c+"px",e.style.maxWidth=o*l+"px",e.style.maxHeight=o*c+"px"}else e.style.cssText=""})}setDescription(){this.description.update(this.instance)}}var bl=s(183),vl=s(162);function fl(e){const t=Object(vl.a)(e,e.media[0]),s={"@type":"InitialSetup",fingerprints:[t.fingerprint],ufrag:t.ufrag,pwd:t.pwd,audio:void 0,video:void 0,screencast:void 0},i=e=>""+e;for(const t of e.media){const n=t.mediaType;if("application"===n||!t.isSending)continue;const a=s["video"===n&&s.video?"screencast":n]={},o=Object(vl.a)(e,t);a.ssrc=i(o.source),o.sourceGroups&&(a.ssrcGroups=o.sourceGroups.map(e=>({semantics:e.semantics,ssrcs:e.sources.map(i)})));const r=a.rtpExtensions=[];t.attributes.get("extmap").forEach(e=>{r.push({id:+e.key,uri:e.value})});const l=new Map,c=e=>{let t=l.get(e);return t||l.set(e,t={id:e}),t};t.attributes.get("rtpmap").forEach(e=>{const t=+e.key,s=c(t),i=e.value.split("/"),[n,a,o]=i;s.name=n,s.clockrate=+a,s.channels=o?+o:0}),t.attributes.get("rtcp-fb").forEach(e=>{const t=+e.key;c(t).feedbackTypes=e.lines.map(e=>{const t=e.split(" "),[s,i]=t;return{type:s,subtype:i||""}})}),t.attributes.get("fmtp").forEach(e=>{const t=+e.key,s=c(t).parameters={},i=e.value.split(";");for(const e of i){const[t,i]=e.split("=");s[t]=i}}),a.payloadTypes=Array.from(l.values())}return s}var yl=s(159),wl=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class Sl extends bl.a{constructor(e){super(e)}negotiateInternal(){return wl(this,void 0,void 0,(function*(){const{connection:e,call:t}=this;if(!e.localDescription&&!e.remoteDescription&&!t.isOutgoing)return;let s;if(t.offerReceived){t.offerReceived=!1;const i=s=yield e.createAnswer();this.log("[sdp] local",i.type,i.sdp),yield e.setLocalDescription(i),this.log("[InitialSetup] send 2")}else{const i=s=yield e.createOffer();this.log("[sdp] local",i.sdp),yield e.setLocalDescription(i),t.offerSent=!0,this.log("[InitialSetup] send 0")}const i=fl(Object(yl.b)(s.sdp));t.sendCallSignalingData(i)}))}}var Ll=s(189),Cl=s(157),Ml=s(143),Il=s(133);var El=s(51);var Pl="undefined"!=typeof window&&"crypto"in window?window.crypto.subtle:self.crypto.subtle;function kl(e){return Pl.digest("SHA-256",function(e){return e instanceof Uint8Array?e:"string"==typeof e?(new TextEncoder).encode(e):new Uint8Array(e)}(e)).then(e=>new Uint8Array(e))}var Tl=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class xl{constructor(e,t){this.isOutgoing=e,this.p2pKey=t,this.type="Signaling",this.counter=0,this.seqMap=new Map}concatSHA256(e){return kl(Object(El.a)(...e))}encryptPrepared(e){return Tl(this,void 0,void 0,(function*(){const t={counter:0,bytes:new Uint8Array(16+e.length)},s=(this.isOutgoing?0:8)+("Signaling"===this.type?128:0),i=this.p2pKey,n=yield this.concatSHA256([i.subarray(s+88,s+88+32),e]),a=t.bytes;for(let e=0;e<16;++e)a[e]=n[e+8];const o=yield this.prepareAesKeyIv(i,a,s),r=yield this.aesProcessCtr(e,e.length,o,!0);return t.bytes=new Uint8Array([...t.bytes.subarray(0,16),...r]),t}))}encryptRawPacket(e){const t=++this.counter,s=new ArrayBuffer(4);new DataView(s).setUint32(0,t>>>0,!1);const i=new Uint8Array([...new Uint8Array(s),...e]);return this.encryptPrepared(i)}prepareAesKeyIv(e,t,s){return Tl(this,void 0,void 0,(function*(){const[i,n]=yield Promise.all([this.concatSHA256([t.subarray(0,16),e.subarray(s,s+36)]),this.concatSHA256([e.subarray(40+s,40+s+36),t.subarray(0,16)])]);return{key:new Uint8Array([...i.subarray(0,8),...n.subarray(8,24),...i.subarray(24,32)]),iv:new Uint8Array([...n.subarray(0,4),...i.subarray(8,16),...n.subarray(24,28)])}}))}aesProcessCtr(e,t,s,i=!0){return Tl(this,void 0,void 0,(function*(){const t=yield Pl.importKey("raw",s.key,{name:"AES-CTR"},!1,[i?"encrypt":"decrypt"]),n=yield Pl[i?"encrypt":"decrypt"]({name:"AES-CTR",counter:s.iv,length:8*s.iv.length},t,e);return new Uint8Array(n)}))}constTimeIsDifferent(e,t,s){let i=!0;for(let n=0;n134217728)return;const{isOutgoing:t,type:s}=this,i=(t?8:0)+("Signaling"===s?128:0),n=this.p2pKey,a=e.subarray(0,16),o=e.subarray(16),r=e.length-16,l=yield this.prepareAesKeyIv(n,a,i),c=yield this.aesProcessCtr(o,r,l,!1),d=yield this.concatSHA256([n.subarray(88+i,88+i+32),c]);if(this.constTimeIsDifferent(d.subarray(8),a,16))return;const h=new DataView(c.buffer).getUint32(0);return this.seqMap.has(h)?void 0:(this.seqMap.set(h,h),c.slice(4))}))}}var Al=s(179);class Ol{static generateOffer(e){const{fingerprints:t,ufrag:s,pwd:i,audio:n,video:a}=e;n.type="audio",a.type="video";const o=[n,a],r=new Al.a;r.add("v=0","o=- 1 2 IN IP4 127.0.0.1","s=-","t=0 0"),t&&t.forEach(e=>{const{hash:t,fingerprint:s,setup:i}=e;r.add(`a=fingerprint:${t} ${s}`,"a=setup:"+i)}),s&&i&&r.add("a=ice-ufrag:"+s,"a=ice-pwd:"+i),r.add("a=group:BUNDLE 0 1 2","a=extmap-allow-mixed","a=msid-semantic: WMS *");const l="stream"+o.map(e=>e.ssrc).join("_");for(let e=0;ee.id).join(" "),"c=IN IP4 0.0.0.0","a=rtcp:9 IN IP4 0.0.0.0","a=ice-options:trickle","a=mid:"+e,"a=sendrecv",Rl(c)),i&&r.add(`a=msid:${l} audio${i}`),r.add("a=rtcp-mux",Bl(a),Nl(s,i,n,l));break;case"video":r.add("m=video 61986 UDP/TLS/RTP/SAVPF "+a.map(e=>e.id).join(" "),"c=IN IP4 0.0.0.0","a=rtcp:9 IN IP4 0.0.0.0","a=ice-options:trickle","a=mid:"+e,"a=sendrecv",Rl(c)),i&&r.add(`a=msid:${l} video${i}`),r.add("a=rtcp-mux","a=rtcp-rsize",Bl(a),Nl(s,i,n,l))}}return r.add(Ul(2)),r.finalize()}static generateAnswer(e){const{fingerprints:t,ufrag:s,pwd:i,audio:n,video:a}=e;n.type="audio",a.type="video";const o=[n,a],r=new Al.a;r.add("v=0","o=- 1 2 IN IP4 127.0.0.1","s=-","t=0 0"),t&&t.forEach(e=>{const{hash:t,fingerprint:s,setup:i}=e;r.add(`a=fingerprint:${t} ${s}`,"a=setup:"+i)}),s&&i&&r.add("a=ice-ufrag:"+s,"a=ice-pwd:"+i),r.add("a=group:BUNDLE 0 1 2","a=extmap-allow-mixed","a=msid-semantic: WMS *");const l="stream"+o.map(e=>e.ssrc).join("_");for(let e=0;ee.id).join(" "),"c=IN IP4 0.0.0.0","a=rtcp:9 IN IP4 0.0.0.0","a=ice-options:trickle","a=mid:"+e,"a=sendrecv",Rl(c)),i&&r.add(`a=msid:${l} audio${i}`),r.add("a=rtcp-mux",Bl(a),Nl(s,i,n,l));break;case"video":r.add("m=video 61986 UDP/TLS/RTP/SAVPF "+a.map(e=>e.id).join(" "),"c=IN IP4 0.0.0.0","a=rtcp:9 IN IP4 0.0.0.0","a=ice-options:trickle","a=mid:"+e,"a=sendrecv",Rl(c)),i&&r.add(`a=msid:${l} video${i}`),r.add("a=rtcp-mux","a=rtcp-rsize",Bl(a),Nl(s,i,n,l))}}return r.add(Ul(2)),r.finalize()}}class _l{static generateOffer(e){const{fingerprints:t,ufrag:s,pwd:i,audio:n,video:a}=e;n.type="audio",a.type="video";const o=[n,a];let r="v=0\no=- 1 0 IN IP4 0.0.0.0\ns=-\nt=0 0";t&&t.forEach(e=>{const{hash:t,fingerprint:s,setup:i}=e;r+=`\na=fingerprint:${t} ${s}\na=setup:${i}`}),s&&i&&(r+=`\na=ice-ufrag:${s}\na=ice-pwd:${i}`),r+="\na=group:BUNDLE 0 1 2\na=ice-options:trickle\na=msid-semantic:WMS *";const l="stream"+o.map(e=>e.ssrc).join("_");for(let e=0;ee.id).join(" ")}\nc=IN IP4 0.0.0.0\na=mid:${e}\na=sendrecv`,r+=Rl(c),r+="\na=rtcp-mux",r+=Bl(a),r+=Nl(s,i,n,l);break;case"video":r+=`\nm=video 9 UDP/TLS/RTP/SAVPF ${a.map(e=>e.id).join(" ")}\nc=IN IP4 0.0.0.0\na=mid:${e}\na=sendrecv`,r+=Rl(c),r+="\na=rtcp-mux\na=rtcp-rsize",r+=Bl(a),r+=Nl(s,i,n,l)}}return r+=Ul(2),r+="\n",r}static generateAnswer(e){const{fingerprints:t,ufrag:s,pwd:i,audio:n,video:a}=e;n.type="audio",a.type="video";const o=[n,a];let r="v=0\no=- 1 0 IN IP4 0.0.0.0\ns=-\nt=0 0";t&&t.forEach(e=>{const{hash:t,fingerprint:s,setup:i}=e;r+=`\na=fingerprint:${t} ${s}\na=setup:${i}`}),s&&i&&(r+=`\na=ice-ufrag:${s}\na=ice-pwd:${i}`),r+="\na=group:BUNDLE 0 1 2\na=ice-options:trickle\na=msid-semantic:WMS *";const l="stream"+o.map(e=>e.ssrc).join("_");for(let e=0;ee.id).join(" ")}\nc=IN IP4 0.0.0.0\na=mid:${e}\na=sendrecv`,r+=Rl(h),r+="\na=rtcp-mux",r+=Bl(c),r+=Nl(s,n,a,l);break;case"video":r+=`\nm=video 9 UDP/TLS/RTP/SAVPF ${c.map(e=>e.id).join(" ")}\nc=IN IP4 0.0.0.0\na=mid:${e}\na=sendrecv`,r+=Rl(h),r+="\na=rtcp-mux\na=rtcp-rsize",r+=Bl(c),r+=Nl(s,n,a,l)}}return r+=Ul(2),r+="\n",r}}class Fl{static generateOffer(e){const{fingerprints:t,ufrag:s,pwd:i,audio:n,video:a}=e;n.type="audio",a.type="video";const o=[n,a];if(!o.length)return"v=0\no=- 1 2 IN IP4 127.0.0.1\ns=-\nt=0 0\na=msid-semantic: WMS\n";let r="v=0\no=- 1 2 IN IP4 127.0.0.1\ns=-\nt=0 0";t&&t.forEach(e=>{const{hash:t,fingerprint:s,setup:i}=e;r+=`\na=fingerprint:${t} ${s}\na=setup:${i}`}),s&&i&&(r+=`\na=ice-ufrag:${s}\na=ice-pwd:${i}`),r+="\na=group:BUNDLE 0 1 2\na=extmap-allow-mixed\na=msid-semantic: WMS *";const l="stream"+o.map(e=>e.ssrc).join("_");for(let e=0;ee.id).join(" ")}\nc=IN IP4 0.0.0.0\na=rtcp:9 IN IP4 0.0.0.0\na=ice-options:trickle\na=mid:${e}\na=sendrecv`,r+=Rl(c),i&&(r+=`\na=msid:${l} audio${i}`),r+="\na=rtcp-mux",r+=Bl(a),r+=Nl(s,i,n,l);break;case"video":r+=`\nm=video 9 UDP/TLS/RTP/SAVPF ${a.map(e=>e.id).join(" ")}\nc=IN IP4 0.0.0.0\na=rtcp:9 IN IP4 0.0.0.0\na=ice-options:trickle\na=mid:${e}\na=sendrecv`,r+=Rl(c),i&&(r+=`\na=msid:${l} video${i}`),r+="\na=rtcp-mux\na=rtcp-rsize",r+=Bl(a),r+=Nl(s,i,n,l)}}return r+=Ul(2),r+="\n",r}static generateAnswer(e){const{fingerprints:t,ufrag:s,pwd:i,audio:n,video:a}=e;n.type="audio",a.type="video";const o=[n,a];if(!o.length)return"v=0\no=- 1 2 IN IP4 127.0.0.1\ns=-\nt=0 0\na=msid-semantic: WMS\n";let r="v=0\no=- 1 2 IN IP4 127.0.0.1\ns=-\nt=0 0";t&&t.forEach(e=>{const{hash:t,fingerprint:s,setup:i}=e;r+=`\na=fingerprint:${t} ${s}\na=setup:${i}`}),s&&i&&(r+=`\na=ice-ufrag:${s}\na=ice-pwd:${i}`),r+="\na=group:BUNDLE 0 1 2\na=extmap-allow-mixed\na=msid-semantic: WMS *";const l="stream"+o.map(e=>e.ssrc).join("_");for(let e=0;ee.id).join(" ")}\nc=IN IP4 0.0.0.0\na=rtcp:9 IN IP4 0.0.0.0\na=ice-options:trickle\na=mid:${e}\na=sendrecv`,r+=Rl(c),i&&(r+=`\na=msid:${l} audio${i}`),r+="\na=rtcp-mux",r+=Bl(a),r+=Nl(s,i,n,l);break;case"video":r+=`\nm=video 9 UDP/TLS/RTP/SAVPF ${a.map(e=>e.id).join(" ")}\nc=IN IP4 0.0.0.0\na=rtcp:9 IN IP4 0.0.0.0\na=ice-options:trickle\na=mid:${e}\na=sendrecv`,r+=Rl(c),i&&(r+=`\na=msid:${l} video${i}`),r+="\na=rtcp-mux\na=rtcp-rsize",r+=Bl(a),r+=Nl(s,i,n,l)}}return r+=Ul(2),r+="\n",r}}function jl(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}function Dl(){return navigator.userAgent.toLowerCase().indexOf("safari")>-1&&-1===navigator.userAgent.toLowerCase().indexOf("chrome")}function Rl(e){let t=[];for(let s=0;s{const{type:s,subtype:i}=e;t.push(`a=rtcp-fb:${n} ${[s,i].join(" ")}`)}),c){const e=[];Object.getOwnPropertyNames(c).forEach(t=>{e.push(`${t}=${c[t]}`)}),t.push(`a=fmtp:${n} ${e.join(";")}`)}}return t.join("\n")}function Nl(e,t,s,i){let n=[];return s&&s.length>0?s.forEach(t=>{t&&t.ssrcs.length>0&&(n.push(`a=ssrc-group:${t.semantics} ${t.ssrcs.join(" ")}`),t.ssrcs.forEach(t=>{n.push(`a=ssrc:${t} cname:stream${t}`,`a=ssrc:${t} msid:${i} ${e}${t}`,`a=ssrc:${t} mslabel:${e}${t}`,`a=ssrc:${t} label:${e}${t}`)}))}):t&&n.push(`a=ssrc:${t} cname:stream${t}`,`a=ssrc:${t} msid:${i} ${e}${t}`,`a=ssrc:${t} mslabel:${e}${t}`,`a=ssrc:${t} label:${e}${t}`),n.join("\n")}function Ul(e){return"m=application 9 UDP/DTLS/SCTP webrtc-datachannel\nc=IN IP4 0.0.0.0\na=ice-options:trickle\na=mid:2\na=sctp-port:5000\na=max-message-size:262144"}class Hl{static generateCandidate(e){if(!e)return null;const{sdpString:t,sdpMLineIndex:s,sdpMid:i,foundation:n,component:a,protocol:o,priority:r,address:l,type:c,relAddress:d,generation:h,tcpType:p,networkId:u,networkCost:g,username:m}=e;if(t)return{candidate:t,sdpMLineIndex:s,sdpMid:i};throw"no sdpString"}static generateOffer(e){return jl()?_l.generateOffer(e):Dl()?Fl.generateOffer(e):Ol.generateOffer(e)}static generateAnswer(e){return jl()?_l.generateAnswer(e):Dl()?Fl.generateAnswer(e):Ol.generateAnswer(e)}}var zl=s(144),Vl=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class Kl extends Ll.a{constructor(e){super(),this.log=Object(Y.b)("CALL"),this.protocol||(this.protocol={_:"phoneCallProtocol",pFlags:{udp_p2p:!0,udp_reflector:!0},min_layer:92,max_layer:92,library_versions:["4.0.0"]}),Object(w.a)(this,e),this.createdAt=Date.now(),this.offerReceived=!1,this.offerSent=!1,this.decryptQueue=[],this.candidates=[],this.addEventListener("state",e=>{this.log("state",dl[e]),e===dl.CLOSED&&this.cleanup()});const t=this.streamManager=new zl.a(Cl.b);t.direction="sendrecv",t.types.push("screencast"),this.isOutgoing||(t.locked=!0,t.canCreateConferenceEntry=!1);let s={"@type":"MediaState",type:"input",lowBattery:!1,muted:!0,screencastState:"inactive",videoRotation:0,videoState:"inactive"};const i=this;s=new Proxy(s,{set:function(e,t,n){return e[t]=n,i.setMediaState(s),i.sendMediaState(),!0}}),this.mediaStates={input:s},this.sendMediaState=Object(vt.a)(this._sendMediaState.bind(this),0,!1,!0)}get connectionState(){const{_connectionState:e,connectionInstance:t}=this;if(void 0!==e)return e;if(t){const{iceConnectionState:e}=t.connection;return"closed"===e?dl.CLOSED:"connected"===e||ae.g&&"completed"===e?dl.CONNECTED:dl.CONNECTING}return dl.CONNECTING}get sortIndex(){const e=this.connectionState;let t=1e13*(dl.CLOSED-e+1);return t+=2147483647e3-(e===dl.PENDING&&this.isOutgoing?0:this.createdAt),t}getVideoElement(e){if("input"===e)return this.elements.get("main");{const e=this.getMediaState("output");if(!e)return;const t="active"===e.videoState?"video":"active"===e.screencastState?"screencast":void 0;if(!t)return;const s=this.description.findEntry(e=>e.type===t);if(!s)return;return this.elements.get(""+s.recvEntry.source)}}startScreenSharingInternal(){return Vl(this,void 0,void 0,(function*(){try{this.wasStartingScreen=!0,this.wasStartingVideo=!1,this.streamManager.types=["audio","screencast"],yield this.requestScreen()}catch(e){this.log.error("startScreenSharing error",e)}}))}toggleScreenSharing(){return Vl(this,void 0,void 0,(function*(){return this.isSharingVideo&&(yield this.stopVideoSharing()),this.isSharingScreen?this.stopVideoSharing():this.startScreenSharingInternal()}))}startVideoSharingInternal(){return Vl(this,void 0,void 0,(function*(){try{this.wasStartingScreen=!1,this.wasStartingVideo=!0,this.streamManager.types=["audio","video"],yield this.requestInputSource(!1,!0,!1)}catch(e){this.log.error("startVideoSharing error",e)}}))}stopVideoSharing(){return Vl(this,void 0,void 0,(function*(){const e=this.getMediaState("input");e.videoState=e.screencastState="inactive";const{streamManager:t,description:s}=this,i=t.inputStream.getVideoTracks()[0];i&&(Object(Ml.a)(i),t.appendToConference(s))}))}toggleVideoSharing(){return Vl(this,void 0,void 0,(function*(){return this.isSharingScreen&&(yield this.stopVideoSharing()),this.isSharingVideo?this.stopVideoSharing():this.startVideoSharingInternal()}))}getMediaState(e){return this.mediaStates[e]}setMediaState(e){this.mediaStates[e.type]=e,this.dispatchEvent("mediaState",e)}isSharingVideoType(e){try{return super.isSharingVideo&&!!(this.wasStartingScreen&&"screencast"===e||this.wasStartingVideo&&"video"===e)}catch(e){return!1}}get isSharingVideo(){return this.isSharingVideoType("video")}get isSharingScreen(){return this.isSharingVideoType("screencast")}get isMuted(){const e=this.streamManager.inputStream.getAudioTracks()[0];return!(null==e?void 0:e.enabled)}get isClosing(){const{connectionState:e}=this;return e===dl.CLOSING||e===dl.CLOSED}get description(){var e;return null===(e=this.connectionInstance)||void 0===e?void 0:e.description}setHangUpTimeout(e,t){this.clearHangUpTimeout(),this.hangUpTimeout=hn.a.setTimeout(()=>{this.hangUpTimeout=void 0,this.hangUp(t)},e)}clearHangUpTimeout(){void 0!==this.hangUpTimeout&&(clearTimeout(this.hangUpTimeout),this.hangUpTimeout=void 0)}setPhoneCall(e){this.call=e;const{id:t}=e;if(this.id!==t){const e=this.id;this.id=t,this.dispatchEvent("id",t,e)}}acceptCall(){var e;return Vl(this,void 0,void 0,(function*(){const t=null===(e=(yield Promise.all(this.dispatchResultableEvent("acceptCallOverride")))[0])||void 0===e||e;if(this.isClosing||!t)return;this.overrideConnectionState(dl.EXCHANGING_KEYS);const s=this.call;this.requestInputSource(!0,!!s.pFlags.video,!1);const i=s.g_a_hash;this.appCallsManager.generateDh().then(e=>(this.dh={g_a_hash:i,b:e.a,g_b:e.g_a,g_b_hash:e.g_a_hash,p:e.p},this.apiManager.invokeApi("phone.acceptCall",{peer:this.appCallsManager.getCallInput(this.id),protocol:this.protocol,g_b:this.dh.g_b}))).then(e=>{this.appCallsManager.savePhonePhoneCall(e)}).catch(e=>{this.log.error("accept call error",e),this.hangUp("phoneCallDiscardReasonHangup")})}))}joinCall(){this.log("joinCall"),this.getEmojisFingerprint(),this.overrideConnectionState();const{isOutgoing:e,encryptionKey:t,streamManager:s}=this,i=function(e){const t=[];return e.connections.forEach(e=>{switch(e._){case"phoneConnectionWebrtc":{const{ip:s,ipv6:i,port:n,username:a,password:o}=e,r=[];e.pFlags.turn?(s&&r.push(`turn:${s}:${n}`),i&&r.push(`turn:[${i}]:${n}`)):e.pFlags.stun&&(s&&r.push(`stun:${s}:${n}`),i&&r.push(`stun:[${i}]:${n}`)),r.length>0&&t.push({urls:r,username:a,credential:o});break}}}),{iceServers:t,iceTransportPolicy:e.pFlags.p2p_allowed?"all":"relay"}}(this.call);if(this.log("joinCall configuration",i),!i)return;const n=this.connectionInstance=new Sl({call:this,streamManager:s,log:this.log.bindPrefix("connection")}),a=n.createPeerConnection(i);a.addEventListener("iceconnectionstatechange",()=>{const e=this.connectionState;void 0===this.connectedAt&&e===dl.CONNECTED&&(this.connectedAt=Date.now()),this.dispatchEvent("state",e)}),a.addEventListener("negotiationneeded",()=>{n.negotiate()}),a.addEventListener("icecandidate",e=>{const{candidate:t}=e;a.log("onicecandidate",t),(null==t?void 0:t.candidate)&&this.sendIceCandidate(t)}),a.addEventListener("track",e=>{const{track:t}=e;a.log("ontrack",t),this.onTrack(e)});n.createDescription();this.encryptor=new xl(e,t),this.decryptor=new xl(!e,t),this.log("currentCall",this),e&&n.appendStreamToConference(),this.createDataChannel(),this.processDecryptQueue()}createDataChannelEntry(){const e=this.description.createEntry("application");e.setDirection("sendrecv"),e.sendEntry=e.recvEntry=e}createDataChannel(){if(this.connectionInstance.dataChannel)return;const e=this.connectionInstance.createDataChannel({id:0,negotiated:!0});e.addEventListener("message",e=>{this.applyDataChannelData(JSON.parse(e.data))}),e.addEventListener("open",()=>{this.sendMediaState()})}applyDataChannelData(e){switch(e["@type"]){case"MediaState":e.type="output",this.log("got output media state",e),this.setMediaState(e);break;default:this.log.error("unknown data channel data:",e)}}_sendMediaState(){const{connectionInstance:e}=this;if(!e)return;const t=Object.assign({},this.getMediaState("input"));delete t.type,this.log("sendMediaState",t),e.sendDataChannelData(t)}sendCallSignalingData(e){return Vl(this,void 0,void 0,(function*(){const t=JSON.stringify(e),s=(new TextEncoder).encode(t),{bytes:i}=yield this.encryptor.encryptRawPacket(s);this.log("sendCallSignalingData",this.id,t),yield this.apiManager.invokeApi("phone.sendSignalingData",{peer:this.appCallsManager.getCallInput(this.id),data:i})}))}sendIceCandidate(e){this.log("sendIceCandidate",e);const{candidate:t,sdpMLineIndex:s}=e;if(0!==s)return;const i=function(e){if(!e||!e.startsWith("candidate:"))return;const t=e;e=e.substr("candidate:".length);const[s,i,n,a,o,r,...l]=e.split(" "),c={sdpString:t,foundation:s,component:i,protocol:n,priority:a,address:{ip:o,port:r}};for(let e=0;e(this.getEmojisFingerprintPromise=void 0,this.emojisFingerprint=e.map(e=>Object(se.a)(e))))}unlockStreamManager(){this.connectionInstance.streamManager.locked=!1,this.connectionInstance.appendStreamToConference()}doTheMagic(){return Vl(this,void 0,void 0,(function*(){this.connectionInstance.appendStreamToConference();const e=this.connectionInstance.connection;let t=yield e.createAnswer();this.log("[sdp] local",t.type,t.sdp),yield e.setLocalDescription(t),e.getTransceivers().filter(e=>"recvonly"===e.direction).forEach(e=>{const t=this.connectionInstance.description.getEntryByMid(e.mid);t.transceiver=t.recvEntry.transceiver=e,e.direction="sendrecv"});const s=this.description;let i=s.entries.map(e=>e.mid);const n={type:"offer",sdp:s.generateSdp({bundle:i,entries:s.entries.filter(e=>i.includes(e.mid)),isAnswer:!0})};yield e.setRemoteDescription(n),t=yield e.createAnswer(),yield e.setLocalDescription(t);const a=fl(Object(yl.b)(t.sdp));this.log("[InitialSetup] send 1"),this.sendCallSignalingData(a),this.unlockStreamManager()}))}overrideConnectionState(e){this._connectionState=e,this.dispatchEvent("state",this.connectionState)}get duration(){return void 0!==this.connectedAt?(Date.now()-this.connectedAt)/1e3|0:0}onInputStream(e){super.onInputStream(e);const t=e.getVideoTracks()[0];if(t){const e=this.getMediaState("input");this.wasStartingScreen||this.wasStartingVideo||(this.wasStartingVideo=!0),this.isSharingVideo?e.videoState="active":this.isSharingScreen&&(e.screencastState="active"),t.addEventListener("ended",()=>{this.stopVideoSharing()},{once:!0})}e.getAudioTracks().length&&this.onMutedChange()}onMutedChange(){const e=this.isMuted;this.dispatchEvent("muted",e);this.getMediaState("input").muted=e}toggleMuted(){return this.requestAudioSource(!0).then(()=>{this.setMuted(),this.onMutedChange()})}hangUp(e,t){return Vl(this,void 0,void 0,(function*(){if(!this.isClosing&&(this.discardReason=e,this.log("hangUp",e),this.overrideConnectionState(dl.CLOSED),this.connectionInstance&&this.connectionInstance.closeConnectionAndStream(!0),e&&!t)){let t=!1;for(const e in this.mediaStates){const s=this.mediaStates[e];t="active"===s.videoState||"active"===s.screencastState||t}yield this.appCallsManager.discardCall(this.id,this.duration,e,t)}}))}performCodec(e){const t=e.payloadTypes.map(e=>Object.assign(Object.assign({},e),{"rtcp-fbs":e.feedbackTypes}));return{"rtp-hdrexts":e.rtpExtensions,"payload-types":t}}setDataToDescription(e){this.description.setData({transport:{pwd:e.pwd,ufrag:e.ufrag,fingerprints:e.fingerprints,"rtcp-mux":!0},audio:this.performCodec(e.audio),video:e.video?this.performCodec(e.video):void 0,screencast:e.screencast?this.performCodec(e.screencast):void 0})}filterNotVP8(e){this.isOutgoing||[e.video,e.screencast].filter(Boolean).forEach(e=>{const t=e.payloadTypes,s=t.findIndex(e=>"VP8"===e.name),i=t[s],n=t.findIndex(e=>{var t;return+(null===(t=e.parameters)||void 0===t?void 0:t.apt)===i.id});e.payloadTypes=[t[s],t[n]]})}applyCallSignalingData(e){return Vl(this,void 0,void 0,(function*(){this.log("applyCallSignalingData",this,e);const{connection:t,description:s}=this.connectionInstance;switch(e["@type"]){case"InitialSetup":{this.log("[sdp] InitialSetup",e),this.filterNotVP8(e),this.setDataToDescription(e);const i=e=>e.map(e=>({_:"groupCallParticipantVideoSourceGroup",semantics:e.semantics,sources:e.ssrcs.map(e=>+e)}));[Object(Il.c)("audio",+e.audio.ssrc),e.video?Object(Il.c)("video",i(e.video.ssrcGroups)):void 0,e.screencast?Object(Il.c)("screencast",i(e.screencast.ssrcGroups)):void 0].filter(Boolean).forEach(e=>{let t=s.getEntryBySource(e.source);if(t)return;const i=s.findFreeSendRecvEntry(e.type,!1);t=new Il.a(i.mid,e.type),t.setDirection("sendrecv"),i.recvEntry=t,s.setEntrySource(t,e.sourceGroups||e.source)}),this.createDataChannelEntry();const n=this.offerSent;this.offerSent=!1;let a=s.entries.map(e=>e.mid);const o={type:n?"answer":"offer",sdp:s.generateSdp({bundle:a,entries:s.entries.filter(e=>a.includes(e.mid)),isAnswer:!n})};this.log("[sdp] remote",o.sdp),yield t.setRemoteDescription(o),yield this.tryToReleaseCandidates(),n||(yield this.doTheMagic());break}case"Candidates":for(const t of e.candidates){const e=Hl.generateCandidate(t);e.sdpMLineIndex=0;const s=new RTCIceCandidate(e);this.candidates.push(s)}yield this.tryToReleaseCandidates();break;default:this.log.error("unrecognized signaling data",e)}}))}tryToReleaseCandidates(){return Vl(this,void 0,void 0,(function*(){const{connectionInstance:e}=this;if(!e)return;const{connection:t}=e;if(t.remoteDescription){const e=this.candidates.map(e=>this.addIceCandidate(t,e));this.candidates.length=0,yield Promise.all(e)}else this.log("[candidates] postpone")}))}addIceCandidate(e,t){return Vl(this,void 0,void 0,(function*(){this.log("[candidate] start",t);try{yield e.addIceCandidate(t),this.log("[candidate] add",t)}catch(e){this.log.error("[candidate] error",t,e)}}))}processDecryptQueue(){return Vl(this,void 0,void 0,(function*(){const{encryptor:e}=this;if(!e)return void this.log.warn("got encrypted signaling data before the encryption key");if(!this.decryptQueue.length)return;const t=this.decryptQueue.slice();this.decryptQueue.length=0;for(const s of t){const t=yield e.decryptRawPacket(s);if(!t)continue;const i=(new TextDecoder).decode(t);try{const e=JSON.parse(i);this.log("[update] updateNewCallSignalingData",e),this.applyCallSignalingData(e)}catch(e){this.log.error("wrong signaling data",i),this.hangUp("phoneCallDiscardReasonDisconnect"),a.a.dispatchEvent("call_incompatible",this.interlocutorUserId)}}}))}onUpdatePhoneCallSignalingData(e){this.decryptQueue.push(e.data),this.processDecryptQueue()}}class Gl{constructor(e,t,s,i,n){this.appGroupCallsManager=e,this.appPeersManager=t,this.appChatsManager=s,this.appAvatarsManager=i,this.appCallsManager=n,this.onState=()=>{this.updateInstance(this.instance)};const o=this.listenerSetter=new R.a;o.add(a.a)("call_instance",({instance:e})=>{this.instance||this.updateInstance(e)}),o.add(a.a)("call_accepting",e=>{this.instance!==e&&this.updateInstance(e)}),o.add(a.a)("group_call_instance",e=>{this.updateInstance(e)}),o.add(a.a)("group_call_update",e=>{const t=this.appGroupCallsManager.groupCall;(null==t?void 0:t.id)===e.id&&this.updateInstance(t)}),o.add(a.a)("group_call_amplitude",({amplitudes:e,type:t})=>{const{weave:s}=this;if(!e.length||!s)return;let i=0;for(let t=0;ti?n:i}s.setAmplitude(i)})}clearCurrentInstance(){this.instance&&(this.center.textContent="",this.currentDescription&&(this.currentDescription.detach(),this.currentDescription=void 0),this.instance=void 0,this.instanceListenerSetter.removeAll())}updateInstance(e){this.construct&&(this.construct(),this.construct=void 0);const t=this.instance!==e;t&&(this.clearCurrentInstance(),this.instance=e,this.instanceListenerSetter=new R.a,this.instanceListenerSetter.add(e)("state",this.onState),e instanceof cl.a?this.currentDescription=this.groupCallDescription:(this.currentDescription=this.callDescription,this.instanceListenerSetter.add(e)("muted",this.onState)),this.container.classList.toggle("is-call",!(e instanceof cl.a)));const s=this.instance.isMuted;let i=e instanceof cl.a?e.state:function(e,t){switch(e){case dl.CLOSING:case dl.CLOSED:return Tr.a.CLOSED;case dl.CONNECTED:return t?Tr.a.MUTED:Tr.a.UNMUTED;default:return Tr.a.CONNECTING}}(e.connectionState,s);const{weave:n}=this;n.componentDidMount();const a=i===Tr.a.CLOSED;(!document.body.classList.contains("is-calling")||t||a)&&(a&&n.setAmplitude(0),Object(ps.a)(document.body,"is-calling",!a,250,a?()=>{n.componentWillUnmount(),this.clearCurrentInstance()}:void 0)),a||(n.setCurrentState(i,!0),this.setTitle(e),this.setDescription(e),this.groupCallMicrophoneIconMini.setState(!s))}setDescription(e){return this.currentDescription.update(e)}setTitle(e){if(e instanceof cl.a)return this.groupCallTitle.update(e);Object(k.a)(this.center,new Tt.a({peerId:e.interlocutorUserId.toPeerId()}).element)}construct(){const{listenerSetter:e}=this,t=this.container=document.createElement("div");t.classList.add("sidebar-header","topbar-call-container");const s=document.createElement("div");s.classList.add("topbar-call-left");const i=this.groupCallMicrophoneIconMini=new pl,n=N();n.append(i.container),s.append(n);const a=Object(Ts.a)(()=>{this.instance.toggleMuted()},600,!0);Object(l.b)(n,e=>{Object(c.a)(e),a()},{listenerSetter:e});const o=this.center=document.createElement("div");o.classList.add("topbar-call-center"),this.groupCallTitle=new $r(o),this.groupCallDescription=new qr(s),this.callDescription=new hl(s);const r=document.createElement("div");r.classList.add("topbar-call-right");const d=N("endcall_filled");r.append(d),Object(l.b)(d,e=>{Object(c.a)(e);const{instance:t}=this;t&&(t instanceof cl.a?t.hangUp():t.hangUp("phoneCallDiscardReasonHangup"))},{listenerSetter:e}),Object(l.b)(t,()=>{if(this.instance instanceof cl.a){if(wt.b.getPopups(rl).length)return;new rl({appGroupCallsManager:this.appGroupCallsManager,appPeersManager:this.appPeersManager,appChatsManager:this.appChatsManager}).show()}else if(this.instance instanceof Kl){if(wt.b.getPopups(ml).find(e=>e.getCallInstance()===this.instance))return;new ml({appCallsManager:this.appCallsManager,appAvatarsManager:this.appAvatarsManager,appPeersManager:this.appPeersManager,instance:this.instance}).show()}},{listenerSetter:e}),t.append(s,o,r);const h=this.weave=new Or,p=h.render("topbar-call-weave");t.prepend(p),document.getElementById("column-center").prepend(t),h.componentDidMount()}}var Wl=s(176),ql=s(116),$l=s(25),Ql=s(120),Yl=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};const Xl=new class{constructor(){this.log=Object(Y.b)("CALLS"),this.tempId=0,this.calls=new Map,this.instances=new Map,this.sortedInstances=[],Qa&&(a.a.addMultipleEventsListeners({updatePhoneCall:e=>Yl(this,void 0,void 0,(function*(){var t;const s=this.saveCall(e.phone_call);let i=this.instances.get(s.id);switch(s._){case"phoneCallDiscarded":i&&i.hangUp(null===(t=s.reason)||void 0===t?void 0:t._,!0);break;case"phoneCallAccepted":i&&i.confirmCall();break;case"phoneCallRequested":i||(i=this.createCallInstance({isOutgoing:!1,interlocutorUserId:s.admin_id}),i.overrideConnectionState(dl.PENDING),i.setPhoneCall(s),i.setHangUpTimeout(45e3,"phoneCallDiscardReasonMissed"));break;case"phoneCall":{if(!i||i.encryptionKey)break;const e=i.dh.g_a=s.g_a_or_b,t=i.dh,n=yield ft.a.invokeCrypto("sha256",e);if(!Object(ql.a)(t.g_a_hash,n)){this.log.error("Incorrect g_a_hash",t.g_a_hash,n);break}const{key:a,key_fingerprint:o}=yield this.computeKey(e,t.b,t.p);if(s.key_fingerprint!==o){this.log.error("Incorrect key fingerprint",s.key_fingerprint,o);break}i.encryptionKey=a,i.joinCall();break}}})),updatePhoneCallSignalingData:e=>{const t=this.instances.get(e.phone_call_id);(null==t?void 0:t.id)===e.phone_call_id&&t.onUpdatePhoneCallSignalingData(e)}}),this.audioAsset=new Wl.a(["call_busy.mp3","call_connect.mp3","call_end.mp3","call_incoming.mp3","call_outgoing.mp3","voip_failed.mp3"]))}get currentCall(){return this.sortedInstances[0]}getCallByUserId(e){for(const[t,s]of this.instances)if(s.interlocutorUserId===e)return s}computeKey(e,t,s){return Yl(this,void 0,void 0,(function*(){return ft.a.invokeCrypto("compute-dh-key",e,t,s)}))}saveCall(e){const t="phoneCallDiscarded"===e._,s=this.calls.get(e.id);return s?(Object(Ql.a)(s,e),t&&this.calls.delete(e.id),e=s):t||this.calls.set(e.id,e),e}getCall(e){return this.calls.get(e)}getCallInput(e){const t=this.getCall(e);return{_:"inputPhoneCall",id:t.id,access_hash:t.access_hash}}createCallInstance(e){const t=new Kl(Object.assign({appCallsManager:this,apiManager:ft.a,apiUpdatesManager:wi.a},e));return t.addEventListener("state",e=>{const s=this.currentCall;e===dl.CLOSED?(this.instances.delete(t.id),Object(V.a)(this.sortedInstances,t)):Object($s.a)(this.sortedInstances,t,"sortIndex"),e===dl.EXCHANGING_KEYS&&(t.wasTryingToJoin=!0);const i=void 0!==t.connectedAt;e===dl.EXCHANGING_KEYS||e===dl.CONNECTING&&i?t.setHangUpTimeout(45e3,"phoneCallDiscardReasonDisconnect"):t.clearHangUpTimeout(),s!==t&&s||(e===dl.CLOSED?t.isOutgoing||t.wasTryingToJoin?t.wasTryingToJoin&&!i?this.audioAsset.playSound("voip_failed.mp3"):this.audioAsset.playSound("phoneCallDiscardReasonBusy"===t.discardReason?"call_busy.mp3":"call_end.mp3"):this.audioAsset.stopSound():e===dl.PENDING?this.audioAsset.playSound(t.isOutgoing?"call_outgoing.mp3":"call_incoming.mp3",!0):e===dl.EXCHANGING_KEYS?this.audioAsset.playSoundIfDifferent("call_connect.mp3"):e===dl.CONNECTING?t.duration&&this.audioAsset.playSound("voip_connecting.mp3",!0):this.audioAsset.stopSound())}),t.addEventListener("id",(e,s)=>{void 0!==s&&this.instances.delete(s);const i=!!this.currentCall;this.instances.set(e,t),void 0===s&&a.a.dispatchEvent("call_instance",{instance:t,hasCurrent:i})}),t}savePhonePhoneCall(e){return E.a.saveApiUsers(e.users),this.saveCall(e.phone_call)}generateDh(){return ft.a.invokeApi("messages.getDhConfig",{version:0,random_length:256}).then(e=>Yl(this,void 0,void 0,(function*(){return ft.a.invokeCrypto("generate-dh",e)})))}startCallInternal(e,t){this.log("p2pStartCallInternal",e,t);const s=n.default.getCachedFullUser(e);if(!s)return;const{video_calls_available:i}=s.pFlags,a=this.createCallInstance({isOutgoing:!0,interlocutorUserId:e});a.requestInputSource(!0,!(!t||!i),!1),a.overrideConnectionState(dl.REQUESTING),a.setPhoneCall({_:"phoneCallWaiting",access_hash:"",admin_id:Ne.c,date:Object(ur.a)(!0),id:--this.tempId,participant_id:e,protocol:a.protocol,pFlags:{video:t||void 0}}),this.generateDh().then(s=>(a.dh=s,ft.a.invokeApi("phone.requestCall",{user_id:E.a.getUserInput(e),protocol:a.protocol,video:t&&i,random_id:Object(ht.a)(32),g_a_hash:a.dh.g_a_hash}))).then(e=>{const t=this.savePhonePhoneCall(e);a.overrideConnectionState(dl.PENDING),a.setPhoneCall(t),a.setHangUpTimeout(45e3,"phoneCallDiscardReasonHangup")})}verifyProtocolCompatibility(e){const t={_:"phoneCallProtocol",pFlags:{udp_p2p:!0,udp_reflector:!0},min_layer:92,max_layer:92,library_versions:["4.0.0"]}.library_versions[0];return!e.library_versions.find(e=>Object($l.a)(t,e)>0)}discardCall(e,t,s,i){return Yl(this,void 0,void 0,(function*(){if(!this.getCall(e))return;const n=yield ft.a.invokeApi("phone.discardCall",{video:i,peer:this.getCallInput(e),duration:t,reason:{_:s},connection_id:"0"});wi.a.processUpdateMessage(n)}))}};le.a&&(le.a.appCallsManager=Xl);var Jl=Xl,Zl=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};const ec="chat",tc=he.a?"touchstart":"mousemove";const sc=new class{constructor(){this.columnEl=document.getElementById("column-center"),this.offline=!1,this.updateStatusInterval=0,this.setPeerPromise=null,this.tabId=-1,this.chats=[],this.onHashChange=()=>{const e=location.hash,t=e.split("?"),s=this.parseUriParams(e,t);if(this.log("hashchange",e,t[0],s),s.tgaddr){j.a.replaceState();const{onclick:e}=X.b.wrapUrl(s.tgaddr);if(e){const t=document.createElement("a");t.href=s.tgaddr,window[e](t)}}else switch(t[0]){case"#/im":{const e=s.p;let t=void 0!==s.post?v.a.generateMessageId(+s.post):void 0;switch(e[0]){case"@":this.openUsername({userName:e,lastMsgId:t});break;default:this.setInnerPeer({peerId:t?e.toPeerId(!0):e.toPeerId(),lastMsgId:t})}}}},this.setSettings=()=>{document.documentElement.style.setProperty("--messages-text-size",a.a.settings.messagesTextSize+"px"),document.body.classList.toggle("animation-level-0",!a.a.settings.animationsEnabled),document.body.classList.toggle("animation-level-1",!1),document.body.classList.toggle("animation-level-2",a.a.settings.animationsEnabled),this.chatsSelectTabDebounced=Object(vt.a)(()=>{const e=this.chat.topbar;e.pinnedMessage&&e.pinnedMessage.setCorrectIndex(0),ft.a.setQueueId(this.chat.bubbles.lazyLoadQueue.queueId)},a.a.settings.animationsEnabled?250:0,!1,!0),oe.a.setLoop(a.a.settings.stickers.loop),M.a.checkAnimations(!1);for(const e of this.chats)e.setAutoDownloadMedia();T.c.setTimeFormat(a.a.settings.timeFormat),this.toggleChatGradientAnimation(this.chat)},this.onDocumentPaste=(e,t)=>{const s=Ao();if(this.canDrag()||s){if(e instanceof DragEvent){const t=e.dataTransfer.types;(t.contains?t.contains("Files"):t.indexOf("Files")>=0)&&Object(c.a)(e)}Object(pe.d)(e).then(e=>{if(e.length){if(s)return void s.addFiles(e);const i=this.chat.input;i.willAttachType=t||(g.has(e[0].type)?"media":"document"),new Oo(this.chat,e,i.willAttachType)}})}},wi.a.attach(),qt.a.start(),this.log=Object(Y.b)("IM",Y.a.Log|Y.a.Warn|Y.a.Debug|Y.a.Error),this.backgroundPromises={},I.b.settings.themes.forEach(e=>{if(e.background.slug){const t="assets/img/"+e.background.slug+".svg";this.backgroundPromises[e.background.slug]=Promise.resolve(t)}}),this.selectTab(0),window.addEventListener("blur",()=>{M.a.checkAnimations(!0),this.offline=a.a.idle.isIDLE=!0,this.updateStatus(),clearInterval(this.updateStatusInterval),a.a.dispatchEvent("idle",a.a.idle.isIDLE),window.addEventListener("focus",()=>{this.offline=a.a.idle.isIDLE=!1,this.updateStatus(),this.updateStatusInterval=window.setInterval(()=>this.updateStatus(),5e4),M.a.checkAnimations(!1),a.a.dispatchEvent("idle",a.a.idle.isIDLE)},{once:!0})}),window.addEventListener(tc,()=>{this.updateStatusInterval=window.setInterval(()=>this.updateStatus(),5e4),this.updateStatus(),this.offline=a.a.idle.isIDLE=!1,a.a.dispatchEvent("idle",a.a.idle.isIDLE)},{once:!0,passive:!0}),this.chatsContainer=document.createElement("div"),this.chatsContainer.classList.add("chats-container","tabs-container"),this.chatsContainer.dataset.animation="navigation",this.emojiAnimationContainer=document.createElement("div"),this.emojiAnimationContainer.classList.add("emoji-animation-container"),this.appendEmojiAnimationContainer(b.b.activeScreen),this.columnEl.append(this.chatsContainer),this.createNewChat(),this.chatsSelectTab(this.chat.container),j.a.onHashChange=this.onHashChange,this.setSettings(),a.a.addEventListener("settings_updated",this.setSettings),Object(Ks.a)(()=>{M.a.setOnlyOnePlayableGroup("lock"),M.a.checkAnimations(!0)},()=>{M.a.setOnlyOnePlayableGroup(""),M.a.checkAnimations(!1)}),this.applyCurrentTheme(),b.b.addEventListener("changeScreen",(e,t)=>{document.body.classList.contains("is-left-column-shown")&&document.body.classList.contains("is-right-column-shown")&&ds.toggleSidebar(!1),this.appendEmojiAnimationContainer(t)}),b.b.addEventListener("resize",()=>{const e=this.chatsContainer.getBoundingClientRect();fr.resizeInstances(e.width,e.height).then(()=>{})}),a.a.addEventListener("history_focus",e=>{let{peerId:t,threadId:s,mid:i,startParam:n}=e;s&&(s=v.a.generateMessageId(s)),i&&(i=v.a.generateMessageId(i)),this.setInnerPeer({peerId:t,lastMsgId:i,type:s?"discussion":void 0,threadId:s,startParam:n})}),a.a.addEventListener("peer_changing",e=>{this.saveChatPosition(e)}),a.a.addEventListener("theme_change",()=>{this.applyCurrentTheme()}),a.a.addEventListener("choosing_sticker",e=>{this.setChoosingStickerTyping(!e)}),a.a.addEventListener("peer_typings",({peerId:e,typings:t})=>{var s;const n=this.chat;if(!n||n.peerId!==e||a.a.overlaysActive||b.b.activeScreen===b.a.mobile&&1!==this.tabId)return;const o=t.find(e=>"sendMessageEmojiInteraction"===e.action._);if("sendMessageEmojiInteraction"===(null===(s=null==o?void 0:o.action)||void 0===s?void 0:s._)){const t=o.action,s=n.bubbles.bubbles[v.a.generateMessageId(o.action.msg_id)];if(s&&s.classList.contains("emoji-big")&&s.classList.contains("sticker")&&Ya(s,n.bubbles.scrollable.container)){const n=s.querySelector(".media-sticker-wrapper:not(.bubble-hover-reaction-sticker):not(.reaction-sticker)");JSON.parse(t.interaction.data).a.forEach(e=>{setTimeout(()=>{Object(l.d)(n)},1e3*e.t)}),i.a.setTyping(e,{_:"sendMessageEmojiInteractionSeen",emoticon:t.emoticon})}}}),a.a.addEventListener("instance_deactivated",()=>{const e=new wt.b("popup-instance-deactivated",void 0,{overlayClosable:!0}),t=document.createElement("div");t.classList.add("instance-deactivated-container"),e.container.replaceWith(t);const s=document.createElement("div");s.classList.add("header"),s.append(Object(T.d)("Deactivated.Title"));const i=document.createElement("div");i.classList.add("subtitle"),i.append(Object(T.d)("Deactivated.Subtitle")),t.append(s,i),document.body.classList.add("deactivated"),e.addEventListener("close",()=>{document.body.classList.add("deactivated-backwards"),Er.a.activateInstance(),setTimeout(()=>{document.body.classList.remove("deactivated","deactivated-backwards")},333)}),e.show()}),a.a.addEventListener("chat_changing",({to:e})=>{this.toggleChatGradientAnimation(e)}),a.a.addEventListener("service_notification",e=>{Pn({button:{langKey:"OK",isCancel:!0},description:X.b.wrapRichText(e.message)})}),ba.a.get("chatPositions").then(e=>{ba.a.setToCache("chatPositions",e||{})}),(Qa||pr)&&(this.topbarCall=new Gl(kr.a,o.a,G.a,d.a,Jl)),Qa&&(a.a.addEventListener("call_instance",({instance:e})=>{const t=new ml({appCallsManager:Jl,appAvatarsManager:d.a,appPeersManager:o.a,instance:e});e.addEventListener("acceptCallOverride",()=>this.discardCurrentCall(e.interlocutorUserId.toPeerId(),void 0,e).then(()=>(a.a.dispatchEvent("call_accepting",e),!0)).catch(()=>!1)),t.addEventListener("close",()=>{const t=Jl.currentCall;t&&t!==e&&!e.wasTryingToJoin&&e.hangUp("phoneCallDiscardReasonBusy")},{once:!0}),t.show()}),a.a.addEventListener("call_incompatible",e=>{bt({langPackKey:"VoipPeerIncompatible",langPackArguments:[new Tt.a({peerId:e.toPeerId()}).element]})})),Er.a.activateInstance();const e=()=>{Pr.default.setAuthorized(!0)};setInterval(e,ne.a),e(),this.addAnchorListener({name:"showMaskedAlert",callback:(e,t)=>{const s=t.href,i=t.cloneNode(!0);i.className="anchor-url",i.innerText=s,i.removeAttribute("onclick"),new Lt("popup-masked-url",{titleLangKey:"OpenUrlTitle",descriptionLangKey:"OpenUrlAlert2",descriptionLangArgs:[i],buttons:[{langKey:"Open",callback:()=>{i.click()}}]}).show()}}),this.addAnchorListener({name:"execBotCommand",callback:({uriParams:e})=>{const{command:t,bot:s}=e;i.a.sendText(this.chat.peerId,"/"+t+(s?"@"+s:""))}}),this.addAnchorListener({name:"searchByHashtag",callback:({uriParams:e})=>{const{hashtag:t}=e;t&&this.chat.initSearch("#"+t+" ")}}),this.addAnchorListener({name:"addstickers",callback:({pathnameParams:e})=>{const t={_:Xa.STICKER_SET,set:e[1]};this.processInternalLink(t)}}),this.addAnchorListener({name:"joinchat",callback:({pathnameParams:e})=>{const t={_:Xa.JOIN_CHAT,invite:e[1]||decodeURIComponent(e[0]).slice(1)};this.processInternalLink(t)}}),pr&&this.addAnchorListener({name:"voicechat",protocol:"tg",callback:({uriParams:e})=>{const t=this.makeLink(Xa.VOICE_CHAT,e);this.processInternalLink(t)}}),this.addAnchorListener({name:"im",callback:({pathnameParams:e,uriParams:t})=>Zl(this,void 0,void 0,(function*(){let s;s=X.b.PHONE_NUMBER_REG_EXP.test(e[0])?{_:Xa.USER_PHONE_NUMBER,phone:e[0].slice(1)}:"c"===e[0]?{_:Xa.PRIVATE_POST,channel:e[1],post:e[2],thread:"thread"in t&&t.thread,comment:t.comment}:{_:Xa.MESSAGE,domain:e[0],post:e[1],comment:t.comment,start:"start"in t?t.start:void 0},this.processInternalLink(s)}))}),this.addAnchorListener({name:"resolve",protocol:"tg",callback:({uriParams:e})=>{let t;e.phone?t=this.makeLink(Xa.USER_PHONE_NUMBER,e):"telegrampassport"===e.domain||(t=this.makeLink(Xa.MESSAGE,e)),this.processInternalLink(t)}}),this.addAnchorListener({name:"privatepost",protocol:"tg",callback:({uriParams:e})=>{const t=this.makeLink(Xa.PRIVATE_POST,e);this.processInternalLink(t)}}),this.addAnchorListener({name:"addstickers",protocol:"tg",callback:({uriParams:e})=>{const t=this.makeLink(Xa.STICKER_SET,e);this.processInternalLink(t)}}),["joinchat","join"].forEach(e=>{this.addAnchorListener({name:e,protocol:"tg",callback:({uriParams:e})=>{const t=this.makeLink(Xa.JOIN_CHAT,e);this.processInternalLink(t)}})}),this.onHashChange(),this.attachKeydownListener()}get myId(){return a.a.myId}get chat(){return this.chats[this.chats.length-1]}toggleChatGradientAnimation(e){this.chats.forEach(t=>{t.gradientRenderer&&t.gradientRenderer.scrollAnimate(a.a.settings.animationsEnabled&&t===e)})}appendEmojiAnimationContainer(e){const t=e===b.a.mobile?this.columnEl:document.body;this.emojiAnimationContainer.parentElement!==t&&t.append(this.emojiAnimationContainer)}attachKeydownListener(){const e=new Set(["PageUp","PageDown","Meta","Control"]);document.body.addEventListener("keydown",t=>{var s;const n=t.key;if(a.a.isOverlayActive||e.has(n))return;const o=t.target,r=this.chat;if("KeyC"!==t.code||!t.ctrlKey&&!t.metaKey||"INPUT"===o.tagName){if(!t.altKey||"ArrowUp"!==n&&"ArrowDown"!==n){if("ArrowUp"===n){if(r.input.editMsgId||!r.input.isInputEmpty())return;{const e=i.a.getHistoryStorage(r.peerId,r.threadId).history.slice;if(e.isEnd(ca.a.Bottom)&&e.length){let s;for(const t of e){const e=r.getMessage(t);if((this.myId===r.peerId?e.fromId===this.myId:e.pFlags.out)&&i.a.canEditMessage(r.getMessage(t),"text")){s=t;break}}s&&(r.input.initMessageEditing(s),Object(c.a)(t))}}}else if("ArrowDown"===n)return}else{const e=i.a.dialogsStorage.getFolderDialogs(a.a.filterId,!0);let t;if(a.a.peerId){const s=e.findIndex(e=>e.peerId===a.a.peerId);if(-1!==s){t=e["ArrowUp"===n?s-1:s+1]}}else"ArrowDown"===n&&(t=e[0]);t&&this.setPeer({peerId:t.peerId})}if((null===(s=null==r?void 0:r.input)||void 0===s?void 0:s.messageInput)&&t.target!==r.input.messageInput&&"INPUT"!==o.tagName&&!o.hasAttribute("contenteditable")&&!he.a&&(!b.b.isMobile||1===this.tabId)&&!r.selection.isSelecting&&!r.input.recording){r.input.messageInput.focus(),Object(ko.a)(r.input.messageInput);const e=new KeyboardEvent(t.type,t);r.input.messageInput.dispatchEvent(e)}}})}makeLink(e,t){return Object.assign({_:e},t)}processInternalLink(e){return Zl(this,void 0,void 0,(function*(){switch(null==e?void 0:e._){case Xa.MESSAGE:{const t=e.post?v.a.generateMessageId(+e.post):void 0,s=e.comment?v.a.generateMessageId(+e.comment):void 0;this.openUsername({userName:e.domain,lastMsgId:t,commentId:s,startParam:e.start});break}case Xa.PRIVATE_POST:{const t=e.channel.toChatId(),s=t.toPeerId(!0);if(G.a.getChat(t).deleted)try{yield G.a.resolveChannel(t)}catch(e){throw bt({langPackKey:"LinkNotFound"}),e}const i=v.a.generateMessageId(+e.post),n=e.thread?v.a.generateMessageId(+e.thread):void 0;n?this.openThread(s,i,n):this.setInnerPeer({peerId:s,lastMsgId:i,threadId:n});break}case Xa.STICKER_SET:new cn({id:e.set}).show();break;case Xa.JOIN_CHAT:ft.a.invokeApi("messages.checkChatInvite",{hash:e.invite}).then(t=>{t.chat&&G.a.saveApiChat(t.chat,!0),"chatInviteAlready"!==t._&&"chatInvitePeek"!==t._?new Za(e.invite,t).show():this.setInnerPeer({peerId:t.chat.id.toPeerId(!0)})},e=>{"INVITE_HASH_EXPIRED"===e.type&&mt(Object(T.d)("InviteExpired"))});break;case Xa.VOICE_CHAT:pr&&this.joinGroupCall(e.chat_id.toPeerId(!0),e.id);break;case Xa.USER_PHONE_NUMBER:E.a.resolvePhone(e.phone).then(e=>{this.setInnerPeer({peerId:e.id.toPeerId(!1)})}).catch(e=>{"PHONE_NOT_OCCUPIED"===e.type&&bt({langPackKey:"Alert.UserDoesntExists"})});break;default:this.log.warn("Not supported internal link:",e)}}))}openUrl(e){const{url:t,onclick:s}=X.b.wrapUrl(e),i=document.createElement("a");i.href=t,window[s](i)}addAnchorListener(e){window[(e.protocol?e.protocol+"_":"")+e.name]=t=>{Object(c.a)(null);const s=t.href;let i,n;e.noPathnameParams||(i=new URL(t.href).pathname.split("/").slice(1)),e.noUriParams||(n=this.parseUriParams(s));const a=e.callback({pathnameParams:i,uriParams:n},t);return void 0===a&&a}}parseUriParams(e,t=e.split("?")){const s={};return t[1]?(t[1].split("&").forEach(e=>{s[e.split("=")[0]]=decodeURIComponent(e.split("=")[1])}),s):s}openUsername(e){const{userName:t,lastMsgId:s,threadId:i,commentId:n,startParam:a}=e;return E.a.resolveUsername(t).then(e=>{const t="user"===e._,o=e.id.toPeerId(!t);return i?this.openThread(o,s,i):n?this.openComment(o,s,n):this.setInnerPeer({peerId:o,lastMsgId:s,startParam:a})},e=>{"USERNAME_NOT_OCCUPIED"===e.type?bt({langPackKey:"NoUsernameFound"}):"USERNAME_INVALID"===e.type&&bt({langPackKey:"Alert.UserDoesntExists"})})}openThread(e,t,s){return i.a.wrapSingleMessage(e,s).then(()=>{const n=i.a.getMessageByPeer(e,s);return"messageEmpty"===n._?t=void 0:i.a.generateThreadServiceStartMessage(n),this.setInnerPeer({peerId:e,lastMsgId:t,threadId:s,type:"discussion"})})}openComment(e,t,s){return i.a.getDiscussionMessage(e,t).then(e=>this.openThread(e.peerId,s,e.mid))}callUser(e,t){return Zl(this,void 0,void 0,(function*(){if(Jl.getCallByUserId(e))return;(yield n.default.getProfile(e)).pFlags.phone_calls_private?Pn({descriptionLangKey:"Call.PrivacyErrorMessage",descriptionLangArgs:[new Tt.a({peerId:e.toPeerId()}).element],button:{langKey:"OK",isCancel:!0}}):(yield this.discardCurrentCall(e.toPeerId()),Jl.startCallInternal(e,"video"===t))}))}discardCurrentCall(e,t,s){return kr.a.groupCall&&kr.a.groupCall!==t?this.discardGroupCallConfirmation(e):Jl.currentCall&&Jl.currentCall!==s?this.discardCallConfirmation(e):Promise.resolve()}discardCallConfirmation(e){return Zl(this,void 0,void 0,(function*(){const t=Jl.currentCall;t&&(yield Pn({titleLangKey:"Call.Confirm.Discard.Call.Header",descriptionLangKey:e.isUser()?"Call.Confirm.Discard.Call.ToCall.Text":"Call.Confirm.Discard.Call.ToVoice.Text",descriptionLangArgs:[new Tt.a({peerId:t.interlocutorUserId.toPeerId(!1)}).element,new Tt.a({peerId:e}).element],button:{langKey:"OK"}}),t.isClosing||(yield t.hangUp("phoneCallDiscardReasonDisconnect")))}))}discardGroupCallConfirmation(e){return Zl(this,void 0,void 0,(function*(){const t=kr.a.groupCall;t&&(yield Pn({titleLangKey:"Call.Confirm.Discard.Voice.Header",descriptionLangKey:e.isUser()?"Call.Confirm.Discard.Voice.ToCall.Text":"Call.Confirm.Discard.Voice.ToVoice.Text",descriptionLangArgs:[new Tt.a({peerId:t.chatId.toPeerId(!0)}).element,new Tt.a({peerId:e}).element],button:{langKey:"OK"}}),kr.a.groupCall===t&&(yield t.hangUp()))}))}joinGroupCall(e,t){return Zl(this,void 0,void 0,(function*(){const s=e.toChatId(),i=G.a.hasRights(s,"manage_call");if(t){if("groupCallDiscarded"===(yield kr.a.getGroupCallFull(t))._){if(!i)return void bt({langPackKey:"VoiceChat.Chat.Ended"});yield Pn({descriptionLangKey:"VoiceChat.Chat.StartNew",button:{langKey:"VoiceChat.Chat.StartNew.OK"}})}}yield this.discardCurrentCall(e),(()=>{Zl(this,void 0,void 0,(function*(){const e=yield n.default.getChatFull(s);let t;if(e.call)t=kr.a.saveGroupCall(e.call,s);else{if(!i)return;t=yield kr.a.createGroupCall(s)}kr.a.joinGroupCall(s,t.id,!0,!1)}))})()}))}setCurrentBackground(e=!1){const t=a.a.getTheme();if(t.background.slug){const s=I.a.STATE_INIT.settings.themes.find(e=>e.name===t.name);return this.getBackground(t.background.slug).then(t=>this.setBackground(t,e),()=>(t.background=Object(ue.a)(s.background),this.setBackground("",!0)))}return this.setBackground("",e)}getBackground(e){return this.backgroundPromises[e]?this.backgroundPromises[e]:this.backgroundPromises[e]=ce.a.cacheStorage.getFile("backgrounds/"+e).then(e=>URL.createObjectURL(e))}setBackground(e,t=!0){this.lastBackgroundUrl=e;const s=this.chats.map(t=>t.setBackground(e));return s[s.length-1].then(()=>{t&&a.a.dispatchEvent("background_change")})}saveChatPosition(e){if(!["chat","discussion"].includes(e.type)||!e.peerId)return;const t=e.bubbles,s=e.peerId+(e.threadId?"_"+e.threadId:""),i=ba.a.getFromCache("chatPositions");if(t.scrollable.getDistanceToEnd()<=16&&t.scrollable.loadedAll.bottom||!t.getRenderedLength())delete i[s],this.log("deleted chat position");else{t.sliceViewport(!0);const e=t.scrollable.scrollTop,n={mids:Object(gi.a)(t.bubbles,"desc"),top:e};i[s]=n,this.log("saved chat position:",n)}ba.a.set({chatPositions:i},!0)}getChatSavedPosition(e){if(!["chat","discussion"].includes(e.type)||!e.peerId)return;const t=e.peerId+(e.threadId?"_"+e.threadId:""),s=ba.a.getFromCache("chatPositions");return s&&s[t]}applyHighlightningColor(){let e;const t=a.a.getTheme();t.background.highlightningColor?(e=t.background.highlightningColor,document.documentElement.style.setProperty("--message-highlightning-color",e)):document.documentElement.style.removeProperty("--message-highlightning-color"),!he.a&&e&&(a.a.themeColor=function(e){return tn(e).slice(0,-2)}(e))}applyCurrentTheme(e,t,s){return this.applyHighlightningColor(),a.a.setTheme(),t&&(this.backgroundPromises[e]=Promise.resolve(t)),this.setCurrentBackground(void 0===s?!!e:s)}chatsSelectTab(e,t){if(this.prevTab!==e){if(!1===t&&this.prevTab&&Ir([e,this.prevTab].filter(Boolean)),this.prevTab){this.prevTab.classList.remove("active"),this.chatsSelectTabDebounced(),a.a.settings.animationsEnabled&&!1!==t&&Object(Ks.b)(Object(pa.a)(400),400);const s=Object(Ws.a)(this.prevTab);Object(Ws.a)(e)>s&&j.a.pushItem({type:"chat",onPop:e=>{this.setPeer({},e),Object(ri.a)()}})}e.classList.add("active"),this.prevTab=e}}init(){document.addEventListener("paste",this.onDocumentPaste,!0),he.a||this.attachDragAndDropListeners(),this.markupTooltip=new Sr(this),this.markupTooltip.handleSelection()}attachDragAndDropListeners(){const e=[],t=[];let s=!1;const i=(r,l)=>Zl(this,void 0,void 0,(function*(){if(l===s)return;const c=r.dataTransfer.types,d=c.contains?c.contains("Files"):c.indexOf("Files")>=0,h=Ao();if(!d||!this.canDrag()&&!h)return void(n=0);const p=h?o:a,u=h?t:e;if(l&&!u.length){const e=yield Object(pe.d)(r,!0),t=d&&!e.length,s=e.filter(e=>g.has(e)).length;this.log("drag files",e),h?(h.appendDrops(p),(e.length||t)&&u.push(new Mr(p,{header:"Preview.Dragging.AddItems",headerArgs:[e.length],onDrop:e=>{i(e,!1),sc.log("drop",e),sc.onDocumentPaste(e,"document")}}))):((e.length||t)&&u.push(new Mr(p,{icon:"dragfiles",header:"Chat.DropTitle",subtitle:"Chat.DropAsFilesDesc",onDrop:e=>{i(e,!1),sc.log("drop",e),sc.onDocumentPaste(e,"document")}})),(s||t)&&u.push(new Mr(p,{icon:"dragmedia",header:"Chat.DropTitle",subtitle:"Chat.DropQuickDesc",onDrop:e=>{i(e,!1),sc.log("drop",e),sc.onDocumentPaste(e,"media")}})),this.chat.container.append(p))}Object(ps.a)(p,"is-visible",l,200,()=>{l||(u.forEach(e=>{e.destroy()}),u.length=0)}),l?u.forEach(e=>{e.setPath()}):n=0,document.body.classList.toggle("is-dragging",l),s=l}));let n=0;document.body.addEventListener("dragenter",e=>{n++}),document.body.addEventListener("dragover",e=>{i(e,!0),Object(c.a)(e)}),document.body.addEventListener("dragleave",e=>{n--,0===n&&i(e,!1)});const a=document.createElement("div");a.classList.add("drops-container");const o=a.cloneNode(!0)}canDrag(){const e=this.chat;return!(!(null==e?void 0:e.peerId)||a.a.isOverlayActive||!e.canSend("send_media"))}selectTab(e,t){!1===t&&Ir([Xn.sidebarEl,this.columnEl,ds.sidebarEl]),document.body.classList.toggle("is-left-column-shown",0===e);const s=this.tabId;this.log("selectTab",e,s);let i=a.a.settings.animationsEnabled?Object(Re.a)():Promise.resolve();if(-1!==s&&s!==e&&a.a.settings.animationsEnabled&&!1!==t){const e=100+(b.b.isMobile?250:200);i=Object(pa.a)(e),Object(Ks.b)(i,e)}return this.tabId=e,Object(ri.a)(),b.b.isMobile&&2===s&&e<2&&document.body.classList.remove("is-right-column-shown"),-1!==s&&e>s&&(e<2||!j.a.findItemByType("im"))&&j.a.pushItem({type:"im",onPop:e=>{this.setPeer({},e)}}),a.a.dispatchEvent("im_tab_change",e),i}updateStatus(){return this.myId?(E.a.setUserStatus(this.myId,this.offline),ft.a.invokeApiSingle("account.updateStatus",{offline:this.offline})):Promise.resolve()}createNewChat(){const e=new yr(this,G.a,C.a,Da,i.a,o.a,r.a,n.default,Cs.a,E.a,wr.a,nt.a,ft.a,Wi.a,at.a,ba.a,qt.a,wa,v.a,kr.a,zt.a);return this.chats.length&&e.setBackground(this.lastBackgroundUrl,!0),this.chats.push(e),e}spliceChats(e,t=!0,s,i){if(e>=this.chats.length)return;const n=this.chat;this.chats.length>1&&t&&a.a.dispatchEvent("peer_changing",this.chat),i||(i=this.chats.splice(e,this.chats.length-e)),a.a.dispatchEvent("chat_changing",{from:n,to:this.chat});for(let e=0;e1&&i.slice(0,-1).forEach(e=>{e.container.remove()}),this.chatsSelectTab(this.chat.container,s),t){a.a.dispatchEvent("peer_changed",this.chat.peerId);const e=ds.getTab(br);e&&e.close();ds.sharedMediaTab.setPeer(this.chat.peerId,this.chat.threadId)&&(ds.sharedMediaTab.loadSidebarMedia(!0),ds.sharedMediaTab.fillProfileElements())}i.forEach(e=>{e.beforeDestroy()}),setTimeout(()=>{i.forEach(e=>{e.destroy()})},350)}setPeer(e={},t){var s;this.init&&(this.init(),this.init=null),null!==(s=e.peerId)&&void 0!==s||(e.peerId=Ne.c);const{peerId:i,lastMsgId:n}=e,a=this.chat,o=this.chats.indexOf(a);if(i){if(o>0&&a.peerId&&a.peerId!==i){const t=this.chats.splice(1,this.chats.length-1);if(this.chat.peerId===i)return void this.spliceChats(0,!0,!0,t);{const s=this.setPeer(e);return this.spliceChats(0,!1,!1,t),s}}}else{if(o>0)return void this.spliceChats(o,void 0,t);if(b.b.activeScreen===b.a.medium)return void this.selectTab(+!this.tabId,t)}if(i===a.peerId&&b.b.activeScreen<=b.a.medium&&document.body.classList.contains("is-left-column-shown"))return this.selectTab(1,t),!1;if(i||b.b.activeScreen!==b.a.mobile){const s=a.setPeer(i,n,e.startParam),o=(null==s?void 0:s.cached)?s.promise:Promise.resolve();i&&Promise.all([o,a.setBackgroundPromise]).then(()=>{setTimeout(()=>{setTimeout(()=>{this.chatsSelectTab(this.chat.container)},0),this.selectTab(1,t)},0)})}return i?void 0:(this.selectTab(0,t),!1)}setInnerPeer(e){var t;const{peerId:s}=e;if(s===Ne.c||!s)return;const i=null!==(t=e.type)&&void 0!==t?t:e.type="chat",n=this.chats.findIndex(e=>e.peerId===s&&e.type===i);if(-1!==n)return this.spliceChats(n+1),this.setPeer(e);const o=this.chat;let r=o;return o.inited&&(r=this.createNewChat()),i&&(r.setType(i),e.threadId&&(r.threadId=e.threadId)),a.a.dispatchEvent("chat_changing",{from:o,to:r}),this.setPeer(e)}openScheduled(e){this.setInnerPeer({peerId:e,type:"scheduled"})}getTypingElement(e){const t=document.createElement("span");let s="peer-typing";switch(t.classList.add(s),t.dataset.action=e._,e._){case"sendMessageTypingAction":s+="-text";for(let e=0;e<3;++e){const e=document.createElement("span");e.className=s+"-dot",t.append(e)}break;case"sendMessageUploadAudioAction":case"sendMessageUploadDocumentAction":case"sendMessageUploadRoundAction":case"sendMessageUploadVideoAction":case"sendMessageUploadPhotoAction":s+="-upload";break;case"sendMessageRecordAudioAction":case"sendMessageRecordRoundAction":case"sendMessageRecordVideoAction":s+="-record";break;case"sendMessageEmojiInteractionSeen":case"sendMessageChooseStickerAction":s+="-choosing-sticker";for(let e=0;e<2;++e){const e=document.createElement("div");e.className=s+"-eye",t.append(e)}}return t.classList.add(s),t}getPeerTyping(e,t){if(!E.a.isBot(e)){const s=n.default.getPeerTypings(e);if(!s||!s.length)return;const i=s[0],a={private:{sendMessageTypingAction:"Peer.Activity.User.TypingText",sendMessageUploadAudioAction:"Peer.Activity.User.SendingFile",sendMessageUploadDocumentAction:"Peer.Activity.User.SendingFile",sendMessageUploadPhotoAction:"Peer.Activity.User.SendingPhoto",sendMessageUploadVideoAction:"Peer.Activity.User.SendingVideo",sendMessageUploadRoundAction:"Peer.Activity.User.SendingVideo",sendMessageRecordVideoAction:"Peer.Activity.User.RecordingVideo",sendMessageRecordAudioAction:"Peer.Activity.User.RecordingAudio",sendMessageRecordRoundAction:"Peer.Activity.User.RecordingVideo",sendMessageGamePlayAction:"Peer.Activity.User.PlayingGame",sendMessageChooseStickerAction:"Peer.Activity.User.ChoosingSticker",sendMessageEmojiInteractionSeen:"Peer.Activity.User.EnjoyingAnimations"},chat:{sendMessageTypingAction:"Peer.Activity.Chat.TypingText",sendMessageUploadAudioAction:"Peer.Activity.Chat.SendingFile",sendMessageUploadDocumentAction:"Peer.Activity.Chat.SendingFile",sendMessageUploadPhotoAction:"Peer.Activity.Chat.SendingPhoto",sendMessageUploadVideoAction:"Peer.Activity.Chat.SendingVideo",sendMessageUploadRoundAction:"Peer.Activity.Chat.SendingVideo",sendMessageRecordVideoAction:"Peer.Activity.Chat.RecordingVideo",sendMessageRecordAudioAction:"Peer.Activity.Chat.RecordingAudio",sendMessageRecordRoundAction:"Peer.Activity.Chat.RecordingVideo",sendMessageGamePlayAction:"Peer.Activity.Chat.PlayingGame",sendMessageChooseStickerAction:"Peer.Activity.Chat.ChoosingSticker",sendMessageEmojiInteractionSeen:"Peer.Activity.Chat.EnjoyingAnimations"},multi:{sendMessageTypingAction:"Peer.Activity.Chat.Multi.TypingText1",sendMessageUploadAudioAction:"Peer.Activity.Chat.Multi.SendingFile1",sendMessageUploadDocumentAction:"Peer.Activity.Chat.Multi.SendingFile1",sendMessageUploadPhotoAction:"Peer.Activity.Chat.Multi.SendingPhoto1",sendMessageUploadVideoAction:"Peer.Activity.Chat.Multi.SendingVideo1",sendMessageUploadRoundAction:"Peer.Activity.Chat.Multi.SendingVideo1",sendMessageRecordVideoAction:"Peer.Activity.Chat.Multi.RecordingVideo1",sendMessageRecordAudioAction:"Peer.Activity.Chat.Multi.RecordingAudio1",sendMessageRecordRoundAction:"Peer.Activity.Chat.Multi.RecordingVideo1",sendMessageGamePlayAction:"Peer.Activity.Chat.Multi.PlayingGame1",sendMessageChooseStickerAction:"Peer.Activity.Chat.Multi.ChoosingSticker1"}},o=e.isUser()?a.private:s.length>1?a.multi:a.chat;let r=i.action;if(s.length>1){const e={};s.forEach(t=>{const s=t.action._;void 0===e[s]&&(e[s]=0),++e[s]}),Object.keys(e).length>1&&(r={_:"sendMessageTypingAction"})}const l=o[r._];if(!l)return;t||(t=document.createElement("span")).classList.add("online","peer-typing-container"),t.classList.toggle("peer-typing-flex","sendMessageChooseStickerAction"===r._||"sendMessageEmojiInteractionSeen"===r._);let c,d=t.firstElementChild;if(d?d.dataset.action!==r._&&d.replaceWith(this.getTypingElement(r)):(d=this.getTypingElement(r),t.prepend(d)),e.isAnyChat()&&(c=[new Tt.a({peerId:i.userId.toPeerId(!1),onlyFirstName:!0}).element,s.length-1]),"sendMessageEmojiInteractionSeen"===r._){c?c.pop():c=[];const e=Object(De.a)(X.b.wrapEmojiText(r.emoticon));c.push(e)}const h=Object(T.d)(l,c);return h.classList.add("peer-typing-description"),t.childElementCount>1?t.lastElementChild.replaceWith(h):t.append(h),t}}getPeerStatus(e,t){var s;return Zl(this,void 0,void 0,(function*(){let i;if(e){if(e.isAnyChat()){let t=this.getPeerTyping(e);if(t)return t;const s=e.toChatId(),a=yield n.default.getChatFull(s);this.chat.log("chatInfo res:",a);const o=a.participants_count||a.participants&&a.participants.participants&&a.participants.participants.length||1;if(i=n.default.getChatMembersString(s),o<2)return i;const r=yield n.default.getOnlines(s);if(r>1){const e=document.createElement("span");e.append(...Object(T.f)([i,Object(T.d)("OnlineCount",[Object(Ja.a)(r)])],!1)),i=e}return i}{const n=E.a.getUser(e);if(a.a.myId===e&&!t)return;if(n){if(i=E.a.getUserStatusString(n.id),!E.a.isBot(e)){let t=this.getPeerTyping(e);if(t||"userStatusOnline"!==(null===(s=n.status)||void 0===s?void 0:s._)||(t=document.createElement("span"),t.classList.add("online"),t.append(i)),t)return t}return i}}}}))}setPeerStatus(e,t,s,i,n,a){s&&(t.innerHTML=i?"":"");const o=t.querySelector(".peer-typing-container");o&&this.getPeerTyping(e,o)||this.getPeerStatus(e,a).then(e=>{n()&&Object(k.a)(t,e||(i?"":""))})}setChoosingStickerTyping(e){i.a.setTyping(this.chat.peerId,{_:e?"sendMessageCancelAction":"sendMessageChooseStickerAction"})}};le.a&&(le.a.appImManager=sc);var ic=sc;var nc=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class ac extends D.a{constructor(e,t){super(!1),this.listLoader=e,this.author={},this.content={},this.buttons={},this.tempId=0,this.preloader=null,this.preloaderStreamable=null,this.isFirstOpen=!0,this.pageEl=document.getElementById("page-chats"),this.zoomElements={},this.zoomSwipeStartX=0,this.zoomSwipeStartY=0,this.zoomSwipeX=0,this.zoomSwipeY=0,this.setZoomValue=(e=this.zoomElements.rangeSelector.value)=>{1===e&&(this.zoomSwipeX=0,this.zoomSwipeY=0),this.moversContainer.style.transform=`matrix(${e}, 0, 0, ${e}, ${this.zoomSwipeX}, ${this.zoomSwipeY})`,this.zoomElements.btnOut.classList.toggle("inactive",.5===e),this.zoomElements.btnIn.classList.toggle("inactive",4===e),this.toggleZoom(1!==e)},this.onClick=e=>{if(this.setMoverAnimationPromise)return;const t=e.target;if("A"===t.tagName)return;if(Object(c.a)(e),he.a)return this.highlightSwitchersTimeout?clearTimeout(this.highlightSwitchersTimeout):this.wholeDiv.classList.add("highlight-switchers"),void(this.highlightSwitchersTimeout=window.setTimeout(()=>{this.wholeDiv.classList.remove("highlight-switchers"),this.highlightSwitchersTimeout=0},3e3));const s=this.isZooming();let i=null;const n=["ckin__player","media-viewer-buttons","media-viewer-author","media-viewer-caption","zoom-container"];s&&n.push("media-viewer-movers"),n.find(e=>{try{if(i=Object(Pe.a)(t,e),i)return!0}catch(e){return!1}}),i&&(s||"IMG"!==t.tagName&&"image"!==t.tagName)||this.close()},this.onKeyDown=e=>{if(a.a.overlaysActive>1)return;const t=e.key;let s=!0;"ArrowRight"===t?this.buttons.next.click():"ArrowLeft"===t?this.buttons.prev.click():"-"===t||"="===t?this.ctrlKeyDown&&this.changeZoom("="===t):s=!1,(e.ctrlKey||e.metaKey)&&(this.ctrlKeyDown=!0),s&&Object(c.a)(e)},this.onKeyUp=e=>{a.a.overlaysActive>1||e.ctrlKey||e.metaKey||(this.ctrlKeyDown=!1,this.isZooming()&&this.setZoomValue())},this.onWheel=e=>{if(!(a.a.overlaysActive>1||Object(Pe.a)(e.target,"media-viewer-caption")&&!this.ctrlKeyDown)&&(Object(c.a)(e),this.ctrlKeyDown)){const t=e.deltaY<0;this.changeZoom(!!t)}},this.log=Object(Y.b)("AMV"),this.preloader=new ye.a,this.preloaderStreamable=new ye.a({cancelable:!1,streamable:!0}),this.preloader.construct(),this.preloaderStreamable.construct(),this.lazyLoadQueue=new Z.a,this.wholeDiv=document.createElement("div"),this.wholeDiv.classList.add("media-viewer-whole"),this.overlaysDiv=document.createElement("div"),this.overlaysDiv.classList.add("overlays");const s=document.createElement("div");s.classList.add("media-viewer");const i=this.topbar=document.createElement("div");i.classList.add("media-viewer-topbar","media-viewer-appear");const n=document.createElement("div");n.classList.add("media-viewer-topbar-left"),this.buttons["mobile-close"]=N("close",{onlyMobile:!0}),this.author.container=document.createElement("div"),this.author.container.classList.add("media-viewer-author","no-select");const o=document.createElement("div");this.author.avatarEl=new bc,this.author.avatarEl.classList.add("media-viewer-userpic","avatar-44"),this.author.nameEl=document.createElement("div"),this.author.nameEl.classList.add("media-viewer-name"),this.author.date=document.createElement("div"),this.author.date.classList.add("media-viewer-date"),o.append(this.author.nameEl,this.author.date),this.author.container.append(this.author.avatarEl,o);const r=document.createElement("div");r.classList.add("media-viewer-buttons"),t.concat(["download","zoom","close"]).forEach(e=>{const t=N(e,{noRipple:!0});this.buttons[e]=t,r.append(t)}),this.buttons.zoom.classList.add("zoom-in"),this.zoomElements.container=document.createElement("div"),this.zoomElements.container.classList.add("zoom-container"),this.zoomElements.btnOut=N("zoomout",{noRipple:!0}),Object(l.b)(this.zoomElements.btnOut,()=>this.changeZoom(!1)),this.zoomElements.btnIn=N("zoomin",{noRipple:!0}),Object(l.b)(this.zoomElements.btnIn,()=>this.changeZoom(!0)),this.zoomElements.rangeSelector=new Le({step:.5,min:.5,max:4,withTransition:!0},1),this.zoomElements.rangeSelector.setListeners(),this.zoomElements.rangeSelector.setHandlers({onScrub:this.setZoomValue,onMouseUp:()=>this.setZoomValue()}),this.zoomElements.container.append(this.zoomElements.btnOut,this.zoomElements.rangeSelector.container,this.zoomElements.btnIn),this.wholeDiv.append(this.zoomElements.container),this.content.main=document.createElement("div"),this.content.main.classList.add("media-viewer-content"),this.content.container=document.createElement("div"),this.content.container.classList.add("media-viewer-container"),this.content.media=document.createElement("div"),this.content.media.classList.add("media-viewer-media"),this.content.container.append(this.content.media),this.content.main.append(this.content.container),s.append(this.content.main),this.overlaysDiv.append(s),n.append(this.buttons["mobile-close"],this.author.container),i.append(n,r),this.buttons.prev=document.createElement("div"),this.buttons.prev.className="media-viewer-switcher media-viewer-switcher-left",this.buttons.prev.innerHTML='',this.buttons.next=document.createElement("div"),this.buttons.next.className="media-viewer-switcher media-viewer-switcher-right",this.buttons.next.innerHTML='',this.moversContainer=document.createElement("div"),this.moversContainer.classList.add("media-viewer-movers"),this.wholeDiv.append(this.overlaysDiv,this.buttons.prev,this.buttons.next,this.topbar,this.moversContainer),this.listLoader.onLoadedMore=()=>{this.buttons.prev.classList.toggle("hide",!this.listLoader.previous.length),this.buttons.next.classList.toggle("hide",!this.listLoader.next.length)},this.setNewMover()}get target(){return this.listLoader.current}set target(e){this.listLoader.current=e}setListeners(){if(Object(l.b)(this.buttons.download,this.onDownloadClick),[this.buttons.close,this.buttons["mobile-close"],this.preloaderStreamable.preloader].forEach(e=>{Object(l.b)(e,this.close.bind(this))}),[[-1,this.buttons.prev],[1,this.buttons.next]].forEach(([e,t])=>{t.addEventListener("click",t=>{Object(c.a)(t),this.setMoverPromise||this.listLoader.go(e)})}),Object(l.b)(this.buttons.zoom,()=>{this.isZooming()?this.toggleZoom(!1):this.changeZoom(!0)}),this.wholeDiv.addEventListener("click",this.onClick),this.listLoader.onJump=(e,t)=>{t?this.onNextClick(e):this.onPrevClick(e)},he.a){new is({element:this.wholeDiv,onSwipe:(e,t)=>{if(Object(Te.d)())return;if(Math.abs(e)/xt.a.width>.2||e>125)return e<0?this.buttons.prev.click():this.buttons.next.click(),!0;return(Math.abs(t)/xt.a.height>.2||t>125)&&(this.close(),!0)},verifyTouchTarget:e=>"INPUT"!==e.target.tagName&&!Object(Pe.a)(e.target,"media-viewer-caption")})}}toggleZoom(e){const t=this.isZooming();if((this.zoomElements.rangeSelector.mousedown||this.ctrlKeyDown)&&(e=!0),t===e)return;void 0===e&&(e=!t),this.buttons.zoom.classList.toggle("zoom-in",!e),this.zoomElements.container.classList.toggle("is-visible",e);const s=e?this.zoomElements.rangeSelector.value:1;if(this.setZoomValue(s),this.zoomElements.rangeSelector.setProgress(s),this.videoPlayer&&this.videoPlayer.lockControls(!e&&void 0),e){if(this.zoomSwipeHandler)this.zoomSwipeHandler.setListeners();else{let e,t;const s=-1;this.zoomSwipeHandler=new is({element:this.moversContainer,onFirstSwipe:()=>{e=t=0,this.moversContainer.classList.add("no-transition")},onSwipe:(i,n)=>{[i,n]=[i*s,n*s],this.zoomSwipeX+=i-e,this.zoomSwipeY+=n-t,[e,t]=[i,n],this.setZoomValue()},onReset:()=>{this.moversContainer.classList.remove("no-transition")},cursor:"move"})}this.zoomElements.rangeSelector.setProgress(s)}else e||this.zoomSwipeHandler.removeListeners()}changeZoom(e){this.zoomElements.rangeSelector.addProgress(.5*(e?1:-1)),this.setZoomValue()}isZooming(){return this.zoomElements.container.classList.contains("is-visible")}setBtnMenuToggle(e){const t=Ee({onlyMobile:!0},"bottom-left",e);this.topbar.append(t)}close(e){var t;if(e&&Object(c.a)(e),this.setMoverAnimationPromise)return Promise.reject();j.a.removeByType("media"),this.lazyLoadQueue.clear();const s=this.setMoverToTarget(null===(t=this.target)||void 0===t?void 0:t.element,!0).then(({onAnimationEnd:e})=>e);return this.listLoader.reset(),this.listLoader.cleanup&&this.listLoader.cleanup(),this.setMoverPromise=null,this.tempId=-1,window.appMediaViewer=void 0,this.zoomSwipeHandler&&(this.zoomSwipeHandler.removeListeners(),this.zoomSwipeHandler=void 0),window.removeEventListener("keydown",this.onKeyDown),window.removeEventListener("keyup",this.onKeyUp),window.removeEventListener("wheel",this.onWheel,{capture:!0}),s.finally(()=>{this.wholeDiv.remove(),a.a.isOverlayActive=!1,M.a.checkAnimations(!1)}),s}setMoverToTarget(e,t=!1,s=0){return nc(this,void 0,void 0,(function*(){this.dispatchEvent("setMoverBefore");const i=this.content.mover;t||(i.innerHTML="");const n=this.isZooming()&&t?this.zoomElements.rangeSelector.value:1;this.removeCenterFromMover(i);const o=0!==s,r=a.a.settings.animationsEnabled?o?350:200:0;let l,c;e&&(e instanceof bc||e.classList.contains("grid-item")?(l=e,c=e.getBoundingClientRect()):e instanceof SVGImageElement||e.parentElement instanceof SVGForeignObjectElement?(l=Object(Pe.a)(e,"attachment"),c=l.getBoundingClientRect()):e.classList.contains("profile-avatars-avatar")&&(l=Object(Pe.a)(e,"profile-avatars-container"),c=l.getBoundingClientRect(),t&&e.getBoundingClientRect().left!==c.left&&(e=l=c=void 0))),e||(e=this.content.media),c||(l=e.parentElement,c=e.getBoundingClientRect());let d=!1;if(e!==this.content.media&&!e.classList.contains("profile-avatars-avatar")){const s=Ya(l,Object(Pe.a)(l,"scrollable"),!0);!t||s&&2!==s.overflow.vertical&&2!==s.overflow.horizontal?!s||1!==s.overflow.vertical&&1!==s.overflow.horizontal||(d=!0):(l=(e=this.content.media).parentElement,c=e.getBoundingClientRect())}const h=this.content.media.getBoundingClientRect();let p,u,g,m="";if(o?(p=1===s?xt.a.width:-h.width,u=h.top):(p=c.left,u=c.top),m+=`translate3d(${p}px,${u}px,0) `,e instanceof HTMLImageElement||e instanceof HTMLVideoElement||"DIV"===e.tagName){if(i.firstElementChild&&i.firstElementChild.classList.contains("media-viewer-aspecter")){g=i.firstElementChild;const e=g.querySelector(".ckin__player");if(e){const t=e.firstElementChild;g.append(t),e.remove()}g.style.cssText||(i.classList.remove("active"),this.setFullAspect(g,h,c),i.offsetLeft,i.classList.add("active"))}else g=document.createElement("div"),g.classList.add("media-viewer-aspecter"),i.prepend(g);g.style.cssText=`width: ${c.width}px; height: ${c.height}px; transform: scale3d(${h.width/c.width}, ${h.height/c.height}, 1);`}i.style.width=h.width+"px",i.style.height=h.height+"px";const b=c.width/h.width,v=c.height/h.height;o||(m+=`scale3d(${b},${v},1) `);let f=window.getComputedStyle(l).getPropertyValue("border-radius");const y=function(e){let t=e.split(" ");if(4!==t.length){t[0]||(t[0]="0px");for(let e=t.length;e<4;++e)t[e]=t[e%2]||t[0]||"0px"}return t}(f);if(f=y.map(e=>parseInt(e)/b+"px").join(" "),o||(i.style.borderRadius=f),t&&1!==n){const e=xt.a.width/2-c.width/2,t=xt.a.height/2-c.height/2,s=c.left-e,i=c.top-t;this.moversContainer.style.transform=`matrix(${b}, 0, 0, ${v}, ${s}, ${i})`}else i.style.transform=m;let w;d&&(i.style.opacity="0");const S=e.classList.contains("is-out"),L=this.setMoverAnimationPromise=Object(ie.a)(),C={onAnimationEnd:L},M=setTimeout(()=>{L.isFulfilled||L.isRejected||L.resolve()},1e3);if(L.finally(()=>{this.dispatchEvent("setMoverAfter"),this.setMoverAnimationPromise===L&&(this.setMoverAnimationPromise=null),clearTimeout(M)}),t)return e instanceof SVGSVGElement&&(w=i.querySelector("path"),w&&this.sizeTailPath(w,h,b,r,!1,S,f)),e.classList.contains("media-viewer-media")&&i.classList.add("hiding"),this.wholeDiv.classList.add("backwards"),setTimeout(()=>{this.wholeDiv.classList.remove("active")},0),setTimeout(()=>{i.style.borderRadius=f,i.firstElementChild&&(i.firstElementChild.style.borderRadius=f)},r/2),setTimeout(()=>{i.innerHTML="",i.classList.remove("moving","active","hiding"),i.style.cssText="display: none;",L.resolve()},r),i.classList.remove("opening"),C;{let t,s;if(e instanceof HTMLVideoElement){const t=Array.from(e.parentElement.querySelectorAll("img"));t.length&&(e=t.pop())}if("DIV"===e.tagName||"AVATAR-ELEMENT"===e.tagName){const n=Array.from(e.querySelectorAll("img")).pop();n&&(t=new Image,s=n.src,i.append(t))}else if(e instanceof HTMLImageElement)t=new Image,s=e.src;else if(e instanceof HTMLVideoElement)t=document.createElement("video"),t.src=e.src;else if(e instanceof SVGSVGElement){const t=e.dataset.clipId,s=t+"-mv",{width:n,height:a}=h,o=document.createElementNS("http://www.w3.org/2000/svg","svg");o.setAttributeNS(null,"width",""+n),o.setAttributeNS(null,"height",""+a),o.setAttributeNS(null,"viewBox",`0 0 ${n} ${a}`),o.setAttributeNS(null,"preserveAspectRatio","xMidYMid meet"),o.insertAdjacentHTML("beforeend",e.firstElementChild.outerHTML.replace(t,s)),o.insertAdjacentHTML("beforeend",e.lastElementChild.outerHTML.replace(t,s));const r=o.firstElementChild,l=r.firstElementChild.firstElementChild;if(l instanceof SVGUseElement){let e,t=l.getAttributeNS(null,"transform");t=t.replace(/translate\((.+?), (.+?)\) scale\((.+?), (.+?)\)/,(e,t,s,i,o)=>`translate(${t=2!==(t=+t)?n-2/b:2/b}, ${a}) scale(${+i/b}, ${+o/v})`),l.setAttributeNS(null,"transform",t),w=r.firstElementChild.lastElementChild;const s=f.split(" ").map(e=>parseInt(e));e=S?Cr(0,0,n-9/b,a,...s):Cr(9/b,0,n-9/b,a,...s),w.setAttributeNS(null,"d",e)}const c=o.lastElementChild;c.setAttributeNS(null,"width",""+h.width),c.setAttributeNS(null,"height",""+h.height),i.prepend(o)}g&&(g.style.borderRadius=f,t&&g.append(t)),t=i.querySelector("video, img"),t instanceof HTMLImageElement&&(t.classList.add("thumbnail"),g||(t.style.width=h.width+"px",t.style.height=h.height+"px"),s&&(yield Object(Ss.b)(t,s))),i.style.display="",Object(Re.b)(()=>{i.classList.add(o?"moving":"active")})}return i.classList.add("opening"),yield Object(Re.a)(),i.style.transform=`translate3d(${h.left}px,${h.top}px,0) scale3d(1,1,1)`,d&&(i.style.opacity=""),g&&this.setFullAspect(g,h,c),setTimeout(()=>{i.style.borderRadius="",i.firstElementChild&&(i.firstElementChild.style.borderRadius="")},0),i.dataset.timeout=""+setTimeout(()=>{i.classList.remove("moving","opening"),g&&(i.querySelector("video"),i.classList.remove("active"),g.style.cssText="",i.offsetLeft),i.classList.add("center","no-transition"),i.classList.add("active"),delete i.dataset.timeout,L.resolve()},r),w&&this.sizeTailPath(w,h,b,r,!0,S,f),C}))}setFullAspect(e,t,s){const i=t.width/t.height;let{width:n,height:a}=s;i>0?n=a*i:a=n*i,e.style.cssText=`width: ${n}px; height: ${a}px; transform: scale3d(${t.width/n}, ${t.height/a}, 1);`}sizeTailPath(e,t,s,i,n,a,o){const r=Date.now(),{width:l,height:c}=t;i/=2;const d=o.split(" ").map(e=>parseInt(e)),h=()=>{const t=Date.now()-r;let o=i?t/i:1;o>1&&(o=1),n&&(o=1-o);const p=d.map(e=>e*o);let u;u=a?Cr(0,0,l-9/s*o,c,...p):Cr(9/s*o,0,l,c,...p),e.setAttributeNS(null,"d",u),t{const a=t?-i.width:s;return e.replace(n,a+"px")});e.style.transform=n,setTimeout(()=>{e.remove()},350)}setNewMover(){const e=document.createElement("div");if(e.classList.add("media-viewer-mover"),e.style.display="none",this.content.mover){this.content.mover.parentElement.append(e)}else this.moversContainer.append(e);return this.content.mover=e}updateMediaSource(e,t,s){const i=e.tagName.toLowerCase()===s?e:e.querySelector(s);if(i&&!Object(Pe.a)(e,"document")){if(Object(Pe.a)(e,"attachment")){const t=e.parentElement.parentElement.querySelector(".preloader-container");if(t){if("video"===s)return void(t.classList.contains("manual")&&t.click());t.remove()}}Object(Ss.a)(i,t),i.classList.contains("thumbnail")&&i.parentElement.classList.contains("media-container-aspecter")&&i.classList.remove("thumbnail")}}setAuthorInfo(e,t){Object(k.a)(this.author.date,Object(ne.d)(t));const s=e.isPeerId();let i;s?i=new Tt.a({peerId:e,dialog:!1,onlyFirstName:!1,plainText:!1}).element:(i=document.createElement("span"),i.innerHTML=X.b.wrapEmojiText(e),i.classList.add("peer-title")),Object(k.a)(this.author.nameEl,i);let n=this.author.avatarEl;this.author.avatarEl=n.cloneNode(),this.author.avatarEl.updateWithOptions({peerId:e||Ne.c,peerTitle:s?void 0:""+e}),n.parentElement.replaceChild(this.author.avatarEl,n)}_openMedia(e,t,s,i,n,o=!1,l=[],d=[],h){return nc(this,void 0,void 0,(function*(){if(this.setMoverPromise)return this.setMoverPromise;this.setAuthorInfo(s,t);const p="document"===e._,u=p&&e.mime_type&&(["video","gif"].includes(e.type)||0===e.mime_type.indexOf("video/"));this.isFirstOpen&&(this.isFirstOpen=!1,this.listLoader.setTargets(l,d,o),window.appMediaViewer=this),this.listLoader.next.length<10&&setTimeout(()=>{this.listLoader.load(!0)},0),this.buttons.prev.classList.toggle("hide",!this.listLoader.previous.length),this.buttons.next.classList.toggle("hide",!this.listLoader.next.length);const g=this.content.media,m=!n||n===g;m&&(n=g),this.target={element:n};const v=++this.tempId;g.firstElementChild&&(g.innerHTML="");if(0!==i)this.moveTheMover(this.content.mover,1===i),this.setNewMover();else{a.a.isOverlayActive=!0,window.addEventListener("keydown",this.onKeyDown),window.addEventListener("keyup",this.onKeyUp),he.a||window.addEventListener("wheel",this.onWheel,{passive:!1,capture:!0});const e=document.getElementById("main-columns");this.pageEl.insertBefore(this.wholeDiv,e),this.wholeDiv.offsetLeft,this.wholeDiv.classList.add("active"),M.a.checkAnimations(!0),ae.f||j.a.pushItem({type:"media",onPop:e=>{if(this.setMoverAnimationPromise)return!1;this.close()}})}const f=this.content.mover,y=xt.a.width;let w=0;const S=xt.a.height;S<1e6&&!b.b.isMobile&&(w=120);const L=S-120-w;let I=Promise.resolve();const E=r.a.setAttachmentSize(e,g,y,L,!b.b.isMobile,void 0,!!(p&&e.w&&e.h)).photoSize;if(m){const t=ce.a.getCacheContext(e,E.type);let s;if(t.downloaded)s=new Image,s.src=t.url;else{const i=r.a.getStrippedThumbIfNeeded(e,t,!0);i&&(I=i.loadPromise,s=i.image)}s&&(s.classList.add("thumbnail"),g.append(s))}const P=!(!p||!e.supportsStreaming),k=P?this.preloaderStreamable:this.preloader;let T;if(u){const t=h&&"gif"!==e.type,s=document.createElement("video"),a=()=>this.setMoverToTarget(n,!1,i).then(({onAnimationEnd:i})=>{const a=f.firstElementChild&&f.firstElementChild.classList.contains("media-viewer-aspecter")?f.firstElementChild:f,o=f.querySelector("video");o&&o.remove(),s.setAttribute("playsinline","true"),s.addEventListener("timeupdate",()=>{this.tempId!==v&&s.pause()}),s.addEventListener("error",()=>{4!==s.error.code&&this.log.error("Error "+s.error.code+"; details: "+s.error.message),k&&k.detach()},{once:!0}),this.addEventListener("setMoverAfter",()=>{s.src="",s.load()},{once:!0}),ae.g&&(s.autoplay=!0),"gif"===e.type?(s.muted=!0,s.autoplay=!0,s.loop=!0):e.duration<60&&(s.loop=!0),a.append(s);const r=new Promise(e=>{s.addEventListener("canplay",e,{once:!0})}),l=()=>{"gif"!==e.type&&(s.dataset.ckin="default",s.dataset.overlay="1",Promise.all([r,i]).then(()=>{if(this.tempId!==v)return;(this.videoPlayer=new _e({video:s,play:!0,streamable:P,onPlaybackRackMenuToggle:e=>{this.wholeDiv.classList.toggle("hide-caption",!!e)}})).addEventListener("toggleControls",e=>{this.wholeDiv.classList.toggle("has-video-controls",e)}),this.addEventListener("setMoverBefore",()=>{this.wholeDiv.classList.remove("has-video-controls"),this.videoPlayer.removeListeners(),this.videoPlayer=void 0},{once:!0}),this.isZooming()&&this.videoPlayer.lockControls(!1)}))};if(P){i.then(()=>{s.readyState{s.addEventListener("canplay",()=>{k.detach(),s.parentElement.classList.remove("is-buffering")},{once:!0})};s.addEventListener("waiting",()=>{const t=s.networkState===s.NETWORK_LOADING,i=s.readyState{Object(c.a)(e)}),e()}this.lazyLoadQueue.unshift({load:()=>{const o=ce.a.getCacheContext(e),r=P?Promise.resolve():C.a.downloadDoc(e);return P||i.then(()=>{o.url||k.attach(f,!0,r)}),Promise.all([r,i]).then(()=>{if(this.tempId!==v)return void this.log.warn("media viewer changed video");const e=o.url;if(n instanceof SVGSVGElement?a.firstElementChild.lastElementChild.append(s):Object(Ss.a)(s,e),t){const e=fe.setSingleMedia(s,h);this.addEventListener("setMoverBefore",()=>{e()},{once:!0})}this.updateMediaSource(n,e,"video"),l()}),r}})});T=I.then(a)}else{const t=()=>this.setMoverToTarget(n,!1,i).then(({onAnimationEnd:t})=>{this.lazyLoadQueue.unshift({load:()=>{const s=ce.a.getCacheContext(e,E.type),i=p?C.a.downloadDoc(e):r.a.preloadPhoto(e,E);return t.then(()=>{s.url||this.preloader.attachPromise(i)}),Promise.all([t,i]).then(()=>{var e;if(this.tempId!==v)return void this.log.warn("media viewer changed photo");const t=s.url;if(n instanceof SVGSVGElement){if(this.updateMediaSource(n,t,"img"),this.updateMediaSource(f,t,"img"),b.b.isMobile){const e=f.querySelectorAll("img");e&&e.length&&e.forEach(e=>{e.classList.remove("thumbnail")})}}else{const s=f.firstElementChild&&f.firstElementChild.classList.contains("media-viewer-aspecter")?f.firstElementChild:f,i="IMG"===(null===(e=s.firstElementChild)||void 0===e?void 0:e.tagName)?s.firstElementChild:null;if(!i||i.src!==t){let e=new Image;e.classList.add("thumbnail"),Object(Ss.a)(e,t,()=>{this.updateMediaSource(n,t,"img"),i&&Object(Re.b)(()=>{i.remove()}),s.append(e)})}}}).catch(e=>{this.log.error(e),this.preloader.attach(f),this.preloader.setManual()}),i}})});T=I.then(t)}return this.setMoverPromise=T.catch(()=>{this.setMoverAnimationPromise=null}).finally(()=>{this.setMoverPromise=null})}))}}var oc=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class rc extends ac{constructor(){let e;super(new L({processItem:e=>{const t="inputMessagesFilterDocument"===this.searchContext.inputFilter._,{mid:s,peerId:n}=e,a=i.a.getMediaFromMessage(e);if(a&&(!t||rc.isMediaCompatibleForDocumentViewer(a)))return{element:null,mid:s,peerId:n}}}),["delete","forward"]),this.onPrevClick=e=>{this.openMedia(this.getMessageByPeer(e.peerId,e.mid),e.element,-1)},this.onNextClick=e=>{this.openMedia(this.getMessageByPeer(e.peerId,e.mid),e.element,1)},this.onDeleteClick=()=>{const e=this.target;new ni(e.peerId,[e.mid],"chat",()=>{this.target={element:this.content.media},this.close()})},this.onForwardClick=()=>{const e=this.target;e.mid&&new ii({[e.peerId]:[e.mid]},()=>this.close())},this.onAuthorClick=e=>{const{mid:t,peerId:s}=this.target;if(t&&t!==Number.MAX_SAFE_INTEGER){const i=this.searchContext.threadId,n=this.getMessageByPeer(s,t);this.close(e).then(()=>{if(b.b.isMobile){const e=ds.getTab(ls);e&&e.close()}ic.setInnerPeer({peerId:n.peerId,lastMsgId:t,type:i?"discussion":void 0,threadId:i})})}},this.onDownloadClick=()=>{const{peerId:e,mid:t}=this.target,s=this.getMessageByPeer(e,t);if(s.media.photo)r.a.savePhotoFile(s.media.photo,ic.chat.bubbles.lazyLoadQueue.queueId);else{let e=null;e=s.media.webpage?s.media.webpage.document:s.media.document,e&&C.a.saveDocFile(e,ic.chat.bubbles.lazyLoadQueue.queueId)}},this.listLoader.onEmptied=()=>{this.close()},this.content.caption=document.createElement("div"),this.content.caption.classList.add("media-viewer-caption");const t=()=>{e&&clearTimeout(e),e=window.setTimeout(()=>{e=void 0,this.content.caption.classList.remove("is-focused")},800)};this.content.caption.addEventListener("touchstart",()=>{b.b.isMobile&&(this.content.caption.classList.add("is-focused"),e&&(clearTimeout(e),e=void 0),document.addEventListener("touchend",t,{once:!0}))});new P.b(this.content.caption).onAdditionalScroll=t,this.wholeDiv.append(this.content.caption),Object(l.b)(this.buttons.delete,this.onDeleteClick);const s=[this.btnMenuForward={icon:"forward",text:"Forward",onClick:this.onForwardClick},this.btnMenuDownload={icon:"download",text:"MediaViewer.Context.Download",onClick:this.onDownloadClick},this.btnMenuDelete={icon:"delete danger",text:"Delete",onClick:this.onDeleteClick}];this.setBtnMenuToggle(s),this.setListeners()}get searchContext(){return this.listLoader.searchContext}setListeners(){super.setListeners(),Object(l.b)(this.buttons.forward,this.onForwardClick),Object(l.b)(this.author.container,this.onAuthorClick);const e=t=>{if(t.target instanceof HTMLAnchorElement){const s=t.target.getAttribute("onclick");if(!s||s.includes("showMaskedAlert"))return;return Object(c.a)(t),this.close().then(()=>{Object(l.c)(this.content.caption,e,{capture:!0}),t.target.click()}),!1}};Object(l.b)(this.content.caption,e,{capture:!0})}getMessageByPeer(e,t){return this.searchContext.isScheduled?i.a.getScheduledMessageByPeer(e,t):i.a.getMessageByPeer(e,t)}setCaption(e){const t=e.message;let s="";t&&(s=X.b.wrapRichText(t,{entities:e.totalEntities})),m(this.content.caption.firstElementChild,s),this.content.caption.classList.toggle("hide",!t)}setSearchContext(e){return this.listLoader.setSearchContext(e),this}openMedia(e,t,s=0,n=!1,a=[],o=[]){const r=Object.create(null,{_openMedia:{get:()=>super._openMedia}});return oc(this,void 0,void 0,(function*(){if(this.setMoverPromise)return this.setMoverPromise;const l=e.mid,c=e.fwd_from&&!e.fromId?e.fwd_from.from_name:e.fromId,d=i.a.getMediaFromMessage(e),h="messageService"===e._||!i.a.canForward(e);[this.buttons.forward,this.btnMenuForward.element].forEach(e=>{e.classList.toggle("hide",h)}),this.wholeDiv.classList.toggle("no-forwards",h);const p=h;[this.buttons.download,this.btnMenuDownload.element].forEach(e=>{e.classList.toggle("hide",p)});const u=i.a.canDeleteMessage(e);[this.buttons.delete,this.btnMenuDelete.element].forEach(e=>{e.classList.toggle("hide",!u)}),this.setCaption(e);const g=r._openMedia.call(this,d,e.date,c,s,t,n,a,o,e);return this.target.mid=l,this.target.peerId=e.peerId,g}))}static isMediaCompatibleForDocumentViewer(e){return"photo"===e._||g.has(e.mime_type)}}class lc extends S{constructor(e){super(Object.assign(Object.assign({},e),{loadMore:(e,t,s)=>{if(this.peerId.isAnyChat()||!t)return Promise.resolve({count:0,items:[]});const i=null==e?void 0:e.photoId;return r.a.getUserPhotos(this.peerId,i,s).then(e=>{const t=e.photos.map(e=>({element:null,photoId:e}));return{count:e.count,items:t}})}})),this.loadedAllUp=!0,this.peerId=e.peerId}}var cc=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class dc extends ac{constructor(e){super(new lc({peerId:e}),[]),this.onPrevClick=e=>{this.openMedia(e.photoId,e.element,-1)},this.onNextClick=e=>{this.openMedia(e.photoId,e.element,1)},this.onDownloadClick=()=>{r.a.savePhotoFile(r.a.getPhoto(this.target.photoId),ic.chat.bubbles.lazyLoadQueue.queueId)},this.peerId=e,this.setBtnMenuToggle([{icon:"download",text:"MediaViewer.Context.Download",onClick:this.onDownloadClick}]),this.setListeners()}openMedia(e,t,s=0,i,n){const a=Object.create(null,{_openMedia:{get:()=>super._openMedia}});return cc(this,void 0,void 0,(function*(){if(this.setMoverPromise)return this.setMoverPromise;const o=r.a.getPhoto(e),l=a._openMedia.call(this,o,o.date,this.peerId,s,t,!1,i,n);return this.target.photoId=o.id,l}))}}var hc=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};const pc=e=>{d.a.removeFromAvatarsCache(e),Array.from(document.querySelectorAll('avatar-element[data-peer-id="'+e+'"]')).forEach(e=>{e.update()})};function uc(e,t,s,a,o,l){return hc(this,void 0,void 0,(function*(){let c=yield n.default.getFullPhoto(t);if(!s()||!c)return;const d=()=>Array.from(e.querySelectorAll("img")).find(e=>!e.classList.contains("emoji"))?e:null;if(t.isAnyChat()){const e=!!a,n="inputMessagesFilterChatPhotos";if(!a&&(a=yield i.a.getSearch({peerId:t,inputFilter:{_:n},maxId:0,limit:1}).then(e=>e.history[0]),!s()))return;if(a){a.action.photo.id!==c.id&&(e||(a=i.a.generateFakeAvatarMessage(t,c)));const s=e=>e.map(e=>({element:e.element,mid:e.item.mid,peerId:e.item.peerId}));return void(new rc).setSearchContext({peerId:t,inputFilter:{_:n}}).openMedia(a,d(),void 0,void 0,o?s(o):void 0,l?s(l):void 0)}}if(c){!Object(ua.a)(a)&&a&&(c=r.a.getPhoto(a));const e=e=>e.map(e=>({element:e.element,photoId:e.item}));new dc(t).openMedia(c.id,d(),void 0,o?e(o):void 0,l?e(l):void 0)}}))}a.a.addEventListener("avatar_update",pc),a.a.addEventListener("peer_title_edit",e=>{d.a.isAvatarCached(e)||pc(e)});const gc=new Map,mc=new Set;class bc extends HTMLElement{constructor(){super(...arguments),this.addedToQueue=!1}disconnectedCallback(){const e=gc.get(this.peerId);e&&e.has(this)&&(e.delete(this),e.size||gc.delete(this.peerId)),this.lazyLoadQueue&&this.lazyLoadQueue.unobserve(this)}attachClickEvent(){let e=!1;Object(l.b)(this,t=>hc(this,void 0,void 0,(function*(){if(Object(c.a)(t),e)return;const s=this.peerId;e=!0,yield uc(this,this.peerId,()=>this.peerId===s),e=!1})))}updateOptions(e){for(let t in e)this[t]=e[t]}updateWithOptions(e){const t=this.peerId;this.updateOptions(e);const s=this.peerId;if(t!==s){if(this.peerId=o.a.getPeerMigratedTo(s)||s,this.dataset.peerId=""+s,t){const e=gc.get(t);e&&(e.delete(this),e.size||gc.delete(t))}return this.update()}}r(e=!1){const t=d.a.putPhoto(this,this.peerId,this.isDialog,this.peerTitle,e,this.isBig),s=t?t.loadPromise:Promise.resolve();return this.loadPromises&&(t&&t.cached&&this.loadPromises.push(s),s.finally(()=>{this.loadPromises=void 0})),t}update(){if(this.lazyLoadQueue){if(!mc.has(this.peerId)){if(this.addedToQueue)return;this.addedToQueue=!0;let e=gc.get(this.peerId);return e||(e=new Set,gc.set(this.peerId,e)),e.add(this),this.r(!0),void this.lazyLoadQueue.push({div:this,load:()=>(mc.add(this.peerId),this.update())})}this.addedToQueue&&this.lazyLoadQueue.unobserve(this)}mc.add(this.peerId);const e=this.r(),t=e?e.loadPromise:Promise.resolve();this.addedToQueue&&t.finally(()=>{this.addedToQueue=!1});const s=gc.get(this.peerId);if(s){s.delete(this);const e=Array.from(s);gc.delete(this.peerId);for(let t=0,s=e.length;t{let e=i.a.getDialogOnly(this.selectedId);e&&i.a.editPeerFolders([e.peerId],+!e.folder_id)},this.onPinClick=()=>{i.a.toggleDialogPin(this.selectedId,this.filterId).catch(e=>{"PINNED_DIALOGS_TOO_MUCH"===e.type&&(this.filterId>=1?bt({langPackKey:"PinFolderLimitReached"}):new Lt("pinned-dialogs-too-much",{buttons:[{langKey:"OK",isCancel:!0},{langKey:"FiltersSetupPinAlert",callback:()=>{new Cn(Xn).open()}}],descriptionLangKey:"PinToTopLimitReached2",descriptionLangArgs:[Object(T.d)("Chats",[a.a.config.pinned_dialogs_count_max])]}).show())})},this.onUnmuteClick=()=>{i.a.togglePeerMute(this.selectedId,!1)},this.onMuteClick=()=>{new gr(this.selectedId)},this.onUnreadClick=()=>{const e=i.a.getDialogOnly(this.selectedId);e&&(e.unread_count?(i.a.readHistory(this.selectedId,e.top_message),i.a.markDialogUnread(this.selectedId,!0)):i.a.markDialogUnread(this.selectedId))},this.onDeleteClick=()=>{new Ht(this.selectedId)},this.onContextMenu=e=>{this.init&&(this.init(),this.init=null);let t=null;try{t=Object(It.a)(e.target,"LI")}catch(e){}if(t){if(e instanceof MouseEvent&&e.preventDefault(),this.element.classList.contains("active"))return!1;e instanceof MouseEvent&&(e.cancelBubble=!0),this.filterId=Oc.filterId,this.selectedId=t.dataset.peerId.toPeerId(),this.dialog=i.a.getDialogOnly(this.selectedId),this.buttons.forEach(e=>{const t=e.verify();e.element.classList.toggle("hide",!t)}),this.buttons[this.buttons.length-1].element.lastChild.replaceWith(Object(T.d)(o.a.getDeleteButtonText(this.selectedId))),t.classList.add("menu-open"),Object(ee.e)(e,this.element),Object(ee.d)(this.element,()=>{t.classList.remove("menu-open"),this.selectedId=this.dialog=this.filterId=void 0})}}}init(){this.buttons=[{icon:"unread",text:"MarkAsUnread",onClick:this.onUnreadClick,verify:()=>!i.a.isDialogUnread(this.dialog)},{icon:"readchats",text:"MarkAsRead",onClick:this.onUnreadClick,verify:()=>i.a.isDialogUnread(this.dialog)},{icon:"pin",text:"ChatList.Context.Pin",onClick:this.onPinClick,verify:()=>{var e;return!(this.filterId>1?i.a.filtersStorage.getFilter(this.filterId).pinnedPeerIds.includes(this.dialog.peerId):!!(null===(e=this.dialog.pFlags)||void 0===e?void 0:e.pinned))}},{icon:"unpin",text:"ChatList.Context.Unpin",onClick:this.onPinClick,verify:()=>{var e;return this.filterId>1?i.a.filtersStorage.getFilter(this.filterId).pinnedPeerIds.includes(this.dialog.peerId):!!(null===(e=this.dialog.pFlags)||void 0===e?void 0:e.pinned)}},{icon:"mute",text:"ChatList.Context.Mute",onClick:this.onMuteClick,verify:()=>this.selectedId!==a.a.myId&&!qt.a.isPeerLocalMuted(this.dialog.peerId)},{icon:"unmute",text:"ChatList.Context.Unmute",onClick:this.onUnmuteClick,verify:()=>this.selectedId!==a.a.myId&&qt.a.isPeerLocalMuted(this.dialog.peerId)},{icon:"archive",text:"Archive",onClick:this.onArchiveClick,verify:()=>0===this.filterId&&this.selectedId!==a.a.myId},{icon:"unarchive",text:"Unarchive",onClick:this.onArchiveClick,verify:()=>1===this.filterId&&this.selectedId!==a.a.myId},{icon:"delete danger",text:"Delete",onClick:this.onDeleteClick,verify:()=>!0}],this.element=Me(this.buttons),this.element.id="dialogs-contextmenu",this.element.classList.add("contextmenu"),document.getElementById("page-chats").append(this.element)}}var fc,yc;!function(e){e[e.Connected=0]="Connected",e[e.Connecting=1]="Connecting",e[e.Closed=2]="Closed",e[e.TimedOut=3]="TimedOut"}(fc||(fc={}));class wc{constructor(e){this.hadConnect=!1,this.connecting=!1,this.timedOut=!1,this.updating=!1,this.setConnectionStatus=()=>{Kn.a.get("dc").then(e=>{e||(e=Vn.a.baseDcId),this.setFirstConnectionTimeout&&(clearTimeout(this.setFirstConnectionTimeout),this.setFirstConnectionTimeout=0);const t=a.a.connectionStatus["NET-"+e],s=t&&t.status===fc.Connected;this.connecting&&s&&wi.a.forceGetDifference(),s&&!this.hadConnect&&(this.hadConnect=!0),this.timedOut=t&&t.status===fc.TimedOut,this.connecting=!s,this.retryAt=t&&t.retryAt,le.b&&this.log("connecting",this.connecting),this.setState()})},this.setStatusText=(e,t)=>{this.currentLangPackKey!==e&&(this.currentLangPackKey=e,Object(k.a)(this.statusEl,Object(T.d)(e,t)),this.statusPreloader.attach(this.statusEl))},this.setState=()=>{const e=wc.CHANGE_STATE_DELAY;if(this.connecting)if(this.timedOut){const e=this.getA("ConnectionStatus.ForceReconnect",()=>ft.a.forceReconnect());this.setStatusText("ConnectionStatus.TimedOut",[e])}else if(this.hadConnect)if(void 0!==this.retryAt){const e=document.createElement("span"),t=this.retryAt,s=()=>{const s=Date.now();e.innerText=""+Math.round((t-s)/1e3),s>t&&clearInterval(i)},i=setInterval(s,1e3);s();const n=this.getA("ConnectionStatus.Reconnect",()=>ft.a.forceReconnectTimeout());this.setStatusText("ConnectionStatus.ReconnectIn",[e,n])}else this.setStatusText("ConnectionStatus.Reconnecting");else this.setStatusText("ConnectionStatus.Waiting");else this.updating&&this.setStatusText("Updating");le.b&&this.log("setState",this.connecting||this.updating),window.requestAnimationFrame(()=>{this.setStateTimeout&&clearTimeout(this.setStateTimeout);this.setStateTimeout=window.setTimeout(()=>{Object(ps.a)(this.statusContainer,"is-shown",this.connecting||this.updating,200),this.setStateTimeout=0,le.b&&this.log("setState: isShown:",this.connecting||this.updating)},e)})},this.log=Object(Y.b)("CS",void 0,void 0),this.statusContainer=document.createElement("div"),this.statusContainer.classList.add("connection-status"),this.statusEl=Object(B.a)("btn-primary bg-warning connection-status-button",{noRipple:!0}),this.statusPreloader=new ye.a({cancelable:!1}),this.statusPreloader.constructContainer({color:"transparent",bold:!0}),this.statusContainer.append(this.statusEl),e.prepend(this.statusContainer),a.a.addEventListener("connection_status_change",e=>{console.log(e),this.setConnectionStatus()}),a.a.addEventListener("state_synchronizing",e=>{e||(this.updating=!0,le.b&&this.log("updating",this.updating),this.setState())}),a.a.addEventListener("state_synchronized",e=>{le.b&&this.log("state_synchronized",e),e||(this.updating=!1,le.b&&this.log("updating",this.updating),this.setState())}),this.setFirstConnectionTimeout=window.setTimeout(this.setConnectionStatus,wc.CHANGE_STATE_DELAY+1e3)}getA(e,t){const s=document.createElement("a");return s.classList.add("force-reconnect"),s.append(Object(T.d)(e)),Object(l.b)(s,e=>{Object(c.a)(e),t()}),s}}function Sc(e,t,s,i,n,a,o,r){if("number"==typeof a)a={tl:a,tr:a,br:a,bl:a};else{const e={tl:0,tr:0,br:0,bl:0};for(const t in e)a[t]=a[t]||e[t]}e.beginPath(),e.moveTo(t+a.tl,s),e.lineTo(t+i-a.tr,s),e.quadraticCurveTo(t+i,s,t+i,s+a.tr),e.lineTo(t+i,s+n-a.br),e.quadraticCurveTo(t+i,s+n,t+i-a.br,s+n),e.lineTo(t+a.bl,s+n),e.quadraticCurveTo(t,s+n,t,s+n-a.bl),e.lineTo(t,s+a.tl),e.quadraticCurveTo(t,s,t+a.tl,s),e.closePath(),o&&e.fill(),r&&e.stroke()}wc.CHANGE_STATE_DELAY=1e3,function(e){e[e.Error=-1]="Error",e[e.Pending=0]="Pending",e[e.Sent=1]="Sent",e[e.Read=2]="Read"}(yc||(yc={}));const Lc=window.devicePixelRatio,Cc=20*Lc,Mc=2.5*Lc,Ic=2*Lc,Ec=1*Lc;function Pc(e=!1){const t=document.createElement("canvas");t.width=t.height=Cc;const s=t.getContext("2d"),i=(Cc-(3*Ic+2*Mc))/2,n=Date.now();let a=!1;const o=()=>{if(t.isConnected)a||(a=t.isConnected);else if(a)return!1;const o=Date.now(),r=(l=(o-n)%1e3,c=0,d=1e3,-1/2*(Math.cos(Math.PI*l/d)-1)+c);var l,c,d;s.clearRect(0,0,Cc,Cc),s.fillStyle=e&&!b.b.isMobile?_r.getProperty("primary-color"):"#fff";for(let e=0;e<3;++e){let t;t=r>=.5?e%2?2-2*r:2*(r-.5):e%2?2*r:1-2*r;let n=4+8*t;n*=Lc;Sc(s,i+e*Ic+e*Mc,(Cc-n)/2,Ic,n,Ec,!0)}return!0};return{canvas:t,startAnimation:()=>{Object(He.a)(o),o()},setActive:t=>{e=t,o()}}}var kc=function(e,t,s,i){return new(s||(s=Promise))((function(n,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function r(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,r)}l((i=i.apply(e,t||[])).next())}))};class Tc extends Qs{constructor(e,t,s){super({getIndex:e=>i.a.getDialogOnly(e.id)[this.indexKey],onDelete:e=>{e.dom.listEl.remove(),this.onListLengthChange&&this.onListLengthChange()},onSort:(e,t)=>{const s=e.dom.listEl.parentElement!==this.list;qs(e.dom.listEl,this.list,t),s&&this.onListLengthChange&&this.onListLengthChange()},onElementCreate:(e,t)=>{const s=t?[]:void 0,{dom:i}=Ac.addListDialog({dialog:e.id,loadPromises:s,isBatch:t});return e.dom=i,(null==s?void 0:s.length)&&(e.loadPromises=s,Promise.all(s).finally(()=>{delete e.loadPromises})),e},updateElementWith:Re.c}),this.list=e,this.indexKey=t,this.onListLengthChange=s}clear(){this.list.innerHTML="",super.clear()}}class xc{constructor(){this.chatsContainer=document.getElementById("chatlist-container"),this.scroll=null,this.log=Object(Y.b)("DIALOGS",Y.a.Log|Y.a.Error|Y.a.Warn|Y.a.Debug),this.contextMenu=new vc,this.sortedLists={},this.scrollables={},this.folders={menu:document.getElementById("folders-tabs"),menuScrollContainer:null,container:document.getElementById("folders-container")},this.filtersRendered={},this.lastActiveElements=new Set,this.offsets={top:0,bottom:0},this.initedListeners=!1,this.loadedDialogsAtLeastOnce=!1,this.onTabChange=()=>{this.scroll=this.scrollables[this.filterId],this.scroll.loadedAll.top=!0,this.scroll.loadedAll.bottom=!1,this.offsets.top=this.offsets.bottom=0,this.loadDialogsPromise=void 0,this.sortedList=this.sortedLists[this.filterId],this.onChatsScroll()},this._onListLengthChange=()=>{if(!this.loadedDialogsAtLeastOnce)return;if(this.checkIfPlaceholderNeeded(),this.filterId>0)return;const e=this.chatList,t=e.childElementCount,s=e.parentElement.parentElement,i=e.parentElement.nextElementSibling,n=!!i.childElementCount;if(t>=10)return void(n&&this.removeContactsPlaceholder());if(n)return;s.classList.add("with-contacts");const a=new Wn({name:"Contacts",noDelimiter:!0,fakeGradientDelimiter:!0});a.container.classList.add("hide"),E.a.getContactsPeerIds(void 0,void 0,"online").then(e=>{let t=!1;const s=()=>{t&&a.container.classList.toggle("hide",!i.list.childElementCount),this.updateContactsLength(!0)},i=new Xs({avatarSize:42,createChatListOptions:{dialogSize:48,new:!0},autonomous:!1,onListLengthChange:s});this.loadContacts=()=>{const t=xt.a.height/60|0;e.splice(0,t).filter(this.verifyPeerIdForContacts).forEach(e=>{i.add(e)}),e.length||(this.loadContacts=void 0)},this.loadContacts(),this.processContact=e=>{if(e.isAnyChat())return;const t=this.verifyPeerIdForContacts(e),s=i.has(e);!s&&t?i.add(e):s&&!t&&i.delete(e)};const n=i.list;n.classList.add("chatlist-new"),this.setListClickListener(n),a.content.append(n),t=!0,s()}),i.append(a.container)},this.verifyPeerIdForContacts=e=>e.isContact()&&!i.a.getDialogOnly(e),this.onChatsRegularScroll=()=>{this.sliceTimeout&&clearTimeout(this.sliceTimeout),this.sliceTimeout=window.setTimeout(()=>{this.sliceTimeout=void 0,this.chatList.childElementCount&&!this.processContact&&Object(Re.c)(()=>{const e=performance.now(),t=this.scroll.scrollTop,s=this.chatList.firstElementChild,i=this.scroll.container.getBoundingClientRect(),n=s.getBoundingClientRect(),a=Array.from(this.scroll.splitUp.children);let o=this.scroll.splitUp.offsetTop;o&&t{const t=e.dataset.peerId.toPeerId();this.deleteDialog(t)}),this.setOffsets(),this.scroll.scrollTop=c.offsetTop-h,this.log("slice time",performance.now()-e)})},200)},this.onChatsScrollTop=()=>this.onChatsScroll("top"),this.onChatsScroll=(e="bottom")=>this.scroll.loadedAll[e]?(this.loadContacts&&this.loadContacts(),Promise.resolve()):this.loadDialogsPromise?this.loadDialogsPromise:(this.log("onChatsScroll",e),this.loadDialogs(e)),this.chatsPreloader=Object(ee.f)(null,!0),this.allUnreadCount=this.folders.menu.querySelector(".badge"),this.folders.menuScrollContainer=this.folders.menu.parentElement,this.onListLengthChange=Object(vt.a)(this._onListLengthChange,100,!1,!0);const e=document.createElement("div");e.classList.add("connection-status-bottom"),e.append(this.folders.container),he.a&&ei({element:this.folders.container,onSwipe:e=>{const t=s.prevId();s(e>0?t+1:t-1)}}),this.allChatsIntlElement=new T.c.IntlElement({key:"FilterAllChatsShort"}),this.setFilterId(0),this.addFilter({id:this.filterId,title:"",titleEl:this.allChatsIntlElement.element,orderIndex:0}),this.sortedList=this.sortedLists[this.filterId],this.scroll=this.scrollables[this.filterId],a.a.addEventListener("state_cleared",()=>{I.c.getState().then(e=>{this.loadedDialogsAtLeastOnce=!1,E.a.clear(),G.a.clear();const t=i.a.filtersStorage.filters;for(const e in t)a.a.dispatchEvent("updateDialogFilter",{_:"updateDialogFilter",id:+e});i.a.clear(),this.sortedList.clear(),this.onTabChange(),this.onStateLoaded(e)})});const t=new P.a(this.folders.menuScrollContainer);e.prepend(this.folders.menuScrollContainer);const s=Object(J.a)(this.folders.menu,this.folders.container,(e,t)=>{e=+t.dataset.filterId||0,ae.f||(e?this.filtersNavigationItem||(this.filtersNavigationItem={type:"filters",onPop:()=>{s(0),this.filtersNavigationItem=void 0}},j.a.unshiftItem(this.filtersNavigationItem)):this.filtersNavigationItem&&(j.a.removeItem(this.filtersNavigationItem),this.filtersNavigationItem=void 0)),this.filterId!==e&&(this.sortedLists[e].clear(),this.setFilterId(e),this.onTabChange())},()=>{for(const e in this.sortedLists)+e!==this.filterId&&this.sortedLists[e].clear()},void 0,t);this.folders.menu.firstElementChild.click(),i.a.construct(),I.c.getState().then(e=>this.onStateLoaded(e)),b.b.addEventListener("resize",()=>{this.changeFiltersAllChatsKey()}),new wc(this.chatsContainer),this.chatsContainer.append(e),setTimeout(()=>{oe.a.loadLottieWorkers()},200)}get chatList(){return this.sortedList.list}setFilterId(e){this.filterId=e,this.indexKey=i.a.dialogsStorage?i.a.dialogsStorage.getDialogIndexKey(this.filterId):"index",a.a.filterId=e}setOnlineStatus(e,t){const s=e.classList.contains("is-online");!s&&t&&e.classList.add("is-online"),Object(ps.a)(e,"is-visible",t,250,t?void 0:()=>{e.classList.remove("is-online")},t&&!s?2:0)}initListeners(){a.a.addEventListener("user_update",e=>{var t;const s=e.toPeerId(),i=this.getDialogDom(s);if(i&&!E.a.isBot(e)&&s!==a.a.myId){const s="userStatusOnline"===(null===(t=E.a.getUser(e).status)||void 0===t?void 0:t._);this.setOnlineStatus(i.avatarEl,s)}}),a.a.addEventListener("chat_update",e=>{const t=e.toPeerId(!0),s=i.a.getDialogOnly(t);s&&this.processDialogForCallStatus(s)}),a.a.addEventListener("folder_unread",e=>{this.setFilterUnreadCount(e.id)}),a.a.addEventListener("contacts_update",e=>{this.processContact&&this.processContact(e.toPeerId())}),a.a.addEventListener("dialog_flush",({peerId:e})=>{const t=i.a.getDialogOnly(e);t&&(this.setLastMessage(t,void 0,void 0,void 0,void 0,void 0,!0),this.validateDialogForFilter(t),this.setFiltersUnreadCount())}),a.a.addEventListener("dialogs_multiupdate",e=>{for(const t in e){const s=e[t];this.updateDialog(s),this.processContact&&this.processContact(t.toPeerId()),this.validateDialogForFilter(s)}}),a.a.addEventListener("dialog_drop",({peerId:e})=>{this.deleteDialog(e),this.processContact&&this.processContact(e)}),a.a.addEventListener("dialog_unread",({peerId:e})=>{const t=i.a.getDialogOnly(e);t&&(this.setUnreadMessages(t),this.validateDialogForFilter(t))}),a.a.addEventListener("dialog_notify_settings",e=>{this.validateDialogForFilter(e),this.setUnreadMessages(e),this.setFiltersUnreadCount()}),a.a.addEventListener("dialog_draft",({dialog:e,drop:t,peerId:s})=>{t?this.sortedList.delete(s):this.updateDialog(e),this.processContact&&this.processContact(s)}),a.a.addEventListener("peer_changed",e=>{for(const t of this.lastActiveElements)t.dataset.peerId.toPeerId()!==e&&this.setDialogActive(t,!1);Array.from(document.querySelectorAll(`[data-autonomous="0"] li[data-peer-id="${e}"]`)).forEach(e=>{this.setDialogActive(e,!0)})}),a.a.addEventListener("filter_update",e=>{if(!this.filtersRendered[e.id])return void this.addFilter(e);if(e.id===this.filterId){const e=i.a.dialogsStorage.getCachedDialogs(!0);this.validateListForFilter();for(let t=0,s=e.length;t{const t=this.filtersRendered[e.id];t&&(this.folders.menu.firstElementChild.click(),t.container.remove(),t.menu.remove(),delete this.sortedLists[e.id],delete this.scrollables[e.id],delete this.filtersRendered[e.id],this.onFiltersLengthChange())}),a.a.addEventListener("filter_order",e=>{const t=this.folders.menu;e.forEach(e=>{const s=i.a.filtersStorage.getFilter(e),n=this.filtersRendered[e];this.sortedLists[e].indexKey=i.a.dialogsStorage.getDialogIndexKey(e),qs(n.menu,t,s.orderIndex),qs(n.container,this.folders.container,s.orderIndex)}),this.indexKey=i.a.dialogsStorage.getDialogIndexKey(this.filterId)}),a.a.addEventListener("peer_typings",({peerId:e,typings:t})=>{const s=i.a.getDialogOnly(e);s&&(t.length?this.setTyping(s):this.unsetTyping(s))})}setDialogActive(e,t){const s=e.dialogDom;e.classList.toggle("active",t),t?this.lastActiveElements.add(e):this.lastActiveElements.delete(e),(null==s?void 0:s.callIcon)&&s.callIcon.setActive(t)}onStateLoaded(e){return kc(this,void 0,void 0,(function*(){if(e.notifySettings)for(const t in e.notifySettings)Object(ks.a)(t),qt.a.savePeerSettings({key:t,settings:e.notifySettings[t]});qt.a.getNotifyPeerTypeSettings(),this.initedListeners||(this.initListeners(),this.initedListeners=!0);const t=i.a.filtersStorage.getDialogFilters().then(e=>{for(const t of e)this.addFilter(t)});return e.filters&&Object.keys(e.filters).length&&(yield t,this.showFiltersPromise&&(yield this.showFiltersPromise)),I.c.storagesResults.dialogs.length&&Wi.a.addMissedDialogs(),this.onChatsScroll().then(()=>{i.a.fillConversations()})}))}getOffsetIndex(e){return{index:this.scroll.loadedAll[e]?0:this.offsets[e]}}isDialogMustBeInViewport(e){if(void 0!==e.migratedTo||!this.testDialogForFilter(e))return!1;const t=this.getOffsetIndex("top"),s=this.getOffsetIndex("bottom");if(!t.index&&!s.index)return!0;const i=e[this.indexKey];return(!t.index||i<=t.index)&&(!s.index||i>=s.index)}deleteDialog(e){this.sortedList.delete(e)}updateDialog(e){if(!this.isDialogMustBeInViewport(e))return void this.deleteDialog(e.peerId);if(!this.sortedList.has(e.peerId))return void this.sortedList.add(e.peerId);const t=this.getDialogDom(e.peerId);t&&(this.setLastMessage(e,void 0,t,void 0,void 0,void 0,!0),this.sortedList.update(e.peerId))}setFilterUnreadCount(e){var t;const s=0===e?this.allUnreadCount:null===(t=this.filtersRendered[e])||void 0===t?void 0:t.unread;if(!s)return;const n=i.a.dialogsStorage.getFolder(e),a=0===e||!!n.dialogs.find(e=>(e.unread_count||e.pFlags.unread_mark)&&!qt.a.isPeerLocalMuted(e.peerId,!0));s.classList.toggle("badge-gray",!a);const o=n.unreadDialogsCount;s.innerText=o?""+o:""}setFiltersUnreadCount(){for(const e in this.filtersRendered)this.setFilterUnreadCount(+e)}validateListForFilter(){const e=i.a.filtersStorage.getFilter(this.filterId)||null;this.sortedList.getAll().forEach(t=>{const s=i.a.getDialogOnly(t.id);this.testDialogForFilter(s,e)||this.deleteDialog(t.id)})}validateDialogForFilter(e,t){this.getDialogDom(e.peerId)&&(this.testDialogForFilter(e,t)||this.deleteDialog(e.peerId))}testDialogForFilter(e,t=i.a.filtersStorage.getFilter(this.filterId)){return!(!e||t&&!i.a.filtersStorage.testDialogForFilter(e,t)||!t&&this.filterId!==e.folder_id)}generateScrollable(e,t){const s=new P.b(null,"CL",500);s.container.addEventListener("scroll",this.onChatsRegularScroll),s.container.dataset.filterId=""+t,s.onScrolledTop=this.onChatsScrollTop,s.onScrolledBottom=this.onChatsScroll,s.setVirtualContainer(e);const n=new Tc(e,i.a.dialogsStorage?i.a.dialogsStorage.getDialogIndexKey(t):"index",this.onListLengthChange);return this.scrollables[t]=s,this.sortedLists[t]=n,s}addFilter(e){if(this.filtersRendered[e.id])return;const t=document.createElement("div");t.classList.add("menu-horizontal-div-item");const s=document.createElement("span"),i=document.createElement("span");i.classList.add("text-super"),e.titleEl?i.append(e.titleEl):i.innerHTML=X.a.wrapEmojiText(e.title);const n=document.createElement("div");n.classList.add("badge","badge-20","badge-primary");const a=document.createElement("i");s.append(i,n,a),Object(te.a)(t),t.append(s);qs(t,this.folders.menu,e.orderIndex);const o=this.createChatList(),r=this.generateScrollable(o,e.id);r.container.classList.add("tabs-tab","chatlist-parts");const l=document.createElement("div");l.classList.add("chatlist-top");const c=document.createElement("div");c.classList.add("chatlist-bottom"),l.append(o),r.container.append(l,c);const d=r.container;qs(r.container,this.folders.container,e.orderIndex),this.setListClickListener(o,null,!0),this.filtersRendered[e.id]={menu:t,container:d,unread:n,title:i},this.onFiltersLengthChange()}changeFiltersAllChatsKey(){const e=this.folders.menuScrollContainer.firstElementChild,t=e.scrollWidth>e.clientWidth?"FilterAllChatsShort":"FilterAllChats";this.allChatsIntlElement.compareAndUpdate({key:t})}onFiltersLengthChange(){return this.showFiltersPromise||(this.showFiltersPromise=new Promise(e=>{window.setTimeout(()=>{const t=Object.keys(this.filtersRendered).length>1,s=!this.folders.menuScrollContainer.classList.contains("hide");t!==s&&(this.folders.menuScrollContainer.classList.toggle("hide",!t),t&&!s&&this.setFiltersUnreadCount(),this.chatsContainer.classList.toggle("has-filters",t)),this.changeFiltersAllChatsKey(),this.showFiltersPromise=void 0,e()},0)})),this.showFiltersPromise}loadDialogs(e){if(this.loadDialogsPromise)return this.loadDialogsPromise;const t=new Promise(s=>kc(this,void 0,void 0,(function*(){const{chatList:n,filterId:a,indexKey:o}=this;let r=xt.a.height/72*1.25|0,l=0;const{index:c}=this.getOffsetIndex(e);if(c)if("top"===e){const e=i.a.dialogsStorage.getFolderDialogs(a,!0),t=e.findIndex(e=>e[o]<=c),s=Math.max(0,t-r);r=t-s,l=e[s][o]+1}else l=c;try{const s=i.a.getConversations("",l,r,a,!0);if(!s.cached&&!n.childElementCount){n.parentElement.append(this.chatsPreloader)}const c=yield s.promise;if(this.loadDialogsPromise!==t)return;if("bottom"===e?c.isEnd&&(this.scroll.loadedAll[e]=!0):c.isTopEnd&&(this.scroll.loadedAll[e]=!0),this.loadedDialogsAtLeastOnce=!0,c.dialogs.length){const t="top"===e?c.dialogs.slice().reverse():c.dialogs,s=[],n=[],a=e=>{n.push(e)};t.forEach(e=>{if(!i.a.getDialogOnly(e.peerId))return;const t=this.sortedList.add(e.peerId,!0,a,!1);t.loadPromises&&s.push(...t.loadPromises)}),yield Promise.all(s).finally(),n.forEach(e=>e())}else this.onListLengthChange();const d=c.dialogs["top"===e?0:c.dialogs.length-1];d&&(this.offsets[e]=d[o]),this.log.debug("getDialogs "+r+" dialogs by offset:",l,c,n.childElementCount),setTimeout(()=>{this.scroll.onScroll()},0)}catch(e){this.log.error(e)}this.chatsPreloader.parentElement&&this.chatsPreloader.remove(),s()}))).finally(()=>{this.loadDialogsPromise=void 0});return this.loadDialogsPromise=t}generateEmptyPlaceholder(e){const t="empty-placeholder",s=document.createElement("div");s.classList.add(t,t+"-"+e.classNameType);const i=document.createElement("div");i.classList.add(t+"-header"),Object(T.b)(i,e.title);const n=document.createElement("div");return n.classList.add(t+"-subtitle"),e.subtitle&&Object(T.b)(n,e.subtitle,e.subtitleArgs),s.append(i,n),{container:s,header:i,subtitle:n}}checkIfPlaceholderNeeded(){if(1===this.filterId)return;const e=this.chatList,t=e.parentElement;let s=Array.from(t.children).find(e=>e.matches(".empty-placeholder"));const n=this.scroll.loadedAll.bottom&&!e.childElementCount;if(n&&s)return;if(!n)return void(s&&(t.classList.remove("with-placeholder"),s.remove()));let a,o;if(this.filterId){a=this.generateEmptyPlaceholder({title:"FilterNoChatsToDisplay",subtitle:"FilterNoChatsToDisplayInfo",classNameType:o="folder"}),s=a.container,s.prepend(function({emoji:e,width:t,height:s}){const i=document.createElement("div"),n=Cs.a.getAnimatedEmojiSticker(e);return n?Bs({doc:n,div:i,loop:!1,play:!0,width:t,height:s,emoji:e}).then(()=>{}):i.classList.add("media-sticker-wrapper"),{container:i}}({emoji:"📂",width:128,height:128}).container);const e=Object(B.a)("btn-primary btn-color-primary btn-control tgico",{text:"FilterHeaderEdit",icon:"settings"});Object(l.b)(e,()=>{new Sn(Xn).open(i.a.filtersStorage.getFilter(this.filterId))}),s.append(e)}else{a=this.generateEmptyPlaceholder({title:"ChatList.Main.EmptyPlaceholder.Title",classNameType:o="dialogs"}),s=a.container;const e=document.createElement("img");e.classList.add("empty-placeholder-dialogs-icon"),this.emptyDialogsPlaceholderSubtitle=new T.c.IntlElement({element:a.subtitle}),Promise.all([this.updateContactsLength(!1),Object(Ss.b)(e,"assets/img/EmptyChats.svg"),Object(Re.d)()]).then(([e])=>{s.classList.add("visible"),t.classList.toggle("has-contacts",!!e)}),s.prepend(e)}t.append(s),t.classList.add("with-placeholder"),t.dataset.placeholderType=o}updateContactsLength(e){return this.updateContactsLengthPromise?this.updateContactsLengthPromise:this.updateContactsLengthPromise=E.a.getContacts().then(t=>{const s=this.emptyDialogsPlaceholderSubtitle;if(s){let e,i;t.length?(e="ChatList.Main.EmptyPlaceholder.Subtitle",i=[Object(T.d)("Contacts.Count",[t.length])]):(e="ChatList.Main.EmptyPlaceholder.SubtitleNoContacts",i=[]),s.compareAndUpdate({key:e,args:i})}if(e){this.chatList.parentElement.classList.toggle("has-contacts",!!t.length)}return this.updateContactsLengthPromise=void 0,t.length})}removeContactsPlaceholder(){const e=this.chatList,t=e.parentElement.parentElement,s=e.parentElement.nextElementSibling;t.classList.remove("with-contacts"),s.innerHTML="",this.loadContacts=void 0,this.processContact=void 0}setOffsets(){const e=this.chatList,t=this.getDialogFromElement(e.firstElementChild),s=this.getDialogFromElement(e.lastElementChild),i=this.indexKey;this.offsets.top=t[i],this.offsets.bottom=s[i]}getDialogFromElement(e){return i.a.getDialogOnly(e.dataset.peerId.toPeerId())}setListClickListener(e,t,s=!1,n=!1,a=!1){let o;const r=(a?ic.setInnerPeer:ic.setPeer).bind(ic);e.dataset.autonomous=""+ +n,e.addEventListener("mousedown",e=>{if(0!==e.button)return;this.log("dialogs click list");const s=e.target,i=Object(It.a)(s,"LI");if(i){if(n){const e=o===i;o&&!e&&o.classList.remove("active"),i&&(i.classList.add("active"),o=i,this.lastActiveElements.add(i))}if(i){t&&t();const e=i.dataset.peerId.toPeerId(),s=+i.dataset.mid||void 0;r({peerId:e,lastMsgId:s})}else r()}},{capture:!0}),le.b&&e.addEventListener("dblclick",e=>{const t=Object(It.a)(e.target,"LI");if(t){const e=t.dataset.peerId.toPeerId();this.log("debug dialog:",i.a.getDialogByPeerId(e))}}),s&&Object(ee.a)(e,this.contextMenu.onContextMenu)}createChatList(e={}){const t=document.createElement("ul");return t.classList.add("chatlist"),e.new&&t.classList.add("chatlist-new"),e.dialogSize&&t.classList.add("chatlist-"+e.dialogSize),t}setLastMessage(e,t,s,n,l,c=!1,d=!1){if(!s&&!(s=this.getDialogDom(e.peerId)))return;let h;if(t||(e.draft&&"draftMessage"===e.draft._&&(h=e.draft),t=i.a.getMessageByPeer(e.peerId,e.top_message)),"messageEmpty"===t._)return s.lastMessageSpan.innerHTML="",s.lastTimeSpan.innerHTML="",delete s.listEl.dataset.mid,void(d&&this.setUnreadMessages(e,s,c));const p=e.peerId,u=t&&i.a.isRestricted(t);{let e;if(!t.deleted&&!h&&!u){const s=i.a.getMediaFromMessage(t),n=new Set(["video","gif","round"]);if(s&&("photo"===s._||n.has(s.type))){const i=r.a.choosePhotoSize(s,20,20);if("photoSizeEmpty"!==i._&&(e=document.createElement("div"),e.classList.add("dialog-subtitle-media"),"round"===s.type&&e.classList.add("is-round"),js({photo:s,message:t,container:e,withoutPreloader:!0,size:i,loadPromises:l}),n.has(s.type))){const t=document.createElement("span");t.classList.add("tgico-play"),e.append(t)}}}const c=!!e&&!!(null==t?void 0:t.message);let d;if(d=n&&t.message?i.a.wrapMessageForReply(t,void 0,void 0,!1,n,c):h?i.a.wrapMessageForReply(h):t.deleted?document.createDocumentFragment():i.a.wrapMessageForReply(t,void 0,void 0,!1,void 0,c),e&&d.prepend(e),Object(k.a)(s.lastMessageSpan,d),h){const e=document.createElement("b");e.classList.add("danger"),e.append(Object(T.d)("Draft"),": "),s.lastMessageSpan.prepend(e)}else if(p.isAnyChat()&&p!==t.fromId&&!t.action){const e=o.a.getPeer(t.fromId);if(e&&e.id){const i=document.createElement("b");e.id===a.a.myId?i.append(Object(T.d)("FromYou")):i.append(new Tt.a({peerId:t.fromId,onlyFirstName:!0}).element),i.append(": "),s.lastMessageSpan.prepend(i)}}}if(!t.deleted||h){const e=h?Math.max(h.date,t.date||0):t.date;Object(k.a)(s.lastTimeSpan,Object(ne.c)(new Date(1e3*e)))}else s.lastTimeSpan.textContent="";null!==d&&(d?this.setUnreadMessages(e,s,c):s.listEl.dataset.mid=t.mid)}setUnreadMessages(e,t=this.getDialogDom(e.peerId),s=!1){var n;if(!t)return;if(!s){const s=qt.a.isPeerLocalMuted(e.peerId,!0);s!==t.listEl.classList.contains("is-muted")&&Object(ps.a)(t.listEl,"is-muted",s,200)}let o;if("draftMessage"!==(null===(n=e.draft)||void 0===n?void 0:n._)){const t=i.a.getMessageByPeer(e.peerId,e.top_message);!t.deleted&&t.pFlags.out&&t.peerId!==a.a.myId&&(o=t)}!function(e,t,s){let i;if((null==t?void 0:t.pFlags.out)&&(i=t.pFlags.is_outgoing?"sending":t.pFlags.unread?"check":"checks"),!i)return void(e.textContent="");const n="tgico-"+i,a=e.lastElementChild;if(a&&a.classList.contains(n))return;const o=document.createElement("i");o.classList.add("sending-status-icon",n),e.append(o),a&&a.remove()}(t.statusSpan,o);const r=i.a.filtersStorage.getFilter(this.filterId);let l;l=r?-1!==r.pinnedPeerIds.indexOf(e.peerId):!!e.pFlags.pinned;const c=i.a.isDialogUnread(e),d=l||c,h=Object(Ms.a)(t.unreadBadge);d&&!h&&t.subtitleEl.append(t.unreadBadge);const p=e.unread_mentions_count&&(e.unread_mentions_count>1||e.unread_count>1),u=t.mentionsBadge&&Object(Ms.a)(t.mentionsBadge);p&&(t.mentionsBadge||(t.mentionsBadge=document.createElement("div"),t.mentionsBadge.className="dialog-subtitle-badge badge badge-24 mention mention-badge",t.mentionsBadge.innerText="@",t.subtitleEl.insertBefore(t.mentionsBadge,t.lastMessageSpan.nextSibling)));const g=s?0:200;if(Object(ps.a)(t.unreadBadge,"is-visible",d,g,d?void 0:()=>{t.unreadBadge.remove()},h?0:2),t.mentionsBadge&&Object(ps.a)(t.mentionsBadge,"is-visible",p,g,p?void 0:()=>{t.mentionsBadge.remove(),delete t.mentionsBadge},u?0:2),!d)return;l?t.unreadBadge.classList.add("tgico-chatspinned","tgico"):t.unreadBadge.classList.remove("tgico-chatspinned","tgico");let m=!0,b=!1;e.unread_mentions_count&&1===e.unread_count?(t.unreadBadge.innerText="@",b=!0):c?t.unreadBadge.innerText=""+(e.unread_count||" "):(t.unreadBadge.innerText="",m=!1),t.unreadBadge.classList.toggle("unread",m),t.unreadBadge.classList.toggle("mention",b)}getDialogDom(e){const t=this.sortedList.get(e);return null==t?void 0:t.dom}getDialog(e){if("object"!=typeof e){const t=i.a.getDialogOnly(e);if(!t){const t=e||Ne.c;return{peerId:t,peer:o.a.getOutputPeer(t),pFlags:{}}}return t}return e}setCallStatus(e,t){let{callIcon:s,listEl:i}=e;if(!s&&t){const{canvas:t,startAnimation:n}=e.callIcon=s=Pc(i.classList.contains("active"));t.classList.add("dialog-group-call-icon"),i.append(t),n()}s&&Object(ps.a)(e.callIcon.canvas,"is-visible",t,200,t?void 0:()=>{e.callIcon.canvas.remove(),e.callIcon=void 0},t?2:0)}addListDialog(e){const t=this.getDialog(e.dialog);e.autonomous=!1;const s=this.addDialogNew(e);if(s){const{peerId:i}=t;qt.a.isPeerLocalMuted(i,!0)&&s.dom.listEl.classList.add("is-muted"),i.isUser()||this.processDialogForCallStatus(t,s.dom),this.setLastMessage(t,void 0,s.dom,void 0,e.loadPromises,e.isBatch,!0)}return s}processDialogForCallStatus(e,t){if(!pr)return;if(t||(t=this.getDialogDom(e.peerId)),!t)return;const s=G.a.getChat(e.peerId.toChatId());this.setCallStatus(t,!(!s.pFlags.call_active||!s.pFlags.call_not_empty))}addDialogAndSetLastMessage(e){const{peerId:t,message:s,query:n}=e,a=Ac.addDialogNew(Object.assign(Object.assign(Object.assign({},e),i.a.getMessageSenderPeerIdOrName(s)),{dialog:this.getDialog(t)}));return this.setLastMessage(a.dialog,s,a.dom,n),s.peerId!==t&&(a.dom.listEl.dataset.peerId=""+s.peerId),a}addDialogNew(e){return this.addDialog(e.dialog,e.container,e.drawStatus,e.rippleEnabled,e.onlyFirstName,e.meAsSaved,e.append,e.avatarSize,e.autonomous,e.lazyLoadQueue,e.loadPromises,e.fromName)}addDialog(e,t,s=!0,i=!0,n=!1,o=!0,r=!0,l=54,c=!!t,d,h,p){var u,g;const m=this.getDialog(e),b=m.peerId,v=new bc;if(v.classList.add("dialog-avatar","avatar-"+l),v.updateWithOptions({loadPromises:h,lazyLoadQueue:d,isDialog:!!o,peerId:b,peerTitle:p}),s&&b!==a.a.myId&&b.isUser()){"userStatusOnline"===(null===(u=E.a.getUser(b).status)||void 0===u?void 0:u._)&&this.setOnlineStatus(v,!0)}const f=document.createElement("div");f.classList.add("user-caption");const y=document.createElement("span");y.classList.add("user-title");const w=new Tt.a({peerId:b,fromName:p,dialog:o,onlyFirstName:n,plainText:!1});y.append(w.element),y.classList.add("tgico"),y.append(...Zt(b));const S=document.createElement("span");S.classList.add("user-last-message"),S.setAttribute("dir","auto");const L=document.createElement("li");L.classList.add("chatlist-chat"),i&&Object(te.a)(L),L.append(v,f),L.dataset.peerId=""+b;const C=document.createElement("span");C.classList.add("message-status","sending-status");const M=document.createElement("span");M.classList.add("message-time");const I=document.createElement("div");I.className="dialog-subtitle-badge badge badge-24";const P=document.createElement("p");P.classList.add("dialog-title");const k=document.createElement("span");k.classList.add("dialog-title-details"),k.append(C,M),P.append(y,k);const T=document.createElement("p");T.classList.add("dialog-subtitle"),T.append(S),f.append(P,T);const x={avatarEl:v,captionDiv:f,titleSpan:w.element,titleSpanContainer:y,statusSpan:C,lastTimeSpan:M,unreadBadge:I,lastMessageSpan:S,containerEl:L,listEl:L,subtitleEl:T};if(t){t[r?"append":"prepend"](L)}return c||(L.dialogDom=x,(null===(g=ic.chat)||void 0===g?void 0:g.peerId)===b&&this.setDialogActive(L,!0)),{dom:x,dialog:m}}setTyping(e){const t=this.getDialogDom(e.peerId);if(!t)return;const s=t.lastMessageSpan.querySelector(".peer-typing-container"),i=ic.getPeerTyping(e.peerId,s);!s&&i&&(Object(k.a)(t.lastMessageSpan,i),t.lastMessageSpan.classList.add("user-typing"))}unsetTyping(e){const t=this.getDialogDom(e.peerId);t&&(t.lastMessageSpan.classList.remove("user-typing"),this.setLastMessage(e,null,t,void 0,void 0,void 0,null))}}const Ac=new xc;le.a.appDialogsManager=Ac;var Oc=t.default=Ac},191:function(e,t,s){"undefined"!=typeof self&&self,e.exports=function(e){var t={};function s(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,s),n.l=!0,n.exports}return s.m=e,s.c=t,s.d=function(e,t,i){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(s.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)s.d(i,n,function(t){return e[t]}.bind(null,n));return i},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=0)}([function(e,t,s){"use strict";(function(t){var s=t.AudioContext||t.webkitAudioContext,i=function(e){if(!i.isRecordingSupported())throw new Error("Recording is not supported in this browser");e||(e={}),this.state="inactive",this.config=Object.assign({bufferLength:4096,encoderApplication:2049,encoderFrameSize:20,encoderPath:"encoderWorker.min.js",encoderSampleRate:48e3,maxFramesPerPage:40,mediaTrackConstraints:!0,monitorGain:0,numberOfChannels:1,recordingGain:1,resampleQuality:3,streamPages:!1,reuseWorker:!1,wavBitDepth:16},e),this.encodedSamplePosition=0};i.isRecordingSupported=function(){return s&&t.navigator&&t.navigator.mediaDevices&&t.navigator.mediaDevices.getUserMedia&&t.WebAssembly},i.prototype.clearStream=function(){this.stream&&(this.stream.getTracks?this.stream.getTracks().forEach((function(e){e.stop()})):this.stream.stop(),delete this.stream),this.audioContext&&this.closeAudioContext&&(this.audioContext.close(),delete this.audioContext)},i.prototype.encodeBuffers=function(e){if("recording"===this.state){for(var t=[],s=0;s{this.encodeBuffers(e.inputBuffer)},this.monitorGainNode=this.audioContext.createGain(),this.setMonitorGain(this.config.monitorGain),this.monitorGainNode.connect(this.audioContext.destination),this.recordingGainNode=this.audioContext.createGain(),this.setRecordingGain(this.config.recordingGain),this.recordingGainNode.connect(this.scriptProcessorNode)},i.prototype.initSourceNode=function(e){return e&&e.context?t.Promise.resolve(e):t.navigator.mediaDevices.getUserMedia({audio:this.config.mediaTrackConstraints}).then(e=>(this.stream=e,this.audioContext.createMediaStreamSource(e)))},i.prototype.loadWorker=function(){this.encoder||(this.encoder=new t.Worker(this.config.encoderPath))},i.prototype.initWorker=function(){var e=(this.config.streamPages?this.streamPage:this.storePage).bind(this);return this.recordedPages=[],this.totalLength=0,this.loadWorker(),new Promise((t,s)=>{var i=s=>{switch(s.data.message){case"ready":t();break;case"page":this.encodedSamplePosition=s.data.samplePosition,e(s.data.page);break;case"done":this.encoder.removeEventListener("message",i),this.finish()}};this.encoder.addEventListener("message",i),this.encoder.postMessage(Object.assign({command:"init",originalSampleRate:this.audioContext.sampleRate,wavSampleRate:this.audioContext.sampleRate},this.config))})},i.prototype.pause=function(e){if("recording"===this.state){if(this.state="paused",e&&this.config.streamPages){var t=this.encoder;return new Promise((e,s)=>{var i=s=>{"flushed"===s.data.message&&(t.removeEventListener("message",i),this.onpause(),e())};t.addEventListener("message",i),t.postMessage({command:"flush"})})}return this.onpause(),Promise.resolve()}},i.prototype.resume=function(){"paused"===this.state&&(this.state="recording",this.onresume())},i.prototype.setRecordingGain=function(e){this.config.recordingGain=e,this.recordingGainNode&&this.audioContext&&this.recordingGainNode.gain.setTargetAtTime(e,this.audioContext.currentTime,.01)},i.prototype.setMonitorGain=function(e){this.config.monitorGain=e,this.monitorGainNode&&this.audioContext&&this.monitorGainNode.gain.setTargetAtTime(e,this.audioContext.currentTime,.01)},i.prototype.start=function(e){if("inactive"===this.state)return this.initAudioContext(e),this.initAudioGraph(),this.encodedSamplePosition=0,this.initWorker().then(()=>this.initSourceNode(e)).then(e=>{this.sourceNode=e,this.state="recording",this.onstart(),this.encoder.postMessage({command:"getHeaderPages"}),this.sourceNode.connect(this.monitorGainNode),this.sourceNode.connect(this.recordingGainNode)})},i.prototype.stop=function(){if("inactive"!==this.state){this.state="inactive",this.monitorGainNode.disconnect(),this.scriptProcessorNode.disconnect(),this.recordingGainNode.disconnect(),this.sourceNode.disconnect(),this.clearStream();var e=this.encoder;return new Promise(t=>{var s=i=>{"done"===i.data.message&&(e.removeEventListener("message",s),t())};e.addEventListener("message",s),e.postMessage({command:"done"}),this.config.reuseWorker||e.postMessage({command:"close"})})}return Promise.resolve()},i.prototype.destroyWorker=function(){"inactive"===this.state&&this.encoder&&(this.encoder.postMessage({command:"close"}),delete this.encoder)},i.prototype.storePage=function(e){this.recordedPages.push(e),this.totalLength+=e.length},i.prototype.streamPage=function(e){this.ondataavailable(e)},i.prototype.finish=function(){if(!this.config.streamPages){var e=new Uint8Array(this.totalLength);this.recordedPages.reduce((function(t,s){return e.set(s,t),t+s.length}),0),this.ondataavailable(e)}this.onstop(),this.config.reuseWorker||delete this.encoder},i.prototype.ondataavailable=function(){},i.prototype.onpause=function(){},i.prototype.onresume=function(){},i.prototype.onstart=function(){},i.prototype.onstop=function(){},e.exports=i}).call(this,s(1))},function(e,t){var s;s=function(){return this}();try{s=s||new Function("return this")()}catch(e){"object"==typeof window&&(s=window)}e.exports=s}])},65:function(e,t,s){"use strict";s.d(t,"b",(function(){return c})),s.d(t,"a",(function(){return d}));var i=s(14),n=s(4),a=s(101),o=s(91),r=s(32);class l{constructor(e,t="",s=document.createElement("div")){this.el=e,this.container=s,this.onScrollMeasure=0,this.lastScrollPosition=0,this.lastScrollDirection=0,this.isHeavyAnimationInProgress=!1,this.needCheckAfterAnimation=!1,this.onScroll=()=>{if(this.isHeavyAnimationInProgress)return this.cancelMeasure(),void(this.needCheckAfterAnimation=!0);(this.onScrolledTop||this.onScrolledBottom||this.splitUp||this.onAdditionalScroll)&&(this.onScrollMeasure||(this.onScrollMeasure=window.requestAnimationFrame(()=>{this.onScrollMeasure=0;const e=this.container[this.scrollProperty];this.lastScrollDirection=this.lastScrollPosition===e?0:this.lastScrollPositionthis.container.append(e)),e.append(this.container))}addScrollListener(){this.addedScrollListener||(this.addedScrollListener=!0,this.container.addEventListener("scroll",this.onScroll,{passive:!0,capture:!0}))}removeScrollListener(){this.addedScrollListener&&(this.addedScrollListener=!1,this.container.removeEventListener("scroll",this.onScroll,{capture:!0}))}setListeners(){this.removeHeavyAnimationListener||(window.addEventListener("resize",this.onScroll,{passive:!0}),this.addScrollListener(),this.removeHeavyAnimationListener=Object(o.a)(()=>{this.isHeavyAnimationInProgress=!0,this.onScrollMeasure&&(this.cancelMeasure(),this.needCheckAfterAnimation=!0)},()=>{this.isHeavyAnimationInProgress=!1,this.needCheckAfterAnimation&&(this.onScroll(),this.needCheckAfterAnimation=!1)}))}removeListeners(){this.removeHeavyAnimationListener&&(window.removeEventListener("resize",this.onScroll),this.removeScrollListener(),this.removeHeavyAnimationListener(),this.removeHeavyAnimationListener=void 0)}append(e){this.container.append(e)}scrollIntoViewNew(e){return Object(a.b)(Object.assign(Object.assign({},e),{container:this.container}))}cancelMeasure(){this.onScrollMeasure&&(window.cancelAnimationFrame(this.onScrollMeasure),this.onScrollMeasure=0)}}class c extends l{constructor(e,t="",s=300,i){super(e,t),this.onScrollOffset=s,this.loadedAll={top:!0,bottom:!1},this.checkForTriggers=()=>{if(!this.onScrolledTop&&!this.onScrolledBottom)return;if(this.isHeavyAnimationInProgress)return void this.onScroll();const e=this.container.scrollHeight;if(!e)return;const t=e-this.container.clientHeight,s=this.lastScrollPosition;this.onScrolledTop&&s<=this.onScrollOffset&&this.lastScrollDirection<=0&&this.onScrolledTop(),this.onScrolledBottom&&t-s<=this.onScrollOffset&&this.lastScrollDirection>=0&&this.onScrolledBottom()},this.container.classList.add("scrollable-y"),this.setListeners(),this.scrollProperty="scrollTop"}setVirtualContainer(e){this.splitUp=e,this.log("setVirtualContainer:",e,this)}prepend(...e){(this.splitUp||this.padding||this.container).prepend(...e)}append(...e){(this.splitUp||this.padding||this.container).append(...e)}getDistanceToEnd(){return this.scrollHeight-Math.round(this.scrollTop+this.container.offsetHeight)}get isScrolledDown(){return this.getDistanceToEnd()<=1}set scrollTop(e){this.container.scrollTop=e}get scrollTop(){return this.container.scrollTop}setScrollTopSilently(e){this.lastScrollPosition=e,this.ignoreNextScrollEvent(),this.scrollTop=e}ignoreNextScrollEvent(){this.removeHeavyAnimationListener&&(this.removeScrollListener(),this.container.addEventListener("scroll",e=>{Object(r.a)(e),this.addScrollListener()},{capture:!0,passive:!1,once:!0}))}get scrollHeight(){return this.container.scrollHeight}}class d extends l{constructor(e,t="",s=300,n=15,a=document.createElement("div")){if(super(e,t,a),this.onScrollOffset=s,this.splitCount=n,this.container=a,this.container.classList.add("scrollable-x"),!i.a){const e=e=>{!e.deltaX&&this.container.scrollWidth>this.container.clientWidth&&(this.container.scrollLeft+=e.deltaY/4,Object(r.a)(e))};this.container.addEventListener("wheel",e,{passive:!1})}this.scrollProperty="scrollLeft"}}},68:function(e,t,s){"use strict";s.d(t,"a",(function(){return r}));var i=s(34),n=s(75),a=s(7),o=s(44);class r{constructor(e={}){const t=this.label=document.createElement("label");t.classList.add("checkbox-field"),e.restriction&&t.classList.add("checkbox-field-restriction"),e.round&&t.classList.add("checkbox-field-round"),e.disabled&&this.toggleDisability(!0);const s=this.input=document.createElement("input");let r;if(s.classList.add("checkbox-field-input"),s.type="checkbox",e.name&&(s.id="input-"+e.name),e.checked&&(s.checked=!0),e.stateKey&&i.c.getState().then(t=>{const n=Object(o.a)(t,e.stateKey);let a;a=e.stateValues?1===e.stateValues.indexOf(n):n,this.setValueSilently(a),s.addEventListener("change",()=>{let t;t=e.stateValues?e.stateValues[s.checked?1:0]:s.checked,i.c.setByKey(e.stateKey,t)})}),e.text?(r=this.span=document.createElement("span"),r.classList.add("checkbox-caption"),Object(a.b)(r,e.text,e.textArgs)):t.classList.add("checkbox-without-caption"),t.append(s),e.toggle){t.classList.add("checkbox-field-toggle");const e=document.createElement("div");e.classList.add("checkbox-toggle"),t.append(e)}else{const e=document.createElement("div");e.classList.add("checkbox-box");const s=document.createElementNS("http://www.w3.org/2000/svg","svg");s.classList.add("checkbox-box-check"),s.setAttributeNS(null,"viewBox","0 0 24 24");const i=document.createElementNS("http://www.w3.org/2000/svg","use");i.setAttributeNS(null,"href","#check"),i.setAttributeNS(null,"x","-1"),s.append(i);const n=document.createElement("div");n.classList.add("checkbox-box-background");const a=document.createElement("div");a.classList.add("checkbox-box-border"),e.append(a,n,s),t.append(e)}r&&t.append(r),e.withRipple?(t.classList.add("checkbox-ripple","hover-effect"),Object(n.a)(t,void 0,void 0,!0)):e.withHover&&t.classList.add("hover-effect")}get checked(){return this.input.checked}set checked(e){this.setValueSilently(e);const t=new Event("change",{bubbles:!0,cancelable:!0});this.input.dispatchEvent(t)}setValueSilently(e){this.input.checked=e}toggleDisability(e){return this.label.classList.toggle("checkbox-disabled",e),()=>this.toggleDisability(!e)}}},76:function(e,t,s){"use strict";function i(e,t){return t?e.forEach(e=>e.setAttribute("disabled","true")):e.forEach(e=>e.removeAttribute("disabled")),()=>i(e,!t)}s.d(t,"a",(function(){return i}))},82:function(e,t,s){"use strict";function i(e,t){return e.closest(t)}s.d(t,"a",(function(){return i}))},92:function(e,t,s){"use strict";var i=s(1),n=s(8);const a=new class{getState(){return n.a.invokeApi("account.getPassword").then(e=>e)}updateSettings(e={}){return this.getState().then(t=>{let s,i;const a={password:null,new_settings:{_:"account.passwordInputSettings",hint:e.hint,email:e.email}};s=e.currentPassword?n.a.invokeCrypto("computeSRP",e.currentPassword,t,!1):Promise.resolve({_:"inputCheckPasswordEmpty"});const o=t.new_algo,r=new Uint8Array(o.salt1.length+32);return function(e){if(!crypto||!("getRandomValues"in crypto))throw new Error("NO_SECURE_RANDOM");crypto.getRandomValues(e)}(r),r.set(o.salt1,0),o.salt1=r,i=e.newPassword?n.a.invokeCrypto("computeSRP",e.newPassword,t,!0):Promise.resolve(new Uint8Array),Promise.all([s,i]).then(e=>(a.password=e[0],a.new_settings.new_algo=o,a.new_settings.new_password_hash=e[1],n.a.invokeApi("account.updatePasswordSettings",a)))})}check(e,t,s={}){return n.a.invokeCrypto("computeSRP",e,t,!1).then(e=>n.a.invokeApi("auth.checkPassword",{password:e},s).then(e=>("auth.authorization"===e._&&n.a.setUser(e.user),e)))}confirmPasswordEmail(e){return n.a.invokeApi("account.confirmPasswordEmail",{code:e})}resendPasswordEmail(){return n.a.invokeApi("account.resendPasswordEmail")}cancelPasswordEmail(){return n.a.invokeApi("account.cancelPasswordEmail")}};i.a.passwordManager=a;t.a=a}}]); -//# sourceMappingURL=11.485cff055ef366a5dc5a.chunk.js.map \ No newline at end of file diff --git a/public/11.485cff055ef366a5dc5a.chunk.js.map b/public/11.485cff055ef366a5dc5a.chunk.js.map deleted file mode 100644 index 106abb86..00000000 --- a/public/11.485cff055ef366a5dc5a.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/components/passwordInputField.ts","webpack:///./src/helpers/bytes/bytesCmp.ts","webpack:///./src/helpers/dom/placeCaretAtEnd.ts","webpack:///./src/components/monkeys/password.ts","webpack:///./src/components/monkeys/tracking.ts","webpack:///./src/components/codeInputField.ts","webpack:///./src/components/telInputField.ts","webpack:///./src/environment/mediaMimeTypesSupport.ts","webpack:///./src/helpers/dom/setInnerHTML.ts","webpack:///./src/helpers/filterChatPhotosMessages.ts","webpack:///./src/helpers/listLoader.ts","webpack:///./src/helpers/searchListLoader.ts","webpack:///./src/components/appSearch.ts","webpack:///./src/components/inputSearch.ts","webpack:///./src/components/buttonIcon.ts","webpack:///./src/components/sliderTab.ts","webpack:///./src/components/slider.ts","webpack:///./src/components/avatarEdit.ts","webpack:///./src/components/buttonCorner.ts","webpack:///./src/components/sidebarLeft/tabs/newGroup.ts","webpack:///./src/components/appMediaPlaybackController.ts","webpack:///./src/helpers/dom/attachGrabListeners.ts","webpack:///./src/components/rangeSelector.ts","webpack:///./src/components/buttonMenu.ts","webpack:///./src/components/buttonMenuToggle.ts","webpack:///./src/helpers/dom/controlsHover.ts","webpack:///./src/helpers/string/toHHMMSS.ts","webpack:///./src/lib/mediaPlayer.ts","webpack:///./src/helpers/schedulers/throttleWithRaf.ts","webpack:///./src/helpers/schedulers/throttleWith.ts","webpack:///./src/helpers/formatBytes.ts","webpack:///./src/components/audio.ts","webpack:///./src/components/divAndCaption.ts","webpack:///./src/components/chat/replyContainer.ts","webpack:///./src/helpers/array/accumulate.ts","webpack:///./src/components/groupedLayout.ts","webpack:///./src/components/editPeer.ts","webpack:///./src/components/radioForm.ts","webpack:///./src/components/row.ts","webpack:///./src/helpers/clipboard.ts","webpack:///./src/components/radioField.ts","webpack:///./src/components/toast.ts","webpack:///./src/components/usernameInputField.ts","webpack:///./src/components/popups/peer.ts","webpack:///./src/components/sidebarRight/tabs/chatType.ts","webpack:///./src/helpers/scrollableLoader.ts","webpack:///./src/components/appSelectPeers.ts","webpack:///./src/components/popups/pickUser.ts","webpack:///./src/components/sidebarRight/tabs/userPermissions.ts","webpack:///./src/components/sidebarRight/tabs/groupPermissions.ts","webpack:///./src/components/popups/deleteDialog.ts","webpack:///./src/components/sidebarRight/tabs/chatReactions.ts","webpack:///./src/components/sidebarRight/tabs/editChat.ts","webpack:///./src/components/sidebarRight/tabs/editContact.ts","webpack:///./src/components/sidebarLeft/tabs/addMembers.ts","webpack:///./src/environment/parallaxSupport.ts","webpack:///./src/components/generateFakeIcon.ts","webpack:///./src/components/generateTitleIcons.ts","webpack:///./src/components/generateVerifiedIcon.ts","webpack:///./src/components/swipeHandler.ts","webpack:///./src/components/peerProfileAvatars.ts","webpack:///./src/components/peerProfile.ts","webpack:///./src/components/sidebarRight/tabs/sharedMedia.ts","webpack:///./src/components/sidebarRight/index.ts","webpack:///./src/components/sidebarRight/tabs/pollResults.ts","webpack:///./src/components/stackedAvatars.ts","webpack:///./src/components/poll.ts","webpack:///./src/components/wrappers.ts","webpack:///./src/helpers/dom/positionElementByIndex.ts","webpack:///./src/helpers/sortedList.ts","webpack:///./src/components/sortedUserList.ts","webpack:///./src/helpers/dom/handleHorizontalSwipe.ts","webpack:///./src/helpers/dom/handleTabSwipe.ts","webpack:///./src/components/popups/forward.ts","webpack:///./src/components/popups/deleteMessages.ts","webpack:///./src/components/popups/sendNow.ts","webpack:///./src/helpers/dom/cancelSelection.ts","webpack:///./src/components/chat/selection.ts","webpack:///./src/helpers/dom/getSelectedText.ts","webpack:///./src/components/appSearchSuper..ts","webpack:///./src/helpers/dom/lockTouchScroll.ts","webpack:///./src/lib/appManagers/appPrivacyManager.ts","webpack:///./src/components/privacySection.ts","webpack:///./src/components/sidebarLeft/tabs/privacy/phoneNumber.ts","webpack:///./src/helpers/dom/anchorCopy.ts","webpack:///./src/components/sidebarLeft/tabs/2fa/passwordSet.ts","webpack:///./src/helpers/dom/canFocus.ts","webpack:///./src/components/sidebarLeft/tabs/2fa/emailConfirmation.ts","webpack:///./src/components/sidebarLeft/tabs/2fa/email.ts","webpack:///./src/components/sidebarLeft/tabs/2fa/hint.ts","webpack:///./src/components/sidebarLeft/tabs/2fa/reEnterPassword.ts","webpack:///./src/components/sidebarLeft/tabs/2fa/enterPassword.ts","webpack:///./src/components/sidebarLeft/tabs/2fa/index.ts","webpack:///./src/components/sidebarLeft/tabs/privacy/lastSeen.ts","webpack:///./src/components/sidebarLeft/tabs/privacy/profilePhoto.ts","webpack:///./src/components/sidebarLeft/tabs/privacy/forwardMessages.ts","webpack:///./src/components/sidebarLeft/tabs/privacy/addToGroups.ts","webpack:///./src/components/sidebarLeft/tabs/privacy/calls.ts","webpack:///./src/components/sidebarLeft/tabs/activeSessions.ts","webpack:///./src/components/sidebarLeft/tabs/blockedUsers.ts","webpack:///./src/helpers/string/convertKeyToInputKey.ts","webpack:///./src/components/sidebarLeft/tabs/privacyAndSecurity.ts","webpack:///./src/helpers/averageColor.ts","webpack:///./src/helpers/color.ts","webpack:///./src/helpers/highlightningColor.ts","webpack:///./src/components/chat/gradientRenderer.ts","webpack:///./src/components/colorPicker.ts","webpack:///./src/components/sidebarLeft/tabs/backgroundColor.ts","webpack:///./src/components/sidebarLeft/tabs/background.ts","webpack:///./src/components/popups/stickers.ts","webpack:///./src/helpers/eachMinute.ts","webpack:///./src/helpers/eachTimeout.ts","webpack:///./src/environment/geolocationSupport.ts","webpack:///./src/components/sidebarLeft/tabs/quickReaction.ts","webpack:///./src/components/sidebarLeft/tabs/generalSettings.ts","webpack:///./src/components/sidebarLeft/tabs/editProfile.ts","webpack:///./src/components/sidebarLeft/tabs/includedChats.ts","webpack:///./src/components/sidebarLeft/tabs/editFolder.ts","webpack:///./src/components/sidebarLeft/tabs/chatFolders.ts","webpack:///./src/components/sidebarLeft/tabs/notifications.ts","webpack:///./src/components/sidebarLeft/tabs/language.ts","webpack:///./src/components/confirmationPopup.ts","webpack:///./src/components/sidebarLeft/tabs/autoDownload/photo.ts","webpack:///./src/components/sidebarLeft/tabs/autoDownload/file.ts","webpack:///./src/components/sidebarLeft/tabs/autoDownload/video.ts","webpack:///./src/components/sidebarLeft/tabs/dataAndStorage.ts","webpack:///./src/components/sidebarLeft/tabs/settings.ts","webpack:///./src/components/sidebarLeft/tabs/newChannel.ts","webpack:///./src/components/popups/createContact.ts","webpack:///./src/components/sidebarLeft/tabs/contacts.ts","webpack:///./src/components/sidebarLeft/tabs/archivedTab.ts","webpack:///./src/components/sidebarLeft/tabs/peopleNearby.ts","webpack:///./src/helpers/number/formatNumber.ts","webpack:///./src/components/sidebarLeft/index.ts","webpack:///./src/components/chat/bubbleGroups.ts","webpack:///./src/components/popups/datePicker.ts","webpack:///./src/components/stickyIntersector.ts","webpack:///./src/components/chat/reaction.ts","webpack:///./src/components/chat/reactions.ts","webpack:///./src/components/chat/replies.ts","webpack:///./src/components/chat/messageRender.ts","webpack:///./src/helpers/dom/getElementByPoint.ts","webpack:///./src/helpers/dom/reflowScrollableElement.ts","webpack:///./src/lib/appManagers/appEmojiManager.ts","webpack:///./src/components/emoticonsDropdown/tabs/emoji.ts","webpack:///./src/components/gifsMasonry.ts","webpack:///./src/components/emoticonsDropdown/tabs/gifs.ts","webpack:///./src/components/emoticonsDropdown/tabs/stickers.ts","webpack:///./src/lib/appManagers/appInlineBotsManager.ts","webpack:///./src/components/sidebarRight/tabs/gifs.ts","webpack:///./src/components/sidebarRight/tabs/stickers.ts","webpack:///./src/helpers/dropdownHover.ts","webpack:///./src/components/emoticonsDropdown/index.ts","webpack:///./src/environment/webrtcSupport.ts","webpack:///./src/environment/callSupport.ts","webpack:///./src/helpers/dom/getVisibleRect.ts","webpack:///./src/lib/appManagers/internalLink.ts","webpack:///./src/components/popups/joinChatInvite.ts","webpack:///./src/helpers/scrollSaver.ts","webpack:///./src/helpers/dom/superIntersectionObserver.ts","webpack:///./src/components/chat/bubbles.ts","webpack:///./src/lib/mtproto/constants.ts","webpack:///./src/helpers/dom/getViewportSlice.ts","webpack:///./src/components/popups/unpinMessage.ts","webpack:///./src/helpers/dom/isSelectionEmpty.ts","webpack:///./src/components/popups/reportMessagesConfirm.ts","webpack:///./src/components/popups/reportMessages.ts","webpack:///./src/components/popups/sponsored.ts","webpack:///./src/components/popups/reactedList.ts","webpack:///./src/components/chat/reactionsMenu.ts","webpack:///./src/components/chat/contextMenu.ts","webpack:///./src/components/chat/sendContextMenu.ts","webpack:///./src/components/popups/createPoll.ts","webpack:///./src/helpers/getGifDuration.ts","webpack:///./src/components/popups/newMedia.ts","webpack:///./src/helpers/dom/attachListNavigation.ts","webpack:///./src/components/chat/autocompleteHelper.ts","webpack:///./src/components/chat/stickersHelper.ts","webpack:///./src/components/popups/schedule.ts","webpack:///./src/helpers/dom/getRichValueWithCaret.ts","webpack:///./src/components/chat/emojiHelper.ts","webpack:///./src/components/chat/autocompletePeerHelper.ts","webpack:///./src/components/chat/commandsHelper.ts","webpack:///./src/components/chat/autocompleteHelperController.ts","webpack:///./src/components/chat/mentionsHelper.ts","webpack:///./src/components/chat/replyKeyboard.ts","webpack:///./src/components/chat/inlineHelper.ts","webpack:///./src/components/chat/botCommands.ts","webpack:///./src/components/chat/input.ts","webpack:///./src/helpers/dom/setCaretAt.ts","webpack:///./src/components/chat/pinnedContainer.ts","webpack:///./src/components/chat/audio.ts","webpack:///./src/components/chat/pinnedMessageBorder.ts","webpack:///./src/components/chat/pinnedMessage.ts","webpack:///./src/helpers/dom/handleScrollSideEvent.ts","webpack:///./src/environment/groupCallSupport.ts","webpack:///./src/components/popups/mute.ts","webpack:///./src/components/chat/topbar.ts","webpack:///./src/components/sidebarRight/tabs/search.ts","webpack:///./src/components/chat/search.ts","webpack:///./src/components/chat/patternRenderer.ts","webpack:///./src/components/chat/chat.ts","webpack:///./src/helpers/autoDownload.ts","webpack:///./src/components/chat/markupTooltip.ts","webpack:///./src/helpers/dom/getSelectedNodes.ts","webpack:///./src/helpers/generatePathData.ts","webpack:///./src/components/chat/dragAndDrop.ts","webpack:///./src/helpers/dom/disableTransition.ts","webpack:///./src/components/lineBlobDrawable.ts","webpack:///./src/components/topbarWeave.ts","webpack:///./src/helpers/dom/customProperties.ts","webpack:///./src/lib/rlottie/rlottieIcon.ts","webpack:///./src/components/superIcon.ts","webpack:///./src/components/groupCall/microphoneIcon.ts","webpack:///./src/components/groupCall/participantMutedIcon.ts","webpack:///./src/components/groupCall/index.ts","webpack:///./src/components/groupCall/participantStatus.ts","webpack:///./src/components/groupCall/participantsList.ts","webpack:///./src/components/call/videoCanvasBlur.ts","webpack:///./src/components/groupCall/participantVideo.ts","webpack:///./src/components/groupCall/participantVideos.ts","webpack:///./src/components/groupCall/participants.ts","webpack:///./src/components/groupCall/description.ts","webpack:///./src/components/groupCall/title.ts","webpack:///./src/environment/screenSharingSupport.ts","webpack:///./src/components/call/button.ts","webpack:///./src/components/movableElement.ts","webpack:///./src/helpers/movablePanel.ts","webpack:///./src/helpers/toggleClassName.ts","webpack:///./src/lib/calls/callState.ts","webpack:///./src/components/call/description.ts","webpack:///./src/components/groupCall/microphoneIconMini.ts","webpack:///./src/components/call/index.ts","webpack:///./src/lib/calls/helpers/parseSignalingData.ts","webpack:///./src/lib/calls/callConnectionInstance.ts","webpack:///./src/lib/crypto/subtle.ts","webpack:///./src/lib/crypto/utils/sha256.ts","webpack:///./src/helpers/bytes/convertToUint8Array.ts","webpack:///./src/lib/calls/p2P/p2PEncryptor.ts","webpack:///./src/lib/calls/p2P/chromeP2PSdpBuilder.ts","webpack:///./src/lib/calls/p2P/firefoxP2PSdpBuilder.js","webpack:///./src/lib/calls/p2P/safariP2PSdpBuilder.js","webpack:///./src/lib/calls/p2P/p2PSdpBuilder.js","webpack:///./src/lib/calls/callInstance.ts","webpack:///./src/lib/calls/p2P/getCallProtocol.ts","webpack:///./src/lib/calls/p2P/getRtcConfiguration.ts","webpack:///./src/components/topbarCall.ts","webpack:///./src/lib/appManagers/appCallsManager.ts","webpack:///./src/lib/appManagers/appImManager.ts","webpack:///./src/components/appMediaViewerBase.ts","webpack:///./src/helpers/fillPropertyValue.ts","webpack:///./src/components/appMediaViewer.ts","webpack:///./src/helpers/avatarListLoader.ts","webpack:///./src/components/appMediaViewerAvatar.ts","webpack:///./src/components/avatar.ts","webpack:///./src/components/dialogsContextMenu.ts","webpack:///./src/lib/mtproto/connectionStatus.ts","webpack:///./src/components/sendingStatus.ts","webpack:///./src/components/connectionStatus.ts","webpack:///./src/helpers/roundRect.ts","webpack:///./src/components/groupCallActiveIcon.ts","webpack:///./src/helpers/easing/easeInOutSine.ts","webpack:///./src/lib/appManagers/appDialogsManager.ts","webpack:///./public/recorder.min.js","webpack:///./src/components/scrollable.ts","webpack:///./src/components/checkboxField.ts","webpack:///./src/helpers/dom/toggleDisability.ts","webpack:///./src/helpers/dom/findUpTag.ts","webpack:///./src/lib/mtproto/passwordManager.ts","webpack:///./src/helpers/array/randomize.ts"],"names":["PasswordInputField","options","super","plainText","passwordVisible","onVisibilityClick","e","this","toggleVisible","classList","toggle","input","type","onVisibilityClickAdditional","setAttribute","name","autocomplete","stealthy","document","createElement","add","tabIndex","parentElement","prepend","insertBefore","cloneNode","nextSibling","container","append","addEventListener","bytesCmp","bytes1","bytes2","len","length","i","placeCaretAtEnd","el","ignoreTouchCheck","activeElement","focus","window","getSelection","createRange","range","selectNodeContents","collapse","sel","removeAllRanges","addRange","body","createTextRange","textRange","moveToElementText","select","PasswordMonkey","passwordInputField","size","needFrame","loadPromise","loadAnimationAsAsset","loop","autoplay","width","height","noCache","then","_animation","animation","currentFrame","direction","setSpeed","pause","setDirection","curFrame","play","waitForFirstFrame","remove","TrackingMonkey","inputField","max","playAnimation","value","frame","Math","min","round","idleAnimation","stop","canvas","style","display","Promise","all","CodeInputField","lastLength","setLabel","replace","slice","setValueSilently","onFill","TelInputField","label","pasted","lastValue","telEl","HTMLInputElement","inputMode","pixelRatio","devicePixelRatio","letterSpacing","setProperty","originalFunc","bind","formattedPhoneNumber","abs","formatted","country","countryCode","leftPattern","code","dataset","onInput","key","test","metaKey","ctrlKey","shiftKey","preventDefault","concat","Set","setInnerHTML","elem","html","innerHTML","filterChatPhotosMessages","forEachReverse","history","message","idx","arr","action","photo","splice","undefined","count","previous","next","reverse","loadCount","loadWhenLeft","loadedAllUp","loadedAllDown","safeAssign","loadedAll","current","setLoaded","dispatchJump","items","item","pop","unshift","push","shift","load","onJump","toPrevious","leftLength","go","down","loadPromiseDown","loadPromiseUp","older","resolve","anchor","promise","loadMore","result","forEach","processed","processItem","onLoadedMore","backLimit","maxId","mid","searchContext","incrementMessageId","getSearch","peerId","limit","inputFilter","_","next_rate","nextRate","filterMids","onHistoryDelete","msgs","shouldBeDeleted","has","filter","onEmptied","onHistoryMultiappend","obj","folderId","mids","sorted","Array","from","sort","a","b","targets","map","Boolean","onMessageSent","rootScope","isInner","otherSideLoader","storage","isScheduled","getScheduledMessagesStorage","getMessagesStorage","filterMessagesByInputFilter","context","setSearchContext","reset","ret","goUnsafe","goToOtherEnd","unsetCurrent","changed","removeEventListener","cleanup","clearable","className","clickable","autonomous","onFound","list","createChatList","nameEl","setListClickListener","childElementCount","setActive","clear","searchInput","searchGroups","onSearch","minMsgId","loadedCount","foundCount","searchPromise","searchTimeout","query","listsContainer","threadId","scrollable","messages","setVirtualContainer","onChange","searchMore","onScrolledBottom","trim","setTimeout","res","searchGroup","fromId","addDialogAndSetLastMessage","drawStatus","avatarSize","meAsSaved","err","console","error","replaceContent","catch","placeholder","prevValue","timeout","clearTimeout","onClearClick","onClear","searchIcon","clearBtn","icon","slider","destroyable","_constructor","header","closeBtn","noRipple","title","content","addTab","listenerSetter","closeTab","args","init","selectTab","tabs","delete","removeAll","eventListener","dispatchEvent","onCloseAfterTimeout","historyTabIds","canHideFirst","onCloseBtnClick","appNavigationController","findItemByType","navigationType","back","id","animate","isNavigation","closingId","onCloseTab","tab","_selectTab","Map","tabsContainer","sidebarEl","querySelector","querySelectorAll","get","onOpen","onOpenAfterTimeout","pushItem","onPop","canAnimate","indexOfAndSplice","tabConstructor","preserveTab","removeTabFromHistory","find","t","getTab","removeByType","onClose","open","getContext","clearRect","uploadAvatar","isGeoChat","setTitle","avatarEdit","_upload","section","inputWrapper","groupNameInputField","maxLength","groupLocationInputField","canBeEdited","valueCheck","contains","userLocationCoords","userLocationAddress","nextBtn","createChannel","about","geo_point","address","megagroup","chatId","inputFile","editPhoto","peerIds","inviteToChannel","disabled","createChat","toUserId","chatsSection","nameArgs","new","format","startLocating","userId","dom","addDialogNew","dialog","rippleEnabled","lastMessageSpan","getUserStatusString","navigator","geolocation","getCurrentPosition","location","lat","coords","latitude","long","longitude","uri","fetch","response","json","display_name","GeolocationPositionError","SHOULD_USE_SAFARI_FIX","userAgent","match","appMediaPlaybackController","media","scheduled","mediaDetails","waitingMediaForLoad","waitingScheduledMediaForLoad","waitingDocumentsForLoad","_volume","_muted","_playbackRate","_loop","_round","playbackRates","voice","video","audio","seekBackward","details","playingMedia","currentTime","seekOffset","seekForward","duration","seekTo","seekTime","onMediaDocumentLoad","doc","getDoc","docId","supportsStreaming","handleSafariStreamable","cacheContext","appDownloadManager","getCacheContext","src","url","playbackRate","set","onPlay","target","getMessageByMedia","setMedia","verify","element","listLoader","getCurrent","getPrevious","jumpLength","findIndex","getNext","setTargets","getPlayingDetails","onPause","onEnded","isTrusted","lockedSwitchers","paused","clean","s","playingMediaType","playItem","getMedia","resolveWaitingForLoadMedia","goRound","cssText","mediaSession","actions","seekbackward","seekforward","seekto","previoustrack","nexttrack","setActionHandler","warn","properties","_key","dispatchPlaybackParams","Object","defineProperties","getPlaybackParams","volume","muted","autoload","pFlags","is_scheduled","getMediaFromMessage","media_unread","myId","readMessages","once","deferred","w","waitingStorage","downloadDoc","safariBuffering","artwork","isVoice","artist","thumbs","bytes","sizes","h","preloadPhoto","setNewMediadata","peerPhoto","getPeerPhoto","loadAvatar","cached","getPeerTitle","attribute","attributes","file_name","performer","metadata","MediaMetadata","getScheduledMessageByPeer","getMessageByPeer","playbackParams","willBePlayedMedia","deepEqual","copy","prev","addMedia","mediaType","getPlaybackMediaTypeFromMessage","wasPlaying","willBePlayed","toggleSwitchers","enabled","attachGrabListeners","onStart","onMove","onEnd","onMouseMove","event","x","pageX","y","pageY","onMouseUp","onMouseDown","button","onTouchMove","touches","clientX","clientY","isTouch","onTouchEnd","onTouchStart","passive","mousedown","events","withTransition","useTransform","vertical","scrub","rect","getBoundingClientRect","seek","setFilled","onScrub","filled","step","setProgress","stepStr","index","indexOf","decimals","_removeListeners","percents","clamp","transform","rectMax","offsetAxisValue","bottom","left","toFixed","ButtonMenuItem","text","onClick","checkboxField","noCheckboxClickListener","ripple","textElement","textArgs","regularText","keepOpen","cancelEvent","checked","buttons","ButtonMenuToggleHandler","openedMenu","asDiv","btnMenu","hideControls","setHideTimeout","hideControlsTimeout","isShown","controlsLocked","canHideControls","showControls","toggleControls","show","ignoreClickClassName","findUpClassName","relatedTarget","showOnLeaveToClassName","visible","toHHMMSS","str","leadZero","sec_num","parseInt","hours","floor","minutes","seconds","streamable","progressRAF","onLoadedData","r","requestAnimationFrame","cancelAnimationFrame","setLoadProgress","onTimeUpdate","onProgress","removeListeners","filledLoad","setSeekMax","setListeners","setHandlers","scrubTime","isSafariBuffering","buf","buffered","numRanges","nearestStart","end","start","onMuteClick","setVolume","iconIndex","ICONS","btn","onPlaybackRackMenuToggle","wrapper","setup","playbackRateButton","parentNode","appendChild","skin","stylePlayer","setBtnMenuToggle","controls","progress","finally","initDuration","buildControls","timeDuration","insertAdjacentHTML","fullScreenButton","timeElapsed","volumeSelector","leftControls","togglePlay","overlaysActive","good","toggleFullScreen","altKey","nextIdx","PLAYBACK_RATES","onFullScreen","setPlaybackRateIcon","rate","PLAYBACK_RATES_ICONS","player","webkitEnterFullscreen","enterFullscreen","isFull","throttleWithRaf","fn","schedulerFn","waiting","_args","throttleWith","formatBytes","dm","log","parseFloat","pow","wrapVoiceMessage","audioEl","out","waveform","Uint8Array","valueCount","dataView","DataView","buffer","byteIndex","bitShift","getUint16","decodeWaveform","svg","svgContainer","availW","barHeightMax","mediaSizes","isMobile","minW","maxW","createElementNS","setAttributeNS","normValue","wfSize","barCount","maxValue","maxDelta","barX","sumI","bar_value","barWidth","createWaveformBars","fakeSvgContainer","waveformContainer","timeDiv","throttledTimeUpdate","addAudioListener","readyPromise","mousemove","offsetX","MouseEvent","targetTouches","noop","constructDownloadPreloader","tryAgainOnFail","preloader","cancelable","construct","circle","totalLength","attr","findMediaTargets","anchorMid","isBubbles","justAudioSelector","selectors","matches","prefix","selector","join","elements","mediaItems","toPeerId","HTMLElement","withTime","voiceAsMusic","showSender","isRealVoice","isOutgoing","is_outgoing","uploading","durationStr","firstElementChild","downloadDiv","onTypeLoad","descriptionEl","parts","audioPerformer","htmlToSpan","date","wrapSenderToPeer","titleEl","middleEllipsisEl","fontWeight","sizeType","audioTitle","fileName","wrapSentTime","subtitleDiv","launched","progressLine","lastChild","replaceWith","wrapAudio","audioTimeDiv","onLoad","readyState","HAVE_CURRENT_DATA","onTypeDisconnect","getTimeStr","innerText","hadSearchContext","useSearch","imgs","wrapped","wrapPhoto","boxWidth","boxHeight","loadPromises","withoutPreloader","lazyLoadQueue","images","thumb","full","img","attach","autoDownload","shouldPlay","onDownloadInit","pauseListener","notifyAll","done","total","cancel","Error","reject","playListener","download","setDownloadFunction","capture","isConnected","customElements","define","DivAndCaption","fill","border","subtitle","wrapReplyDivAndCaption","subtitleEl","mediaEl","limitSymbols","wrapEmojiText","isRound","mediaChildren","children","middleware","textContent","wrapMessageForReply","webpage","chat","bubbles","getMiddleware","wrapSticker","div","group","CHAT_ANIMATION_GROUP","choosePhotoSize","noBlur","child","isMediaSet","accumulate","initialValue","reduce","acc","RectPart","maxWidth","minWidth","spacing","maxHeight","ratios","countRatios","proportions","countProportions","averageRatio","maxSizeRatio","layout","layoutTwo","layoutThree","layoutFour","layoutTwoTopBottom","layoutTwoLeftRightEqual","layoutTwoLeftRight","layoutThreeLeftAndOther","layoutThreeTopAndOther","layoutFourTopAndOther","layoutFourLeftAndOther","geometry","sides","minimalWidth","secondWidth","firstWidth","firstHeight","thirdHeight","secondHeight","rightWidth","leftWidth","thirdWidth","h0","w0","w2","w1","h1","h2","ratio","cropRatios","attempts","multiHeight","offset","sum","pushAttempt","lineCounts","heights","first","second","third","fourth","optimalAttempt","optimalDiff","attempt","counts","lineCount","totalHeight","minLineHeight","bad1","bad2","line","diff","optimalCounts","optimalHeights","rowCount","row","colCount","lineHeight","col","_disabled","isChanged","changedLength","requiredLength","requiredValidLength","inputFields","isValid","required","handleChange","toggleAttribute","withoutAvatar","avatarElem","updateWithOptions","doNotEditAvatar","unlockOnSuccess","RadioForm","radios","form","freezed","radioField","subtitleLangKey","subtitleLangArgs","havePadding","isToggle","titleRight","noCheckboxSubtitle","titleLangKey","c","titleRightSecondary","titleRightEl","navigationTab","RadioFormFromRows","rows","copyTextToClipboard","clipboard","writeText","textArea","top","position","execCommand","removeChild","fallbackCopyTextToClipboard","alignRight","stateKey","appStateManager","getState","state","getDeepProperty","setByKey","main","langKey","Event","toastEl","toast","toastNew","langPackKey","langPackArguments","checkUsernameDebounced","debounce","checkUsername","getValue","originalValue","setState","Neutral","isUsernameValid","setError","invalidText","head","username","checkUsernamePromise","invokeApi","channel","getChannelInput","toChatId","available","Valid","availableText","takenText","isValidToChange","overlayClosable","avatarEl","isDialog","noTitle","titleLangArgs","fragment","createDocumentFragment","descriptionLangKey","description","p","descriptionLangArgs","checkboxes","o","withRipple","callback","original","nextElementSibling","isBroadcast","random","privateRow","publicRow","privateSection","publicSection","getChat","linkRow","chatFull","exported_invite","link","btnRevoke","getChatInviteLink","caption","noDelimiter","linkInputField","applyBtn","migrateChat","channelId","updateUsername","close","setOriginalValue","toggleDisability","toggleNoForwards","onChatUpdate","noforwards","loading","loaded","getPromise","checkForTriggers","chatsContainer","selected","offsetIndex","loadedWhat","renderedPeerIds","peerType","multiSelect","exceptSelf","tempIds","selfPresence","needSwitchList","includes","cachedContacts","getMoreResults","f","renderResultsFunc","renderResults","splitUp","notRendered","filterPeerTypeBy","isPeerId","getPeer","deleted","method","innerContainer","topContainer","selectedContainer","selectedScrollable","li","click","sectionNameLangPackKey","noShadow","findUpAttribute","checkbox","debouncedInput","generateDelimiter","appendTo","getResultsPromise","onFirstRender","testSelfSearch","dialogs","archived","pageCount","windowSize","tempId","getTempId","getConversations","newOffsetIndex","findAndSplice","d","chatRightsAction","filterByRights","renderSaved","isEnd","getMoreDialogs","contacts","getMoreContacts","isUser","canSendToUser","hasRights","isGlobalSearch","getContactsPeerIds","searchContacts","searchResult","resultPeerIds","my_results","results","filterUnique","channelParticipants","getChannelParticipants","q","participants","participant","getParticipantPeerId","promises","getMoreChannelParticipants","isNonContactUser","containerEl","isAnyChat","getChatMembersString","scroll","insertAdjacentElement","scrollIntoViewNew","offsetWidth","onAnimationEnd","settings","animationsEnabled","values","forceDirection","Static","closable","getSelected","onSelect","hide","peerTypes","destroyListener","rights","takeOut","banned_rights","editBanned","btnDeleteException","clearChannelParticipantBannedRights","btnDelete","kickFromChannel","v","flags","exceptionText","toggleWith","defaultBannedRights","default_banned_rights","combineParticipantBannedRights","restrictionText","info","mainFlag","restriction","until_date","flag","chatPermissions","editChatDefaultBannedRights","addExceptionRow","openPermissions","getChannelParticipant","generateContentElement","findUpTag","setSubtitle","bannedRights","cantWhat","getPeerId","peer","listEl","update","needAdd","new_participant","view_messages","user_id","prev_participant","exceptionsCount","setLength","loader","setLoader","isChannel","migrateFrom","migrateTo","onScroll","getDialogType","peerTitleElement","callbackLeave","flush","leave","flushHistory","callbackDelete","descriptionArgs","deleteChannel","isDanger","availableReactions","getActiveAvailableReactions","getChatFull","originalReactions","available_reactions","enabledReactions","toggleSection","toggleCheckboxField","toggleRow","reactionsSection","checkboxFields","availableReaction","reaction","saveReactionsDebounced","wrapStickerToRow","static_icon","every","saveReactions","newReactions","getCachedFullChat","setChatAvailableReactions","chatUpdateListeners","addChatUpdateListener","canChangeType","canChangePermissions","chatNameInputField","descriptionInputField","editPeer","chatTypeRow","setChatTypeSubtitle","reactionsRow","setReactionsLength","availableReactionsLength","getAvailableReactions","inactive","reactions","permissionsRow","setPermissionsLength","editTitle","editAbout","race","removeAttribute","signMessagesCheckboxField","signatures","toggleSignatures","showChatHistoryCheckboxField","togglePreHistoryHidden","hidden_prehistory","_init","isNew","isContact","nameInputField","lastNameInputField","user","getUser","setDraftValue","first_name","last_name","notificationsCheckboxField","togglePeerMute","isMuted","notify_settings","profileNameDiv","profileSubtitleDiv","phoneRow","phone","formatUserPhone","notificationsRow","isPeerLocalMuted","addContact","deleteContacts","skippable","attachToPromise","removeLoader","isPrivacy","selectedPeerIds","addInitial","generateFakeIcon","isScam","span","generateTitleIcons","verified","use","use2","generateVerifiedIcon","fake","scam","getEvent","attachGlobalListenerTo","RESET_GLOBAL","cursor","listenerOptions","hadMove","xDown","yDown","handleMove","setCursorTo","onReset","handleStart","_e","verifyTouchTarget","xUp","yUp","xDiff","yDiff","onFirstSwipe","onSwipeResult","onSwipe","photoId","avatar","BASE_CLASS","getPhoto","Image","draggable","loadCallback","putAvatar","avatars","intersectionObserver","observe","loadCallbacks","gradient","arrowPrevious","arrowNext","checkScrollTop","scrollTop","freeze","clickX","prevTargets","nextTargets","openAvatarViewer","toRight","right","distance","offsetLeft","cancelNextClick","lastDiffX","minX","swipeHandler","lastX","SCALE","TRANSLATE_TEMPLATE","addIndex","ceil","IntersectionObserver","entries","entry","isIntersecting","loadNearestToTarget","getUserPhotos","photos","Number","MAX_SAFE_INTEGER","m","chat_photo","generateFakeAvatarMessage","activeTab","photo_id","unobserve","setText","setPeerStatus","needClear","attachClickEvent","bio","tagName","getProfileByPeerId","notifications","setMoreDetails","fillUsername","self","fillUserPhone","setAvatar","setPeerStatusInterval","setInterval","setMoreDetailsTimeout","canBeDetailed","oldAvatars","setPeer","getPeerUsername","fillNotifications","cleaned","cleanupHTML","fillRows","override","isRestricted","callbackify","peerFull","wrapRichText","exportedInvite","historiesStorage","newCloseBtn","animatedCloseIcon","transitionContainer","transitionFirstItem","editBtn","transitionLastItem","secondTitle","profile","onAdditionalScroll","searchSuper","nav","setIsSharedMedia","isSharedMedia","transition","cleanScrollPositions","isHeavyAnimationInProgress","toggleEditBtn","msgIdsByPeer","renderNewMessages","deleteDeletedMessages","mediaTabs","onChangeTab","mediaTab","btnAddMembers","scrollStartCallback","showConfirmation","onError","addChatUser","filtered","filterMessagesByType","usedFromHistory","performSearchResult","selection","isSelecting","toggleByElement","canViewMembers","loadMutex","peerChanged","setQuery","historyStorage","fillProfileElements","single","justLoad","getElementById","isColumnProportionSet","to","medium","mobile","toggleSidebar","setColumnProportion","sharedMediaTab","proportion","scrollWidth","previousElementSibling","documentElement","enable","active","willChange","animationPromise","appSidebarRight","resultsDiv","poll","getPoll","quiz","rQuestion","voters","total_voters","roundPercents","hr","answer","answers","answerEl","answerTitle","answerPercents","minHeight","getVotes","option","votesList","votes","vote","showMore","lastElementChild","next_offset","avatarContainer","AVATAR_CLASS_NAME","CLASS_NAME","updateOptions","lineTotalLength","minIndex","minRemainder","k","remainder","maxRemainder","pollElement","isClosed","closed","performResults","chosenIndexes","prevQuizHint","hideQuizHint","prevQuizHintOnHide","prevQuizHintTimeout","setMaxLength","resizePolls","onHide","isQuiz","isRetracted","isPublic","isMultiple","chosingIndexes","sentVote","MAX_LENGTH","MAX_OFFSET","svgLines","setLineProgress","getTotalLength","pollId","descKey","public_voters","multiple_choice","multipleSelect","descDiv","typeDiv","avatarsDiv","close_period","close_date","timeLeftDiv","quizTimer","strokeWidth","radius","circumference","PI","period","closeTime","serverTimeOffset","quizInterval","time","Date","now","timeLeft","color","stroke","strokeDashoffset","strokeDasharray","clearInterval","getResults","answerDivs","numberDivs","footerDiv","viewResults","votersCountDiv","isTabExists","sendVoteBtn","sendVotes","canVote","setVotersCount","clickHandler","solution","solution_entities","toggleHint","textEl","entities","bubblesContainer","setQuizHint","correctResult","correct","chosen","answerIndex","foundIndex","indexes","sendVotePromise","sendVote","initQuizHint","timeEl","setResults","recent_voters","stackedAvatars","render","isVoted","hideSendVoteBtn","hideViewResultsBtn","maxPercents","cb","getPercentValue","iterate","fullTime","votersCount","multiplier","roundVideoCircumference","wrapVideo","withTail","isOut","noInfo","onlyPreview","noPlayButton","autoDownloadSize","noAutoDownload","isAlbumItem","canAutoplay","autoPlay","gifs","videos","spanTime","spanPlay","needPlayButton","mime_type","photoRes","divRound","halfSize","ctx","globalVideo","setPeerPromise","isInDOM","onPaused","onFrame","drawImage","detached","foreignObject","getAttributeNS","gotThumb","getThumb","poster","aspecter","isUpload","downloaded","attachMethod","renderDeferred","detach","isFulfilled","animationIntersector","addAnimation","videoWidth","sequentialDom","mutateElement","loadPhotoThumbFunc","loadFunc","setManual","queueId","renderImageFromUrl","wrapDocument","audioElement","extSplitted","split","ext","isArray","toLowerCase","docDiv","icoDiv","descriptionParts","nameDiv","_downloadDiv","save","canOpenAfter","downloading","saveDocFile","noThumb","noFadeIn","blurAfter","setAttachmentSize","regular","thumbImage","image","isFit","loadThumbPromise","isGif","photoSize","getStrippedThumbIfNeeded","needFadeIn","renderOnLoad","renderImageWithFadeIn","canAttachPreloader","renderPromise","mutate","wrapStickerAnimation","side","skipRatio","animationDiv","stickerPromise","withThumb","assumeType","frameNo","maxFrame","vibrate","generateRandomSigned","randomOffsetX","randomOffsetY","stableOffsetX","setPosition","emojiAnimationContainer","onlyThumb","emoji","needUpscale","static","asStatic","stickerType","sticker","loadLottieWorkers","toneIndex","isAnimated","isThumbNeededForType","haveThumbCached","stickerCachedThumbs","afterRender","getPathFromPhotoPathSize","stickerThumbConverted","getPreviewURLFromThumb","webpWorkerController","convert","getThumbURL","blob","loadAnimationWorker","animationData","saveLottiePreview","data","sendInteractionThrottled","preloadAnimatedEmojiStickerAnimation","getAnimation","getAnimatedEmojiSoundDocument","restart","getAnimatedEmojiSticker","bubble","throttle","firstTime","setTyping","msg_id","getServerMessageId","emoticon","interaction","JSON","stringify","isSavingLottiePreview","wrapStickerSetThumb","downloadOptions","getStickerSetThumbDownloadOptions","animated","lottieLoader","URL","createObjectURL","getStickerSet","stickerSet","documents","previousMedia","createMedia","_size","wrapReply","replyContainer","prepareAlbum","widthItem","heightItem","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","forMedia","mediaDiv","wrapAlbum","groupId","attachmentDiv","getMidsByAlbum","getMessage","album","positionElementByIndex","pos","prevPos","whichChild","updateElementWith","updateListWith","onSort","canUpdate","_updateList","batch","updateBatch","base","onElementCreate","noScheduler","onDelete","getIndex","onUpdate","insertInDescendSortedArray","getUserStatusForSort","onListLengthChange","status","willChangeLength","createChatListOptions","doTimeout","updateList","SORT_INTERVAL","handleHorizontalSwipe","cancelY","isSwipingBackSafari","handleTabSwipe","peerIdMids","overrideOnSelect","setInnerPeer","initMessagesForward","onConfirm","revoke","deleteScheduledMessages","deleteMessages","titleArgs","isMegagroup","canRevoke","sendScheduledMessages","cancelSelection","empty","accumulateMapSet","selectedMids","doNotAnimate","onCancelSelection","toggleSelection","listenElement","selectedText","toString","verifyTouchLongPress","getElementFromTarget","getElementsBetween","last","firstRect","lastRect","isHigher","parent","lookupBetweenParentClassName","lookupBetweenElementsQuery","firstIndex","lastIndex","targetLookupClassName","verifyTarget","seen","selecting","firstTarget","processElement","checkBetween","seenSet","isSelected","isMidSelected","seenLength","findUpAsChild","elementsBetween","toggleByMid","canceledSelection","verifyMouseMoveTarget","removeManual","documentListenerOptions","hasCheckbox","getCheckboxInputFromElement","isElementShouldBeSelected","appendCheckbox","forceSelection","cantForward","cantDelete","cantSend","appMessagesManager","getMessageFromStorage","canForward","canDeleteMessage","onUpdateContainer","toggleCheckboxes","wasSelecting","blurActiveElement","forwards","onToggleSelection","updateContainer","toggleElementCheckbox","unselect","config","forwarded_count_max","toggleMid","updateElementSelection","contentTab","selectionCountEl","selectionGotoBtn","selectionForwardBtn","selectionDeleteBtn","navScrollableContainer","selectionContainer","btnCancel","attachClickOptions","keys","fromPeerId","isPrivate","transitionElement","opacity","recording","canSelectBubble","isGroupedBubbleSelected","getMidsByMid","getBubbleGroupedItems","groupContainer","isGroupedSelected","isGroupedMidsSelected","mounted","getMountedBubble","needTranslateX","widthFrom","widthTo","center","selectionInputWrapper","selectionSendNowBtn","selectionLeft","selectionRight","translateButtonsX","inputContainer","isGrouped","groupedCheckboxInput","attachTo","onGotoClick","onForwardClick","onSelectClick","onClearSelectionClick","onDeleteClick","onContextMenu","cancelBubble","withSelection","prevTabId","urlsToRevoke","nextRates","loadedChats","firstLoad","logger","monthContainers","mediaTabsMap","asChatList","groupByMonth","hideEmptyTabs","onTransitionStart","onTransitionEnd","searchContextMenu","navScrollable","tabsMenu","menuTab","unlockScroll","prevId","lockers","lockTouchScroll","searchGroupMedia","horizontalMenu","tabContent","skipScroll","startCallback","newMediaTab","fromMediaTab","offsetTop","scrollHeight","rect2","onMediaClick","targetClassName","copySearchContext","openMedia","inputMessagesFilterPhotoVideo","inputMessagesFilterDocument","useHeavyAnimationCheck","lock","unlockAndRefresh","setLastMessage","elemsToAppend","entity","totalEntities","display_url","sliced","matchUrl","same","hostname","hash","rDescription","previewDiv","getAbbreviation","rTitle","subtitleFragment","htmlToDocumentFragment","HTMLAnchorElement","decodeURIComponent","href","firstChild","wrapPlainText","sharedMediaDiv","processCallback","processEmptyFilter","processPhotoVideoFilter","processDocumentFilter","processUrlFilter","monthContainer","getMonthContainerByTimestamp","afterPerforming","inputMessagesFilterEmpty","showMembersCount","participants_count","regExp","RegExp","escapeRegExp","cleanSearchText","titleSpan","formatPhoneNumber","arg","globalContacts","intlElement","IntlElement","isShort","minDate","renderRecentSearch","recent","recentSearch","getTopPeers","peers","people","onlyFirstName","renderParticipants","membersList","LOAD_COUNT","loadMembers","loadChats","logStr","used","slicedLength","ids","filters","counters","getSearchCounters","firstMediaTab","counter","membersTab","toLoad","loadType","timestamp","setHours","setDate","dateTimestamp","getTime","containers","month","getFullYear","year","dateElement","IntlDateElement","haveTimestamps","getObjectKeysAndSort","goFirst","revokeObjectURL","newInputFilter","maxDate","PrivacyType","appPrivacyManager","privacy","addMultipleEventsListeners","updatePrivacy","rules","inputKey","privacyRules","saveApiUsers","users","saveApiChats","chats","apiUpdatesManager","processLocalUpdate","convertInputKeyToKey","inputRule","rule","assign","privacyKey","types","allowPeers","disallowPeers","onRadioChange","captions","captionElement","radioSection","exceptions","Everybody","Nobody","radioRows","Contacts","skipTypes","noExceptions","generateSection","exceptionTexts","exception","_peerIds","newPeerIds","generateStr","splitPeersByType","getPrivacy","getPrivacyRulesDetails","setRadio","chatKey","usersKey","splitted","getUserInput","setPrivacy","captionEl","mePath","anchorCopy","phoneSection","stickerContainer","inputContent","btnReturn","sliceTabsUntilTab","canFocus","isFirstInput","isFirst","email","codeInputField","passwordManager","confirmPasswordEmail","goNext","btnChange","btnResend","disable","cancelPasswordEmail","resendPasswordEmail","onContinueClick","btnContinue","btnSkip","matchEmail","toggleButtons","updateSettings","hint","currentPassword","plainPassword","newPassword","symbols","isCancel","onSkipClick","saveHint","monkey","verifyInput","has_password","labelText","getStateInterval","_state","check","auth","btnChangePassword","btnDisablePassword","btnSetRecoveryEmail","has_recovery","btnSetPassword","Session","app_name","app_version","ip","date_active","date_created","midtitle","device_model","system_version","platform","authorizations","session","btnTerminate","otherSection","onTerminateClick","menuElement","btnAdd","toggleBlock","bot","blocked","getBlocked","convertKeyToInputKey","toUpperCase","blockedPeerIds","blockedUsersRow","passwordState","twoFactorRow","email_unconfirmed_pattern","activeSessionsRow","updateActiveSessions","setBlockedCount","updateBlocked","rowsByKeys","numberVisibilityRow","lastSeenTimeRow","photoVisibilityRow","callRow","linkAccountRow","groupChatsAddRow","updatePrivacyRow","disallowLength","allowLength","sensitive_can_change","sensitive_enabled","sensitiveRow","_enabled","deleteButton","clearAllDrafts","auths","averageColorFromCanvas","pixel","pixels","getImageData","pixelsLength","outPixel","Uint8ClampedArray","rgbaToHsla","g","l","hslaToRgba","hue2rgb","hexaToRgba","hexa","hexToRgb","hex","rgbaToHexa","rgba","hslaStringToHexa","hsla","alpha","val","endsWith","hslaStringToRgba","highlightningColor","_width","_height","_tails","_scrollTails","_curve","_positions","_phases","onWheel","_animatingToNextPosition","_scrollDelta","deltaY","_onWheelRAF","drawOnWheel","changeTail","curPos","curPosition","_phase","_tail","drawGradient","drawNextPositionAnimated","frames","_frames","drawImageData","_incrementalCurve","positions","phase","curveMax","curve","getPositions","distances","nextPos","tail","getNextPositions","_hctx","createImageData","centerDistanceY","centerDistanceY2","centerDistanceX","swirlFactor","sqrt","theta","sinTheta","sin","cosTheta","cos","pixelX","pixelY","distanceSum","_colors","distanceX","distanceY","putImageData","_ctx","_hc","getGradientImageData","colors","getAttribute","_canvas","fillStyle","fillRect","tails","nextPhaseOnIdx","inc","curves","_addedScrollListener","scrollAnimate","createCanvas","gradientRenderer","hue","saturation","lightness","onGrabStart","boxDragger","onGrabEnd","box","sliders","hueDragger","hexInputField","rgbInputField","inputs","valid","setColor","rgbRegExp","attachBoxListeners","attachHueListeners","boxRect","saturationHandler","hueRect","hueHandler","updateHexInput","updateRgbInput","hexaToHsla","rgb","boxX","percentY","boxY","percentHue","hueX","updatePicker","rgbaArray","hsl","getCurrentColor","maxX","maxY","posX","posY","lightnessX","lightnessY","_applyColor","updateColorPicker","colorPicker","background","theme","intensity","slug","pushToState","applyCurrentTheme","onColorChange","applyColor","getTheme","gridSection","grid","backgroundColor","isColored","uploadTempId","clicked","wallpapersByElement","elementsByKey","onUploadClick","file","access_hash","dc_id","file_reference","saveDoc","wallpaper","upload","addNotifyListener","_wallpaper","newDoc","newCacheContext","setBackgroundDocument","getWallpaperKey","addWallPaper","onResetClick","defaultTheme","themes","blurCheckboxField","blur","onGridClick","saveToCache","cacheStorage","_tempId","onReady","getPixelPromise","imageUrl","naturalWidth","naturalHeight","averageColor","create","getColorsFromWallpaper","getWallpaperKeyFromTheme","uploadButton","colorButton","resetButton","pattern","invokeApiHashable","accountWallpapers","wallpapers","gridContainer","background_color","second_background_color","third_background_color","fourth_background_color","hasFile","isDark","dark","webkitMaskImage","stickerSetInput","onStickersClick","fileId","sendMessageWithDocument","h6","setOnlyOnePlayableGroup","stickersDiv","stickersFooter","loadStickerSet","installed_date","toggleStickerSet","esgSticker","eachMinute","runFirst","getNextTimeout","_callback","run","eachTimeout","getSeconds","getQuickReaction","quickReaction","setDefaultReaction","minValue","writeValue","valueDiv","valueContainer","messagesTextSize","chatBackgroundButton","animationsCheckboxField","enterRow","ctrlEnterRow","kilometersRow","milesRow","formats","toLocaleTimeString","hour","minute","suggestCheckboxField","bigCheckboxField","renderQuickReaction","loopCheckboxField","stickerSets","stickersContent","renderStickerSet","getAllStickers","allStickers","sets","firstNameInputField","bioInputField","usernameInputField","setProfileUrl","profileUrlContainer","profileUrlAnchor","updateProfile","uploadProfilePhoto","getSelf","userFull","getProfile","getContacts","foundInFilters","dialogsByFilters","onSelectChange","confirmBtn","cmp","pinnedPeerIds","pinned_peers","other","otherLegacy","getInputPeerById","editFolderTab","setFilter","filtersStorage","getDialogFilters","dialogsStorage","getFolderDialogs","categoriesSection","exclude_muted","ico","exclude_archived","exclude_read","non_contacts","groups","broadcasts","bots","selectedPeers","includePeerIds","excludePeerIds","addedInitial","_add","hasOwnProperty","originalFilter","deleteFolderButton","updateDialogFilter","bool","menuBtn","inputSection","generateList","h2Text","categories","includedFlagsContainer","excludedFlagsContainer","include","include_peers","createDialogFilter","editCheckForChange","reloadMissingPromises","reloadMissingPeerIds","loadAnimationPromise","wrapDraftText","ul","renderMore","_length","onEditOpen","exclude_peers","onCreateOpen","filtersRendered","dialogFilter","folder","channels","isAnyGroup","filterId","getFilter","orderIndex","createFolderBtn","foldersSection","suggestedSection","onFiltersContainerUpdate","renderFolder","getSuggestedFilters","order","suggestedFilters","NotifySection","enabledRow","typeText","previewEnabledRow","inputNotifyPeer","getNotifySettings","notifySettings","applySettings","show_previews","mute","showPreviews","inputSettings","mute_until","updateNotifySettings","contactsSignUpRow","soundRow","sound","getContactSignUpNotification","setContactSignUpNotification","invokeApiCacheable","lang_pack","languages","language","lang_code","native_name","getLangPack","getCacheLangPack","langPack","confirmationPopup","autoDownloadPeerTypeSection","contactsCheckboxField","privateCheckboxField","groupsCheckboxField","channelsCheckboxField","debouncedSave","sizeMax","autoDownloadNew","file_size_max","MAX","upTo","compareAndUpdate","AUTO_DOWNLOAD_FOR_KEYS","private","autoCheckboxField","setSubtitles","setAutoDownloadSubtitle","photoRow","videoRow","fileRow","openTab","onDisabledChange","gifsCheckboxField","videosCheckboxField","peerKeys","enabledKeys","isAll","logOut","edit","changeAvatarBtn","updateChangeAvatarBtn","buttonsDiv","devicesRow","languageRow","buttonsSection","overwrite","getAuthorizationsPromise","getAuthorizations","channelNameInputField","channelDescriptionInputField","onLengthChange","broadcast","withConfirm","btnConfirm","importContact","telInputField","lockWithPromise","peerTitle","validate","country_code","inputSearch","openContacts","sortedUserList","createList","renderPage","sortedLists","chatList","generateScrollable","scrollables","wasFilterId","setFilterId","onTabChange","isLocationWatched","errorCategory","retryBtn","locatedPeers","dialogSize","parseDistance","peopleSection","sortedList","btnMakeVisible","makeButton","btnMakeInvisible","btnCreateGroup","startWatching","stopWatching","distanceUnit","latestLocationSaved","accuracy","getLocated","updates","orderedPeers","groupsCounter","usersCounter","watchPosition","isLongitudeDifferent","isLatitudeDifferent","distanceCheck","calculateDistance","lat1","long1","lat2","long2","asin","formatNumber","fakeGradientDelimiter","delimiter","appSidebarLeft","sidebarHeader","onContactsClick","backBtn","btnArchive","isDialogsLoaded","themeCheckboxField","filteredButtons","openUrl","sessionStorage","kz_version","isMainDomain","toolsBtn","btnMenuFooter","rel","stopPropagation","suffix","versionFull","newBtnMenu","updateBtn","reload","initSearch","archivedCount","unreadDialogsCount","requestPeer","checkUpdateInterval","cache","ok","hasUpdate","searchContainer","pickedElements","selectedPeerId","selectedMinDate","selectedMaxDate","updatePicked","removeProperty","helper","unselectEntity","renderEntity","dates","dateData","peopleContainer","hideNewBtnMenuTimeout","onFocus","clearRecentSearchBtn","releaseSinglePeer","detailsMap","newGroupDiff","updateGroup","viaBotId","fwdFromId","removeBubble","insertObject","foundBubble","foundAtIndex","foundMidOnSameTimestamp","_timestamp","_mid","bubbleGroup","insertIndex","initDate","onPick","noButtons","selectedDate","onPrevClick","selectedMonth","setMonth","getMonth","minMonth","prevBtn","onNextClick","maxMonth","onDateClick","selectedEl","setTimeTitle","setFullYear","getDate","controlsDiv","monthTitle","monthsContainer","handleTimeInput","onOverflow","maxString","hoursInputField","minutesInputField","number","setMinutes","getMinutes","getHours","popupCenterer","timeOptions","sendDate","dateOptions","day","weekday","firstDate","weekStartDate","getDay","renderElement","dayIndex","clonedDate","showOverflowMonths","lines","StickyIntersector","handler","observeHeaders","observeElements","headersObserver","targetInfo","boundingClientRect","stickyTarget","rootBoundsInfo","rootBounds","threshold","root","elementsObserver","sentinel","headerSentinel","addSentinel","disconnect","_reactionCount","reactionCount","canRenderAvatars","doNotRenderSticker","hadStickerContainer","getReaction","center_icon","wrapPromise","wrapStickerPromise","displayOn","recentReactions","peer_id","isChosen","REACTION_INLINE_SIZE","REACTION_BLOCK_SIZE","around_animation","iconPlayer","aroundPlayer","REACTIONS_ELEMENTS","onConnectCallback","reactionElement","isPlaceholder","disconnectedCallback","connectedCallback","changedResults","hasReactions","availableReactionsResult","isReactionActive","some","totalReactions","can_see_list","reactionElementIdx","recent_reactions","setCanRenderAvatars","renderCounter","renderAvatars","setIsChosen","handleChangedResults","childNodes","timeSpan","fireAroundAnimation","updated","postKey","replies","leftPart","recent_repliers","isUnread","read_max_id","max_id","textSpan","iconSpan","rippleContainer","subscribeRepliesThread","updateMessage","makeEdited","edited","makeSponsored","MessageRender","setTime","chatType","editedSpan","sponsoredSpan","reactionsElement","reactionsMessage","isSponsored","sponsored","isMessage","views","postAuthor","post_author","fwd_from","postViewsSpan","channelViews","edit_date","edit_hide","pinned","getGroupsFirstMessage","inner","clonedArgs","_reactionsElement","renderReplies","bubbleContainer","messageDiv","isFooter","repliesFooter","setReply","isReplacing","currentReplyDiv","reply_to_mid","replyToPeerId","reply_to","reply_to_peer_id","appPeersManager","originalPeerTitle","originalMessage","wrapSingleMessage","needUpdate","replyMid","getElementByPoint","verticalSide","horizontalSide","elementFromPoint","reflowScrollableElement","EMOJI_LANG_PACK","keywords","version","langCode","langPackCode","keywordLangPacks","indexedLangPacks","getKeywordsPromises","storageKey","stateStorage","pack","isObject","validateInitObject","from_version","keywordsDifference","packKeywords","keyword","emoticons","getEmojiKeywords","lastRequestedLangCode","getRecentEmojis","indexObject","emojis","indexEmojis","search","POPULAR_EMOJI","getRecentEmojisPromise","recentEmoji","fixEmoji","appEmojiManager","loadedURLs","appendEmoji","unify","spanEmoji","kek","wrapSingleEmoji","getEmojiFromElement","nodeType","nodeValue","closeScrollTop","onContentClick","onEmojiSelected","divs","category","titleDiv","itemsDiv","unified","menu","emojiScroll","hasRecent","activeId","menuOnClick","stickyIntersector","setMenuActive","recentItemsDiv","observeStickyHeaderChanges","scrollPromise","processInvisibleDiv","intersector","isVisible","getAnimations","checkAnimation","processVisibleDiv","gifWidth","gifHeight","willUseWidth","calcImageInBox","gifsContainer","masonry","EMOTICONSSTICKERGROUP","addLazyLoadQueueRepeat","regularLazyLoadQueue","animatedDivs","checkAnimationContainer","renderSticker","observeAnimatedDiv","recentStickers","queueCategoryPush","categoryDiv","categoryTitle","superStickerRenderer","recentDiv","stickers","categoryPush","menuWrapper","menuScroll","getRecentStickers","pushRecentSticker","inlineResults","setHash","geo","accuracy_radius","botId","getGeoInput","stopTime","noErrorBox","botResults","queryId","query_id","savePhoto","generateQId","resultId","topPeers","botPeerId","topPeer","rating","setKeyValueToStorage","startParam","startBot","bot_inline_placeholder","peerData","setDraft","callbackAnswer","noLinks","noLinebreaks","queryAndResultIds","inlineResult","pushPopularBot","queryID","resultID","send_message","reply_markup","replyMarkup","sendText","inputMedia","sendMessage","getMediaInput","geoPoint","provider","venue_id","venue_type","phone_number","vcard","percent","sendOther","appInlineBotsManager","nextOffset","onGifsClick","gifsDiv","checkAnimations","newSearch","gifBotPeerId","resolveUsername","getInlineResults","setsDiv","countDiv","stickerDiv","renderFeatured","getFeaturedStickers","coveredSets","filterRendered","renderSet","covered","searchStickerSets","forceClose","inited","onMouseOut","displayTimeout","isActive","toElement","willBeActive","dispatchResultableEvent","onmouseout","onmouseover","tabId","onSelectTabClick","searchButton","deleteBtn","checkRights","tabsEl","tabsElements","canSendStickers","canSendToPeer","canSendGifs","chatInput","savedRange","getGoodRange","lockIntersectionGroup","unlockIntersectionGroup","unlock","refresh","emojiTab","stickersTab","gifsTab","0","1","2","messageInput","HIDE_EMOJI_TAB","INIT_TAB_ID","getVisible","clearVisible","rangeCount","getRangeAt","jumpedTo","stuck","which","scrollLeft","clearDraft","emoticonsDropdown","getVisibleRect","overflowElement","lookForSticky","overflowRect","overflowTop","overflowRight","overflowBottom","overflowLeft","sticky","overflow","horizontal","visualViewport","windowWidth","innerWidth","windowHeight","innerHeight","INTERNAL_LINK_TYPE","chatInvite","request_needed","processUpdateMessage","putPhoto","peopleCount","numberThousandSplitter","clientHeight","scrollHeightMinusTop","useReflow","previousScrollHeightMinusTop","newScrollTop","setScrollTopSilently","SuperIntersectionObserver","observing","observingQueue","freezedObservingNew","observer","callbacks","queue","IGNORE_ACTIONS","SERVICE_AS_REGULAR","TEST_SCROLL","appStickersManager","appUsersManager","appPhotosManager","appProfileManager","appDraftsManager","appMessagesIdsManager","appChatsManager","appReactionsManager","unreadOut","skippedMids","dateMessages","scrolledDown","isScrollingTimeout","unreaded","unreadedSeen","messagesQueuePromise","messagesQueue","messagesQueueOnRender","messagesQueueOnRenderAdditional","firstUnreadBubble","replyFollowHistory","isFirstLoad","passEntities","viewsMids","isTopPaddingSet","unreadedObserverCallback","onUnreadedInViewport","viewsObserverCallback","sendViewCountersDebounced","sponsoredMessage","random_id","apiManager","invokeApiSingle","onBubblesMouseMove","unhoverPrevious","hoverBubble","hoverReaction","setHoverVisible","stickerWrapper","getAvailableReactionsByMessage","select_animation","sendReaction","onBubblesClick","chatInner","onDatePick","contactDiv","appImManager","callDiv","callUser","spoiler","showDuration","useRafs","spoilerTimeout","getReactionCount","bubbleMid","reply_to_top_id","lastMsgId","saved_from_msg_id","openThread","filterMessages","getDiscussionMessage","channel_id","via","peerIdStr","savedFrom","messageId","documentDiv","groupedItem","SINGLE_MEDIA_CLASSNAME","isSingleMedia","isMediaCompatibleForDocumentViewer","parents","hasAspecter","albumItem","getMidsByMessage","isReplyClick","replyToMid","reply_to_msg_id","ignoreHeavyAnimation","scrollDimensions","sliceViewportDebounced","topbar","pinnedMessage","setCorrectIndexThrottled","lastScrollDirection","setStickyDateManually","distanceToEnd","getDistanceToEnd","requestHistory","setMessageId","setScroll","bubbleGroups","changeBubbleMid","setBubblePosition","scrollingToBubble","scrollToEnd","deleteMessagesByIds","tempMessage","reactionsElements","changeMessage","repliesElement","newDiv","grouped_id","newPoll","safeRenderMessage","scrollToBubbleIfLast","getGroupedBubble","updatePosition","scrollSaver","restore","deleteEmptyDateGroups","getBubbleByMessage","appendReactionsElementToBubble","deletedMids","renderedId","renderMaxId","groupedMessagesStorage","replyAfter","shouldReply","canSend","_target","initMessageReply","highlightBubble","dateMessage","dateBubble","previousStickyDate","sliceViewport","renderNewMessagesByIds","toNextPosition","msgIds","setUnreadCount","updateUnreadByDialog","finishPeerChange","isScrolledDown","setMessagesQueuePromise","performHistoryResult","postViewsElements","different","postViews","toggleObservingNew","incrementMessageViews","resizeObserver","wasHeight","resizing","skip","scrolled","part","rAF","onResizeEnd","offsetHeight","setEndRAF","ResizeObserver","contentRect","realDiff","_part","needScrollTop","readUnreaded","readPromise","idle","focusPromise","bubblesMaxId","getHistoryStorage","readContents","isMentionUnread","readHistory","bad","grouped","getHistoryTopPromise","getHistoryBottomPromise","getHistory","onScrolledTop","loadMoreHistory","readMaxId","readOutboxMaxId","msgId","permanent","ignoreOnScroll","emptyPlaceholderMid","ignoreNextScrollEvent","deleteSelectedMids","setPaddingTo","isPaddingNeeded","paddingTop","unsetPadding","replyTo","getLastBubble","setTopPadding","scrollToBubbleEnd","lastDateGroup","getLastDateGroup","forceDuration","fallbackToElementStartWhenCentering","isChangingHeight","margin","axis","getNormalSize","dimensions","lastScrollPosition","scrollToBubble","lastElem","lastTime","firstTimestamp","datasetKey","today","bubbleContent","serviceMsg","createDateBubble","fakeBubble","bubblesToo","attachedUnreadBubble","fetchNewPromise","getSponsoredMessagePromise","onAnimateLadder","resolveLadderAnimation","cancelMeasure","samePeer","topMessage","pinnedMessages","isTarget","followingUnread","savedPosition","overrideAdditionMsgId","getChatSavedPosition","getReadMaxIdIfUnread","getDialogOnly","unread_count","foundSlice","findSliceOffset","Bottom","isJump","setStartParam","setQueueId","messageEntityBotCommand","isBot","additionMsgId","maxBubbleId","getBubbleByPoint","destroyResizeObserver","oldChatInner","haveToScrollToBubble","fromUp","scrollFromDown","scrollFromUp","willScrollOnLoad","lockGroup","unlockGroup","mountedByLastMsgId","findNextMountedBubbleByMsgId","lastBubble","afterSetPromise","fetchReactions","getMessagesReactions","needFetchInterval","isFetchIntervalNeeded","getNewHistory","isBottomEnd","onScrolledAllDown","unread_mark","markDialogUnread","canWrite","createResizeObserver","setUnreadDelimiter","local","getDateContainerByMessage","STICKY_OFFSET","addBubble","additionalCallback","multipleRender","albumMustBeRenderedFull","our","contentWrapper","wasClassNames","classNames","transitionDelay","originalMid","unread","chat_id","wrapMessageActionTextNew","renderMessagesQueue","is_single","messageMessage","messageMedia","getAlbumText","richText","canHaveTail","isStandaloneMedia","needToSetHTML","emojiEntities","strLength","curr","big","forward","containerDiv","rowDiv","buttonEl","same_peer","checkSwitchReturn","switchInlineQuery","column","callbackButtonClick","messageWithReplies","getMessageWithReplies","withReplies","fwdFrom","nameContainer","canHideNameIfMedia","processingWebPage","previewResizer","preview","quote","mediaSize","quoteTextDiv","site_name","strong","textDiv","isSquare","emojiSticker","animatedSticker","staticSticker","newNameContainer","wrapGroupedDocuments","lastContainer","formatCallDuration","reason","contact","texts","wrapPoll","needName","titleVia","isForwardFromChannel","from_id","isHidden","from_name","getPeerColorById","goto","generateTail","documentContainer","documentMessageDiv","renderMessage","isBackLimit","hadScroll","getRenderedLength","viewportSlice","getViewportSlice","deleteViewportSlice","saved","getSaved","needReflowScroll","processLocalMessageRender","firstSlice","lastSlice","Top","isLoading","getScheduledMessages","additionMsgIds","isAdditionRender","animateAsLadder","targetMid","sortedMids","topIds","middleIds","bottomIds","setBubbles","delay","lastMsDelay","topRes","middleRes","bottomRes","delays","listElements","getRestrictionReasonText","getGreetingSticker","renderEmptyPlaceholder","channel_post","generateMessageId","start_param","chat_invite","chat_invite_hash","JOIN_CHAT","invite","processInternalLink","creator","addOffset","service","generateLocalMessageId","getOutputPeer","saveMessages","extraSize","invisibleTop","invisibleBottom","foundVisible","visibleRect","array","minTop","maxBottom","ignoreScrollSaving","invisible","checkPlaceholders","cacheSeconds","sponsoredMessages","generateLocalFirstMessage","bot_info","checkIfEmptyPlaceholderNeeded","Both","resultPromise","isFirstMessageRender","processResult","historyResult","serviceStartMessageId","threadsServiceMessagesIdsStorage","sup","processPromise","waitPromise","times","mustBeCount","unpin","canUnpin","canPinMessage","oneSide","silent","unpinAllMessages","hidePinnedMessages","updatePinnedMessage","buttonText","pinButtonText","isSelectionEmpty","selectionRange","START_TO_END","reportMessages","STICKER_EMOJI","preloadStickerPromise","preloadAnimatedEmojiSticker","buttonsEl","marginTop","canViewReadParticipants","canViewMessageReadParticipants","newMessage","btnClose","loaders","hasAllReactions","createFakeReaction","hasReadParticipants","readUserIds","getMessageReadParticipants","chatlist","skipReadParticipants","skipReactionsList","getMessageReactionsListAndReadParticipants","combined","getReactionCached","allReactionsSticker","REACTION_CLASS_NAME","REACTIONS_CLASS_NAME","CAN_USE_TRANSFORM","reactionsMap","players","onScrollProcessItem","reactionDiv","appear","widthContainer","reactionsContainer","reactionsScrollable","animationGroup","setOverrideIdleGroup","renderReaction","setVisible","scaleContainer","appearWrapper","selectWrapper","canUseAnimations","appear_animation","selectLoadPromise","selectPlayer","REACTION_SIZE","appPollsManager","appDocsManager","isSelectable","isTextSelected","isAnchorTarget","isUsernameTarget","selectedMid","isOverBubble","isTargetAGroupedItem","noForwards","viewerPeerId","canOpenReactedList","initResult","destroy","menuPadding","onSendScheduledClick","onReplyClick","onEditClick","initMessageEditing","onCopyClick","onCopyAnchorLinkClick","onCopyLinkClick","threadMessage","onPinClick","onUnpinClick","onRetractVote","onStopPoll","stopPoll","closest","reactionsMenu","hasAttribute","notDirect","scheduleSending","editMessage","scheduleDate","canEditMessage","hasTarget","isGoodType","setButtons","filterButtons","viewsButton","isViewingReactions","participantsCount","reactedLength","i18nElem","fakeText","MAX_AVATARS","PADDING_PER_AVATAR","visibility","paddingRight","reactionsCount","fakeElem","readParticipants","totalSize","sendMenuButtons","onSilentClick","onScheduleClick","sendMenu","openSide","onContextElement","onSubmitClick","send","radioLabel","isEmpty","isInputEmpty","questions","appendMoreField","correctAnswers","optionInputFields","labelOptions","weakMap","questionInputField","sendSilent","setPeerId","dd","settingsCaption","anonymousCheckboxField","multipleCheckboxField","quizCheckboxField","quizSolutionField","quizElements","quizSolutionCaption","quizHr","quizSolutionContainer","quizSolutionSubtitle","onEscape","getFilledAnswers","getRichValue","question","quizSolution","force","quizSolutionEntities","inputMediaPoll","getInputMediaPoll","getMessageSendingParams","helperType","clearHelper","questionField","getGifDuration","arrayBuffer","currentPopup","getCurrentNewMediaPopup","files","willAttachType","confirmShortcutIsSendShortcut","onKeyDown","attachFile","willAttach","shouldCompress","params","itemDiv","attachMedia","attachDocument","sendFileDetails","mediaContainer","caption_length_max","wasInputValue","messageInputField","attachFiles","groupCheckboxField","mediaCheckboxField","toPush","_file","lastModified","isMedia","sendingParams","sendAlbum","replyToMsgId","startsWith","source","objectURL","videoHeight","audioDecodedByteCount","webkitAudioDecodedByteCount","noSound","onload","isPhoto","isAudio","finish","onerror","mimeType","foundPhotos","foundVideos","foundFiles","n","firstType","appendGroupCheckboxField","appendMediaCheckboxField","albumContainer","appendMediaToContainer","onRender","AXIS_Y_KEYS","AXIS_X_KEYS","attachListNavigation","waitForKey","waitForKeySet","keyNames","getCurrentTarget","setCurrentTarget","scrollTo","hadTarget","fastSmoothScroll","getNextTargetX","currentTarget","isNext","nextTarget","handleArrowKey","property","endProperty","currentRect","targetRect","getNextTargetY","fireSelect","canContinue","attached","resetTarget","_onKeyDown","hidden","onVisible","listType","navigationItem","noBlurOnPop","removeItem","attachNavigation","controller","addHelper","fromController","skipAnimation","hideOtherHelpers","onChangeScreen","getStickersByEmoticon","ready","getMinDate","getMaxDate","canSendWhenOnline","btnSendWhenOnline","getRichValueWithCaret","field","withEntities","selNode","selOffset","startOffset","startContainer","endContainer","endOffset","possibleChildrenFocusOffset","node","alt","getRichElementValue","caretPos","substr","combineSameEntities","firstChar","getBothEmojiKeywords","searchEmojis","doNotShow","listElement","BASE","BASE_CLASS_LIST_ELEMENT","processPeerFullForCommands","botInfos","ignoreCase","commands","botInfo","botCommand","command","found","getReadyToSend","helpers","toggleListNavigation","preserveHelper","insertAtCaret","topMsgId","trimmed","getMentions","onBodyTouchStart","btnHover","attachButtonListener","checkAvailability","checkForceReply","touchListener","sendContact","getReplyMarkup","sendInlineResult","_checkQuery","gifsMasonry","isGallery","gallery","noCommands","separator","dcId","readBlobAsDataURL","dataURL","switch_pm","btnSwitchToPM","switchToPM","checkQuery","appWebPagesManager","serverTimeManager","appNotificationsManager","lastUrl","lastTimeType","replyElements","willSendWebPage","recordCanceled","recordStartTime","lockRedo","canRedoFromHTML","undoHistory","executedHistory","canUndoFromHTML","onCancelRecordClick","recorder","opusDecodeController","setKeepAlive","onEmoticonsOpen","toggleClass","btnToggleEmoticons","onEmoticonsClose","isUserOnlineVisible","openScheduled","prepareDocumentExecute","undoRedo","needHTML","sameHTMLTimes","currentHTML","handleMarkdownShortcut","formatKeys","markupTooltip","applyMarkdown","showLinkEditor","onMessageInput","richValue","markdownEntities","parseMarkdown","mergeEntities","parseEntities","urlEntities","getWebPagePromise","webPage","saveWebPage","setTopInfo","noWebPage","onHelperCancel","helperFunc","botCommands","updateBotCommandsToggle","editMsgId","saveDraftDebounced","checkAutocomplete","updateSendBtn","getEmojiEntityFromEmoji","onBtnSendClick","forwarding","releaseMediaPlayback","setSingleMedia","setRecording","showDiscardPopup","btnCancelRecord","recordingOverlayListener","recordingNavigationItem","sourceNode","analyser","createAnalyser","connect","fftSize","frequencyData","frequencyBinCount","getByteFrequencyData","recordRippleEl","ms","recordTimeEl","needReturn","onHelperClick","forwardElements","rowsWrapperWrapper","rowsWrapper","fakeRowsWrapper","fakeSelectionWrapper","goDownBtn","onGoDownClick","controlContainer","iconBtn","cancelBtn","onHideAuthorClick","isChangingAuthor","canToggleHideAuthor","onHideCaptionClick","forwardButtons","hideSender","showCaption","hideCaption","changePeer","changeForwardRecipient","forwardBtnMenu","forwardWasDroppingAuthor","replyTitle","forwardHover","modifyArgs","newMessageWrapper","sendAsContainer","sendAsCloseBtn","sendAsButtons","previousAvatar","onSendAsMenuToggle","sendAsAvatar","sendAsBtnMenu","inputMessageContainer","goDownUnreadBadge","goMentionBtn","goMentionUnreadBadge","goToNextMention","btnScheduled","btnToggleReplyMarkup","replyKeyboard","botCommandsToggle","scaler","botCommandsIcon","setUserId","attachMenuButtons","fileInput","accept","attachMenu","multiple","autocompleteHelperController","stickersHelper","emojiHelper","commandsHelper","mentionsHelper","inlineHelper","btnSendContainer","btnSend","attachMessageInputField","previousQuery","onFakeInput","draft","saveDraft","updateSendAs","encoderSampleRate","monitorGain","numberOfChannels","recordingGain","reuseWorker","touchMouseDown","onstop","ondataavailable","typedArray","dataBlob","Blob","decode","sendFile","isVoiceMessage","botStartBtn","toggleBotStartBtnDisability","pinnedControlBtn","originalChat","pinnedMessageContainer","neededFakeContainer","getNeededFakeContainer","fakeWrapperTo","oldFakeWrapperTo","borderRadius","fakeSelectionRect","fakeRowsRect","scale","initTranslateX","br","isStartButtonNeeded","hasMentions","unread_mentions_count","no_webpage","syncDraft","helperToo","clearInput","fromUpdate","getDraft","rMessage","setInputValue","inputFake","updateOffset","hasBotCommands","getUserFullResult","updateBotCommands","sendAsPeerId","updatingSendAsPromise","updateMessageInput","currentPeerId","channelFull","default_send_as","updateSendAsAvatar","updateMessageInputPlaceholder","executeButtonsUpdate","sendAsPeerIds","updateSendAsButtons","send_as","getChannelFull","getDefaultSendAs","updateSendAsResult","getSendAs","isAnonymousSending","oldInputField","attachMessageInputListeners","fixSafariStickyInputFocusing","isSendShortcutPressed","setStart","readAllHistory","commandsMap","bold","italic","underline","strikethrough","monospace","saveExecuted","executed","haveThisType","isCollapsed","tag","commonAncestorContainer","setActiveMarkupButton","insertText","insertEntity","isHelper","fullValue","AUTO_COMPLETE_REG_EXP","matchIndex","newValue","hadEntities","insertLength","addEntities","caretEntity","insertCaretAtIndex","caret","originalNode","previousSibling","newNode","createTextNode","setStartAfter","insertNode","setCaretAt","_value","foundHelper","suggest","checkEmoticon","checkInlineAutocomplete","needPlaceholder","inlineMatch","btnPreloader","inlinePlaceholder","helperWaitingForward","canSetDraft","fireEvent","clearValue","fixSafariStickyInput","clearReply","unicode","pushRecentEmoji","forwardMessages","dropAuthor","dropCaptions","isDroppingCaptions","hideCaptionCheckboxField","replyFragment","fromPeerIdsMids","fromPeerIds","smth","messagesWithCaptionsLength","peerTitles","titleKey","senderTitles","firstMessage","usingFullAlbum","albumMids","newReply","intl","peerTitleEl","_message","callerFunc","replyParent","oldReply","haveReply","floating","divAndCaption","CLASSNAME_BASE","wrapperUtils","attachOnCloseEvent","needClose","isFloating","setFloating","setUtilsWidth","onPlaybackParams","fasterEl","repeatEl","toggleEl","onStop","onMediaPlay","isMusic","fromName","prevEl","nextEl","attachClick","volumeProgressLineContainer","tunnel","progressWrapper","playingDetails","BAR_HEIGHTS","PinnedMessageBorder","drawRect","getClipPath","barHeight","GAP","clipPath","path","getBarHeight","ONE","TWO","THREE","FOUR","MORE","getMarkHeight","markHeight","getMarkTranslateY","getTrackTranslateY","trackHeight","getTrackHeight","clipPathId","markTranslateY","trackTranslateY","defs","mark","AnimatedSuper","animateFirst","currentIndex","clearRow","DURATION","reflow","clearRows","previousIndex","fromTop","ignorePrevious","setNewRow","previousRow","AnimatedCounter","previousNumber","animatedSuper","decimal","previousDecimalNumber","getRow","EMPTY_INDEX","previousByDecimal","decimalNumber","getDecimal","hideLeft","pinnedMaxMid","pinnedMid","pinnedIndex","wasPinnedIndex","wasPinnedMediaIndex","locked","waitForScrollBottom","loadedBottom","loadedTop","scrollDownListenerSetter","getCurrentIndexPromise","isStatic","debug","dAC","pinnedMessageBorder","animatedSubtitle","animatedMedia","animatedCounter","btnOpen","openPinned","setCorrectIndex","setPinnedMessage","_setPinnedMessage","unsetScrollDownListener","testMid","isNeededMore","getCurrentIndex","LOAD_OFFSET","correctAfter","gotRest","getPinnedMessage","backLimited","offset_id_offset","lastY","isDown","handleScrollSideEvent","refreshPosition","setScrollDownListener","handleFollowingPinnedMessage","isLast","setCount","writeTo","writeMediaTo","mutePeer","tsNow","ONE_HOUR","radioForm","appGroupCallsManager","verifyButtons","isMenuOpen","btnMore","menuButtons","getDeleteButtonText","buttonsToVerify","verifyVideoChatButton","currentGroupCall","groupCall","getChatTyped","call_active","verifyCallButton","getCachedFullUser","phone_calls_available","video_calls_available","onJoinGroupCallClick","joinGroupCall","onResize","resize","setUtilsRAF","chatUtils","chatAudio","btnBack","chatInfoContainer","chatInfo","person","avatarElement","btnJoin","btnPinned","btnCall","btnGroupCall","btnMute","btnSearch","pushButtonToVerify","followPinnedMessage","getSearchContext","activeScreen","onBtnBackClick","isFirstChat","linked_chat_id","onCallClick","chatContextMenuHintWasShown","contactPeerId","joinChannel","setMutedState","isTopMessage","hiddenPinnedMessages","byCurrent","wasPeerId","newPinnedMessage","appSearch","beginSearch","btnPickDate","selectedIndex","onResultsClick","selectResult","onFooterClick","onUpClick","onDownClick","foundCountEl","upBtn","downBtn","footer","dateBtn","renderedCount","canvases","instance","INSTANCES","fillCanvas","renderImageFromUrlPromise","crossOrigin","objectUrl","CanvasPattern","imageWidth","imageHeight","mask","globalCompositeOperation","large","setCanvasDimensions","renderToCanvas","backgroundEl","Log","Warn","Debug","backgroundTempId","patternRenderer","gradientCanvas","previousGradientRenderer","previousPatternRenderer","previousPatternCanvas","patternCanvas","isDarkPattern","getInstance","_gradientRenderer","setBackgroundPromise","contextMenu","constructUtils","constructPeerHelpers","constructPinnedHelpers","constructDiscussionHelpers","constructScheduledHelpers","setReactionsHoverListeners","cleanupBackground","searchTab","setAutoDownloadMedia","setLoadMutex","loadSidebarMedia","photoSizeMax","videoSizeMax","fileSizeMax","photo_size_max","video_size_max","getAutoDownloadSettingsByPeerId","setPrefix","wasAlreadyUsed","addedListener","waitingForMouseUp","mouseUpCounter","onMouseUpSingle","resetSelection","tools1","tools2","cancelClosening","linkBackButton","linkInput","applyLink","isLinkValid","setTooltipPosition","linkApplyButton","applyDiv","delimiter1","delimiter2","delimiter3","matchUrlProtocol","hideTimeout","nodes","getSelectedNodes","currentMarkups","activeButtons","getActiveMarkupButton","isLinkToggle","bodyRect","selectionRect","inputRect","selectionTop","sizesRect","containerRect","isFirstShow","setMouseUpEvent","arcParameter","rx","ry","xAxisRotation","largeArcFlag","sweepFlag","generatePathData","tl","tr","bl","dropIcon","onDragOver","onDragLeave","onDrop","outlineWrapper","dropHeader","dropSubtitle","headerArgs","disableTransition","LineBlobDrawable","maxRadius","minRadius","N","radiusNext","speed","generateBlob","radDif","amplitude","speedScale","paint","pinnedTop","progressToPinned","beginPath","moveTo","lineTo","r1","progressNext","x1","x2","cx","y1","y2","bezierCurveTo","closePath","stateId","createGradient","shader","getGradientFromType","x0","y0","createLinearGradient","MUTED_BY_ADMIN","addColorStop","UNMUTED","MUTED","CONNECTING","dt","handleDevicePixelRatioChanged","setSize","forceUpdate","handleResize","resizeHandler","resizeCanvas","invokeDraw","handleFocus","focused","handleBlur","raf","draw","lbd","lbd1","lbd2","currentState","previousState","progressToState","lastUpdateTime","animateToAmplitude","animateAmplitudeDiff","amplitude2","animateAmplitudeDiff2","top1","top2","paint1","globalAlpha","setCurrentState","states","matchMedia","setAmplitude","setCanvasSize","computedStyle","getProperty","getComputedStyle","getPropertyValue","playPart","createPart","initFrame","skipFirstFrameRendering","inverseColor","onLoadForColor","onLoadForPart","getPart","startFrame","endFrame","frameCount","partState","colorState","getColor","partCallback","changedPartState","changedColorState","setPartState","setColorState","prevState","renderIfPaused","getItem","invoke","GROUP_CALL_MICROPHONE_BUTTON_STATE","partName","HAND","colored","GROUP_CALL_PARTICIPANT_MUTED_STATE","colorStr","MUTED_FOR_ME","propertyValue","getColorByMutedState","generateEqualParts","clearMutedStateModifier","withIcons","icons","iconClassName","element2","actionClassName","onElementDestroy","getGroupCallParticipantMutedState","mutedIcon","mutedState","callVideoCanvasBlur","renderFrame","groupCallParticipantMutedIcon","groupCallParticipantStatus","updateParticipant","participantsElements","groupCallId","setElementDisplay","pinnedSource","pinSource","unpinAll","setInstance","displayPinned","shouldDisplay","shouldDisplayElement","isPinned","setPinned","hasAnyVideo","participantElements","participantVideo","getVideoElementFromParticipantByType","setParticipant","_onLengthChange","onOpenProfileClick","popup","getPopups","targetPeerId","toggleParticipantMuted","editParticipant","canManageCall","can_self_unmute","muted_by_you","kickFromChat","getParticipantByPeerId","getContainer","groupCallParticipantsVideo","getGroupCallParticipants","descriptionIntl","mediaDevices","_className","buttonDiv","isConfirm","fixDimensions","fixPosition","addResizeHandlers","setSwipeHandler","handlers","resizeHandlerClassName","startTop","startLeft","startWidth","startHeight","resizingSide","isEnlarging","resizeDiff","maxPossible","setCursor","toggleMovable","movable","movableOptions","setPositionToCenter","destroyElements","toggleClassName","raise_hand_rating","withoutOverlay","onFullScreenClick","onToggleControls","buttonsContainer","onVideoClick","btnVideo","toggleVideoSharing","onScreenClick","btnScreen","toggleScreenSharing","toggleMuted","changeRaiseHand","onLeaveClick","hangUp","discard","onFullScreenChange","toggleBigLayout","btnFullScreen","btnExitFullScreen","wasFullScreen","setThemeColor","movablePanel","isBig","videosCount","wasBig","btnInvite","btnShowColumn","toggleRightColumn","btnFullScreen2","headerInfo","newHeader","newHeaderInfo","newHeaderTitle","btnHideColumn","videosScrollable","groupCallTitle","groupCallDescription","groupCallBodyHeaderDescription","constructButtons","groupCallParticipants","updateInstance","setHasPinned","groupCallMicrophoneIcon","_makeButton","microphoneIcon","btnLeave","CLOSED","setDescription","microphoneButtonState","getGroupCallMicrophoneButtonState","micState","CALL_STATE","interval","connectionState","CONNECTED","PENDING","REQUESTING","EXCHANGING_KEYS","connectedAt","INIT_STATE","resizeVideoContainers","videoContainers","interlocutorUserId","emojisSubtitle","partyStates","partyMutedState","stateText","constructFirstButtons","constructSecondButtons","wasTryingToJoin","movableElement","controlsHover","firstButtonsRow","muteI18nElement","secondButtonsRow","declineI18nElement","btnDecline","btnAccept","acceptCall","isPendingIncoming","isSharingVideo","isSharingScreen","outputState","getMediaState","oldContainers","mediaState","getVideoElement","hasFrame","hasPromise","videoState","screencastState","videoContainer","createVideoContainer","output","getEmojisFingerprint","popupWidth","MAX_WIDTH_PX","MAX_HEIGHT_PX","isVertical","MAX_SIZE","biggestSideSize","widthRatio","heightRatio","parseSignalingData","sdp","parseMediaSectionInfo","fingerprints","fingerprint","ufrag","pwd","screencast","convertNumber","isSending","codec","ssrc","sourceGroups","ssrcGroups","sourceGroup","semantics","ssrcs","sources","rtpExtensions","payloadTypesMap","getPayloadType","payloadType","clockrate","feedbackTypes","subtype","parameters","payloadTypes","connection","call","localDescription","remoteDescription","descriptionInit","offerReceived","createAnswer","setLocalDescription","offer","createOffer","offerSent","initialSetup","sendCallSignalingData","crypto","subtle","sha256","digest","TextEncoder","encode","convertToUint8Array","p2pKey","seqMap","bufferConcats","msgKeyLarge","concatSHA256","subarray","msgKey","aesKeyIv","prepareAesKeyIv","aesProcessCtr","seq","ArrayBuffer","setUint32","encryptPrepared","sha256a","sha256b","iv","encryptedData","dataSize","encrypt","cryptoKey","importKey","msgKeyEquals","encryptedDataSize","decryptionBuffer","constTimeIsDifferent","getUint32","stringBuilder","streamName","addExtmap","addPayloadTypes","addSsrc","addDataChannel","finalize","dir","isFirefox","isSafari","extmap","j","fmtp","getOwnPropertyNames","pName","ssrcGroup","sdpString","sdpMLineIndex","sdpMid","foundation","component","protocol","priority","relAddress","generation","tcpType","networkId","networkCost","candidate","generateOffer","generateAnswer","udp_p2p","udp_reflector","min_layer","max_layer","library_versions","createdAt","decryptQueue","candidates","streamManager","canCreateConferenceEntry","lowBattery","videoRotation","Proxy","setMediaState","sendMediaState","mediaStates","_sendMediaState","_connectionState","connectionInstance","iceConnectionState","findEntry","recvEntry","wasStartingScreen","wasStartingVideo","requestScreen","stopVideoSharing","startScreenSharingInternal","requestInputSource","track","inputStream","getVideoTracks","stopTrack","appendToConference","startVideoSharingInternal","isSharingVideoType","audioTrack","getAudioTracks","CLOSING","clearHangUpTimeout","hangUpTimeout","phoneCall","canAccept","isClosing","overrideConnectionState","g_a_hash","appCallsManager","generateDh","dh","g_b","g_a","g_b_hash","getCallInput","phonePhoneCall","savePhonePhoneCall","encryptionKey","configuration","iceServers","connections","ipv6","port","password","urls","turn","stun","credential","iceTransportPolicy","p2p_allowed","getRtcConfiguration","bindPrefix","createPeerConnection","negotiate","sendIceCandidate","onTrack","createDescription","encryptor","decryptor","appendStreamToConference","createDataChannel","processDecryptQueue","dataChannelEntry","createEntry","sendEntry","dataChannel","negotiated","applyDataChannelData","parse","sendDataChannelData","encryptRawPacket","iceCandidate","parsed","p2pParseCandidate","key_fingerprint","computeKey","joinCall","emojisFingerprint","getEmojisFingerprintPromise","invokeCrypto","codePoints","getTransceivers","transceiver","getEntryByMid","bundle","sdpDescription","generateSdp","isAnswer","setRemoteDescription","unlockStreamManager","stream","onInputStream","videoTrack","onMutedChange","requestAudioSource","setMuted","discardReason","discardedByOtherParty","closeConnectionAndStream","hasVideo","discardCall","_codec","setData","transport","performCodec","vp8PayloadType","rtxIdx","apt","filterNotVP8","setDataToDescription","performSsrcGroups","getEntryBySource","sendRecvEntry","findFreeSendRecvEntry","setEntrySource","createDataChannelEntry","tryToReleaseCandidates","doTheMagic","generateCandidate","RTCIceCandidate","addIceCandidate","decryptedData","decryptRawPacket","TextDecoder","signalingData","applyCallSignalingData","appAvatarsManager","onState","amplitudes","weave","currentDescription","instanceListenerSetter","isChangingInstance","clearCurrentInstance","callDescription","convertCallStateToGroupState","componentDidMount","componentWillUnmount","groupCallMicrophoneIconMini","throttledMuteClick","getCallInstance","weaveContainer","calls","instances","sortedInstances","updatePhoneCall","saveCall","phone_call","confirmCall","createCallInstance","admin_id","setPhoneCall","setHangUpTimeout","g_a_or_b","updatePhoneCallSignalingData","phone_call_id","onUpdatePhoneCallSignalingData","audioAsset","callId","isDiscarded","oldCall","safeReplaceObject","getCall","currentCall","hasConnected","playSound","stopSound","playSoundIfDifferent","hasCurrent","random_length","dhConfig","isVideo","fullInfo","participant_id","myVersion","compareVersion","connection_id","FOCUS_EVENT_NAME","columnEl","offline","updateStatusInterval","onHashChange","parseUriParams","tgaddr","replaceState","onclick","wrapUrl","postId","post","openUsername","userName","setSettings","chatsSelectTabDebounced","setLoop","setTimeFormat","timeFormat","toggleChatGradientAnimation","onDocumentPaste","attachType","newMediaPopup","canDrag","DragEvent","_types","dataTransfer","addFiles","backgroundPromises","isIDLE","updateStatus","appendEmojiAnimationContainer","createNewChat","chatsSelectTab","resizeInstances","saveChatPosition","choosing","setChoosingStickerTyping","typings","typing","singleInstance","activateInstance","setToCache","topbarCall","discardCurrentCall","setAuthorized","telegramMeWebManager","addAnchorListener","uriParams","hashtag","pathnameParams","STICKER_SET","makeLink","VOICE_CHAT","PHONE_NUMBER_REG_EXP","USER_PHONE_NUMBER","PRIVATE_POST","thread","comment","MESSAGE","domain","attachKeydownListener","activatingChat","screen","IGNORE_KEYS","isOverlayActive","goodMid","nextDialog","newEvent","KeyboardEvent","commentId","resolveChannel","saveApiChat","resolvePhone","wrappedUrl","noPathnameParams","pathname","noUriParams","openComment","generateThreadServiceStartMessage","getCallByUserId","phone_calls_private","startCallInternal","ignoreGroupCall","ignoreCall","discardGroupCallConfirmation","discardCallConfirmation","getGroupCallFull","saveGroupCall","createGroupCall","broadcastEvent","STATE_INIT","getBackground","setBackground","getFile","lastBackgroundUrl","chatBubbles","chatPositions","getFromCache","themeColor","hslaStringToHex","backgroundUrl","applyHighlightningColor","setTheme","setCurrentBackground","prevTab","prevIdx","attachDragAndDropListeners","handleSelection","drops","mediaDrops","mount","isFiles","_dropsContainer","mediaDropsContainer","dropsContainer","_drops","foundMedia","appendDrops","drop","setPath","transitionTime","setUserStatus","fromIndex","justReturn","spliced","chatFrom","beforeDestroy","chatIndex","spliceChats","existingIndex","oldChat","setType","dot","eye","getPeerTypings","langPackKeys","multi","mapa","typingElement","getTypingElement","descriptionElement","ignoreSelf","getPeerTyping","onlines","getOnlines","useWhitespace","typingContainer","getPeerStatus","topButtons","author","preloaderStreamable","isFirstOpen","pageEl","zoomElements","zoomSwipeStartX","zoomSwipeStartY","zoomSwipeX","zoomSwipeY","setZoomValue","rangeSelector","moversContainer","btnOut","btnIn","toggleZoom","setMoverAnimationPromise","highlightSwitchersTimeout","wholeDiv","isZooming","mover","ctrlKeyDown","changeZoom","onKeyUp","scrollingUp","MEDIA_VIEWER_CLASSNAME","overlaysDiv","mainDiv","topbarLeft","onlyMobile","authorRight","zoom","setNewMover","onDownloadClick","moveLength","setMoverPromise","evt","zoomValue","videoPlayer","lockControls","zoomSwipeHandler","lastDiffY","addProgress","btnMenuToggle","setMoverToTarget","appMediaViewer","closing","fromRight","removeCenterFromMover","wasActive","realParent","SVGImageElement","SVGForeignObjectElement","needOpacity","HTMLImageElement","HTMLVideoElement","setFullAspect","scaleX","scaleY","brSplitted","fillPropertyValue","willBeLeft","willBeTop","isRejected","SVGSVGElement","sizeTailPath","mediaElement","clipId","newClipId","newSvg","outerHTML","SVGUseElement","sX","sY","upscale","_br","toLeft","windowW","newTransform","p1","newMover","oldAvatar","replaceChild","setAuthorInfo","isDocument","useContainerAsTarget","moveTheMover","mainColumns","padding","windowH","thumbPromise","useController","moverVideo","canPlayThrough","createPlayer","ckin","overlay","HAVE_FUTURE_DATA","attachCanPlay","networkState","NETWORK_LOADING","isntEnoughData","rollback","updateMediaSource","cancellablePromise","attachPromise","haveImage","captionTimeout","isForDocument","onAuthorClick","savePhotoFile","setCaptionTimeout","btnMenuForward","btnMenuDownload","btnMenuDelete","onCaptionClick","cantForwardMessage","cantDownloadMessage","setCaption","_openMedia","onAvatarUpdate","removeFromAvatarsCache","getFullPhoto","getTarget","hadMessage","isAvatarCached","believeMe","addedToQueue","newPeerId","getPeerMigratedTo","onArchiveClick","selectedId","editPeerFolders","folder_id","toggleDialogPin","pinned_dialogs_count_max","onUnmuteClick","onUnreadClick","top_message","isDialogUnread","ConnectionStatus","SENDING_STATUS","hadConnect","connecting","timedOut","updating","setConnectionStatus","baseDcId","setFirstConnectionTimeout","connectionStatus","online","Connected","forceGetDifference","TimedOut","retryAt","setStatusText","currentLangPackKey","statusEl","statusPreloader","CHANGE_STATE_DELAY","getA","forceReconnect","timerSpan","forceReconnectTimeout","setStateTimeout","statusContainer","constructContainer","roundRect","defaultRadius","quadraticCurveTo","DPR","SIZE","MARGIN","RADIUS","groupCallActiveIcon","START_X","startTime","wasMounted","itemProgress","startAnimation","indexKey","appDialogsManager","addListDialog","isBatch","folders","menuScrollContainer","lastActiveElements","offsets","initedListeners","loadedDialogsAtLeastOnce","loadDialogsPromise","onChatsScroll","_onListLengthChange","checkIfPlaceholderNeeded","hasContacts","removeContactsPlaceholder","updateContactsLength","loadContacts","verifyPeerIdForContacts","processContact","added","onChatsRegularScroll","sliceTimeout","perf","performance","scrollTopWas","rectContainer","rectTarget","firstY","firstElement","lastElement","elementOverflow","sliceFromStart","sliceFromEnd","deleteDialog","setOffsets","onChatsScrollTop","loadDialogs","chatsPreloader","allUnreadCount","bottomPart","allChatsIntlElement","addFilter","onStateLoaded","foldersScrollable","filtersNavigationItem","unshiftItem","changeFiltersAllChatsKey","getDialogIndexKey","hasClassName","getDialogDom","setOnlineStatus","processDialogForCallStatus","setFilterUnreadCount","validateDialogForFilter","setFiltersUnreadCount","updateDialog","setUnreadMessages","setDialogActive","getCachedDialogs","validateListForFilter","onFiltersLengthChange","containerToAppend","renderedFilter","unsetTyping","dialogDom","callIcon","savePeerSettings","getNotifyPeerTypeSettings","initListeners","renderFiltersPromise","showFiltersPromise","storagesResults","addMissedDialogs","fillConversations","migratedTo","testDialogForFilter","topOffset","getOffsetIndex","bottomOffset","isDialogMustBeInViewport","unreadSpan","getFolder","foundUnmuted","getAll","sortedDialogList","clientWidth","wasShowing","currentOffsetIndex","needIndex","getConversationsResult","isTopEnd","cccc","offsetDialog","classNameType","subtitleArgs","placeholderContainer","generateEmptyPlaceholder","wrapLocalSticker","emptyDialogsPlaceholderSubtitle","usersLength","placeholderType","updatePartClassName","updateContactsLengthPromise","firstDialog","getDialogFromElement","lastDialog","withContext","openInner","lastActiveListElement","setPeerFunc","sameElement","getDialogByPeerId","lastMessage","highlightWord","setUnread","draftMessage","lastTimeSpan","videoTypes","playIcon","withoutMediaType","sender","senderBold","setStatusMessage","disableAnimationIfRippleFound","setSendingStatus","statusSpan","hasUnreadBadge","isUnreadBadgeMounted","unreadBadge","hasMentionsBadge","isMentionBadgeMounted","mentionsBadge","transitionDuration","isMention","originalDialog","getDialog","setCallStatus","call_not_empty","getMessageSenderPeerIdOrName","addDialog","_dialog","captionDiv","titleSpanContainer","titleP","rightSpan","oldTypingElement","newTypingElement","module","exports","defineProperty","enumerable","Symbol","toStringTag","__esModule","default","prototype","AudioContext","webkitAudioContext","isRecordingSupported","bufferLength","encoderApplication","encoderFrameSize","encoderPath","maxFramesPerPage","mediaTrackConstraints","resampleQuality","streamPages","wavBitDepth","encodedSamplePosition","getUserMedia","WebAssembly","clearStream","getTracks","audioContext","closeAudioContext","encodeBuffers","getChannelData","encoder","postMessage","buffers","initAudioContext","initAudioGraph","scriptProcessorNode","createScriptProcessor","destination","onaudioprocess","inputBuffer","monitorGainNode","createGain","setMonitorGain","recordingGainNode","setRecordingGain","initSourceNode","createMediaStreamSource","loadWorker","Worker","initWorker","streamPage","storePage","recordedPages","samplePosition","page","originalSampleRate","sampleRate","wavSampleRate","onpause","resume","onresume","gain","setTargetAtTime","onstart","destroyWorker","Function","ScrollableBase","logPrefix","onScrollMeasure","needCheckAfterAnimation","scrollPosition","scrollProperty","addedScrollListener","removeHeavyAnimationListener","addScrollListener","removeScrollListener","Scrollable","onScrollOffset","withPaddingContainer","maxScrollTop","ScrollableX","splitCount","scrollHorizontally","deltaX","CheckboxField","stateValue","stateValues","checkSvg","bg","withHover","currentHashPromise","newHashPromise","new_settings","newAlgo","new_algo","salt1","getRandomValues","randomize","hashes","new_password_hash","inputCheckPassword","setUser"],"mappings":"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","file":"11.485cff055ef366a5dc5a.chunk.js","sourcesContent":["/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\n// import { IS_MOBILE_SAFARI, IS_SAFARI } from \"../environment/userAgent\";\r\nimport cancelEvent from \"../helpers/dom/cancelEvent\";\r\nimport InputField, { InputFieldOptions } from \"./inputField\";\r\n\r\nexport default class PasswordInputField extends InputField {\r\n public passwordVisible = false;\r\n public toggleVisible: HTMLElement;\r\n public onVisibilityClickAdditional: () => void;\r\n\r\n constructor(options: InputFieldOptions = {}) {\r\n super({\r\n plainText: true,\r\n ...options\r\n });\r\n\r\n const input = this.input as HTMLInputElement;\r\n input.type = 'password';\r\n input.setAttribute('required', '');\r\n input.name = 'notsearch_password';\r\n input.autocomplete = 'off';\r\n\r\n /* if(IS_SAFARI && !IS_MOBILE_SAFARI) {\r\n input.setAttribute('readonly', '');\r\n input.addEventListener('focus', () => {\r\n input.removeAttribute('readonly');\r\n }, {once: true});\r\n } */\r\n\r\n // * https://stackoverflow.com/a/35949954/6758968\r\n const stealthy = document.createElement('input');\r\n stealthy.classList.add('stealthy');\r\n stealthy.tabIndex = -1;\r\n stealthy.type = 'password';\r\n input.parentElement.prepend(stealthy);\r\n input.parentElement.insertBefore(stealthy.cloneNode(), input.nextSibling);\r\n\r\n const toggleVisible = this.toggleVisible = document.createElement('span');\r\n toggleVisible.classList.add('toggle-visible', 'tgico');\r\n\r\n this.container.classList.add('input-field-password');\r\n this.container.append(toggleVisible);\r\n\r\n toggleVisible.addEventListener('click', this.onVisibilityClick);\r\n toggleVisible.addEventListener('touchend', this.onVisibilityClick);\r\n }\r\n\r\n public onVisibilityClick = (e: Event) => {\r\n cancelEvent(e);\r\n this.passwordVisible = !this.passwordVisible;\r\n\r\n this.toggleVisible.classList.toggle('eye-hidden', this.passwordVisible);\r\n (this.input as HTMLInputElement).type = this.passwordVisible ? 'text' : 'password';\r\n this.onVisibilityClickAdditional && this.onVisibilityClickAdditional();\r\n };\r\n}\r\n","export default function bytesCmp(bytes1: number[] | Uint8Array, bytes2: number[] | Uint8Array) {\n const len = bytes1.length;\n if(len !== bytes2.length) {\n return false;\n }\n\n for(let i = 0; i < len; ++i) {\n if(bytes1[i] !== bytes2[i]) {\n return false;\n }\n }\n\n return true;\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n * \r\n * Originally from:\r\n * https://github.com/zhukov/webogram\r\n * Copyright (C) 2014 Igor Zhukov \r\n * https://github.com/zhukov/webogram/blob/master/LICENSE\r\n */\r\n\r\nimport { IS_TOUCH_SUPPORTED } from \"../../environment/touchSupport\";\r\n\r\nexport default function placeCaretAtEnd(el: HTMLElement, ignoreTouchCheck = false) {\r\n if(IS_TOUCH_SUPPORTED && (!ignoreTouchCheck || document.activeElement !== el)) {\r\n return;\r\n }\r\n \r\n el.focus();\r\n if(typeof window.getSelection !== \"undefined\" && typeof document.createRange !== \"undefined\") {\r\n var range = document.createRange();\r\n range.selectNodeContents(el);\r\n range.collapse(false);\r\n var sel = window.getSelection();\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n // @ts-ignore\r\n } else if(typeof document.body.createTextRange !== \"undefined\") {\r\n // @ts-ignore\r\n var textRange = document.body.createTextRange();\r\n textRange.moveToElementText(el);\r\n textRange.collapse(false);\r\n textRange.select();\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport lottieLoader, { LottieLoader } from \"../../lib/rlottie/lottieLoader\";\r\nimport RLottiePlayer from \"../../lib/rlottie/rlottiePlayer\";\r\nimport PasswordInputField from \"../passwordInputField\";\r\n\r\nexport default class PasswordMonkey {\r\n public container: HTMLElement;\r\n public animation: RLottiePlayer;\r\n public needFrame = 0;\r\n protected loadPromise: ReturnType;\r\n\r\n constructor(protected passwordInputField: PasswordInputField, protected size: number) {\r\n this.container = document.createElement('div');\r\n this.container.classList.add('media-sticker-wrapper');\r\n }\r\n\r\n public load() {\r\n if(this.loadPromise) return this.loadPromise;\r\n return this.loadPromise = lottieLoader.loadAnimationAsAsset({\r\n container: this.container,\r\n loop: false,\r\n autoplay: false,\r\n width: this.size,\r\n height: this.size,\r\n noCache: true\r\n //}, 'assets/img/TwoFactorSetupMonkeyClose.tgs').then(_animation => {\r\n }, 'TwoFactorSetupMonkeyPeek').then(_animation => {\r\n //return;\r\n this.animation = _animation;\r\n this.animation.addEventListener('enterFrame', currentFrame => {\r\n //console.log('enterFrame', currentFrame, this.needFrame);\r\n\r\n if((this.animation.direction === 1 && currentFrame >= this.needFrame) ||\r\n (this.animation.direction === -1 && currentFrame <= this.needFrame)) {\r\n this.animation.setSpeed(1);\r\n this.animation.pause();\r\n } \r\n });\r\n\r\n this.passwordInputField.onVisibilityClickAdditional = () => {\r\n if(this.passwordInputField.passwordVisible) {\r\n this.animation.setDirection(1);\r\n this.animation.curFrame = 0;\r\n this.needFrame = 16;\r\n this.animation.play();\r\n } else {\r\n this.animation.setDirection(-1);\r\n this.animation.curFrame = 16;\r\n this.needFrame = 0;\r\n this.animation.play();\r\n }\r\n };\r\n\r\n return lottieLoader.waitForFirstFrame(_animation);\r\n });\r\n }\r\n\r\n public remove() {\r\n if(this.animation) {\r\n this.animation.remove();\r\n }\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport InputField from \"../inputField\";\r\nimport lottieLoader from \"../../lib/rlottie/lottieLoader\";\r\nimport RLottiePlayer from \"../../lib/rlottie/rlottiePlayer\";\r\n\r\nexport default class TrackingMonkey {\r\n public container: HTMLElement;\r\n\r\n protected max = 45;\r\n protected needFrame = 0;\r\n\r\n protected animation: RLottiePlayer;\r\n protected idleAnimation: RLottiePlayer;\r\n\r\n protected loadPromise: Promise;\r\n\r\n constructor(protected inputField: InputField, protected size: number) {\r\n this.container = document.createElement('div');\r\n this.container.classList.add('media-sticker-wrapper');\r\n\r\n const input = inputField.input;\r\n\r\n input.addEventListener('blur', () => {\r\n this.playAnimation(0);\r\n });\r\n\r\n input.addEventListener('input', (e) => {\r\n this.playAnimation(inputField.value.length);\r\n });\r\n\r\n /* codeInput.addEventListener('focus', () => {\r\n playAnimation(Math.max(codeInput.value.length, 1));\r\n }); */\r\n }\r\n\r\n // 1st symbol = frame 15\r\n // end symbol = frame 165\r\n public playAnimation(length: number) {\r\n if(!this.animation) return;\r\n\r\n length = Math.min(length, 30);\r\n let frame: number;\r\n if(length) {\r\n frame = Math.round(Math.min(this.max, length) * (165 / this.max) + 11.33);\r\n\r\n if(this.idleAnimation) {\r\n this.idleAnimation.stop(true);\r\n this.idleAnimation.canvas.style.display = 'none';\r\n }\r\n \r\n this.animation.canvas.style.display = '';\r\n } else {\r\n /* const cb = (frameNo: number) => {\r\n if(frameNo <= 1) { */\r\n /* idleAnimation.play();\r\n idleAnimation.canvas.style.display = '';\r\n animation.canvas.style.display = 'none'; */\r\n /* animation.removeListener('enterFrame', cb);\r\n }\r\n };\r\n animation.addListener('enterFrame', cb); */\r\n \r\n frame = 0;\r\n }\r\n //animation.playSegments([1, 2]);\r\n\r\n const direction = this.needFrame > frame ? -1 : 1;\r\n //console.log('keydown', length, frame, direction);\r\n\r\n this.animation.setDirection(direction);\r\n if(this.needFrame !== 0 && frame === 0) {\r\n this.animation.setSpeed(7);\r\n }\r\n /* let diff = Math.abs(needFrame - frame * direction);\r\n if((diff / 20) > 1) animation.setSpeed(diff / 20 | 0); */\r\n this.needFrame = frame;\r\n \r\n this.animation.play();\r\n\r\n /* animation.goToAndStop(15, true); */\r\n //animation.goToAndStop(length / max * );\r\n }\r\n\r\n public load() {\r\n if(this.loadPromise) return this.loadPromise;\r\n return this.loadPromise = Promise.all([\r\n lottieLoader.loadAnimationAsAsset({\r\n container: this.container,\r\n loop: true,\r\n autoplay: true,\r\n width: this.size,\r\n height: this.size\r\n }, 'TwoFactorSetupMonkeyIdle').then(animation => {\r\n this.idleAnimation = animation;\r\n\r\n // ! animationIntersector will stop animation instantly\r\n if(!this.inputField.value.length) {\r\n animation.play();\r\n }\r\n\r\n return lottieLoader.waitForFirstFrame(animation);\r\n }),\r\n\r\n lottieLoader.loadAnimationAsAsset({\r\n container: this.container,\r\n loop: false,\r\n autoplay: false,\r\n width: this.size,\r\n height: this.size\r\n }, 'TwoFactorSetupMonkeyTracking').then(_animation => {\r\n this.animation = _animation;\r\n\r\n if(!this.inputField.value.length) {\r\n this.animation.canvas.style.display = 'none';\r\n }\r\n\r\n this.animation.addEventListener('enterFrame', currentFrame => {\r\n //console.log('enterFrame', currentFrame, needFrame);\r\n //let currentFrame = Math.round(e.currentTime);\r\n \r\n if((this.animation.direction === 1 && currentFrame >= this.needFrame) ||\r\n (this.animation.direction === -1 && currentFrame <= this.needFrame)) {\r\n this.animation.setSpeed(1);\r\n this.animation.pause();\r\n }\r\n\r\n if(currentFrame === 0 && this.needFrame === 0) {\r\n //animation.curFrame = 0;\r\n \r\n if(this.idleAnimation) {\r\n this.idleAnimation.canvas.style.display = '';\r\n this.idleAnimation.play();\r\n this.animation.canvas.style.display = 'none';\r\n }\r\n }\r\n });\r\n //console.log(animation.getDuration(), animation.getDuration(true));\r\n\r\n return lottieLoader.waitForFirstFrame(_animation);\r\n })\r\n ]);\r\n }\r\n\r\n public remove() {\r\n if(this.animation) this.animation.remove();\r\n if(this.idleAnimation) this.idleAnimation.remove();\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport InputField, { InputFieldOptions } from \"./inputField\";\r\n\r\nexport default class CodeInputField extends InputField {\r\n constructor(options: InputFieldOptions & {\r\n length: number,\r\n onFill: (code: string) => void\r\n }) {\r\n super({\r\n plainText: true,\r\n ...options\r\n });\r\n\r\n const input = this.input as HTMLInputElement;\r\n input.type = 'tel';\r\n input.setAttribute('required', '');\r\n input.autocomplete = 'off';\r\n\r\n let lastLength = 0;\r\n this.input.addEventListener('input', (e) => {\r\n this.input.classList.remove('error');\r\n this.setLabel();\r\n \r\n const value = this.value.replace(/\\D/g, '').slice(0, options.length);\r\n this.setValueSilently(value);\r\n \r\n const length = this.value.length;\r\n if(length === options.length) { // submit code\r\n options.onFill(this.value);\r\n } else if(length === lastLength) {\r\n return;\r\n }\r\n \r\n lastLength = length;\r\n });\r\n }\r\n}\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport placeCaretAtEnd from \"../helpers/dom/placeCaretAtEnd\";\nimport { formatPhoneNumber } from \"../helpers/formatPhoneNumber\";\nimport { IS_APPLE, IS_ANDROID, IS_APPLE_MOBILE } from \"../environment/userAgent\";\nimport { HelpCountry, HelpCountryCode } from \"../layer\";\nimport InputField, { InputFieldOptions } from \"./inputField\";\n\nexport default class TelInputField extends InputField {\n private pasted = false;\n public lastValue = '';\n \n constructor(options: InputFieldOptions & {\n onInput?: (formatted: ReturnType) => void\n } = {}) {\n super({\n label: 'Contacts.PhoneNumber.Placeholder',\n //plainText: true,\n name: 'phone',\n ...options\n });\n\n this.container.classList.add('input-field-phone');\n\n let telEl = this.input;\n if(telEl instanceof HTMLInputElement) {\n telEl.type = 'tel';\n telEl.autocomplete = 'rr55RandomRR55';\n } else {\n telEl.inputMode = 'decimal';\n\n const pixelRatio = window.devicePixelRatio;\n if(pixelRatio > 1) {\n let letterSpacing: number;\n if(IS_APPLE) {\n letterSpacing = pixelRatio * -.16;\n } else if(IS_ANDROID) {\n letterSpacing = 0;\n }\n\n telEl.style.setProperty('--letter-spacing', letterSpacing + 'px');\n }\n\n const originalFunc = this.setValueSilently.bind(this);\n this.setValueSilently = (value) => {\n originalFunc(value);\n placeCaretAtEnd(this.input, true);\n };\n }\n\n telEl.addEventListener('input', () => {\n //console.log('input', this.value);\n telEl.classList.remove('error');\n \n const value = this.value;\n const diff = Math.abs(value.length - this.lastValue.length);\n if(diff > 1 && !this.pasted && IS_APPLE_MOBILE) {\n this.setValueSilently(this.lastValue + value);\n }\n \n this.pasted = false;\n \n this.setLabel();\n \n let formattedPhoneNumber: ReturnType;\n let formatted: string, country: HelpCountry, countryCode: HelpCountryCode, leftPattern = '';\n if(this.value.replace(/\\++/, '+') === '+') {\n this.setValueSilently('+');\n } else {\n formattedPhoneNumber = formatPhoneNumber(this.value);\n formatted = formattedPhoneNumber.formatted;\n country = formattedPhoneNumber.country;\n leftPattern = formattedPhoneNumber.leftPattern;\n countryCode = formattedPhoneNumber.code;\n this.setValueSilently(this.lastValue = formatted ? '+' + formatted : '');\n }\n \n telEl.dataset.leftPattern = leftPattern/* .replace(/X/g, '0') */;\n \n //console.log(formatted, country);\n\n options.onInput && options.onInput(formattedPhoneNumber);\n });\n \n telEl.addEventListener('paste', () => {\n this.pasted = true;\n //console.log('paste', telEl.value);\n });\n \n /* telEl.addEventListener('change', (e) => {\n console.log('change', telEl.value);\n }); */\n \n telEl.addEventListener('keypress', (e) => {\n //console.log('keypress', this.value);\n const key = e.key;\n if(/\\D/.test(key) && !(e.metaKey || e.ctrlKey) && key !== 'Backspace' && !(key === '+' && e.shiftKey/* && !this.value */)) {\n e.preventDefault();\n return false;\n }\n });\n \n /* telEl.addEventListener('focus', function(this: typeof telEl, e) {\n this.removeAttribute('readonly'); // fix autocomplete\n });*/\n }\n}\n","import IMAGE_MIME_TYPES_SUPPORTED from \"./imageMimeTypesSupport\";\nimport VIDEO_MIME_TYPES_SUPPORTED from \"./videoMimeTypesSupport\";\n\nconst arr = [...IMAGE_MIME_TYPES_SUPPORTED].concat([...VIDEO_MIME_TYPES_SUPPORTED]);\n\nconst MEDIA_MIME_TYPES_SUPPORTED = new Set(arr);\n\nexport default MEDIA_MIME_TYPES_SUPPORTED;\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nexport default function setInnerHTML(elem: Element, html: string) {\r\n elem.setAttribute('dir', 'auto');\r\n elem.innerHTML = html;\r\n}\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport type { Message, MessageAction } from \"../layer\";\nimport type { MyMessage } from \"../lib/appManagers/appMessagesManager\";\nimport forEachReverse from \"./array/forEachReverse\";\n\nexport default function filterChatPhotosMessages(value: {\n count: number;\n next_rate: number;\n offset_id_offset: number;\n history: MyMessage[];\n}) {\n forEachReverse(value.history, (message, idx, arr) => {\n if(!((message as Message.messageService).action as MessageAction.messageActionChatEditPhoto).photo) {\n arr.splice(idx, 1);\n if(value.count !== undefined) {\n --value.count;\n }\n }\n });\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport forEachReverse from \"./array/forEachReverse\";\nimport safeAssign from \"./object/safeAssign\";\n\nexport type ListLoaderOptions = {\n loadMore: ListLoader['loadMore'],\n loadCount?: ListLoader['loadCount'],\n loadWhenLeft?: ListLoader['loadWhenLeft'],\n processItem?: ListLoader['processItem'],\n onJump?: ListLoader['onJump'],\n onLoadedMore?: ListLoader['onLoadedMore']\n};\n\nexport type ListLoaderResult = {count: number, items: any[]};\nexport default class ListLoader {\n public current: T;\n public previous: T[] = [];\n public next: T[] = [];\n public count: number;\n public reverse = false; // reverse means next = higher msgid\n\n protected loadMore: (anchor: T, older: boolean, loadCount: number) => Promise>;\n protected processItem: (item: P) => T;\n protected loadCount = 50;\n protected loadWhenLeft = 20;\n \n public onJump: (item: T, older: boolean) => void;\n public onLoadedMore: () => void;\n\n protected loadedAllUp = false;\n protected loadedAllDown = false;\n protected loadPromiseUp: Promise;\n protected loadPromiseDown: Promise;\n\n constructor(options: ListLoaderOptions) {\n safeAssign(this, options);\n }\n\n public setTargets(previous: T[], next: T[], reverse: boolean) {\n this.previous = previous;\n this.next = next;\n this.reverse = reverse;\n }\n\n public get index() {\n return this.count !== undefined ? this.previous.length : -1;\n }\n\n /* public filter(callback: (item: T, idx: number, arr: T[]) => boolean) {\n const filter = (item: T, idx: number, arr: T[]) => {\n if(!callback(item, idx, arr)) {\n arr.splice(idx, 1);\n }\n };\n\n forEachReverse(this.previous, filter);\n forEachReverse(this.next, filter);\n } */\n\n public reset(loadedAll = false) {\n this.current = undefined;\n this.previous = [];\n this.next = [];\n this.setLoaded(true, loadedAll);\n this.setLoaded(false, loadedAll);\n }\n\n public go(length: number, dispatchJump = true) {\n let items: T[], item: T;\n if(length > 0) {\n items = this.next.splice(0, length);\n item = items.pop();\n if(!item) {\n return;\n }\n\n if(this.current !== undefined) items.unshift(this.current);\n this.previous.push(...items);\n } else {\n items = this.previous.splice(Math.max(0, this.previous.length + length), -length);\n item = items.shift();\n if(!item) {\n return;\n }\n\n if(this.current !== undefined) items.push(this.current);\n this.next.unshift(...items);\n }\n\n if(this.next.length < this.loadWhenLeft) {\n this.load(!this.reverse);\n }\n\n if(this.previous.length < this.loadWhenLeft) {\n this.load(this.reverse);\n }\n\n this.current = item;\n dispatchJump && this.onJump && this.onJump(item, length > 0);\n return this.current;\n }\n\n protected unsetCurrent(toPrevious: boolean) {\n if(toPrevious) this.previous.push(this.current);\n else this.next.unshift(this.current);\n\n this.current = undefined;\n }\n\n public goUnsafe(length: number, dispatchJump?: boolean) {\n const leftLength = length > 0 ? Math.max(0, length - this.next.length) : Math.min(0, length + this.previous.length);\n const item = this.go(length, leftLength ? false : dispatchJump);\n\n /* if(length > 0 ? this.loadedAllUp : this.loadedAllDown) {\n this.unsetCurrent(length > 0);\n } */\n \n return {\n item: !leftLength ? item : undefined,\n leftLength\n };\n }\n\n protected setLoaded(down: boolean, value: boolean) {\n const isChanged = (down ? this.loadedAllDown : this.loadedAllUp) !== value;\n if(!isChanged) {\n return false;\n }\n\n if(down) this.loadedAllDown = value;\n else this.loadedAllUp = value;\n\n if(!value) {\n if(down) this.loadPromiseDown = null;\n else this.loadPromiseUp = null;\n }\n\n return true;\n }\n\n // нет смысла делать проверку для reverse и loadMediaPromise\n public load(older: boolean) {\n if(older ? this.loadedAllDown : this.loadedAllUp) return Promise.resolve();\n\n let promise = older ? this.loadPromiseDown : this.loadPromiseUp;\n if(promise) return promise;\n\n let anchor: T;\n if(older) {\n anchor = this.reverse ? this.previous[0] : this.next[this.next.length - 1];\n } else {\n anchor = this.reverse ? this.next[this.next.length - 1] : this.previous[0];\n }\n\n anchor ??= this.current;\n promise = this.loadMore(anchor, older, this.loadCount).then(result => {\n if((older ? this.loadPromiseDown : this.loadPromiseUp) !== promise) {\n return;\n }\n\n if(result.items.length < this.loadCount) {\n this.setLoaded(older, true);\n }\n\n if(this.count === undefined) {\n this.count = result.count || result.items.length;\n }\n\n const method = older ? result.items.forEach.bind(result.items) : forEachReverse.bind(null, result.items);\n method((item: any) => {\n const processed = this.processItem ? this.processItem(item) : item;\n\n if(!processed) return;\n\n if(older) {\n if(this.reverse) this.previous.unshift(processed);\n else this.next.push(processed);\n } else {\n if(this.reverse) this.next.push(processed);\n else this.previous.unshift(processed);\n }\n });\n\n this.onLoadedMore && this.onLoadedMore();\n }, () => {}).then(() => {\n if(older) this.loadPromiseDown = null;\n else this.loadPromiseUp = null;\n });\n\n if(older) this.loadPromiseDown = promise;\n else this.loadPromiseUp = promise;\n\n return promise;\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport type { MediaSearchContext } from \"../components/appMediaPlaybackController\";\nimport type { SearchSuperContext } from \"../components/appSearchSuper.\";\nimport type { Message } from \"../layer\";\nimport appMessagesIdsManager from \"../lib/appManagers/appMessagesIdsManager\";\nimport appMessagesManager, { MyMessage } from \"../lib/appManagers/appMessagesManager\";\nimport rootScope from \"../lib/rootScope\";\nimport forEachReverse from \"./array/forEachReverse\";\nimport filterChatPhotosMessages from \"./filterChatPhotosMessages\";\nimport ListLoader, { ListLoaderOptions } from \"./listLoader\";\n\nexport default class SearchListLoader extends ListLoader {\n public searchContext: MediaSearchContext;\n public onEmptied: () => void;\n\n private otherSideLoader: SearchListLoader;\n\n constructor(options: Omit, 'loadMore'> & {onEmptied?: () => void, isInner?: boolean} = {}) {\n super({\n ...options,\n loadMore: (anchor, older, loadCount) => {\n const backLimit = older ? 0 : loadCount;\n let maxId = anchor?.mid;\n\n if(maxId === undefined) maxId = this.searchContext.maxId;\n if(!older) maxId = appMessagesIdsManager.incrementMessageId(maxId, 1);\n\n return appMessagesManager.getSearch({\n ...this.searchContext,\n peerId: this.searchContext.peerId || anchor?.peerId,\n maxId,\n limit: backLimit ? 0 : loadCount,\n backLimit\n }).then(value => {\n /* if(DEBUG) {\n this.log('loaded more media by maxId:', maxId, value, older, this.reverse);\n } */\n\n if(this.searchContext.inputFilter._ === 'inputMessagesFilterChatPhotos') {\n filterChatPhotosMessages(value);\n }\n\n if(value.next_rate) {\n this.searchContext.nextRate = value.next_rate;\n }\n\n return {count: value.count, items: value.history};\n });\n },\n processItem: (message) => {\n const filtered = this.filterMids([message.mid]);\n if(!filtered.length) {\n return;\n }\n\n return options.processItem(message);\n }\n });\n\n rootScope.addEventListener('history_delete', this.onHistoryDelete);\n rootScope.addEventListener('history_multiappend', this.onHistoryMultiappend);\n rootScope.addEventListener('message_sent', this.onMessageSent);\n\n if(!options.isInner) {\n this.otherSideLoader = new SearchListLoader({\n ...options, \n isInner: true\n });\n\n // this.otherSideLoader.onLoadedMore = () => {\n \n // };\n }\n }\n\n protected filterMids(mids: number[]) {\n const storage = this.searchContext.isScheduled ? \n appMessagesManager.getScheduledMessagesStorage(this.searchContext.peerId) : \n appMessagesManager.getMessagesStorage(this.searchContext.peerId);\n const filtered = appMessagesManager.filterMessagesByInputFilter(this.searchContext.inputFilter._, mids, storage, mids.length) as Message.message[];\n return filtered;\n }\n\n protected onHistoryDelete = ({peerId, msgs}: {peerId: PeerId, msgs: Set}) => {\n const shouldBeDeleted = (item: Item) => item.peerId === peerId && msgs.has(item.mid);\n const filter = (item: Item, idx: number, arr: Item[]) => {\n if(shouldBeDeleted(item)) {\n arr.splice(idx, 1);\n }\n };\n\n forEachReverse(this.previous, filter);\n forEachReverse(this.next, filter);\n\n if(this.current && shouldBeDeleted(this.current)) {\n /* if(this.go(1)) {\n this.previous.splice(this.previous.length - 1, 1);\n } else if(this.go(-1)) {\n this.next.splice(0, 1);\n } else */if(this.onEmptied) {\n this.onEmptied();\n }\n }\n };\n\n protected onHistoryMultiappend = (obj: {\n [peerId: string]: Set;\n }) => {\n if(this.searchContext.folderId !== undefined) {\n return;\n }\n\n // because it's reversed\n if(!this.loadedAllUp || this.loadPromiseUp) {\n return;\n }\n\n const mids = obj[this.searchContext.peerId];\n if(!mids) {\n return;\n }\n\n const sorted = Array.from(mids).sort((a, b) => a - b);\n const filtered = this.filterMids(sorted);\n const targets = filtered.map(message => this.processItem(message)).filter(Boolean);\n if(targets.length) {\n /* const {previous, current, next} = this;\n const targets = previous.concat(current, next);\n const currentIdx = targets.length;\n const mid = targets[0].mid;\n let i = 0, length = targets.length;\n for(; i < length; ++i) {\n const target = targets[i];\n if(!target || mid < target.mid) {\n break;\n }\n }\n\n if(i < currentIdx) previous.push(...targets);\n else next. */\n\n if(!this.current) {\n this.previous.push(...targets);\n } else {\n this.next.push(...targets);\n }\n }\n };\n\n protected onMessageSent = ({message}: {message: MyMessage}) => {\n this.onHistoryMultiappend({\n [message.peerId]: new Set([message.mid])\n });\n };\n\n public setSearchContext(context: SearchSuperContext) {\n this.searchContext = context;\n\n if(this.searchContext.folderId !== undefined) {\n this.loadedAllUp = true;\n\n if(this.searchContext.nextRate === undefined) {\n this.loadedAllDown = true;\n }\n }\n\n if(this.searchContext.inputFilter._ === 'inputMessagesFilterChatPhotos') {\n this.loadedAllUp = true;\n }\n\n // if(!this.searchContext.useSearch) {\n // this.loadedAllDown = this.loadedAllUp = true;\n // }\n\n if(this.otherSideLoader) {\n this.otherSideLoader.setSearchContext(context);\n }\n }\n\n public reset() {\n super.reset();\n this.searchContext = undefined;\n\n if(this.otherSideLoader) {\n this.otherSideLoader.reset();\n }\n }\n\n public getPrevious() {\n let previous = this.previous;\n\n if(this.otherSideLoader) {\n previous = previous.concat(this.otherSideLoader.previous);\n }\n\n return previous;\n }\n\n public getNext() {\n let next = this.next;\n\n if(this.otherSideLoader) {\n next = next.concat(this.otherSideLoader.next);\n }\n\n return next;\n }\n\n public getCurrent() {\n return this.current || this.otherSideLoader?.current;\n }\n\n private goToOtherEnd(length: number) {\n if(length > 0) return this.go(-this.previous.length);\n else return this.go(this.next.length);\n }\n\n public goRound(length: number, dispatchJump?: boolean) {\n let ret: ReturnType['goUnsafe']>;\n\n if(this.otherSideLoader?.current) {\n ret = this.otherSideLoader.goUnsafe(length, dispatchJump);\n if(ret.item) {\n return ret.item;\n }\n\n length = ret.leftLength;\n if(!(length > 0 ? this.otherSideLoader.next : this.otherSideLoader.previous).length) {\n const loaded = length > 0 ? this.otherSideLoader.loadedAllUp : this.otherSideLoader.loadedAllDown;\n if(!loaded) { // do not reset anything until it's loaded\n return;\n }\n\n // if other side is loaded too will start from its begin\n if((length > 0 && (this.otherSideLoader.searchContext.maxId === 1 || this.otherSideLoader.loadedAllDown)) ||\n (length < 0 && (this.otherSideLoader.searchContext.maxId === 0 || this.otherSideLoader.loadedAllUp))) {\n return this.otherSideLoader.goToOtherEnd(length);\n }\n\n this.otherSideLoader.unsetCurrent(length > 0);\n }\n }\n\n ret = this.goUnsafe(length, dispatchJump);\n if(!ret.item) {\n if(this.loadedAllUp && this.loadedAllDown) { // just use the same loader if the list is too short\n return this.goToOtherEnd(length);\n } else if(this.otherSideLoader) {\n length = ret.leftLength;\n ret = this.otherSideLoader.goUnsafe(length, dispatchJump);\n \n if(ret.item) {\n this.unsetCurrent(length > 0);\n }\n }\n }\n\n return ret?.item;\n }\n\n // public setTargets(previous: Item[], next: Item[], reverse: boolean) {\n // super.setTargets(previous, next, reverse);\n // }\n\n protected setLoaded(down: boolean, value: boolean) {\n const changed = super.setLoaded(down, value);\n\n if(changed && this.otherSideLoader && value/* && (this.reverse ? this.loadedAllUp : this.loadedAllDown) */) {\n const reverse = this.loadedAllUp;\n this.otherSideLoader.setSearchContext({\n ...this.searchContext,\n maxId: reverse ? 1 : 0\n });\n\n // these 'reverse' are different, not a mistake here.\n this.otherSideLoader.reverse = this.reverse;\n this.otherSideLoader.setLoaded(reverse, true);\n this.otherSideLoader.load(!reverse);\n }\n\n return changed;\n }\n\n public cleanup() {\n this.reset();\n rootScope.removeEventListener('history_delete', this.onHistoryDelete);\n rootScope.removeEventListener('history_multiappend', this.onHistoryMultiappend);\n rootScope.removeEventListener('message_sent', this.onMessageSent);\n this.onEmptied = undefined;\n\n if(this.otherSideLoader) {\n this.otherSideLoader.cleanup();\n this.otherSideLoader = undefined;\n }\n }\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport appDialogsManager from \"../lib/appManagers/appDialogsManager\";\r\nimport Scrollable from \"./scrollable\";\r\nimport appMessagesManager from \"../lib/appManagers/appMessagesManager\";\r\nimport InputSearch from \"./inputSearch\";\r\nimport replaceContent from \"../helpers/dom/replaceContent\";\r\nimport { i18n, LangPackKey } from \"../lib/langPack\";\r\n\r\nexport class SearchGroup {\r\n container: HTMLDivElement;\r\n nameEl: HTMLDivElement;\r\n list: HTMLUListElement;\r\n\r\n constructor(public name: LangPackKey | boolean, public type: string, private clearable = true, className?: string, clickable = true, public autonomous = true, public onFound?: () => void) {\r\n this.list = appDialogsManager.createChatList();\r\n this.container = document.createElement('div');\r\n if(className) this.container.className = className;\r\n \r\n if(name) {\r\n this.nameEl = document.createElement('div');\r\n this.nameEl.classList.add('search-group__name');\r\n if(typeof(name) === 'string') {\r\n this.nameEl.append(i18n(name));\r\n }\r\n this.container.append(this.nameEl);\r\n }\r\n \r\n this.container.classList.add('search-group', 'search-group-' + type);\r\n this.container.append(this.list);\r\n this.container.style.display = 'none';\r\n\r\n if(clickable) {\r\n appDialogsManager.setListClickListener(this.list, onFound, undefined, autonomous);\r\n }\r\n }\r\n\r\n clear() {\r\n this.container.style.display = 'none';\r\n\r\n if(this.clearable) {\r\n this.list.innerHTML = '';\r\n }\r\n }\r\n\r\n setActive() {\r\n this.container.style.display = '';\r\n }\r\n\r\n toggle() {\r\n if(this.list.childElementCount) {\r\n this.setActive();\r\n } else {\r\n this.clear();\r\n }\r\n }\r\n}\r\n\r\nexport type SearchGroupType = 'contacts' | 'globalContacts' | 'messages' | string;\r\n\r\nexport default class AppSearch {\r\n private minMsgId = 0;\r\n private loadedCount = -1;\r\n private foundCount = -1;\r\n\r\n private searchPromise: Promise = null;\r\n private searchTimeout: number = 0;\r\n\r\n private query = '';\r\n\r\n private listsContainer: HTMLDivElement = null;\r\n\r\n private peerId: PeerId; // 0 - means global\r\n private threadId = 0;\r\n\r\n private scrollable: Scrollable;\r\n\r\n constructor(public container: HTMLElement, public searchInput: InputSearch, public searchGroups: {[group in SearchGroupType]: SearchGroup}, public onSearch?: (count: number) => void) {\r\n this.scrollable = new Scrollable(this.container);\r\n this.listsContainer = this.scrollable.container as HTMLDivElement;\r\n for(let i in this.searchGroups) {\r\n this.listsContainer.append(this.searchGroups[i as SearchGroupType].container);\r\n }\r\n\r\n if(this.searchGroups.messages) {\r\n this.scrollable.setVirtualContainer(this.searchGroups.messages.list);\r\n }\r\n\r\n this.searchInput.onChange = (value) => {\r\n /* if(!value.trim()) {\r\n //this.peerId = 0;\r\n return;\r\n } */\r\n \r\n this.query = value;\r\n this.reset(false);\r\n this.searchMore();\r\n };\r\n\r\n this.scrollable.onScrolledBottom = () => {\r\n if(!this.query.trim()) return;\r\n \r\n if(!this.searchTimeout) {\r\n this.searchTimeout = window.setTimeout(() => {\r\n this.searchMore();\r\n this.searchTimeout = 0;\r\n }, 0);\r\n }\r\n };\r\n }\r\n\r\n public reset(all = true) {\r\n if(all) {\r\n this.searchInput.value = '';\r\n this.query = '';\r\n this.peerId = undefined;\r\n this.threadId = 0;\r\n }\r\n\r\n this.minMsgId = 0;\r\n this.loadedCount = -1;\r\n this.foundCount = -1;\r\n\r\n for(let i in this.searchGroups) {\r\n this.searchGroups[i as SearchGroupType].clear();\r\n }\r\n \r\n this.searchPromise = null;\r\n }\r\n\r\n public beginSearch(peerId?: PeerId, threadId = 0, query = '') {\r\n this.peerId = peerId;\r\n this.threadId = threadId;\r\n\r\n if(this.query !== query) {\r\n this.searchInput.inputField.value = query;\r\n }\r\n\r\n this.searchInput.input.focus();\r\n }\r\n\r\n public searchMore() {\r\n if(this.searchPromise) return this.searchPromise;\r\n \r\n const query = this.query;\r\n \r\n if(!query.trim()) {\r\n this.onSearch && this.onSearch(0);\r\n return;\r\n }\r\n \r\n if(this.foundCount !== -1 && this.loadedCount >= this.foundCount) {\r\n return Promise.resolve();\r\n }\r\n \r\n const maxId = this.minMsgId || 0;\r\n\r\n return this.searchPromise = appMessagesManager.getSearch({\r\n peerId: this.peerId, \r\n query, \r\n inputFilter: {_: 'inputMessagesFilterEmpty'}, \r\n maxId, \r\n limit: 20,\r\n threadId: this.threadId\r\n }).then(res => {\r\n this.searchPromise = null;\r\n \r\n if(this.searchInput.value !== query) {\r\n return;\r\n }\r\n \r\n //console.log('input search result:', this.peerId, query, null, maxId, 20, res);\r\n \r\n const {count, history} = res;\r\n \r\n if(history.length && history[0].mid === this.minMsgId) {\r\n history.shift();\r\n }\r\n \r\n const searchGroup = this.searchGroups.messages;\r\n\r\n history.forEach((message) => {\r\n try {\r\n const peerId = this.peerId ? message.fromId : message.peerId;\r\n appDialogsManager.addDialogAndSetLastMessage({\r\n peerId, \r\n container: this.scrollable/* searchGroup.list */, \r\n drawStatus: false,\r\n avatarSize: 54,\r\n meAsSaved: false,\r\n message,\r\n query\r\n });\r\n } catch(err) {\r\n console.error('[appSearch] render search result', err);\r\n }\r\n });\r\n\r\n searchGroup.toggle();\r\n \r\n this.minMsgId = history.length && history[history.length - 1].mid;\r\n \r\n if(this.loadedCount === -1) {\r\n this.loadedCount = 0;\r\n }\r\n this.loadedCount += history.length;\r\n \r\n if(this.foundCount === -1) {\r\n this.foundCount = count;\r\n\r\n if(searchGroup.nameEl) {\r\n replaceContent(searchGroup.nameEl, i18n(count ? 'Chat.Search.MessagesFound' : 'Chat.Search.NoMessagesFound', [count]));\r\n }\r\n \r\n this.onSearch && this.onSearch(this.foundCount);\r\n }\r\n }).catch(err => {\r\n console.error('search error', err);\r\n this.searchPromise = null;\r\n });\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\n//import { getRichValue } from \"../helpers/dom\";\r\nimport { LangPackKey } from \"../lib/langPack\";\r\nimport InputField from \"./inputField\";\r\n\r\nexport default class InputSearch {\r\n public container: HTMLElement;\r\n public input: HTMLElement;\r\n public inputField: InputField;\r\n public clearBtn: HTMLElement;\r\n\r\n public prevValue = '';\r\n public timeout = 0;\r\n public onChange: (value: string) => void;\r\n public onClear: () => void;\r\n\r\n constructor(placeholder: LangPackKey, onChange?: (value: string) => void) {\r\n this.inputField = new InputField({\r\n placeholder,\r\n plainText: true\r\n });\r\n\r\n this.container = this.inputField.container;\r\n this.container.classList.remove('input-field');\r\n this.container.classList.add('input-search');\r\n\r\n this.onChange = onChange;\r\n\r\n this.input = this.inputField.input;\r\n this.input.classList.add('input-search-input');\r\n\r\n const searchIcon = document.createElement('i');\r\n searchIcon.classList.add('tgico', 'tgico-search');\r\n\r\n this.clearBtn = document.createElement('i');\r\n this.clearBtn.classList.add('tgico', 'btn-icon', 'tgico-close');\r\n\r\n this.input.addEventListener('input', this.onInput);\r\n this.clearBtn.addEventListener('click', this.onClearClick);\r\n\r\n this.container.append(searchIcon, this.clearBtn);\r\n }\r\n \r\n onInput = () => {\r\n if(!this.onChange) return;\r\n\r\n let value = this.value;\r\n\r\n //this.input.classList.toggle('is-empty', !value.trim());\r\n\r\n if(value !== this.prevValue) {\r\n this.prevValue = value;\r\n clearTimeout(this.timeout);\r\n this.timeout = window.setTimeout(() => {\r\n this.onChange(value);\r\n }, 200);\r\n }\r\n };\r\n\r\n onClearClick = () => {\r\n this.value = '';\r\n this.onChange && this.onChange('');\r\n this.onClear && this.onClear();\r\n };\r\n\r\n get value() {\r\n return this.inputField.value;\r\n }\r\n\r\n set value(value: string) {\r\n this.prevValue = value;\r\n clearTimeout(this.timeout);\r\n this.inputField.value = value;\r\n }\r\n\r\n public remove() {\r\n clearTimeout(this.timeout);\r\n this.input.removeEventListener('input', this.onInput);\r\n this.clearBtn.removeEventListener('click', this.onClearClick);\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport Button from \"./button\";\r\n\r\nconst ButtonIcon = (className?: string, options: Partial<{noRipple: true, onlyMobile: true, asDiv: boolean}> = {}) => {\r\n const button = Button('btn-icon', {\r\n icon: className || undefined, \r\n ...options\r\n });\r\n\r\n return button;\r\n};\r\n\r\nexport default ButtonIcon;\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport EventListenerBase from \"../helpers/eventListenerBase\";\r\nimport ListenerSetter from \"../helpers/listenerSetter\";\r\nimport { i18n, LangPackKey } from \"../lib/langPack\";\r\nimport ButtonIcon from \"./buttonIcon\";\r\nimport Scrollable from \"./scrollable\";\r\nimport SidebarSlider from \"./slider\";\r\n\r\nexport interface SliderTab {\r\n onOpen?: () => void,\r\n onOpenAfterTimeout?: () => void,\r\n onClose?: () => void,\r\n onCloseAfterTimeout?: () => void\r\n}\r\n\r\nexport interface SliderSuperTabConstructable {\r\n new(slider: SidebarSlider, destroyable: boolean): SliderSuperTab;\r\n}\r\n\r\nexport interface SliderSuperTabEventableConstructable {\r\n new(slider: SidebarSlider, destroyable: boolean): SliderSuperTabEventable;\r\n}\r\n\r\nexport default class SliderSuperTab implements SliderTab {\r\n public container: HTMLElement;\r\n\r\n public header: HTMLElement;\r\n public closeBtn: HTMLElement;\r\n public title: HTMLElement;\r\n\r\n public content: HTMLElement;\r\n public scrollable: Scrollable;\r\n\r\n public slider: SidebarSlider;\r\n public destroyable: boolean;\r\n public listenerSetter: ListenerSetter;\r\n\r\n constructor(slider: SidebarSlider, destroyable?: boolean) {\r\n this._constructor(slider, destroyable);\r\n }\r\n\r\n public _constructor(slider: SidebarSlider, destroyable = true): any {\r\n this.slider = slider;\r\n this.destroyable = destroyable;\r\n\r\n this.container = document.createElement('div');\r\n this.container.classList.add('tabs-tab', 'sidebar-slider-item');\r\n\r\n // * Header\r\n this.header = document.createElement('div');\r\n this.header.classList.add('sidebar-header');\r\n\r\n this.closeBtn = ButtonIcon('left sidebar-close-button', {noRipple: true});\r\n this.title = document.createElement('div');\r\n this.title.classList.add('sidebar-header__title');\r\n this.header.append(this.closeBtn, this.title);\r\n\r\n // * Content\r\n this.content = document.createElement('div');\r\n this.content.classList.add('sidebar-content');\r\n\r\n this.scrollable = new Scrollable(this.content, undefined, undefined, true);\r\n\r\n this.container.append(this.header, this.content);\r\n\r\n this.slider.addTab(this);\r\n \r\n this.listenerSetter = new ListenerSetter();\r\n }\r\n\r\n public close() {\r\n return this.slider.closeTab(this);\r\n }\r\n\r\n public async open(...args: any[]) {\r\n if(this.init) {\r\n try {\r\n const result = this.init();\r\n this.init = null;\r\n\r\n if(result instanceof Promise) {\r\n await result;\r\n }\r\n } catch(err) {\r\n console.error('open tab error', err);\r\n }\r\n }\r\n\r\n this.slider.selectTab(this);\r\n }\r\n\r\n protected init(): Promise | any {\r\n\r\n }\r\n\r\n public onCloseAfterTimeout() {\r\n if(this.destroyable) { // ! WARNING, пока что это будет работать только с самой последней внутренней вкладкой !\r\n this.slider.tabs.delete(this);\r\n this.container.remove();\r\n }\r\n\r\n if(this.listenerSetter) {\r\n this.listenerSetter.removeAll();\r\n }\r\n }\r\n\r\n protected setTitle(key: LangPackKey) {\r\n this.title.innerHTML = '';\r\n this.title.append(i18n(key));\r\n }\r\n}\r\n\r\nexport class SliderSuperTabEventable extends SliderSuperTab {\r\n public eventListener: EventListenerBase<{\r\n destroy: () => void\r\n }>;\r\n\r\n constructor(slider: SidebarSlider) {\r\n super(slider);\r\n this.eventListener = new EventListenerBase();\r\n }\r\n\r\n onCloseAfterTimeout() {\r\n this.eventListener.dispatchEvent('destroy');\r\n this.eventListener.cleanup();\r\n return super.onCloseAfterTimeout();\r\n }\r\n}\r\n\r\n/* // @ts-ignore\r\ninterface SliderSuperEventsTab extends SliderSuperTab, EventListenerBase<{}> {\r\n superConstructor: (...args: any[]) => any;\r\n}\r\nclass SliderSuperEventsTab implements SliderSuperEventsTab {\r\n constructor(slider: SidebarSlider) {\r\n this.superConstructor([slider, true]);\r\n }\r\n}\r\napplyMixins(SliderSuperEventsTab, [SliderSuperTab, EventListenerBase]);\r\n\r\n(window as any).lol = SliderSuperEventsTab\r\n\r\nexport {SliderSuperEventsTab}; */\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { horizontalMenu } from \"./horizontalMenu\";\r\nimport { TransitionSlider } from \"./transition\";\r\nimport appNavigationController, { NavigationItem } from \"./appNavigationController\";\r\nimport SliderSuperTab, { SliderSuperTabConstructable, SliderTab } from \"./sliderTab\";\r\nimport { attachClickEvent } from \"../helpers/dom/clickEvent\";\r\nimport indexOfAndSplice from \"../helpers/array/indexOfAndSplice\";\r\nimport safeAssign from \"../helpers/object/safeAssign\";\r\n\r\nconst TRANSITION_TIME = 250;\r\n\r\nexport type {SliderTab};\r\nexport {SliderSuperTab};\r\n\r\nexport default class SidebarSlider {\r\n protected _selectTab: ReturnType;\r\n public historyTabIds: (number | SliderSuperTab)[] = []; // * key is any, since right sidebar is ugly nowz\r\n public tabsContainer: HTMLElement;\r\n public sidebarEl: HTMLElement;\r\n public tabs: Map; // * key is any, since right sidebar is ugly now\r\n private canHideFirst = false;\r\n private navigationType: NavigationItem['type']\r\n\r\n constructor(options: {\r\n sidebarEl: SidebarSlider['sidebarEl'],\r\n tabs?: SidebarSlider['tabs'],\r\n canHideFirst?: SidebarSlider['canHideFirst'],\r\n navigationType: SidebarSlider['navigationType']\r\n }) {\r\n safeAssign(this, options);\r\n\r\n if(!this.tabs) {\r\n this.tabs = new Map();\r\n }\r\n\r\n this.tabsContainer = this.sidebarEl.querySelector('.sidebar-slider');\r\n this._selectTab = TransitionSlider(this.tabsContainer, 'navigation', TRANSITION_TIME);\r\n if(!this.canHideFirst) {\r\n this._selectTab(0);\r\n }\r\n\r\n Array.from(this.sidebarEl.querySelectorAll('.sidebar-close-button') as any as HTMLElement[]).forEach(el => {\r\n attachClickEvent(el, this.onCloseBtnClick);\r\n });\r\n }\r\n\r\n public onCloseBtnClick = () => {\r\n const item = appNavigationController.findItemByType(this.navigationType);\r\n if(item) {\r\n appNavigationController.back(this.navigationType);\r\n } else if(this.historyTabIds.length) {\r\n this.closeTab(this.historyTabIds[this.historyTabIds.length - 1]);\r\n }\r\n // this.closeTab();\r\n };\r\n\r\n public closeTab = (id?: number | SliderSuperTab, animate?: boolean, isNavigation?: boolean) => {\r\n if(id !== undefined && this.historyTabIds[this.historyTabIds.length - 1] !== id) {\r\n return false;\r\n }\r\n\r\n //console.log('sidebar-close-button click:', this.historyTabIDs);\r\n const closingId = this.historyTabIds.pop(); // pop current\r\n this.onCloseTab(closingId, animate, isNavigation);\r\n\r\n const tab = this.historyTabIds[this.historyTabIds.length - 1];\r\n this._selectTab(tab !== undefined ? (tab instanceof SliderSuperTab ? tab.container : tab) : (this.canHideFirst ? -1 : 0), animate);\r\n return true;\r\n };\r\n\r\n public selectTab(id: number | SliderSuperTab): boolean {\r\n /* if(id instanceof SliderSuperTab) {\r\n id = id.id;\r\n } */\r\n\r\n if(this.historyTabIds[this.historyTabIds.length - 1] === id) {\r\n return false;\r\n }\r\n\r\n const tab: SliderTab = id instanceof SliderSuperTab ? id : this.tabs.get(id);\r\n if(tab) {\r\n if(tab.onOpen) {\r\n tab.onOpen();\r\n }\r\n \r\n if(tab.onOpenAfterTimeout) {\r\n setTimeout(() => {\r\n tab.onOpenAfterTimeout();\r\n }, TRANSITION_TIME);\r\n }\r\n }\r\n\r\n //if(!this.canHideFirst || this.historyTabIds.length) {\r\n appNavigationController.pushItem({\r\n type: this.navigationType, \r\n onPop: (canAnimate) => {\r\n this.closeTab(undefined, canAnimate, true);\r\n return true;\r\n }\r\n });\r\n //}\r\n \r\n this.historyTabIds.push(id);\r\n this._selectTab(id instanceof SliderSuperTab ? id.container : id);\r\n return true;\r\n }\r\n\r\n public removeTabFromHistory(id: number | SliderSuperTab) {\r\n indexOfAndSplice(this.historyTabIds, id);\r\n this.onCloseTab(id, undefined);\r\n }\r\n\r\n public sliceTabsUntilTab(tabConstructor: SliderSuperTabConstructable, preserveTab: SliderSuperTab) {\r\n for(let i = this.historyTabIds.length - 1; i >= 0; --i) {\r\n const tab = this.historyTabIds[i];\r\n if(tab === preserveTab) continue;\r\n else if(tab instanceof tabConstructor) {\r\n break;\r\n }\r\n\r\n this.removeTabFromHistory(tab);\r\n //appNavigationController.removeByType(this.navigationType, true);\r\n }\r\n }\r\n\r\n public getTab(tabConstructor: SliderSuperTabConstructable) {\r\n return this.historyTabIds.find(t => t instanceof tabConstructor) as SliderSuperTab;\r\n }\r\n\r\n public isTabExists(tabConstructor: SliderSuperTabConstructable) {\r\n return !!this.getTab(tabConstructor);\r\n }\r\n\r\n protected onCloseTab(id: number | SliderSuperTab, animate: boolean, isNavigation?: boolean) {\r\n if(!isNavigation) {\r\n appNavigationController.removeByType(this.navigationType, true);\r\n }\r\n\r\n const tab: SliderTab = id instanceof SliderSuperTab ? id : this.tabs.get(id);\r\n if(tab) {\r\n if(tab.onClose) {\r\n tab.onClose();\r\n }\r\n\r\n if(tab.onCloseAfterTimeout) {\r\n setTimeout(() => {\r\n tab.onCloseAfterTimeout();\r\n }, TRANSITION_TIME);\r\n }\r\n }\r\n }\r\n\r\n public addTab(tab: SliderSuperTab) {\r\n if(!tab.container.parentElement) {\r\n this.tabsContainer.append(tab.container);\r\n\r\n if(tab.closeBtn) {\r\n tab.closeBtn.addEventListener('click', this.onCloseBtnClick);\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport type { CancellablePromise } from \"../helpers/cancellablePromise\";\r\nimport { attachClickEvent } from \"../helpers/dom/clickEvent\";\r\nimport type { InputFile } from \"../layer\";\r\nimport PopupAvatar from \"./popups/avatar\";\r\n\r\nexport default class AvatarEdit {\r\n public container: HTMLElement;\r\n private canvas: HTMLCanvasElement;\r\n private icon: HTMLSpanElement;\r\n\r\n constructor(onChange: (uploadAvatar: () => CancellablePromise) => void) {\r\n this.container = document.createElement('div');\r\n this.container.classList.add('avatar-edit');\r\n\r\n this.canvas = document.createElement('canvas');\r\n this.canvas.classList.add('avatar-edit-canvas');\r\n\r\n this.icon = document.createElement('span');\r\n this.icon.classList.add('tgico', 'tgico-cameraadd');\r\n\r\n this.container.append(this.canvas, this.icon);\r\n\r\n attachClickEvent(this.container, () => {\r\n new PopupAvatar().open(this.canvas, onChange);\r\n });\r\n }\r\n\r\n public clear() {\r\n const ctx = this.canvas.getContext('2d');\r\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport Button from \"./button\";\r\n\r\nconst ButtonCorner = (options: Partial<{className: string, icon: string, noRipple: true, onlyMobile: true, asDiv: boolean}> = {}) => {\r\n const button = Button('btn-circle btn-corner z-depth-1' + (options.className ? ' ' + options.className : ''), options);\r\n return button;\r\n};\r\n\r\nexport default ButtonCorner;\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport appSidebarLeft, { SettingSection } from \"..\";\r\nimport { InputFile } from \"../../../layer\";\r\nimport appChatsManager from \"../../../lib/appManagers/appChatsManager\";\r\nimport appDialogsManager from \"../../../lib/appManagers/appDialogsManager\";\r\nimport appUsersManager from \"../../../lib/appManagers/appUsersManager\";\r\nimport InputField from \"../../inputField\";\r\nimport { SliderSuperTab } from \"../../slider\";\r\nimport AvatarEdit from \"../../avatarEdit\";\r\nimport I18n from \"../../../lib/langPack\";\r\nimport ButtonCorner from \"../../buttonCorner\";\r\n\r\ninterface OpenStreetMapInterface {\r\n place_id?: number;\r\n license?: string;\r\n osm_type?: string;\r\n osm_id?: number;\r\n lat?: string;\r\n lon?: string;\r\n display_name: string;\r\n address?: object;\r\n boundingbox?: object;\r\n}\r\n\r\nexport default class AppNewGroupTab extends SliderSuperTab {\r\n private avatarEdit: AvatarEdit;\r\n private uploadAvatar: () => Promise = null;\r\n private peerIds: PeerId[];\r\n private isGeoChat: boolean = false;\r\n private nextBtn: HTMLButtonElement;\r\n private groupNameInputField: InputField;\r\n private list: HTMLUListElement;\r\n private groupLocationInputField: InputField;\r\n private userLocationCoords: {lat: number, long: number};\r\n private userLocationAddress: string;\r\n\r\n protected init() {\r\n this.container.classList.add('new-group-container');\r\n this.setTitle('NewGroup');\r\n\r\n this.avatarEdit = new AvatarEdit((_upload) => {\r\n this.uploadAvatar = _upload;\r\n });\r\n\r\n const section = new SettingSection({});\r\n\r\n const inputWrapper = document.createElement('div');\r\n inputWrapper.classList.add('input-wrapper');\r\n\r\n this.groupNameInputField = new InputField({\r\n label: 'CreateGroup.NameHolder',\r\n maxLength: 128\r\n });\r\n\r\n this.groupLocationInputField = new InputField({\r\n label: 'ChatLocation',\r\n name: 'location',\r\n canBeEdited: false\r\n });\r\n\r\n inputWrapper.append(\r\n this.groupNameInputField.container,\r\n this.groupLocationInputField.container\r\n );\r\n\r\n this.groupNameInputField.input.addEventListener('input', () => {\r\n const value = this.groupNameInputField.value;\r\n let valueCheck = !!value.length && !this.groupNameInputField.input.classList.contains('error');\r\n if(this.isGeoChat) valueCheck = valueCheck && !!this.userLocationCoords && !!this.userLocationAddress;\r\n this.nextBtn.classList.toggle('is-visible', !!valueCheck);\r\n });\r\n\r\n this.nextBtn = ButtonCorner({icon: 'arrow_next'});\r\n\r\n this.nextBtn.addEventListener('click', () => {\r\n const title = this.groupNameInputField.value;\r\n\r\n if(this.isGeoChat){\r\n if(!this.userLocationAddress || !this.userLocationCoords) return;\r\n appChatsManager.createChannel({\r\n title, \r\n about: '', \r\n geo_point: {\r\n _: 'inputGeoPoint',\r\n ...this.userLocationCoords, \r\n },\r\n address: this.userLocationAddress,\r\n megagroup: true\r\n }).then((chatId) => {\r\n if(this.uploadAvatar) {\r\n this.uploadAvatar().then((inputFile) => {\r\n appChatsManager.editPhoto(chatId, inputFile);\r\n });\r\n }\r\n\r\n if(this.peerIds.length){\r\n appChatsManager.inviteToChannel(chatId, this.peerIds);\r\n }\r\n \r\n appSidebarLeft.removeTabFromHistory(this);\r\n appSidebarLeft.selectTab(0);\r\n });\r\n } else {\r\n this.nextBtn.disabled = true;\r\n appChatsManager.createChat(title, this.peerIds.map(peerId => peerId.toUserId())).then((chatId) => {\r\n if(this.uploadAvatar) {\r\n this.uploadAvatar().then((inputFile) => {\r\n appChatsManager.editPhoto(chatId, inputFile);\r\n });\r\n }\r\n \r\n appSidebarLeft.removeTabFromHistory(this);\r\n appSidebarLeft.selectTab(0);\r\n });\r\n }\r\n });\r\n\r\n const chatsSection = new SettingSection({\r\n name: 'Members',\r\n nameArgs: [this.peerIds.length]\r\n });\r\n\r\n const list = this.list = appDialogsManager.createChatList({\r\n new: true\r\n });\r\n\r\n chatsSection.content.append(list);\r\n\r\n section.content.append(this.avatarEdit.container, inputWrapper);\r\n\r\n this.content.append(this.nextBtn);\r\n this.scrollable.append(section.container, chatsSection.container);\r\n }\r\n\r\n public onCloseAfterTimeout() {\r\n this.avatarEdit.clear();\r\n this.uploadAvatar = null;\r\n this.groupNameInputField.value = '';\r\n this.groupLocationInputField.container.classList.add('hide');\r\n this.nextBtn.disabled = false;\r\n }\r\n\r\n public open(peerIds: PeerId[], isGeoChat: boolean = false) {\r\n this.isGeoChat = isGeoChat;\r\n this.peerIds = peerIds;\r\n const result = super.open();\r\n result.then(() => {\r\n if(isGeoChat) {\r\n this.setTitle('NearbyCreateGroup');\r\n this.groupLocationInputField.container.classList.remove('hide');\r\n this.groupLocationInputField.setValueSilently(I18n.format('Loading', true));\r\n this.startLocating();\r\n } else {\r\n this.groupLocationInputField.container.classList.add('hide');\r\n }\r\n\r\n this.peerIds.forEach(userId => {\r\n const {dom} = appDialogsManager.addDialogNew({\r\n dialog: userId,\r\n container: this.list,\r\n drawStatus: false,\r\n rippleEnabled: false,\r\n avatarSize: 48\r\n });\r\n\r\n dom.lastMessageSpan.append(appUsersManager.getUserStatusString(userId));\r\n });\r\n });\r\n \r\n return result;\r\n }\r\n\r\n private startLocating(){\r\n navigator.geolocation.getCurrentPosition((location) => {\r\n this.userLocationCoords = {\r\n lat: location.coords.latitude,\r\n long: location.coords.longitude\r\n };\r\n\r\n let uri = \"https://nominatim.openstreetmap.org/reverse\";\r\n uri += \"?lat=\"+location.coords.latitude;\r\n uri += \"&lon=\"+location.coords.longitude;\r\n uri += \"&format=json\";\r\n uri += \"&addressdetails=1\";\r\n uri += \"&accept-language=en\";\r\n fetch(uri)\r\n .then((response) => response.json())\r\n .then((response: OpenStreetMapInterface) => {\r\n this.userLocationAddress = response.display_name;\r\n this.groupLocationInputField.setValueSilently(response.display_name);\r\n });\r\n }, (error) => {\r\n if(error instanceof GeolocationPositionError) {\r\n this.groupLocationInputField.setValueSilently('Location permission denied. Please retry later.');\r\n } else {\r\n this.groupLocationInputField.setValueSilently('An error has occurred. Please retry later.');\r\n }\r\n });\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport rootScope from \"../lib/rootScope\";\r\nimport appMessagesManager from \"../lib/appManagers/appMessagesManager\";\r\nimport appDocsManager, {MyDocument} from \"../lib/appManagers/appDocsManager\";\r\nimport deferredPromise, { CancellablePromise } from \"../helpers/cancellablePromise\";\r\nimport { IS_APPLE, IS_SAFARI } from \"../environment/userAgent\";\r\nimport { MOUNT_CLASS_TO } from \"../config/debug\";\r\nimport appDownloadManager from \"../lib/appManagers/appDownloadManager\";\r\nimport simulateEvent from \"../helpers/dom/dispatchEvent\";\r\nimport type { SearchSuperContext } from \"./appSearchSuper.\";\r\nimport { DocumentAttribute, Message, PhotoSize } from \"../layer\";\r\nimport appPhotosManager from \"../lib/appManagers/appPhotosManager\";\r\nimport { IS_TOUCH_SUPPORTED } from \"../environment/touchSupport\";\r\nimport appAvatarsManager from \"../lib/appManagers/appAvatarsManager\";\r\nimport appPeersManager from \"../lib/appManagers/appPeersManager\";\r\nimport I18n from \"../lib/langPack\";\r\nimport SearchListLoader from \"../helpers/searchListLoader\";\r\nimport { onMediaLoad } from \"../helpers/files\";\r\nimport copy from \"../helpers/object/copy\";\r\nimport deepEqual from \"../helpers/object/deepEqual\";\r\n\r\n// TODO: Safari: проверить стрим, включить его и сразу попробовать включить видео или другую песню\r\n// TODO: Safari: попробовать замаскировать подгрузку последнего чанка\r\n// TODO: Safari: пофиксить момент, когда заканчивается песня и пытаешься включить её заново - прогресс сразу в конце\r\n\r\nexport type MediaItem = {mid: number, peerId: PeerId};\r\n\r\ntype HTMLMediaElement = HTMLAudioElement | HTMLVideoElement;\r\n\r\nconst SHOULD_USE_SAFARI_FIX = (() => {\r\n try {\r\n return IS_SAFARI && +navigator.userAgent.match(/ Version\\/(\\d+)/)[1] < 14;\r\n } catch(err) {\r\n return false;\r\n }\r\n})();\r\n\r\nconst SEEK_OFFSET = 10;\r\n\r\nexport type MediaSearchContext = SearchSuperContext & Partial<{\r\n isScheduled: boolean,\r\n useSearch: boolean\r\n}>;\r\n\r\ntype MediaDetails = {\r\n peerId: PeerId, \r\n mid: number, \r\n docId: DocId, \r\n clean?: boolean,\r\n isScheduled?: boolean, \r\n isSingle?: boolean\r\n};\r\n\r\nexport type PlaybackMediaType = 'voice' | 'video' | 'audio';\r\n\r\nexport class AppMediaPlaybackController {\r\n private container: HTMLElement;\r\n private media: Map> = new Map();\r\n private scheduled: AppMediaPlaybackController['media'] = new Map();\r\n private mediaDetails: Map = new Map();\r\n private playingMedia: HTMLMediaElement;\r\n private playingMediaType: PlaybackMediaType;\r\n\r\n private waitingMediaForLoad: Map>> = new Map();\r\n private waitingScheduledMediaForLoad: AppMediaPlaybackController['waitingMediaForLoad'] = new Map();\r\n private waitingDocumentsForLoad: {[docId: string]: Set} = {};\r\n \r\n public willBePlayedMedia: HTMLMediaElement;\r\n private searchContext: MediaSearchContext;\r\n\r\n private listLoader: SearchListLoader;\r\n\r\n public volume: number;\r\n public muted: boolean;\r\n public playbackRate: number;\r\n public loop: boolean;\r\n public round: boolean;\r\n private _volume = 1;\r\n private _muted = false;\r\n private _playbackRate = 1;\r\n private _loop = false;\r\n private _round = false;\r\n private lockedSwitchers: boolean;\r\n private playbackRates: Record = {\r\n voice: 1,\r\n video: 1,\r\n audio: 1\r\n };\r\n\r\n constructor() {\r\n this.container = document.createElement('div');\r\n //this.container.style.cssText = 'position: absolute; top: -10000px; left: -10000px;';\r\n this.container.style.cssText = 'display: none;';\r\n document.body.append(this.container);\r\n\r\n if(navigator.mediaSession) {\r\n const actions: {[action in MediaSessionAction]?: MediaSessionActionHandler} = {\r\n play: this.play,\r\n pause: this.pause,\r\n stop: this.stop,\r\n seekbackward: this.seekBackward,\r\n seekforward: this.seekForward,\r\n seekto: this.seekTo,\r\n previoustrack: this.previous,\r\n nexttrack: this.next\r\n };\r\n\r\n for(const action in actions) {\r\n try {\r\n navigator.mediaSession.setActionHandler(action as MediaSessionAction, actions[action as MediaSessionAction]);\r\n } catch(err) {\r\n console.warn('MediaSession action is not supported:', action);\r\n }\r\n }\r\n }\r\n\r\n rootScope.addEventListener('document_downloaded', (doc) => {\r\n const set = this.waitingDocumentsForLoad[doc.id];\r\n if(set) {\r\n for(const media of set) {\r\n this.onMediaDocumentLoad(media);\r\n }\r\n }\r\n });\r\n\r\n const properties: {[key: PropertyKey]: PropertyDescriptor} = {};\r\n const keys = [\r\n 'volume' as const, \r\n 'muted' as const, \r\n 'playbackRate' as const,\r\n 'loop' as const,\r\n 'round' as const\r\n ];\r\n keys.forEach(key => {\r\n const _key = ('_' + key) as `_${typeof key}`;\r\n properties[key] = {\r\n get: () => this[_key],\r\n set: (value: number | boolean) => {\r\n if(this[_key] === value) {\r\n return;\r\n }\r\n\r\n // @ts-ignore\r\n this[_key] = value;\r\n if(this.playingMedia && (key !== 'loop' || this.playingMediaType === 'audio') && key !== 'round') {\r\n // @ts-ignore\r\n this.playingMedia[key] = value;\r\n }\r\n\r\n if(key === 'playbackRate' && this.playingMediaType !== undefined) {\r\n this.playbackRates[this.playingMediaType] = value as number;\r\n }\r\n\r\n this.dispatchPlaybackParams();\r\n }\r\n };\r\n });\r\n Object.defineProperties(this, properties);\r\n }\r\n\r\n private dispatchPlaybackParams() {\r\n rootScope.dispatchEvent('media_playback_params', this.getPlaybackParams());\r\n }\r\n\r\n public getPlaybackParams() {\r\n const {volume, muted, playbackRate, loop, round} = this;\r\n return {\r\n volume, \r\n muted, \r\n playbackRate,\r\n loop,\r\n round\r\n };\r\n }\r\n \r\n public seekBackward = (details: MediaSessionActionDetails) => {\r\n const media = this.playingMedia;\r\n if(media) {\r\n media.currentTime = Math.max(0, media.currentTime - (details.seekOffset || SEEK_OFFSET));\r\n }\r\n };\r\n\r\n public seekForward = (details: MediaSessionActionDetails) => {\r\n const media = this.playingMedia;\r\n if(media) {\r\n media.currentTime = Math.min(media.duration, media.currentTime + (details.seekOffset || SEEK_OFFSET));\r\n }\r\n };\r\n\r\n public seekTo = (details: MediaSessionActionDetails) => {\r\n const media = this.playingMedia;\r\n if(media) {\r\n media.currentTime = details.seekTime;\r\n }\r\n };\r\n\r\n public addMedia(message: Message.message, autoload: boolean, clean?: boolean): HTMLMediaElement {\r\n const {peerId, mid} = message;\r\n\r\n const isScheduled = !!message.pFlags.is_scheduled;\r\n const s = isScheduled ? this.scheduled : this.media;\r\n let storage = s.get(message.peerId);\r\n if(!storage) {\r\n s.set(message.peerId, storage = new Map());\r\n }\r\n\r\n let media = storage.get(mid);\r\n if(media) {\r\n return media;\r\n }\r\n\r\n const doc: MyDocument = appMessagesManager.getMediaFromMessage(message);\r\n storage.set(mid, media = document.createElement(doc.type === 'round' || doc.type === 'video' ? 'video' : 'audio'));\r\n //const source = document.createElement('source');\r\n //source.type = doc.type === 'voice' && !opusDecodeController.isPlaySupported() ? 'audio/wav' : doc.mime_type;\r\n\r\n if(doc.type === 'round') {\r\n media.setAttribute('playsinline', 'true');\r\n //media.muted = true;\r\n }\r\n\r\n const details: MediaDetails = {\r\n peerId,\r\n mid,\r\n docId: doc.id,\r\n clean,\r\n isScheduled: message.pFlags.is_scheduled\r\n };\r\n\r\n this.mediaDetails.set(media, details);\r\n\r\n //media.autoplay = true;\r\n media.volume = 1;\r\n //media.append(source);\r\n\r\n this.container.append(media);\r\n\r\n media.addEventListener('play', this.onPlay);\r\n media.addEventListener('pause', this.onPause);\r\n media.addEventListener('ended', this.onEnded);\r\n\r\n if(doc.type !== 'audio' && message?.pFlags.media_unread && message.fromId !== rootScope.myId) {\r\n media.addEventListener('timeupdate', () => {\r\n appMessagesManager.readMessages(peerId, [mid]);\r\n }, {once: true});\r\n }\r\n \r\n /* const onError = (e: Event) => {\r\n //console.log('appMediaPlaybackController: video onError', e);\r\n\r\n if(this.nextMid === mid) {\r\n this.loadSiblingsMedia(peerId, doc.type as MediaType, mid).then(() => {\r\n if(this.nextMid && storage[this.nextMid]) {\r\n storage[this.nextMid].play();\r\n }\r\n });\r\n }\r\n };\r\n\r\n media.addEventListener('error', onError); */\r\n\r\n const deferred = deferredPromise();\r\n if(autoload) {\r\n deferred.resolve();\r\n } else {\r\n const w = message.pFlags.is_scheduled ? this.waitingScheduledMediaForLoad : this.waitingMediaForLoad;\r\n let waitingStorage = w.get(peerId);\r\n if(!waitingStorage) {\r\n w.set(peerId, waitingStorage = new Map());\r\n }\r\n\r\n waitingStorage.set(mid, deferred);\r\n }\r\n\r\n deferred.then(() => {\r\n //media.autoplay = true;\r\n //console.log('will set media url:', media, doc, doc.type, doc.url);\r\n\r\n const cacheContext = appDownloadManager.getCacheContext(doc);\r\n if(doc.supportsStreaming || cacheContext.url) {\r\n this.onMediaDocumentLoad(media);\r\n } else {\r\n let set = this.waitingDocumentsForLoad[doc.id];\r\n if(!set) {\r\n set = this.waitingDocumentsForLoad[doc.id] = new Set();\r\n }\r\n\r\n set.add(media);\r\n appDocsManager.downloadDoc(doc);\r\n }\r\n }/* , onError */);\r\n \r\n return media;\r\n }\r\n\r\n public getMedia(peerId: PeerId, mid: number, isScheduled?: boolean) {\r\n const s = (isScheduled ? this.scheduled : this.media).get(peerId);\r\n return s?.get(mid);\r\n }\r\n\r\n private onMediaDocumentLoad = (media: HTMLMediaElement) => {\r\n const details = this.mediaDetails.get(media);\r\n const doc = appDocsManager.getDoc(details.docId);\r\n if(doc.type === 'audio' && doc.supportsStreaming && SHOULD_USE_SAFARI_FIX) {\r\n this.handleSafariStreamable(media);\r\n }\r\n\r\n // setTimeout(() => {\r\n const cacheContext = appDownloadManager.getCacheContext(doc);\r\n media.src = cacheContext.url;\r\n\r\n if(this.playingMedia === media) {\r\n media.playbackRate = this.playbackRate;\r\n\r\n if(doc.type === 'audio') {\r\n media.loop = this.loop;\r\n }\r\n }\r\n // }, doc.supportsStreaming ? 500e3 : 0);\r\n\r\n const set = this.waitingDocumentsForLoad[doc.id];\r\n if(set) {\r\n set.delete(media);\r\n\r\n if(!set.size) {\r\n delete this.waitingDocumentsForLoad[doc.id];\r\n }\r\n }\r\n };\r\n\r\n // safari подгрузит последний чанк и песня включится,\r\n // при этом этот чанк нельзя руками отдать из SW, потому что браузер тогда теряется\r\n private handleSafariStreamable(media: HTMLMediaElement) {\r\n media.addEventListener('play', () => {\r\n /* if(media.readyState === 4) { // https://developer.mozilla.org/ru/docs/Web/API/XMLHttpRequest/readyState\r\n return;\r\n } */\r\n\r\n //media.volume = 0;\r\n const currentTime = media.currentTime;\r\n //this.setSafariBuffering(media, true);\r\n\r\n media.addEventListener('progress', () => {\r\n media.currentTime = media.duration - 1;\r\n\r\n media.addEventListener('progress', () => {\r\n media.currentTime = currentTime;\r\n //media.volume = 1;\r\n //this.setSafariBuffering(media, false);\r\n\r\n if(!media.paused) {\r\n media.play()/* .catch(() => {}) */;\r\n }\r\n }, {once: true});\r\n }, {once: true});\r\n }/* , {once: true} */);\r\n }\r\n\r\n public resolveWaitingForLoadMedia(peerId: PeerId, mid: number, isScheduled?: boolean) {\r\n const w = isScheduled ? this.waitingScheduledMediaForLoad : this.waitingMediaForLoad;\r\n const storage = w.get(peerId);\r\n if(!storage) {\r\n return;\r\n }\r\n\r\n const promise = storage.get(mid);\r\n if(promise) {\r\n promise.resolve();\r\n storage.delete(mid);\r\n\r\n if(!storage.size) {\r\n w.delete(peerId);\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Only for audio\r\n */\r\n public isSafariBuffering(media: HTMLMediaElement) {\r\n /// @ts-ignore\r\n return !!media.safariBuffering;\r\n }\r\n\r\n private setSafariBuffering(media: HTMLMediaElement, value: boolean) {\r\n // @ts-ignore\r\n media.safariBuffering = value;\r\n }\r\n\r\n private async setNewMediadata(message: Message.message, playingMedia = this.playingMedia) {\r\n await onMediaLoad(playingMedia, undefined, false); // have to wait for load, otherwise on macOS won't set\r\n\r\n const doc = appMessagesManager.getMediaFromMessage(message) as MyDocument;\r\n \r\n const artwork: MediaImage[] = [];\r\n\r\n const isVoice = doc.type === 'voice' || doc.type === 'round';\r\n let title = '', artist = '';\r\n\r\n if(doc.thumbs?.length) {\r\n const size = doc.thumbs[doc.thumbs.length - 1];\r\n if(!(size as PhotoSize.photoStrippedSize).bytes) {\r\n const cacheContext = appDownloadManager.getCacheContext(doc, size.type);\r\n\r\n if(cacheContext.url) {\r\n artwork.push({\r\n src: cacheContext.url,\r\n sizes: `${(size as PhotoSize.photoSize).w}x${(size as PhotoSize.photoSize).h}`,\r\n type: 'image/jpeg'\r\n });\r\n } else {\r\n const download = appPhotosManager.preloadPhoto(doc, size);\r\n download.then(() => {\r\n if(this.playingMedia !== playingMedia || !cacheContext.url) {\r\n return;\r\n }\r\n\r\n this.setNewMediadata(message);\r\n });\r\n }\r\n }\r\n } else if(isVoice) {\r\n const peerId = message.fromId || message.peerId;\r\n const peerPhoto = appPeersManager.getPeerPhoto(peerId);\r\n if(peerPhoto) {\r\n const result = appAvatarsManager.loadAvatar(peerId, peerPhoto, 'photo_small');\r\n if(result.cached) {\r\n const url = await result.loadPromise;\r\n artwork.push({\r\n src: url,\r\n sizes: '160x160',\r\n type: 'image/jpeg'\r\n });\r\n } else {\r\n result.loadPromise.then((url) => {\r\n if(this.playingMedia !== playingMedia || !url) {\r\n return;\r\n }\r\n \r\n this.setNewMediadata(message);\r\n });\r\n }\r\n }\r\n\r\n title = appPeersManager.getPeerTitle(peerId, true, false);\r\n artist = I18n.format(doc.type === 'voice' ? 'AttachAudio' : 'AttachRound', true);\r\n }\r\n\r\n if(!isVoice) {\r\n const attribute = doc.attributes.find(attribute => attribute._ === 'documentAttributeAudio') as DocumentAttribute.documentAttributeAudio;\r\n title = attribute && attribute.title || doc.file_name;\r\n artist = attribute && attribute.performer;\r\n }\r\n\r\n if(!artwork.length) {\r\n if(IS_APPLE) {\r\n if(IS_TOUCH_SUPPORTED) {\r\n artwork.push({\r\n src: `assets/img/apple-touch-icon-precomposed.png`,\r\n sizes: '180x180',\r\n type: 'image/png'\r\n });\r\n } else {\r\n artwork.push({\r\n src: `assets/img/apple-touch-icon.png`,\r\n sizes: '180x180',\r\n type: 'image/png'\r\n });\r\n }\r\n } else {\r\n [72, 96, 144, 192, 256, 384, 512].forEach(size => {\r\n const sizes = `${size}x${size}`;\r\n artwork.push({\r\n src: `assets/img/android-chrome-${sizes}.png`,\r\n sizes,\r\n type: 'image/png'\r\n });\r\n });\r\n }\r\n }\r\n\r\n const metadata = new MediaMetadata({\r\n title,\r\n artist,\r\n artwork\r\n });\r\n\r\n navigator.mediaSession.metadata = metadata;\r\n }\r\n\r\n private getMessageByMedia(media: HTMLMediaElement): Message.message {\r\n const details = this.mediaDetails.get(media);\r\n const {peerId, mid} = details;\r\n const message = details.isScheduled ? appMessagesManager.getScheduledMessageByPeer(peerId, mid) : appMessagesManager.getMessageByPeer(peerId, mid);\r\n return message;\r\n }\r\n\r\n private onPlay = (e?: Event) => {\r\n const media = e.target as HTMLMediaElement;\r\n const details = this.mediaDetails.get(media);\r\n const {peerId, mid} = details;\r\n\r\n //console.log('appMediaPlaybackController: video playing', this.currentPeerId, this.playingMedia, media);\r\n\r\n const message = this.getMessageByMedia(media);\r\n\r\n const previousMedia = this.playingMedia;\r\n if(previousMedia !== media) {\r\n this.stop();\r\n this.setMedia(media, message);\r\n\r\n const verify = (element: MediaItem) => element.mid === mid && element.peerId === peerId;\r\n const current = this.listLoader.getCurrent();\r\n if(!current || !verify(current)) {\r\n const previous = this.listLoader.getPrevious();\r\n\r\n let idx = previous.findIndex(verify);\r\n let jumpLength: number;\r\n if(idx !== -1) {\r\n jumpLength = -(previous.length - idx);\r\n } else {\r\n idx = this.listLoader.getNext().findIndex(verify);\r\n if(idx !== -1) {\r\n jumpLength = idx + 1;\r\n }\r\n }\r\n \r\n if(idx !== -1) {\r\n if(jumpLength) {\r\n this.go(jumpLength, false);\r\n }\r\n } else {\r\n this.setTargets({peerId, mid});\r\n }\r\n }\r\n }\r\n\r\n // audio_pause не успеет сработать без таймаута\r\n setTimeout(() => {\r\n if(this.playingMedia !== media) {\r\n return;\r\n }\r\n\r\n rootScope.dispatchEvent('media_play', this.getPlayingDetails());\r\n }, 0);\r\n };\r\n\r\n public getPlayingDetails() {\r\n const {playingMedia} = this;\r\n if(!playingMedia) {\r\n return;\r\n }\r\n\r\n const message = this.getMessageByMedia(playingMedia);\r\n return {\r\n doc: appMessagesManager.getMediaFromMessage(message),\r\n message,\r\n media: playingMedia,\r\n playbackParams: this.getPlaybackParams()\r\n };\r\n }\r\n\r\n private onPause = (e?: Event) => {\r\n /* const target = e.target as HTMLMediaElement;\r\n if(!isInDOM(target)) {\r\n this.container.append(target);\r\n target.play();\r\n return;\r\n } */\r\n\r\n rootScope.dispatchEvent('media_pause');\r\n };\r\n\r\n private onEnded = (e?: Event) => {\r\n if(!e.isTrusted) {\r\n return;\r\n }\r\n\r\n this.onPause(e);\r\n\r\n //console.log('on media end');\r\n\r\n if(this.lockedSwitchers || \r\n (!this.round && this.listLoader.current && !this.listLoader.next.length) || \r\n !this.listLoader.getNext().length || \r\n !this.next()) {\r\n this.stop();\r\n rootScope.dispatchEvent('media_stop');\r\n }\r\n };\r\n\r\n public toggle(play?: boolean) {\r\n if(!this.playingMedia) {\r\n return false;\r\n }\r\n\r\n if(play === undefined) {\r\n play = this.playingMedia.paused;\r\n }\r\n\r\n if(this.playingMedia.paused !== play) {\r\n return false;\r\n }\r\n\r\n if(play) {\r\n this.playingMedia.play();\r\n } else {\r\n this.playingMedia.pause();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public play = () => {\r\n return this.toggle(true);\r\n };\r\n\r\n public pause = () => {\r\n return this.toggle(false);\r\n };\r\n\r\n public stop = () => {\r\n const media = this.playingMedia;\r\n if(!media) {\r\n return false;\r\n }\r\n\r\n if(!media.paused) {\r\n media.pause();\r\n }\r\n\r\n media.currentTime = 0;\r\n simulateEvent(media, 'ended');\r\n\r\n const details = this.mediaDetails.get(media);\r\n if(details?.clean) {\r\n media.src = '';\r\n const peerId = details.peerId;\r\n const s = details.isScheduled ? this.scheduled : this.media;\r\n const storage = s.get(peerId);\r\n if(storage) {\r\n storage.delete(details.mid);\r\n \r\n if(!storage.size) {\r\n s.delete(peerId);\r\n }\r\n }\r\n \r\n media.remove();\r\n\r\n this.mediaDetails.delete(media);\r\n }\r\n\r\n this.playingMedia = undefined;\r\n this.playingMediaType = undefined;\r\n\r\n return true;\r\n };\r\n\r\n public playItem = (item: MediaItem) => {\r\n const {peerId, mid} = item;\r\n const isScheduled = this.searchContext.isScheduled;\r\n const media = this.getMedia(peerId, mid, isScheduled);\r\n\r\n /* if(isSafari) {\r\n media.autoplay = true;\r\n } */\r\n\r\n media.play();\r\n \r\n setTimeout(() => {\r\n this.resolveWaitingForLoadMedia(peerId, mid, isScheduled);\r\n }, 0);\r\n };\r\n\r\n public go = (length: number, dispatchJump?: boolean) => {\r\n if(this.lockedSwitchers) {\r\n return;\r\n }\r\n\r\n if(this.playingMediaType === 'audio') {\r\n return this.listLoader.goRound(length, dispatchJump);\r\n } else {\r\n return this.listLoader.go(length, dispatchJump);\r\n }\r\n };\r\n\r\n public next = () => {\r\n return this.go(1);\r\n };\r\n\r\n public previous = () => {\r\n const media = this.playingMedia;\r\n // if(media && (media.currentTime > 5 || !this.listLoader.getPrevious().length)) {\r\n if(media && media.currentTime > 5) {\r\n media.currentTime = 0;\r\n this.toggle(true);\r\n return;\r\n }\r\n\r\n return this.go(-1);\r\n };\r\n\r\n public willBePlayed(media: HTMLMediaElement) {\r\n this.willBePlayedMedia = media;\r\n }\r\n\r\n public setSearchContext(context: MediaSearchContext) {\r\n if(deepEqual(this.searchContext, context)) {\r\n return false;\r\n }\r\n\r\n this.searchContext = copy(context); // {_: type === 'audio' ? 'inputMessagesFilterMusic' : 'inputMessagesFilterRoundVoice'}\r\n return true;\r\n }\r\n\r\n public getSearchContext() {\r\n return this.searchContext;\r\n }\r\n\r\n public setTargets(current: MediaItem, prev?: MediaItem[], next?: MediaItem[]) {\r\n if(!this.listLoader) {\r\n this.listLoader = new SearchListLoader({\r\n loadCount: 10,\r\n loadWhenLeft: 5,\r\n processItem: (message: Message.message) => {\r\n this.addMedia(message, false);\r\n return {peerId: message.peerId, mid: message.mid};\r\n },\r\n onJump: (item, older) => {\r\n this.playItem(item);\r\n },\r\n onEmptied: () => {\r\n rootScope.dispatchEvent('media_stop');\r\n this.stop();\r\n }\r\n });\r\n } else {\r\n this.listLoader.reset();\r\n }\r\n\r\n const reverse = this.searchContext.folderId !== undefined ? false : true;\r\n if(prev) {\r\n this.listLoader.setTargets(prev, next, reverse);\r\n } else {\r\n this.listLoader.reverse = reverse;\r\n }\r\n\r\n this.listLoader.setSearchContext(this.searchContext);\r\n this.listLoader.current = current;\r\n\r\n this.listLoader.load(true);\r\n this.listLoader.load(false);\r\n }\r\n\r\n private getPlaybackMediaTypeFromMessage(message: Message.message) {\r\n const doc = appMessagesManager.getMediaFromMessage(message) as MyDocument;\r\n let mediaType: PlaybackMediaType = 'audio';\r\n if(doc?.type) {\r\n if(doc.type === 'voice' || doc.type === 'round') {\r\n mediaType = 'voice';\r\n } else if(doc.type === 'video') {\r\n mediaType = 'video';\r\n }\r\n }\r\n\r\n return mediaType;\r\n }\r\n\r\n public setMedia(media: HTMLMediaElement, message: Message.message) {\r\n const mediaType = this.getPlaybackMediaTypeFromMessage(message);\r\n\r\n this._playbackRate = this.playbackRates[mediaType];\r\n\r\n this.playingMedia = media;\r\n this.playingMediaType = mediaType;\r\n this.playingMedia.volume = this.volume;\r\n this.playingMedia.muted = this.muted;\r\n this.playingMedia.playbackRate = this.playbackRate;\r\n\r\n if(mediaType === 'audio') {\r\n this.playingMedia.loop = this.loop;\r\n }\r\n\r\n if('mediaSession' in navigator) {\r\n this.setNewMediadata(message);\r\n }\r\n }\r\n\r\n public setSingleMedia(media?: HTMLMediaElement, message?: Message.message) {\r\n const playingMedia = this.playingMedia;\r\n\r\n const wasPlaying = this.pause();\r\n\r\n this.willBePlayed(undefined);\r\n if(media) this.setMedia(media, message);\r\n else this.playingMedia = undefined;\r\n this.toggleSwitchers(false);\r\n\r\n return () => {\r\n this.toggleSwitchers(true);\r\n\r\n if(playingMedia) {\r\n if(this.mediaDetails.get(playingMedia)) {\r\n this.setMedia(playingMedia, this.getMessageByMedia(playingMedia));\r\n } else {\r\n this.next() || this.previous();\r\n }\r\n }\r\n\r\n if(media && this.playingMedia === media) {\r\n this.stop();\r\n }\r\n\r\n if(wasPlaying) {\r\n this.play();\r\n }\r\n };\r\n }\r\n\r\n public toggleSwitchers(enabled: boolean) {\r\n this.lockedSwitchers = !enabled;\r\n }\r\n}\r\n\r\nconst appMediaPlaybackController = new AppMediaPlaybackController();\r\nMOUNT_CLASS_TO.appMediaPlaybackController = appMediaPlaybackController;\r\nexport default appMediaPlaybackController;\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nexport type GrabEvent = {x: number, y: number, isTouch?: boolean, event: TouchEvent | MouseEvent};\r\n\r\nexport default function attachGrabListeners(element: HTMLElement, \r\n onStart: (position: GrabEvent) => void, \r\n onMove: (position: GrabEvent) => void, \r\n onEnd?: (position: GrabEvent) => void) {\r\n // * Mouse\r\n const onMouseMove = (event: MouseEvent) => {\r\n onMove({x: event.pageX, y: event.pageY, event});\r\n };\r\n\r\n const onMouseUp = (event: MouseEvent) => {\r\n document.removeEventListener('mousemove', onMouseMove);\r\n element.addEventListener('mousedown', onMouseDown, {once: true});\r\n onEnd && onEnd({x: event.pageX, y: event.pageY, event});\r\n };\r\n\r\n const onMouseDown = (event: MouseEvent) => {\r\n if(event.button !== 0) {\r\n element.addEventListener('mousedown', onMouseDown, {once: true});\r\n return;\r\n }\r\n\r\n onStart({x: event.pageX, y: event.pageY, event});\r\n onMouseMove(event);\r\n\r\n document.addEventListener('mousemove', onMouseMove);\r\n document.addEventListener('mouseup', onMouseUp, {once: true});\r\n };\r\n\r\n element.addEventListener('mousedown', onMouseDown, {once: true});\r\n\r\n // * Touch\r\n const onTouchMove = (event: TouchEvent) => {\r\n event.preventDefault();\r\n onMove({x: event.touches[0].clientX, y: event.touches[0].clientY, isTouch: true, event});\r\n };\r\n\r\n const onTouchEnd = (event: TouchEvent) => {\r\n document.removeEventListener('touchmove', onTouchMove);\r\n element.addEventListener('touchstart', onTouchStart, {passive: false, once: true});\r\n onEnd && onEnd({x: event.touches[0].clientX, y: event.touches[0].clientY, isTouch: true, event});\r\n };\r\n\r\n const onTouchStart = (event: TouchEvent) => {\r\n onStart({x: event.touches[0].clientX, y: event.touches[0].clientY, isTouch: true, event});\r\n onTouchMove(event);\r\n\r\n document.addEventListener('touchmove', onTouchMove, {passive: false});\r\n document.addEventListener('touchend', onTouchEnd, {passive: false, once: true});\r\n };\r\n\r\n element.addEventListener('touchstart', onTouchStart, {passive: false, once: true});\r\n\r\n return () => {\r\n element.removeEventListener('mousedown', onMouseDown);\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n\r\n element.removeEventListener('touchstart', onTouchStart);\r\n document.removeEventListener('touchmove', onTouchMove);\r\n document.removeEventListener('touchend', onTouchEnd);\r\n };\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport attachGrabListeners, { GrabEvent } from \"../helpers/dom/attachGrabListeners\";\r\nimport clamp from \"../helpers/number/clamp\";\r\nimport safeAssign from \"../helpers/object/safeAssign\";\r\n\r\nexport default class RangeSelector {\r\n public container: HTMLDivElement;\r\n protected filled: HTMLDivElement;\r\n protected seek: HTMLInputElement;\r\n\r\n public mousedown = false;\r\n protected rect: DOMRect;\r\n protected _removeListeners: () => void;\r\n\r\n private events: Partial<{\r\n //onMouseMove: ProgressLine['onMouseMove'],\r\n onMouseDown: RangeSelector['onMouseDown'],\r\n onMouseUp: RangeSelector['onMouseUp'],\r\n onScrub: (value: number) => void\r\n }> = {};\r\n\r\n protected decimals: number;\r\n\r\n protected step: number;\r\n protected min: number;\r\n protected max: number;\r\n protected withTransition = false;\r\n protected useTransform = false;\r\n protected vertical = false;\r\n\r\n constructor(\r\n options: {\r\n step: RangeSelector['step'],\r\n min: RangeSelector['min'],\r\n max: RangeSelector['max'],\r\n withTransition?: RangeSelector['withTransition'],\r\n useTransform?: RangeSelector['useTransform'],\r\n vertical?: RangeSelector['vertical']\r\n }, \r\n value = 0\r\n ) {\r\n safeAssign(this, options);\r\n\r\n this.container = document.createElement('div');\r\n this.container.classList.add('progress-line');\r\n\r\n // there is no sense in using transition with transform, because it is updating every frame\r\n if(this.useTransform) {\r\n this.container.classList.add('use-transform');\r\n } else if(this.withTransition) {\r\n this.container.classList.add('with-transition');\r\n }\r\n\r\n this.filled = document.createElement('div');\r\n this.filled.classList.add('progress-line__filled');\r\n\r\n const seek = this.seek = document.createElement('input');\r\n seek.classList.add('progress-line__seek');\r\n //seek.setAttribute('max', '0');\r\n seek.type = 'range';\r\n seek.step = '' + this.step;\r\n seek.min = '' + this.min;\r\n seek.max = '' + this.max;\r\n seek.value = '' + value;\r\n\r\n if(value) {\r\n this.setProgress(value);\r\n }\r\n\r\n const stepStr = '' + this.step;\r\n const index = stepStr.indexOf('.');\r\n this.decimals = index === -1 ? 0 : stepStr.length - index - 1;\r\n\r\n //this.setListeners();\r\n\r\n this.container.append(this.filled, seek);\r\n }\r\n\r\n get value() {\r\n return +this.seek.value;\r\n }\r\n\r\n public setHandlers(events: RangeSelector['events']) {\r\n this.events = events;\r\n }\r\n\r\n protected onMouseMove = (event: GrabEvent) => {\r\n this.scrub(event);\r\n };\r\n\r\n protected onMouseDown = (event: GrabEvent) => {\r\n this.rect = this.container.getBoundingClientRect();\r\n this.mousedown = true;\r\n this.scrub(event);\r\n this.container.classList.add('is-focused');\r\n this.events?.onMouseDown && this.events.onMouseDown(event);\r\n };\r\n\r\n protected onMouseUp = (event: GrabEvent) => {\r\n this.mousedown = false;\r\n this.container.classList.remove('is-focused');\r\n this.events?.onMouseUp && this.events.onMouseUp(event);\r\n };\r\n\r\n public setListeners() {\r\n this.seek.addEventListener('input', this.onInput);\r\n this._removeListeners = attachGrabListeners(this.container, this.onMouseDown, this.onMouseMove, this.onMouseUp);\r\n }\r\n\r\n public onInput = () => {\r\n const value = +this.seek.value;\r\n this.setFilled(value);\r\n this.events?.onScrub && this.events.onScrub(value);\r\n };\r\n\r\n public setProgress(value: number) {\r\n this.seek.value = '' + value;\r\n this.setFilled(+this.seek.value); // clamp\r\n }\r\n\r\n public addProgress(value: number) {\r\n this.seek.value = '' + (+this.seek.value + value);\r\n this.setFilled(+this.seek.value); // clamp\r\n }\r\n\r\n public setFilled(value: number) {\r\n let percents = (value - this.min) / (this.max - this.min);\r\n percents = clamp(percents, 0, 1);\r\n \r\n // using scaleX and width even with vertical because it will be rotated\r\n if(this.useTransform) {\r\n this.filled.style.transform = `scaleX(${percents})`;\r\n } else {\r\n this.filled.style.width = (percents * 100) + '%';\r\n }\r\n }\r\n\r\n protected scrub(event: GrabEvent) {\r\n const rectMax = this.vertical ? this.rect.height : this.rect.width;\r\n const offsetAxisValue = clamp(this.vertical ? -(event.y - this.rect.bottom) : event.x - this.rect.left, 0, rectMax);\r\n\r\n let value = this.min + (offsetAxisValue / rectMax * (this.max - this.min));\r\n\r\n if((value - this.min) < ((this.max - this.min) / 2)) {\r\n value -= this.step / 10;\r\n }\r\n \r\n value = +value.toFixed(this.decimals);\r\n value = clamp(value, this.min, this.max);\r\n\r\n //this.seek.value = '' + value;\r\n //this.onInput();\r\n\r\n this.setProgress(value);\r\n this.events?.onScrub && this.events.onScrub(value);\r\n\r\n return value;\r\n }\r\n\r\n public removeListeners() {\r\n if(this._removeListeners) {\r\n this._removeListeners();\r\n this._removeListeners = null;\r\n }\r\n\r\n this.seek.removeEventListener('input', this.onInput);\r\n \r\n this.events = {};\r\n }\r\n}\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport cancelEvent from \"../helpers/dom/cancelEvent\";\nimport { AttachClickOptions, attachClickEvent, CLICK_EVENT_NAME } from \"../helpers/dom/clickEvent\";\nimport ListenerSetter from \"../helpers/listenerSetter\";\nimport { FormatterArguments, i18n, LangPackKey } from \"../lib/langPack\";\nimport CheckboxField from \"./checkboxField\";\nimport { closeBtnMenu } from \"./misc\";\nimport ripple from \"./ripple\";\n\nexport type ButtonMenuItemOptions = {\n icon?: string, \n text?: LangPackKey, \n textArgs?: FormatterArguments,\n regularText?: string, \n onClick: (e: MouseEvent | TouchEvent) => void | boolean, \n element?: HTMLElement,\n textElement?: HTMLElement,\n options?: AttachClickOptions,\n checkboxField?: CheckboxField,\n noCheckboxClickListener?: boolean,\n keepOpen?: boolean\n /* , cancelEvent?: true */\n};\n\nconst ButtonMenuItem = (options: ButtonMenuItemOptions) => {\n if(options.element) return options.element;\n\n const {icon, text, onClick, checkboxField, noCheckboxClickListener} = options;\n const el = document.createElement('div');\n el.className = 'btn-menu-item rp-overflow' + (icon ? ' tgico-' + icon : '');\n ripple(el);\n\n let textElement = options.textElement;\n if(!textElement) {\n textElement = options.textElement = text ? i18n(text, options.textArgs) : document.createElement('span');\n if(options.regularText) textElement.innerHTML = options.regularText;\n }\n \n textElement.classList.add('btn-menu-item-text');\n el.append(textElement);\n\n const keepOpen = !!checkboxField || !!options.keepOpen;\n\n // * cancel mobile keyboard close\n onClick && attachClickEvent(el, /* CLICK_EVENT_NAME !== 'click' || keepOpen ? */ (e) => {\n cancelEvent(e);\n const result = onClick(e);\n\n if(result === false) {\n return;\n }\n\n if(!keepOpen) {\n closeBtnMenu();\n }\n\n if(checkboxField && !noCheckboxClickListener/* && result !== false */) {\n checkboxField.checked = checkboxField.input.type === 'radio' ? true : !checkboxField.checked;\n }\n }/* : onClick */, options.options);\n\n if(checkboxField) {\n el.append(checkboxField.label);\n }\n\n return options.element = el;\n};\n\nconst ButtonMenu = (buttons: ButtonMenuItemOptions[], listenerSetter?: ListenerSetter) => {\n const el = document.createElement('div');\n el.classList.add('btn-menu');\n\n if(listenerSetter) {\n buttons.forEach(b => {\n if(b.options) {\n b.options.listenerSetter = listenerSetter;\n } else {\n b.options = {listenerSetter};\n }\n });\n }\n\n const items = buttons.map(ButtonMenuItem);\n\n el.append(...items);\n\n return el;\n};\n\nexport default ButtonMenu;\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport cancelEvent from \"../helpers/dom/cancelEvent\";\r\nimport { AttachClickOptions, CLICK_EVENT_NAME } from \"../helpers/dom/clickEvent\";\r\nimport ListenerSetter from \"../helpers/listenerSetter\";\r\nimport ButtonIcon from \"./buttonIcon\";\r\nimport ButtonMenu, { ButtonMenuItemOptions } from \"./buttonMenu\";\r\nimport { closeBtnMenu, openBtnMenu } from \"./misc\";\r\n\r\nconst ButtonMenuToggle = (\r\n options: Partial<{\r\n noRipple: true, \r\n onlyMobile: true, \r\n listenerSetter: ListenerSetter, \r\n asDiv: boolean,\r\n container: HTMLElement\r\n }> = {}, \r\n direction: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right', \r\n buttons: ButtonMenuItemOptions[], \r\n onOpen?: (e: Event) => void,\r\n onClose?: () => void\r\n) => {\r\n options.asDiv = true;\r\n const button = options.container ?? ButtonIcon('more', options);\r\n button.classList.add('btn-menu-toggle');\r\n\r\n const btnMenu = ButtonMenu(buttons, options.listenerSetter);\r\n btnMenu.classList.add(direction);\r\n ButtonMenuToggleHandler(button, onOpen, options, onClose);\r\n button.append(btnMenu);\r\n return button;\r\n};\r\n\r\n// TODO: refactor for attachClickEvent, because if move finger after touchstart, it will start anyway\r\nconst ButtonMenuToggleHandler = (el: HTMLElement, onOpen?: (e: Event) => void, options?: AttachClickOptions, onClose?: () => void) => {\r\n const add = options?.listenerSetter ? options.listenerSetter.add(el) : el.addEventListener.bind(el);\r\n\r\n //console.trace('ButtonMenuToggleHandler attach', el, onOpen, options);\r\n add(CLICK_EVENT_NAME, (e: Event) => {\r\n //console.log('ButtonMenuToggleHandler click', e);\r\n if(!el.classList.contains('btn-menu-toggle')) return false;\r\n\r\n //window.removeEventListener('mousemove', onMouseMove);\r\n const openedMenu = el.querySelector('.btn-menu') as HTMLDivElement;\r\n cancelEvent(e);\r\n\r\n if(el.classList.contains('menu-open')) {\r\n closeBtnMenu();\r\n } else {\r\n onOpen && onOpen(e);\r\n openBtnMenu(openedMenu, onClose);\r\n }\r\n });\r\n};\r\n\r\nexport { ButtonMenuToggleHandler };\r\nexport default ButtonMenuToggle;\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport { IS_TOUCH_SUPPORTED } from \"../../environment/touchSupport\";\nimport EventListenerBase from \"../eventListenerBase\";\nimport ListenerSetter from \"../listenerSetter\";\nimport safeAssign from \"../object/safeAssign\";\nimport findUpClassName from \"./findUpClassName\";\n\nexport default class ControlsHover extends EventListenerBase<{\n toggleControls: (show: boolean) => void\n}> {\n protected hideControlsTimeout: number;\n protected controlsLocked: boolean;\n\n protected canHideControls: () => boolean;\n protected element: HTMLElement;\n protected listenerSetter: ListenerSetter;\n protected showOnLeaveToClassName: string;\n protected ignoreClickClassName: string;\n\n constructor() {\n super(false);\n this.hideControlsTimeout = 0;\n }\n \n public setup(options: {\n element: HTMLElement, \n listenerSetter: ListenerSetter, \n canHideControls?: () => boolean,\n showOnLeaveToClassName?: string,\n ignoreClickClassName?: string\n }) {\n safeAssign(this, options);\n\n const {listenerSetter, element} = this;\n\n if(IS_TOUCH_SUPPORTED) {\n listenerSetter.add(element)('click', (e) => {\n if(this.ignoreClickClassName && findUpClassName(e.target, this.ignoreClickClassName)) {\n return;\n }\n\n this.toggleControls();\n });\n\n /* listenerSetter.add(player)('touchstart', () => {\n showControls(false);\n });\n\n listenerSetter.add(player)('touchend', () => {\n if(player.classList.contains('is-playing')) {\n showControls();\n }\n }); */\n } else {\n listenerSetter.add(element)('mousemove', () => {\n this.showControls();\n });\n\n listenerSetter.add(element)('mouseenter', () => {\n this.showControls(false);\n });\n\n listenerSetter.add(element)('mouseleave', (e) => {\n if(e.relatedTarget && this.showOnLeaveToClassName && findUpClassName(e.relatedTarget, this.showOnLeaveToClassName)) {\n this.showControls(false);\n return;\n }\n \n this.hideControls();\n });\n }\n }\n\n public hideControls = (setHideTimeout = false) => {\n if(setHideTimeout) {\n if(!this.hideControlsTimeout) {\n this.hideControlsTimeout = window.setTimeout(this.hideControls, 3e3);\n }\n\n return;\n }\n \n clearTimeout(this.hideControlsTimeout);\n this.hideControlsTimeout = 0;\n\n const isShown = this.element.classList.contains('show-controls');\n if(this.controlsLocked !== false) {\n if((this.canHideControls ? !this.canHideControls() : false) || !isShown || this.controlsLocked) {\n return;\n }\n } else if(!isShown) {\n return;\n }\n \n this.dispatchEvent('toggleControls', false);\n this.element.classList.remove('show-controls');\n };\n \n public showControls = (setHideTimeout = true) => {\n if(this.hideControlsTimeout) {\n clearTimeout(this.hideControlsTimeout);\n this.hideControlsTimeout = 0;\n } else if(!this.element.classList.contains('show-controls') && this.controlsLocked !== false) {\n this.dispatchEvent('toggleControls', true);\n this.element.classList.add('show-controls');\n }\n\n if(!setHideTimeout || this.controlsLocked) {\n return;\n }\n\n this.hideControlsTimeout = window.setTimeout(this.hideControls, 3e3);\n };\n\n public toggleControls = (show?: boolean) => {\n const isShown = this.element.classList.contains('show-controls');\n\n if(show === undefined) {\n if(isShown) this.hideControls();\n else this.showControls();\n } else if(show === isShown) return;\n else if(show === false) this.hideControls();\n else this.showControls();\n };\n\n public lockControls(visible: boolean) {\n this.controlsLocked = visible;\n\n this.element.classList.toggle('disable-hover', visible === false);\n this.toggleControls(visible);\n }\n}\n","export default function toHHMMSS(str: string | number, leadZero = false) {\n const sec_num = parseInt(str + '', 10);\n const hours = Math.floor(sec_num / 3600);\n let minutes: any = Math.floor((sec_num - (hours * 3600)) / 60);\n let seconds: any = sec_num - (hours * 3600) - (minutes * 60);\n \n if(hours) leadZero = true;\n if(minutes < 10) minutes = leadZero ? \"0\" + minutes : minutes;\n if(seconds < 10) seconds = \"0\" + seconds;\n return (hours ? /* ('0' + hours).slice(-2) */hours + ':' : '') + minutes + ':' + seconds;\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport appMediaPlaybackController from \"../components/appMediaPlaybackController\";\nimport { IS_APPLE_MOBILE } from \"../environment/userAgent\";\nimport { IS_TOUCH_SUPPORTED } from \"../environment/touchSupport\";\nimport RangeSelector from \"../components/rangeSelector\";\nimport { onMediaLoad } from \"../helpers/files\";\nimport cancelEvent from \"../helpers/dom/cancelEvent\";\nimport ListenerSetter from \"../helpers/listenerSetter\";\nimport ButtonMenu from \"../components/buttonMenu\";\nimport { ButtonMenuToggleHandler } from \"../components/buttonMenuToggle\";\nimport rootScope from \"./rootScope\";\nimport { GrabEvent } from \"../helpers/dom/attachGrabListeners\";\nimport { attachClickEvent } from \"../helpers/dom/clickEvent\";\nimport ControlsHover from \"../helpers/dom/controlsHover\";\nimport { addFullScreenListener, cancelFullScreen, isFullScreen, requestFullScreen } from \"../helpers/dom/fullScreen\";\nimport toHHMMSS from \"../helpers/string/toHHMMSS\";\n\nexport class MediaProgressLine extends RangeSelector {\n protected filledLoad: HTMLDivElement;\n\n protected progressRAF = 0;\n\n protected media: HTMLMediaElement;\n protected streamable: boolean;\n\n constructor(media?: HTMLAudioElement | HTMLVideoElement, streamable?: boolean, withTransition?: boolean, useTransform?: boolean) {\n super({\n step: 1000 / 60 / 1000, \n min: 0, \n max: 1, \n withTransition, \n useTransform\n }, 0);\n\n if(media) {\n this.setMedia(media, streamable);\n }\n }\n\n public setMedia(media: HTMLMediaElement, streamable = false) {\n if(this.media) {\n this.removeListeners();\n }\n\n if(streamable && !this.filledLoad) {\n this.filledLoad = document.createElement('div');\n this.filledLoad.classList.add('progress-line__filled', 'progress-line__loaded');\n this.container.prepend(this.filledLoad);\n //this.setLoadProgress();\n } else if(this.filledLoad) {\n this.filledLoad.classList.toggle('hide', !streamable);\n }\n\n this.media = media;\n this.streamable = streamable;\n if(!media.paused || media.currentTime > 0) {\n this.onPlay();\n }\n\n let wasPlaying = false;\n this.setSeekMax();\n this.setListeners();\n this.setHandlers({\n onMouseDown: () => {\n wasPlaying = !this.media.paused;\n wasPlaying && this.media.pause();\n },\n\n onMouseUp: (e) => {\n // cancelEvent(e.event);\n wasPlaying && this.media.play();\n }\n });\n }\n\n protected onLoadedData = () => {\n this.max = this.media.duration;\n this.seek.setAttribute('max', '' + this.max);\n };\n\n protected onEnded = () => {\n this.setProgress();\n };\n\n protected onPlay = () => {\n let r = () => {\n this.setProgress();\n\n this.progressRAF = this.media.paused ? 0 : window.requestAnimationFrame(r);\n };\n\n if(this.progressRAF) {\n window.cancelAnimationFrame(this.progressRAF);\n }\n\n if(this.streamable) {\n this.setLoadProgress();\n }\n\n this.progressRAF = window.requestAnimationFrame(r);\n };\n\n protected onTimeUpdate = () => {\n if(this.media.paused) {\n this.setProgress();\n\n if(this.streamable) {\n this.setLoadProgress();\n }\n }\n };\n\n protected onProgress = (e: Event) => {\n this.setLoadProgress();\n };\n\n protected scrub(e: GrabEvent) {\n const scrubTime = super.scrub(e);\n this.media.currentTime = scrubTime;\n return scrubTime;\n }\n\n protected setLoadProgress() {\n if(appMediaPlaybackController.isSafariBuffering(this.media)) return;\n const buf = this.media.buffered;\n const numRanges = buf.length;\n\n const currentTime = this.media.currentTime;\n let nearestStart = 0, end = 0;\n for(let i = 0; i < numRanges; ++i) {\n const start = buf.start(i);\n if(currentTime >= start && start >= nearestStart) {\n nearestStart = start;\n end = buf.end(i);\n }\n\n //console.log('onProgress range:', i, buf.start(i), buf.end(i), this.media);\n }\n\n //console.log('onProgress correct range:', nearestStart, end, this.media);\n\n const percents = this.media.duration ? end / this.media.duration : 0;\n this.filledLoad.style.width = (percents * 100) + '%';\n //this.filledLoad.style.transform = 'scaleX(' + percents + ')';\n }\n\n protected setSeekMax() {\n this.max = this.media.duration || 0;\n if(this.max > 0) {\n this.onLoadedData();\n } else {\n this.media.addEventListener('loadeddata', this.onLoadedData);\n }\n }\n\n public setProgress() {\n if(appMediaPlaybackController.isSafariBuffering(this.media)) return;\n const currentTime = this.media.currentTime;\n\n super.setProgress(currentTime);\n }\n\n public setListeners() {\n super.setListeners();\n this.media.addEventListener('ended', this.onEnded);\n this.media.addEventListener('play', this.onPlay);\n this.media.addEventListener('timeupdate', this.onTimeUpdate);\n this.streamable && this.media.addEventListener('progress', this.onProgress);\n }\n\n public removeListeners() {\n super.removeListeners();\n\n if(this.media) {\n this.media.removeEventListener('loadeddata', this.onLoadedData);\n this.media.removeEventListener('ended', this.onEnded);\n this.media.removeEventListener('play', this.onPlay);\n this.media.removeEventListener('timeupdate', this.onTimeUpdate);\n this.streamable && this.media.removeEventListener('progress', this.onProgress);\n }\n\n if(this.progressRAF) {\n window.cancelAnimationFrame(this.progressRAF);\n this.progressRAF = 0;\n }\n }\n}\n\nexport class VolumeSelector extends RangeSelector {\n private static ICONS = ['volume_off', 'volume_mute', 'volume_down', 'volume_up'];\n public btn: HTMLElement;\n protected icon: HTMLSpanElement;\n\n constructor(protected listenerSetter: ListenerSetter, protected vertical = false) {\n super({\n step: 0.01, \n min: 0, \n max: 1,\n vertical\n }, 1);\n\n this.setListeners();\n this.setHandlers({\n onScrub: currentTime => {\n const value = Math.max(Math.min(currentTime, 1), 0);\n\n //console.log('volume scrub:', currentTime, value);\n\n appMediaPlaybackController.muted = false;\n appMediaPlaybackController.volume = value;\n },\n\n /* onMouseUp: (e) => {\n cancelEvent(e.event);\n } */\n });\n\n const className = 'player-volume';\n const btn = this.btn = document.createElement('div');\n btn.classList.add('btn-icon', className);\n const icon = this.icon = document.createElement('span');\n icon.classList.add(className + '__icon');\n\n btn.append(icon, this.container);\n\n attachClickEvent(icon, this.onMuteClick, {listenerSetter: this.listenerSetter});\n this.listenerSetter.add(rootScope)('media_playback_params', this.setVolume);\n\n this.setVolume();\n }\n\n private onMuteClick = (e?: Event) => {\n e && cancelEvent(e);\n appMediaPlaybackController.muted = !appMediaPlaybackController.muted;\n };\n\n private setVolume = () => {\n // const volume = video.volume;\n const {volume, muted} = appMediaPlaybackController;\n let d: string;\n let iconIndex: number;\n if(!volume || muted) {\n iconIndex = 0;\n } else if(volume > .5) {\n iconIndex = 3;\n } else if(volume > 0 && volume < .25) {\n iconIndex = 1;\n } else {\n iconIndex = 2;\n }\n\n VolumeSelector.ICONS.forEach(icon => this.icon.classList.remove('tgico-' + icon));\n this.icon.classList.add('tgico-' + VolumeSelector.ICONS[iconIndex]);\n\n if(!this.mousedown) {\n this.setProgress(muted ? 0 : volume);\n }\n };\n}\n\nexport default class VideoPlayer extends ControlsHover {\n private static PLAYBACK_RATES = [0.5, 1, 1.5, 2];\n private static PLAYBACK_RATES_ICONS = ['playback_05', 'playback_1x', 'playback_15', 'playback_2x'];\n\n protected video: HTMLVideoElement;\n protected wrapper: HTMLDivElement;\n protected progress: MediaProgressLine;\n protected skin: 'default';\n\n protected listenerSetter: ListenerSetter;\n protected playbackRateButton: HTMLElement;\n\n /* protected videoParent: HTMLElement;\n protected videoWhichChild: number; */\n\n protected onPlaybackRackMenuToggle?: (open: boolean) => void;\n\n constructor({video, play = false, streamable = false, duration, onPlaybackRackMenuToggle}: {\n video: HTMLVideoElement, \n play?: boolean, \n streamable?: boolean, \n duration?: number,\n onPlaybackRackMenuToggle?: (open: boolean) => void\n }) {\n super();\n\n this.video = video;\n this.wrapper = document.createElement('div');\n this.wrapper.classList.add('ckin__player');\n\n this.onPlaybackRackMenuToggle = onPlaybackRackMenuToggle;\n\n this.listenerSetter = new ListenerSetter();\n\n this.setup({\n element: this.wrapper, \n listenerSetter: this.listenerSetter, \n canHideControls: () => {\n return !this.video.paused && (!this.playbackRateButton || !this.playbackRateButton.classList.contains('menu-open'));\n },\n showOnLeaveToClassName: 'media-viewer-caption',\n ignoreClickClassName: 'ckin__controls'\n });\n\n video.parentNode.insertBefore(this.wrapper, video);\n this.wrapper.appendChild(video);\n\n this.skin = 'default';\n\n this.stylePlayer(duration);\n this.setBtnMenuToggle();\n\n if(this.skin === 'default') {\n const controls = this.wrapper.querySelector('.default__controls.ckin__controls') as HTMLDivElement;\n this.progress = new MediaProgressLine(video, streamable);\n controls.prepend(this.progress.container);\n }\n\n if(play/* && video.paused */) {\n const promise = video.play();\n promise.catch((err: Error) => {\n if(err.name === 'NotAllowedError') {\n video.muted = true;\n video.autoplay = true;\n video.play();\n }\n }).finally(() => { // due to autoplay, play will not call\n this.wrapper.classList.toggle('is-playing', !this.video.paused);\n });\n //(this.wrapper.querySelector('.toggle') as HTMLButtonElement).click();\n }\n }\n\n private stylePlayer(initDuration: number) {\n const {wrapper, video, skin, listenerSetter} = this;\n\n wrapper.classList.add(skin);\n \n const html = this.buildControls();\n wrapper.insertAdjacentHTML('beforeend', html);\n let timeDuration: HTMLElement;\n \n if(skin === 'default') {\n this.playbackRateButton = this.wrapper.querySelector('.playback-rate') as HTMLElement;\n \n const toggle = wrapper.querySelectorAll('.toggle') as NodeListOf;\n const fullScreenButton = wrapper.querySelector('.fullscreen') as HTMLElement;\n const timeElapsed = wrapper.querySelector('#time-elapsed');\n timeDuration = wrapper.querySelector('#time-duration') as HTMLElement;\n timeDuration.innerHTML = toHHMMSS(video.duration | 0);\n\n const volumeSelector = new VolumeSelector(listenerSetter);\n\n const leftControls = wrapper.querySelector('.left-controls');\n volumeSelector.btn.classList.remove('btn-icon');\n leftControls.insertBefore(volumeSelector.btn, timeElapsed.parentElement);\n\n Array.from(toggle).forEach((button) => {\n listenerSetter.add(button)('click', () => {\n this.togglePlay();\n });\n });\n\n if(!IS_TOUCH_SUPPORTED) {\n listenerSetter.add(video)('click', () => {\n this.togglePlay();\n });\n\n listenerSetter.add(document)('keydown', (e: KeyboardEvent) => {\n if(rootScope.overlaysActive > 1) { // forward popup is active, etc\n return;\n }\n\n const {key, code} = e;\n\n let good = true;\n if(code === 'KeyF') {\n this.toggleFullScreen();\n } else if(code === 'KeyM') {\n appMediaPlaybackController.muted = !appMediaPlaybackController.muted;\n } else if(code === 'Space') {\n this.togglePlay();\n } else if(e.altKey && (code === 'Equal' || code === 'Minus')) {\n const add = code === 'Equal' ? 1 : -1;\n const playbackRate = appMediaPlaybackController.playbackRate;\n const idx = VideoPlayer.PLAYBACK_RATES.indexOf(playbackRate);\n const nextIdx = idx + add;\n if(nextIdx >= 0 && nextIdx < VideoPlayer.PLAYBACK_RATES.length) {\n appMediaPlaybackController.playbackRate = VideoPlayer.PLAYBACK_RATES[nextIdx];\n }\n } else if(wrapper.classList.contains('ckin__fullscreen') && (key === 'ArrowLeft' || key === 'ArrowRight')) {\n if(key === 'ArrowLeft') appMediaPlaybackController.seekBackward({action: 'seekbackward'});\n else appMediaPlaybackController.seekForward({action: 'seekforward'});\n } else {\n good = false;\n }\n\n if(good) {\n cancelEvent(e);\n return false;\n }\n });\n }\n \n /* player.addEventListener('click', (e) => {\n if(e.target !== player) {\n return;\n }\n\n this.togglePlay();\n }); */\n \n /* video.addEventListener('play', () => {\n }); */\n\n listenerSetter.add(video)('dblclick', () => {\n if(!IS_TOUCH_SUPPORTED) {\n this.toggleFullScreen();\n }\n });\n\n listenerSetter.add(fullScreenButton)('click', () => {\n this.toggleFullScreen();\n });\n\n addFullScreenListener(wrapper, this.onFullScreen.bind(this, fullScreenButton), listenerSetter);\n\n listenerSetter.add(video)('timeupdate', () => {\n timeElapsed.innerHTML = toHHMMSS(video.currentTime | 0);\n });\n\n listenerSetter.add(video)('play', () => {\n wrapper.classList.add('played');\n\n if(!IS_TOUCH_SUPPORTED) {\n listenerSetter.add(video)('play', () => {\n this.hideControls(true);\n });\n }\n }, {once: true});\n\n listenerSetter.add(video)('pause', () => {\n this.showControls(false);\n });\n\n listenerSetter.add(rootScope)('media_playback_params', () => {\n this.setPlaybackRateIcon();\n });\n }\n\n listenerSetter.add(video)('play', () => {\n wrapper.classList.add('is-playing');\n });\n\n listenerSetter.add(video)('pause', () => {\n wrapper.classList.remove('is-playing');\n });\n\n if(video.duration || initDuration) {\n timeDuration.innerHTML = toHHMMSS(Math.round(video.duration || initDuration));\n } else {\n onMediaLoad(video).then(() => {\n timeDuration.innerHTML = toHHMMSS(Math.round(video.duration));\n });\n }\n }\n\n protected togglePlay() {\n this.video[this.video.paused ? 'play' : 'pause']();\n }\n\n private buildControls() {\n const skin = this.skin;\n if(skin === 'default') {\n return `\n \n \n \n \n \n \n \n 0:00\n / \n 0:00\n \n \n \n \n \n \n \n `;\n }\n }\n\n protected setBtnMenuToggle() {\n const buttons: Parameters[0] = VideoPlayer.PLAYBACK_RATES.map((rate, idx) => {\n return { \n // icon: VideoPlayer.PLAYBACK_RATES_ICONS[idx],\n regularText: rate + 'x', \n onClick: () => {\n appMediaPlaybackController.playbackRate = rate;\n }\n };\n });\n const btnMenu = ButtonMenu(buttons);\n btnMenu.classList.add('top-left');\n ButtonMenuToggleHandler(\n this.playbackRateButton, \n this.onPlaybackRackMenuToggle ? () => {\n this.onPlaybackRackMenuToggle(true);\n } : undefined, \n undefined, \n this.onPlaybackRackMenuToggle ? () => {\n this.onPlaybackRackMenuToggle(false);\n } : undefined\n );\n this.playbackRateButton.append(btnMenu);\n\n this.setPlaybackRateIcon();\n }\n\n protected setPlaybackRateIcon() {\n const playbackRateButton = this.playbackRateButton;\n VideoPlayer.PLAYBACK_RATES_ICONS.forEach((className) => {\n className = 'tgico-' + className;\n playbackRateButton.classList.remove(className);\n });\n\n let idx = VideoPlayer.PLAYBACK_RATES.indexOf(appMediaPlaybackController.playbackRate);\n if(idx === -1) idx = VideoPlayer.PLAYBACK_RATES.indexOf(1);\n\n playbackRateButton.classList.add('tgico-' + VideoPlayer.PLAYBACK_RATES_ICONS[idx]);\n }\n \n protected toggleFullScreen() {\n const player = this.wrapper;\n\n // * https://caniuse.com/#feat=fullscreen\n if(IS_APPLE_MOBILE) {\n const video = this.video as any;\n video.webkitEnterFullscreen();\n video.enterFullscreen();\n return;\n }\n \n if(!isFullScreen()) {\n /* const videoParent = this.video.parentElement;\n const videoWhichChild = whichChild(this.video);\n const needVideoRemount = videoParent !== player;\n\n if(needVideoRemount) {\n this.videoParent = videoParent;\n this.videoWhichChild = videoWhichChild;\n player.prepend(this.video);\n } */\n \n requestFullScreen(player);\n } else {\n /* if(this.videoParent) {\n const {videoWhichChild, videoParent} = this;\n if(!videoWhichChild) {\n videoParent.prepend(this.video);\n } else {\n videoParent.insertBefore(this.video, videoParent.children[videoWhichChild]);\n }\n\n this.videoParent = null;\n this.videoWhichChild = -1;\n } */\n \n cancelFullScreen();\n }\n }\n \n protected onFullScreen(fullScreenButton: HTMLElement) {\n const isFull = isFullScreen();\n this.wrapper.classList.toggle('ckin__fullscreen', isFull);\n if(!isFull) {\n fullScreenButton.classList.remove('tgico-smallscreen');\n fullScreenButton.classList.add('tgico-fullscreen');\n fullScreenButton.setAttribute('title', 'Full Screen');\n } else {\n fullScreenButton.classList.remove('tgico-fullscreen');\n fullScreenButton.classList.add('tgico-smallscreen');\n fullScreenButton.setAttribute('title', 'Exit Full Screen');\n }\n }\n\n public removeListeners() {\n super.cleanup();\n this.listenerSetter.removeAll();\n this.progress.removeListeners();\n this.onPlaybackRackMenuToggle = undefined;\n }\n}\n","// * Jolly Cobra's schedulers\n\nimport { AnyToVoidFunction } from \"../../types\";\nimport { fastRaf } from \"../schedulers\";\nimport throttleWith from \"./throttleWith\";\n\nexport default function throttleWithRaf(fn: F) {\n return throttleWith(fastRaf, fn);\n}\n","// * Jolly Cobra's schedulers\n\nimport { AnyToVoidFunction } from \"../../types\";\n\nexport default function throttleWith(schedulerFn: AnyToVoidFunction, fn: F) {\n let waiting = false;\n let args: Parameters;\n\n return (..._args: Parameters) => {\n args = _args;\n\n if (!waiting) {\n waiting = true;\n\n schedulerFn(() => {\n waiting = false;\n // @ts-ignore\n fn(...args);\n });\n }\n };\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport { i18n, LangPackKey } from \"../lib/langPack\";\n\nexport default function formatBytes(bytes: number, decimals = 2) {\n if(bytes === 0) return i18n('FileSize.B', [0]);\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes: LangPackKey[] = ['FileSize.B', 'FileSize.KB', 'FileSize.MB', 'FileSize.GB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return i18n(sizes[i], [parseFloat((bytes / Math.pow(k, i)).toFixed(dm))]);\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport appDocsManager, {MyDocument} from \"../lib/appManagers/appDocsManager\";\nimport { wrapPhoto } from \"./wrappers\";\nimport ProgressivePreloader from \"./preloader\";\nimport { MediaProgressLine } from \"../lib/mediaPlayer\";\nimport appMediaPlaybackController, { MediaItem, MediaSearchContext } from \"./appMediaPlaybackController\";\nimport { DocumentAttribute, Message } from \"../layer\";\nimport mediaSizes from \"../helpers/mediaSizes\";\nimport { IS_SAFARI } from \"../environment/userAgent\";\nimport appMessagesManager from \"../lib/appManagers/appMessagesManager\";\nimport rootScope from \"../lib/rootScope\";\nimport './middleEllipsis';\nimport cancelEvent from \"../helpers/dom/cancelEvent\";\nimport { attachClickEvent } from \"../helpers/dom/clickEvent\";\nimport LazyLoadQueue from \"./lazyLoadQueue\";\nimport deferredPromise, { CancellablePromise } from \"../helpers/cancellablePromise\";\nimport ListenerSetter, { Listener } from \"../helpers/listenerSetter\";\nimport noop from \"../helpers/noop\";\nimport findUpClassName from \"../helpers/dom/findUpClassName\";\nimport { joinElementsWith } from \"../lib/langPack\";\nimport { MiddleEllipsisElement } from \"./middleEllipsis\";\nimport htmlToSpan from \"../helpers/dom/htmlToSpan\";\nimport { formatFullSentTime } from \"../helpers/date\";\nimport throttleWithRaf from \"../helpers/schedulers/throttleWithRaf\";\nimport { NULL_PEER_ID } from \"../lib/mtproto/mtproto_config\";\nimport formatBytes from \"../helpers/formatBytes\";\nimport { animateSingle } from \"../helpers/animation\";\nimport clamp from \"../helpers/number/clamp\";\nimport toHHMMSS from \"../helpers/string/toHHMMSS\";\n\nrootScope.addEventListener('messages_media_read', ({mids, peerId}) => {\n mids.forEach(mid => {\n const attr = `[data-mid=\"${mid}\"][data-peer-id=\"${peerId}\"]`;\n (Array.from(document.querySelectorAll(`audio-element.is-unread${attr}, .media-round.is-unread${attr}`)) as AudioElement[]).forEach(elem => {\n elem.classList.remove('is-unread');\n });\n });\n});\n\n// https://github.com/LonamiWebs/Telethon/blob/4393ec0b83d511b6a20d8a20334138730f084375/telethon/utils.py#L1285\nexport function decodeWaveform(waveform: Uint8Array | number[]) {\n if(!(waveform instanceof Uint8Array)) {\n waveform = new Uint8Array(waveform);\n }\n\n const bitCount = waveform.length * 8;\n const valueCount = bitCount / 5 | 0;\n if(!valueCount) {\n return new Uint8Array([]);\n }\n\n let result: Uint8Array;\n try {\n const dataView = new DataView(waveform.buffer);\n result = new Uint8Array(valueCount);\n for(let i = 0; i < valueCount; i++) {\n const byteIndex = i * 5 / 8 | 0;\n const bitShift = i * 5 % 8;\n const value = dataView.getUint16(byteIndex, true);\n result[i] = (value >> bitShift) & 0b00011111;\n }\n } catch(err) {\n result = new Uint8Array([]);\n }\n\n /* var byteIndex = (valueCount - 1) / 8 | 0;\n var bitShift = (valueCount - 1) % 8;\n if(byteIndex === waveform.length - 1) {\n var value = waveform[byteIndex];\n } else {\n var value = dataView.getUint16(byteIndex, true);\n }\n console.log('decoded waveform, setting last value:', value, byteIndex, bitShift);\n result[valueCount - 1] = (value >> bitShift) & 0b00011111; */\n return result;\n}\n\nfunction createWaveformBars(waveform: Uint8Array, duration: number) {\n const barWidth = 2;\n const barMargin = 2; //mediaSizes.isMobile ? 2 : 1;\n const barHeightMin = 4; //mediaSizes.isMobile ? 3 : 2;\n const barHeightMax = mediaSizes.isMobile ? 16 : 23;\n // const availW = 150; //mediaSizes.isMobile ? 152 : 190;\n\n const minW = mediaSizes.isMobile ? 152 : 190;\n const maxW = mediaSizes.isMobile ? 190 : 256;\n const availW = clamp(duration / 60 * maxW, minW, maxW); // mediaSizes.isMobile ? 152 : 224;\n\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.classList.add('audio-waveform-bars');\n svg.setAttributeNS(null, 'width', '' + availW);\n svg.setAttributeNS(null, 'height', '' + barHeightMax);\n svg.setAttributeNS(null, 'viewBox', `0 0 ${availW} ${barHeightMax}`);\n\n //console.log('decoded waveform:', waveform);\n\n const normValue = Math.max(...waveform);\n const wfSize = waveform.length ? waveform.length : 100;\n const barCount = Math.min((availW / (barWidth + barMargin)) | 0, wfSize);\n\n let maxValue = 0;\n const maxDelta = barHeightMax - barHeightMin;\n\n let html = '';\n for(let i = 0, barX = 0, sumI = 0; i < wfSize; ++i) {\n const value = waveform[i] || 0;\n if((sumI + barCount) >= wfSize) { // draw bar\n sumI = sumI + barCount - wfSize;\n\t\t\tif(sumI < (barCount + 1) / 2) {\n\t\t\t\tif(maxValue < value) maxValue = value;\n }\n \n const bar_value = Math.max(((maxValue * maxDelta) + ((normValue + 1) / 2)) / (normValue + 1), barHeightMin);\n \n const h = `\n \n `;\n html += h;\n\n barX += barWidth + barMargin;\n\n if(sumI < (barCount + 1) / 2) {\n maxValue = 0;\n } else {\n maxValue = value;\n }\n } else {\n if(maxValue < value) maxValue = value;\n\n sumI += barCount;\n }\n }\n\n const container = document.createElement('div');\n container.classList.add('audio-waveform');\n container.append(svg);\n\n svg.insertAdjacentHTML('beforeend', html);\n return {svg, container, availW};\n}\n\nfunction wrapVoiceMessage(audioEl: AudioElement) {\n audioEl.classList.add('is-voice');\n\n const message = audioEl.message;\n const doc = appMessagesManager.getMediaFromMessage(message) as MyDocument;\n\n if(message.pFlags.out) {\n audioEl.classList.add('is-out');\n }\n\n let waveform = (doc.attributes.find(attribute => attribute._ === 'documentAttributeAudio') as DocumentAttribute.documentAttributeAudio).waveform || new Uint8Array([]);\n waveform = decodeWaveform(waveform.slice(0, 63));\n \n const {svg, container: svgContainer, availW} = createWaveformBars(waveform, doc.duration);\n \n const fakeSvgContainer = svgContainer.cloneNode(true) as HTMLElement;\n fakeSvgContainer.classList.add('audio-waveform-fake');\n svgContainer.classList.add('audio-waveform-background');\n\n const waveformContainer = document.createElement('div');\n waveformContainer.classList.add('audio-waveform-container');\n waveformContainer.append(svgContainer, fakeSvgContainer);\n\n const timeDiv = document.createElement('div');\n timeDiv.classList.add('audio-time');\n audioEl.append(waveformContainer, timeDiv);\n\n let progress = svg as any as HTMLElement;\n \n const onLoad = () => {\n let audio = audioEl.audio;\n\n const setAnimation = () => {\n animateSingle(() => {\n if(!audio) return false;\n onTimeUpdate();\n return !audio.paused;\n }, audioEl);\n };\n\n const onTimeUpdate = () => {\n fakeSvgContainer.style.width = (audio.currentTime / audio.duration * 100) + '%';\n };\n\n if(!audio.paused || (audio.currentTime > 0 && audio.currentTime !== audio.duration)) {\n onTimeUpdate();\n }\n\n const throttledTimeUpdate = throttleWithRaf(onTimeUpdate);\n audioEl.addAudioListener('timeupdate', throttledTimeUpdate);\n audioEl.addAudioListener('ended', throttledTimeUpdate);\n audioEl.addAudioListener('play', setAnimation);\n\n audioEl.readyPromise.then(() => {\n let mousedown = false, mousemove = false;\n progress.addEventListener('mouseleave', (e) => {\n if(mousedown) {\n audio.play();\n mousedown = false;\n }\n mousemove = false;\n })\n progress.addEventListener('mousemove', (e) => {\n mousemove = true;\n if(mousedown) scrub(e);\n });\n progress.addEventListener('mousedown', (e) => {\n e.preventDefault();\n if(e.button !== 0) return;\n if(!audio.paused) {\n audio.pause();\n }\n \n scrub(e);\n mousedown = true;\n });\n progress.addEventListener('mouseup', (e) => {\n if(mousemove && mousedown) {\n audio.play();\n mousedown = false;\n }\n });\n attachClickEvent(progress, (e) => {\n cancelEvent(e);\n if(!audio.paused) scrub(e);\n });\n \n function scrub(e: MouseEvent | TouchEvent) {\n let offsetX: number;\n if(e instanceof MouseEvent) {\n offsetX = e.offsetX;\n } else { // touch\n const rect = (e.target as HTMLElement).getBoundingClientRect();\n offsetX = e.targetTouches[0].pageX - rect.left;\n }\n \n const scrubTime = offsetX / availW /* width */ * audio.duration;\n audio.currentTime = scrubTime;\n }\n }, noop);\n \n return () => {\n progress.remove();\n progress = null;\n audio = null;\n };\n };\n\n return onLoad;\n}\n\nfunction wrapAudio(audioEl: AudioElement) {\n const withTime = audioEl.withTime;\n\n const message = audioEl.message;\n const doc: MyDocument = appMessagesManager.getMediaFromMessage(message);\n\n const isVoice = doc.type === 'voice' || doc.type === 'round';\n const descriptionEl = document.createElement('div');\n descriptionEl.classList.add('audio-description');\n \n if(!isVoice) {\n const parts: (Node | string)[] = [];\n if(doc.audioPerformer) {\n parts.push(htmlToSpan(doc.audioPerformer));\n }\n\n if(withTime) {\n parts.push(formatFullSentTime(message.date));\n } else if(!parts.length) {\n parts.push(formatBytes(doc.size));\n }\n\n if(audioEl.showSender) {\n parts.push(appMessagesManager.wrapSenderToPeer(message));\n }\n\n descriptionEl.append(...joinElementsWith(parts, ' • '));\n }\n\n const html = `\n \n \n \n `;\n audioEl.insertAdjacentHTML('beforeend', html);\n\n const titleEl = audioEl.querySelector('.audio-title') as HTMLElement;\n\n const middleEllipsisEl = new MiddleEllipsisElement();\n middleEllipsisEl.dataset.fontWeight = audioEl.dataset.fontWeight;\n middleEllipsisEl.dataset.sizeType = audioEl.dataset.sizeType;\n if(isVoice) {\n middleEllipsisEl.append(appMessagesManager.wrapSenderToPeer(message));\n } else {\n middleEllipsisEl.innerHTML = doc.audioTitle || doc.fileName;\n }\n\n titleEl.append(middleEllipsisEl);\n\n if(audioEl.showSender) {\n titleEl.append(appMessagesManager.wrapSentTime(message));\n }\n \n const subtitleDiv = audioEl.querySelector('.audio-subtitle') as HTMLDivElement;\n subtitleDiv.append(descriptionEl);\n\n const onLoad = () => {\n let launched = false;\n\n let progressLine = new MediaProgressLine(audioEl.audio, doc.supportsStreaming);\n\n audioEl.addAudioListener('ended', () => {\n audioEl.classList.remove('audio-show-progress');\n // Reset subtitle\n subtitleDiv.lastChild.replaceWith(descriptionEl);\n launched = false;\n });\n\n const onPlay = () => {\n if(!launched) {\n audioEl.classList.add('audio-show-progress');\n launched = true;\n\n if(progressLine) {\n subtitleDiv.lastChild.replaceWith(progressLine.container);\n }\n }\n };\n\n audioEl.addAudioListener('play', onPlay);\n\n if(!audioEl.audio.paused || audioEl.audio.currentTime > 0) {\n onPlay();\n }\n\n return () => {\n progressLine.removeListeners();\n progressLine.container.remove();\n progressLine = null;\n };\n };\n\n return onLoad;\n}\n\nfunction constructDownloadPreloader(tryAgainOnFail = true) {\n const preloader = new ProgressivePreloader({cancelable: true, tryAgainOnFail});\n preloader.construct();\n\n if(!tryAgainOnFail) {\n preloader.circle.setAttributeNS(null, 'r', '23');\n preloader.totalLength = 143.58203125;\n }\n\n return preloader;\n}\n\nexport const findMediaTargets = (anchor: HTMLElement, anchorMid: number/* , useSearch: boolean */) => {\n let prev: MediaItem[], next: MediaItem[];\n // if(anchor.classList.contains('search-super-item') || !useSearch) {\n const isBubbles = !anchor.classList.contains('search-super-item');\n const container = findUpClassName(anchor, !isBubbles ? 'tabs-tab' : 'bubbles-inner');\n if(container) {\n const attr = `:not([data-is-outgoing=\"1\"])`;\n const justAudioSelector = `.audio:not(.is-voice)${attr}`;\n let selectors: string[];\n if(!anchor.matches(justAudioSelector)) {\n selectors = [`.audio.is-voice${attr}`, `.media-round${attr}`];\n } else {\n selectors = [justAudioSelector];\n }\n\n if(isBubbles) {\n const prefix = '.bubble:not(.webpage) ';\n selectors = selectors.map(s => prefix + s);\n }\n\n const selector = selectors.join(', ');\n\n const elements = Array.from(container.querySelectorAll(selector)) as HTMLElement[];\n const idx = elements.indexOf(anchor);\n\n const mediaItems: MediaItem[] = elements.map(element => ({peerId: element.dataset.peerId.toPeerId(), mid: +element.dataset.mid}));\n\n prev = mediaItems.slice(0, idx);\n next = mediaItems.slice(idx + 1);\n }\n // }\n\n if((next.length && next[0].mid < anchorMid) || (prev.length && prev[prev.length - 1].mid > anchorMid)) {\n [prev, next] = [next.reverse(), prev.reverse()];\n }\n\n // prev = next = undefined;\n\n return [prev, next];\n};\n\nexport default class AudioElement extends HTMLElement {\n public audio: HTMLAudioElement;\n public preloader: ProgressivePreloader;\n public message: Message.message;\n public withTime = false;\n public voiceAsMusic = false;\n public searchContext: MediaSearchContext;\n public showSender = false;\n public noAutoDownload: boolean;\n public lazyLoadQueue: LazyLoadQueue;\n public loadPromises: Promise[];\n\n private listenerSetter = new ListenerSetter();\n private onTypeDisconnect: () => void;\n public onLoad: (autoload?: boolean) => void;\n public readyPromise: CancellablePromise;\n\n public render() {\n this.classList.add('audio');\n\n this.dataset.mid = '' + this.message.mid;\n this.dataset.peerId = '' + this.message.peerId;\n\n const doc: MyDocument = appMessagesManager.getMediaFromMessage(this.message);\n const isRealVoice = doc.type === 'voice';\n const isVoice = !this.voiceAsMusic && isRealVoice;\n const isOutgoing = this.message.pFlags.is_outgoing;\n const uploading = isOutgoing && this.preloader;\n\n const durationStr = toHHMMSS(doc.duration | 0);\n\n this.innerHTML = `\n \n \n \n \n \n `;\n\n const toggle = this.firstElementChild as HTMLElement;\n\n const downloadDiv = document.createElement('div');\n downloadDiv.classList.add('audio-download');\n\n const isUnread = doc.type !== 'audio' && this.message && this.message.pFlags.media_unread;\n if(isUnread) {\n this.classList.add('is-unread');\n }\n\n if(uploading) {\n this.classList.add('is-outgoing');\n this.append(downloadDiv);\n }\n\n const onTypeLoad = isVoice ? wrapVoiceMessage(this) : wrapAudio(this);\n \n const audioTimeDiv = this.querySelector('.audio-time') as HTMLDivElement;\n audioTimeDiv.innerHTML = durationStr;\n\n const onLoad = this.onLoad = (autoload: boolean) => {\n this.onLoad = undefined;\n\n const audio = this.audio = appMediaPlaybackController.addMedia(this.message, autoload);\n\n const readyPromise = this.readyPromise = deferredPromise();\n if(this.audio.readyState >= this.audio.HAVE_CURRENT_DATA) readyPromise.resolve();\n else {\n this.addAudioListener('canplay', () => readyPromise.resolve(), {once: true});\n }\n\n this.onTypeDisconnect = onTypeLoad();\n \n const getTimeStr = () => toHHMMSS(audio.currentTime | 0) + (isVoice ? (' / ' + durationStr) : '');\n\n const onPlay = () => {\n audioTimeDiv.innerText = getTimeStr();\n toggle.classList.toggle('playing', !audio.paused);\n };\n\n if(!audio.paused || (audio.currentTime > 0 && audio.currentTime !== audio.duration)) {\n onPlay();\n }\n\n const togglePlay = (e?: Event, paused = audio.paused) => {\n e && cancelEvent(e);\n\n if(paused) {\n const hadSearchContext = !!this.searchContext;\n if(appMediaPlaybackController.setSearchContext(this.searchContext || {\n peerId: NULL_PEER_ID, \n inputFilter: {_: 'inputMessagesFilterEmpty'}, \n useSearch: false\n })) {\n const [prev, next] = !hadSearchContext ? [] : findMediaTargets(this, this.message.mid/* , this.searchContext.useSearch */);\n appMediaPlaybackController.setTargets({peerId: this.message.peerId, mid: this.message.mid}, prev, next);\n }\n\n audio.play().catch(() => {});\n } else {\n audio.pause();\n }\n };\n\n attachClickEvent(toggle, (e) => togglePlay(e), {listenerSetter: this.listenerSetter});\n\n this.addAudioListener('ended', () => {\n toggle.classList.remove('playing');\n audioTimeDiv.innerText = durationStr;\n });\n\n this.addAudioListener('timeupdate', () => {\n if((!audio.currentTime && audio.paused) || appMediaPlaybackController.isSafariBuffering(audio)) return;\n audioTimeDiv.innerText = getTimeStr();\n });\n\n this.addAudioListener('pause', () => {\n toggle.classList.remove('playing');\n });\n\n this.addAudioListener('play', onPlay);\n\n return togglePlay;\n };\n\n if(doc.thumbs?.length) {\n const imgs: HTMLImageElement[] = [];\n const wrapped = wrapPhoto({\n photo: doc, \n message: null, \n container: toggle, \n boxWidth: 48, \n boxHeight: 48,\n loadPromises: this.loadPromises,\n withoutPreloader: true,\n lazyLoadQueue: this.lazyLoadQueue\n });\n toggle.style.width = toggle.style.height = '';\n if(wrapped.images.thumb) imgs.push(wrapped.images.thumb);\n if(wrapped.images.full) imgs.push(wrapped.images.full);\n\n this.classList.add('audio-with-thumb');\n imgs.forEach(img => img.classList.add('audio-thumb'));\n }\n\n if(!isOutgoing) {\n let preloader: ProgressivePreloader = this.preloader;\n\n const autoDownload = doc.type !== 'audio'/* || !this.noAutoDownload */;\n onLoad(autoDownload);\n\n const r = (shouldPlay: boolean) => {\n if(this.audio.src) {\n return;\n }\n\n appMediaPlaybackController.resolveWaitingForLoadMedia(this.message.peerId, this.message.mid, this.message.pFlags.is_scheduled);\n\n const onDownloadInit = () => {\n if(shouldPlay) {\n appMediaPlaybackController.willBePlayed(this.audio); // prepare for loading audio\n \n if(IS_SAFARI && !this.audio.autoplay) {\n this.audio.autoplay = true;\n }\n }\n };\n\n onDownloadInit();\n\n if(!preloader) {\n if(doc.supportsStreaming) {\n this.classList.add('corner-download');\n\n let pauseListener: Listener;\n const onPlay = () => {\n const preloader = constructDownloadPreloader(false);\n const deferred = deferredPromise();\n deferred.notifyAll({done: 75, total: 100});\n deferred.catch(() => {\n this.audio.pause();\n appMediaPlaybackController.willBePlayed(undefined);\n });\n deferred.cancel = () => {\n deferred.cancel = noop;\n const err = new Error();\n (err as any).type = 'CANCELED';\n deferred.reject(err);\n };\n preloader.attach(downloadDiv, false, deferred);\n\n pauseListener = this.addAudioListener('pause', () => {\n deferred.cancel();\n }, {once: true}) as any;\n\n onDownloadInit();\n };\n\n /* if(!this.audio.paused) {\n onPlay();\n } */\n\n const playListener: any = this.addAudioListener('play', onPlay);\n this.readyPromise.then(() => {\n this.listenerSetter.remove(playListener);\n this.listenerSetter.remove(pauseListener);\n });\n } else {\n preloader = constructDownloadPreloader();\n\n if(!shouldPlay) {\n this.readyPromise = deferredPromise();\n }\n\n const load = () => {\n onDownloadInit();\n\n const download = appDocsManager.downloadDoc(doc);\n \n if(!shouldPlay) {\n download.then(() => {\n this.readyPromise.resolve();\n });\n }\n\n preloader.attach(downloadDiv, false, download);\n return {download};\n };\n\n preloader.setDownloadFunction(load);\n load();\n }\n }\n\n if(this.classList.contains('corner-download')) {\n toggle.append(downloadDiv);\n } else {\n this.append(downloadDiv);\n }\n\n this.classList.add('downloading');\n\n this.readyPromise.then(() => {\n this.classList.remove('downloading');\n downloadDiv.classList.add('downloaded');\n setTimeout(() => {\n downloadDiv.remove();\n }, 200);\n \n //setTimeout(() => {\n // release loaded audio\n if(appMediaPlaybackController.willBePlayedMedia === this.audio) {\n this.audio.play();\n appMediaPlaybackController.willBePlayed(undefined);\n }\n //}, 10e3);\n });\n };\n\n if(!this.audio?.src) {\n if(autoDownload) {\n r(false);\n } else {\n attachClickEvent(toggle, () => {\n r(true);\n }, {once: true, capture: true, passive: false, listenerSetter: this.listenerSetter});\n }\n }\n } else if(uploading) {\n this.dataset.isOutgoing = '1';\n this.preloader.attach(downloadDiv, false);\n //onLoad();\n }\n }\n\n get addAudioListener() {\n return this.listenerSetter.add(this.audio);\n }\n\n disconnectedCallback() {\n if(this.isConnected) {\n return;\n }\n \n if(this.onTypeDisconnect) {\n this.onTypeDisconnect();\n this.onTypeDisconnect = null;\n }\n\n if(this.readyPromise) {\n this.readyPromise.reject();\n }\n\n this.listenerSetter.removeAll();\n this.listenerSetter = null;\n\n this.preloader = null;\n }\n}\n\ncustomElements.define(\"audio-element\", AudioElement);\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nexport default class DivAndCaption {\r\n public container: HTMLElement;\r\n public border: HTMLElement;\r\n public content: HTMLElement;\r\n public title: HTMLElement;\r\n public subtitle: HTMLElement;\r\n\r\n constructor(protected className: string, public fill?: T) {\r\n this.container = document.createElement('div');\r\n this.container.className = className;\r\n\r\n this.border = document.createElement('div');\r\n this.border.classList.add(className + '-border');\r\n \r\n this.content = document.createElement('div');\r\n this.content.classList.add(className + '-content');\r\n\r\n this.title = document.createElement('div');\r\n this.title.classList.add(className + '-title');\r\n this.title.setAttribute('dir', 'auto');\r\n\r\n this.subtitle = document.createElement('div');\r\n this.subtitle.classList.add(className + '-subtitle');\r\n this.subtitle.setAttribute('dir', 'auto');\r\n\r\n this.content.append(this.title, this.subtitle);\r\n this.container.append(this.border, this.content);\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport replaceContent from \"../../helpers/dom/replaceContent\";\r\nimport limitSymbols from \"../../helpers/string/limitSymbols\";\r\nimport appImManager, { CHAT_ANIMATION_GROUP } from \"../../lib/appManagers/appImManager\";\r\nimport appMessagesManager from \"../../lib/appManagers/appMessagesManager\";\r\nimport appPhotosManager from \"../../lib/appManagers/appPhotosManager\";\r\nimport { RichTextProcessor } from \"../../lib/richtextprocessor\";\r\nimport DivAndCaption from \"../divAndCaption\";\r\nimport { wrapPhoto, wrapSticker } from \"../wrappers\";\r\n\r\nconst MEDIA_SIZE = 32;\r\n\r\nexport function wrapReplyDivAndCaption(options: {\r\n title: string | HTMLElement | DocumentFragment,\r\n titleEl: HTMLElement,\r\n subtitle: string | HTMLElement | DocumentFragment,\r\n subtitleEl: HTMLElement,\r\n message: any,\r\n mediaEl: HTMLElement,\r\n loadPromises?: Promise[]\r\n}) {\r\n let {title, titleEl, subtitle, subtitleEl, mediaEl, message, loadPromises} = options;\r\n if(title !== undefined) {\r\n if(typeof(title) === 'string') {\r\n title = limitSymbols(title, 140);\r\n title = RichTextProcessor.wrapEmojiText(title);\r\n }\r\n\r\n replaceContent(titleEl, title);\r\n }\r\n\r\n if(!loadPromises) {\r\n loadPromises = [];\r\n }\r\n\r\n let media = message && message.media;\r\n let setMedia = false, isRound = false;\r\n const mediaChildren = mediaEl ? Array.from(mediaEl.children).slice() : [];\r\n let middleware: () => boolean;\r\n if(media && mediaEl) {\r\n subtitleEl.textContent = '';\r\n subtitleEl.append(appMessagesManager.wrapMessageForReply(message, undefined, undefined, undefined, undefined, true));\r\n\r\n //console.log('wrap reply', media);\r\n\r\n if(media.webpage) {\r\n media = media.webpage;\r\n }\r\n \r\n if(media.photo || (media.document && media.document.thumbs?.length)/* ['video', 'sticker', 'gif', 'round', 'photo', 'audio'].indexOf(media.document.type) !== -1) */) {\r\n middleware = appImManager.chat.bubbles.getMiddleware();\r\n const lazyLoadQueue = appImManager.chat.bubbles.lazyLoadQueue;\r\n\r\n if(media.document?.type === 'sticker') {\r\n setMedia = true;\r\n wrapSticker({\r\n doc: media.document,\r\n div: mediaEl,\r\n lazyLoadQueue,\r\n group: CHAT_ANIMATION_GROUP,\r\n //onlyThumb: media.document.sticker === 2,\r\n width: MEDIA_SIZE,\r\n height: MEDIA_SIZE,\r\n middleware,\r\n loadPromises\r\n });\r\n } else {\r\n const photo = media.photo || media.document;\r\n\r\n isRound = photo.type === 'round';\r\n\r\n try {\r\n wrapPhoto({\r\n photo,\r\n container: mediaEl,\r\n boxWidth: MEDIA_SIZE,\r\n boxHeight: MEDIA_SIZE,\r\n size: appPhotosManager.choosePhotoSize(photo, MEDIA_SIZE, MEDIA_SIZE),\r\n middleware,\r\n lazyLoadQueue,\r\n noBlur: true,\r\n withoutPreloader: true,\r\n loadPromises\r\n });\r\n setMedia = true;\r\n } catch(err) {\r\n\r\n }\r\n }\r\n }\r\n } else {\r\n if(message) {\r\n subtitleEl.textContent = '';\r\n subtitleEl.append(appMessagesManager.wrapMessageForReply(message));\r\n } else {\r\n if(typeof(subtitle) === 'string') {\r\n subtitle = limitSymbols(subtitle, 140);\r\n subtitle = RichTextProcessor.wrapEmojiText(subtitle);\r\n }\r\n\r\n replaceContent(subtitleEl, subtitle || '');\r\n }\r\n }\r\n\r\n Promise.all(loadPromises).then(() => {\r\n if(middleware && !middleware()) return;\r\n mediaChildren.forEach(child => child.remove());\r\n\r\n if(mediaEl) {\r\n mediaEl.classList.toggle('is-round', isRound);\r\n }\r\n });\r\n\r\n return setMedia;\r\n}\r\n\r\nexport default class ReplyContainer extends DivAndCaption<(title: string | HTMLElement | DocumentFragment, subtitle: string | HTMLElement | DocumentFragment, message?: any) => void> {\r\n private mediaEl: HTMLElement;\r\n\r\n constructor(protected className: string) {\r\n super(className, (title, subtitle = '', message?) => {\r\n if(!this.mediaEl) {\r\n this.mediaEl = document.createElement('div');\r\n this.mediaEl.classList.add(this.className + '-media');\r\n }\r\n\r\n const isMediaSet = wrapReplyDivAndCaption({\r\n title,\r\n titleEl: this.title,\r\n subtitle,\r\n subtitleEl: this.subtitle,\r\n mediaEl: this.mediaEl,\r\n message\r\n });\r\n \r\n this.container.classList.toggle('is-media', isMediaSet);\r\n if(isMediaSet) {\r\n this.content.prepend(this.mediaEl);\r\n } else {\r\n this.mediaEl.remove();\r\n }\r\n });\r\n }\r\n}\r\n","export default function accumulate(arr: number[], initialValue: number) {\n return arr.reduce((acc, value) => acc + value, initialValue);\n}\n","/*\r\nThis file is part of Telegram Desktop,\r\nthe official desktop application for the Telegram messaging service.\r\nFor license and copyright information please follow this link:\r\nhttps://github.com/telegramdesktop/tdesktop/blob/master/LEGAL\r\n*/\r\n\r\nimport accumulate from \"../helpers/array/accumulate\";\r\nimport clamp from \"../helpers/number/clamp\";\r\n\r\ntype Size = {w: number, h: number};\r\nexport type GroupMediaLayout = {\r\n geometry: {\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number\r\n },\r\n sides: number\r\n};\r\ntype Attempt = {\r\n lineCounts: number[],\r\n heights: number[]\r\n};\r\nexport const RectPart = {\r\n None: 0,\r\n Top: 1,\r\n Right: 2,\r\n Bottom: 4,\r\n Left: 8\r\n};\r\n\r\n// https://github.com/telegramdesktop/tdesktop/blob/4669c07dc5335cbf4795bbbe5b0ab7c007b9aee2/Telegram/SourceFiles/ui/grouped_layout.cpp\r\nexport class Layouter {\r\n private count: number;\r\n private ratios: number[];\r\n private proportions: string;\r\n private averageRatio: number;\r\n private maxSizeRatio: number;\r\n\r\n constructor(private sizes: Size[], private maxWidth: number, private minWidth: number, private spacing: number, private maxHeight = maxWidth) {\r\n this.count = sizes.length;\r\n this.ratios = Layouter.countRatios(sizes);\r\n this.proportions = Layouter.countProportions(this.ratios);\r\n this.averageRatio = accumulate(this.ratios, 1) / this.count; // warn\r\n this.maxSizeRatio = maxWidth / this.maxHeight;\r\n }\r\n\r\n public layout(): GroupMediaLayout[] {\r\n if(!this.count) return [];\r\n //else if(this.count === 1) return this.layoutOne();\r\n\r\n if(this.count >= 5 || this.ratios.find(r => r > 2)) {\r\n return new ComplexLayouter(this.ratios, this.averageRatio, this.maxWidth, this.minWidth, this.spacing).layout();\r\n }\r\n\r\n if(this.count === 2) return this.layoutTwo();\r\n else if(this.count === 3) return this.layoutThree();\r\n return this.layoutFour();\r\n }\r\n\r\n private layoutTwo(): ReturnType {\r\n if((this.proportions === \"ww\")\r\n && (this.averageRatio > 1.4 * this.maxSizeRatio)\r\n && (this.ratios[1] - this.ratios[0] < 0.2)) {\r\n return this.layoutTwoTopBottom();\r\n } else if(this.proportions === \"ww\" || this.proportions === \"qq\") {\r\n return this.layoutTwoLeftRightEqual();\r\n }\r\n return this.layoutTwoLeftRight();\r\n }\r\n\r\n private layoutThree(): ReturnType {\r\n //console.log('layoutThree:', this);\r\n if(this.proportions[0] === 'n') {\r\n return this.layoutThreeLeftAndOther();\r\n }\r\n return this.layoutThreeTopAndOther();\r\n }\r\n\r\n private layoutFour(): ReturnType {\r\n if(this.proportions[0] === 'w') {\r\n return this.layoutFourTopAndOther();\r\n }\r\n return this.layoutFourLeftAndOther();\r\n }\r\n\r\n private layoutTwoTopBottom(): ReturnType {\r\n const width = this.maxWidth;\r\n const height = Math.round(Math.min(\r\n width / this.ratios[0],\r\n Math.min(\r\n width / this.ratios[1],\r\n (this.maxHeight - this.spacing) / 2)));\r\n \r\n return [\r\n {\r\n geometry: {x: 0, y: 0, width, height},\r\n sides: RectPart.Left | RectPart.Top | RectPart.Right\r\n },\r\n {\r\n geometry: {x: 0, y: height + this.spacing, width, height},\r\n sides: RectPart.Left | RectPart.Bottom | RectPart.Right\r\n },\r\n ];\r\n }\r\n\r\n private layoutTwoLeftRightEqual(): ReturnType {\r\n const width = (this.maxWidth - this.spacing) / 2;\r\n const height = Math.round(Math.min(\r\n width / this.ratios[0],\r\n Math.min(width / this.ratios[1], this.maxHeight * 1)));\r\n \r\n return [\r\n {\r\n geometry: {x: 0, y: 0, width, height},\r\n sides: RectPart.Top | RectPart.Left | RectPart.Bottom\r\n },\r\n {\r\n geometry: {x: width + this.spacing, y: 0, width, height},\r\n sides: RectPart.Top | RectPart.Right | RectPart.Bottom\r\n },\r\n ];\r\n }\r\n\r\n private layoutTwoLeftRight(): ReturnType {\r\n const minimalWidth = Math.round(this.minWidth * 1.5);\r\n const secondWidth = Math.min(\r\n Math.round(Math.max(\r\n 0.4 * (this.maxWidth - this.spacing),\r\n (this.maxWidth - this.spacing) / this.ratios[0]\r\n / (1 / this.ratios[0] + 1 / this.ratios[1]))),\r\n this.maxWidth - this.spacing - minimalWidth);\r\n const firstWidth = this.maxWidth\r\n - secondWidth\r\n - this.spacing;\r\n const height = Math.min(\r\n this.maxHeight,\r\n Math.round(Math.min(\r\n firstWidth / this.ratios[0],\r\n secondWidth / this.ratios[1])));\r\n \r\n return [\r\n {\r\n geometry: {x: 0, y: 0, width: firstWidth, height},\r\n sides: RectPart.Top | RectPart.Left | RectPart.Bottom\r\n },\r\n {\r\n geometry: {x: firstWidth + this.spacing, y: 0, width: secondWidth, height},\r\n sides: RectPart.Top | RectPart.Right | RectPart.Bottom\r\n },\r\n ];\r\n }\r\n\r\n private layoutThreeLeftAndOther(): ReturnType {\r\n const firstHeight = this.maxHeight;\r\n const thirdHeight = Math.round(Math.min(\r\n (this.maxHeight - this.spacing) / 2.,\r\n (this.ratios[1] * (this.maxWidth - this.spacing)\r\n / (this.ratios[2] + this.ratios[1]))));\r\n const secondHeight = firstHeight\r\n - thirdHeight\r\n - this.spacing;\r\n const rightWidth = Math.max(\r\n this.minWidth,\r\n Math.round(Math.min(\r\n (this.maxWidth - this.spacing) / 2.,\r\n Math.min(\r\n thirdHeight * this.ratios[2],\r\n secondHeight * this.ratios[1]))));\r\n const leftWidth = Math.min(\r\n Math.round(firstHeight * this.ratios[0]),\r\n this.maxWidth - this.spacing - rightWidth);\r\n\r\n return [\r\n {\r\n geometry: {x: 0, y: 0, width: leftWidth, height: firstHeight},\r\n sides: RectPart.Top | RectPart.Left | RectPart.Bottom\r\n },\r\n {\r\n geometry: {x: leftWidth + this.spacing, y: 0, width: rightWidth, height: secondHeight},\r\n sides: RectPart.Top | RectPart.Right\r\n },\r\n {\r\n geometry: {x: leftWidth + this.spacing, y: secondHeight + this.spacing, width: rightWidth, height: thirdHeight},\r\n sides: RectPart.Bottom | RectPart.Right\r\n },\r\n ];\r\n }\r\n \r\n private layoutThreeTopAndOther(): ReturnType {\r\n const firstWidth = this.maxWidth;\r\n const firstHeight = Math.round(Math.min(\r\n firstWidth / this.ratios[0],\r\n (this.maxHeight - this.spacing) * 0.66));\r\n const secondWidth = (this.maxWidth - this.spacing) / 2;\r\n const secondHeight = Math.min(\r\n this.maxHeight - firstHeight - this.spacing,\r\n Math.round(Math.min(\r\n secondWidth / this.ratios[1],\r\n secondWidth / this.ratios[2])));\r\n const thirdWidth = firstWidth - secondWidth - this.spacing;\r\n \r\n return [\r\n {\r\n geometry: {x: 0, y: 0, width: firstWidth, height: firstHeight},\r\n sides: RectPart.Left | RectPart.Top | RectPart.Right\r\n },\r\n {\r\n geometry: {x: 0, y: firstHeight + this.spacing, width: secondWidth, height: secondHeight},\r\n sides: RectPart.Bottom | RectPart.Left\r\n },\r\n {\r\n geometry: {x: secondWidth + this.spacing, y: firstHeight + this.spacing, width: thirdWidth, height: secondHeight},\r\n sides: RectPart.Bottom | RectPart.Right\r\n },\r\n ];\r\n }\r\n\r\n private layoutFourTopAndOther(): ReturnType {\r\n const w = this.maxWidth;\r\n const h0 = Math.round(Math.min(\r\n w / this.ratios[0],\r\n (this.maxHeight - this.spacing) * 0.66));\r\n const h = Math.round(\r\n (this.maxWidth - 2 * this.spacing)\r\n / (this.ratios[1] + this.ratios[2] + this.ratios[3]));\r\n const w0 = Math.max(\r\n this.minWidth,\r\n Math.round(Math.min(\r\n (this.maxWidth - 2 * this.spacing) * 0.4,\r\n h * this.ratios[1])));\r\n const w2 = Math.round(Math.max(\r\n Math.max(\r\n this.minWidth * 1.,\r\n (this.maxWidth - 2 * this.spacing) * 0.33),\r\n h * this.ratios[3]));\r\n const w1 = w - w0 - w2 - 2 * this.spacing;\r\n const h1 = Math.min(\r\n this.maxHeight - h0 - this.spacing,\r\n h);\r\n \r\n return [\r\n {\r\n geometry: {x: 0, y: 0, width: w, height: h0},\r\n sides: RectPart.Left | RectPart.Top | RectPart.Right\r\n },\r\n {\r\n geometry: {x: 0, y: h0 + this.spacing, width: w0, height: h1},\r\n sides: RectPart.Bottom | RectPart.Left\r\n },\r\n {\r\n geometry: {x: w0 + this.spacing, y: h0 + this.spacing, width: w1, height: h1},\r\n sides: RectPart.Bottom,\r\n },\r\n {\r\n geometry: {x: w0 + this.spacing + w1 + this.spacing, y: h0 + this.spacing, width: w2, height: h1},\r\n sides: RectPart.Right | RectPart.Bottom\r\n },\r\n ];\r\n }\r\n\r\n private layoutFourLeftAndOther(): ReturnType {\r\n const h = this.maxHeight;\r\n const w0 = Math.round(Math.min(\r\n h * this.ratios[0],\r\n (this.maxWidth - this.spacing) * 0.6));\r\n \r\n const w = Math.round(\r\n (this.maxHeight - 2 * this.spacing)\r\n / (1. / this.ratios[1] + 1. / this.ratios[2] + 1. / this.ratios[3])\r\n );\r\n const h0 = Math.round(w / this.ratios[1]);\r\n const h1 = Math.round(w / this.ratios[2]);\r\n const h2 = h - h0 - h1 - 2 * this.spacing;\r\n const w1 = Math.max(\r\n this.minWidth,\r\n Math.min(this.maxWidth - w0 - this.spacing, w));\r\n \r\n return [\r\n {\r\n geometry: {x: 0, y: 0, width: w0, height: h},\r\n sides: RectPart.Top | RectPart.Left | RectPart.Bottom\r\n },\r\n {\r\n geometry: {x: w0 + this.spacing, y: 0, width: w1, height: h0},\r\n sides: RectPart.Top | RectPart.Right\r\n },\r\n {\r\n geometry: {x: w0 + this.spacing, y: h0 + this.spacing, width: w1, height: h1},\r\n sides: RectPart.Right\r\n },\r\n {\r\n geometry: {x: w0 + this.spacing, y: h0 + h1 + 2 * this.spacing, width: w1, height: h2},\r\n sides: RectPart.Bottom | RectPart.Right\r\n },\r\n ];\r\n }\r\n\r\n private static countRatios(sizes: Size[]) {\r\n return sizes.map(size => size.w / size.h);\r\n }\r\n\r\n private static countProportions(ratios: number[]) {\r\n return ratios.map(ratio => (ratio > 1.2) ? 'w' : (ratio < 0.8) ? 'n' : 'q').join('');\r\n }\r\n}\r\n\r\nclass ComplexLayouter {\r\n private ratios: number[];\r\n private count: number;\r\n\r\n constructor(ratios: number[], private averageRatio: number, private maxWidth: number, private minWidth: number, private spacing: number, private maxHeight = maxWidth * 4 / 3) {\r\n this.ratios = ComplexLayouter.cropRatios(ratios, averageRatio);\r\n this.count = ratios.length;\r\n }\r\n\r\n private static cropRatios(ratios: number[], averageRatio: number) {\r\n const kMaxRatio = 2.75;\r\n const kMinRatio = 0.6667;\r\n return ratios.map(ratio => {\r\n return averageRatio > 1.1\r\n\t\t\t ? clamp(ratio, 1., kMaxRatio)\r\n\t\t\t : clamp(ratio, kMinRatio, 1.);\r\n });\r\n }\r\n\r\n public layout(): GroupMediaLayout[] {\r\n let result = new Array(this.count);\r\n\r\n let attempts: Attempt[] = [];\r\n const multiHeight = (offset: number, count: number) => {\r\n const ratios = this.ratios.slice(offset, offset + count); // warn\r\n const sum = accumulate(ratios, 0);\r\n return (this.maxWidth - (count - 1) * this.spacing) / sum;\r\n };\r\n const pushAttempt = (lineCounts: number[]) => {\r\n let heights: number[] = [];\r\n let offset = 0;\r\n for(let count of lineCounts) {\r\n heights.push(multiHeight(offset, count));\r\n offset += count;\r\n }\r\n attempts.push({lineCounts, heights}); // warn\r\n };\r\n\r\n for(let first = 1; first !== this.count; ++first) {\r\n const second = this.count - first;\r\n if(first > 3 || second > 3) {\r\n continue;\r\n }\r\n pushAttempt([first, second]);\r\n }\r\n for(let first = 1; first !== this.count - 1; ++first) {\r\n for(let second = 1; second !== this.count - first; ++second) {\r\n const third = this.count - first - second;\r\n if((first > 3)\r\n || (second > ((this.averageRatio < 0.85) ? 4 : 3))\r\n || (third > 3)) {\r\n continue;\r\n }\r\n pushAttempt([first, second, third]);\r\n }\r\n }\r\n for(let first = 1; first !== this.count - 1; ++first) {\r\n for(let second = 1; second !== this.count - first; ++second) {\r\n for(let third = 1; third !== this.count - first - second; ++third) {\r\n const fourth = this.count - first - second - third;\r\n if(first > 3 || second > 3 || third > 3 || fourth > 3) {\r\n continue;\r\n }\r\n pushAttempt([first, second, third, fourth]);\r\n }\r\n }\r\n }\r\n\r\n let optimalAttempt: Attempt = null;\r\n let optimalDiff = 0;\r\n for(const attempt of attempts) {\r\n const {heights, lineCounts: counts} = attempt;\r\n const lineCount = counts.length;\r\n const totalHeight = accumulate(heights, 0) \r\n + this.spacing * (lineCount - 1);\r\n const minLineHeight = Math.min(...heights);\r\n const maxLineHeight = Math.max(...heights);\r\n const bad1 = (minLineHeight < this.minWidth) ? 1.5 : 1;\r\n const bad2 = (() => {\r\n for(let line = 1; line !== lineCount; ++line) {\r\n if(counts[line - 1] > counts[line]) {\r\n return 1.5;\r\n }\r\n }\r\n return 1.;\r\n })();\r\n const diff = Math.abs(totalHeight - this.maxHeight) * bad1 * bad2;\r\n if(!optimalAttempt || diff < optimalDiff) {\r\n optimalAttempt = attempt;\r\n optimalDiff = diff;\r\n }\r\n }\r\n\r\n const optimalCounts = optimalAttempt.lineCounts;\r\n\t const optimalHeights = optimalAttempt.heights;\r\n const rowCount = optimalCounts.length;\r\n \r\n let index = 0;\r\n let y = 0;\r\n for(let row = 0; row !== rowCount; ++row) {\r\n const colCount = optimalCounts[row];\r\n const lineHeight = optimalHeights[row];\r\n const height = Math.round(lineHeight);\r\n\r\n let x = 0;\r\n for(let col = 0; col !== colCount; ++col) {\r\n const sides = RectPart.None\r\n | (row === 0 ? RectPart.Top : RectPart.None)\r\n | (row === rowCount - 1 ? RectPart.Bottom : RectPart.None)\r\n | (col === 0 ? RectPart.Left : RectPart.None)\r\n | (col === colCount - 1 ? RectPart.Right : RectPart.None);\r\n\r\n const ratio = this.ratios[index];\r\n const width = (col === colCount - 1)\r\n ? (this.maxWidth - x)\r\n : Math.round(ratio * lineHeight);\r\n result[index] = {\r\n geometry: {x, y, width, height},\r\n sides\r\n };\r\n\r\n x += width + this.spacing;\r\n ++index;\r\n }\r\n y += height + this.spacing;\r\n }\r\n\r\n return result;\r\n }\r\n}","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { InputFile } from \"../layer\";\r\nimport AvatarEdit from \"./avatarEdit\";\r\nimport AvatarElement from \"./avatar\";\r\nimport InputField from \"./inputField\";\r\nimport ListenerSetter from \"../helpers/listenerSetter\";\r\nimport ButtonCorner from \"./buttonCorner\";\r\nimport safeAssign from \"../helpers/object/safeAssign\";\r\n\r\nexport default class EditPeer {\r\n public nextBtn: HTMLButtonElement;\r\n\r\n public uploadAvatar: () => Promise;\r\n public avatarEdit: AvatarEdit;\r\n public avatarElem: AvatarElement;\r\n\r\n private inputFields: InputField[];\r\n private listenerSetter: ListenerSetter;\r\n\r\n private peerId: PeerId;\r\n\r\n private _disabled = false;\r\n private avatarSize = 120;\r\n\r\n constructor(options: {\r\n peerId?: EditPeer['peerId'],\r\n inputFields: EditPeer['inputFields'],\r\n listenerSetter: ListenerSetter,\r\n doNotEditAvatar?: boolean,\r\n withoutAvatar?: boolean,\r\n nextBtn?: HTMLButtonElement,\r\n avatarSize?: number\r\n }) {\r\n safeAssign(this, options);\r\n\r\n if(!this.nextBtn) {\r\n this.nextBtn = ButtonCorner({icon: 'check'});\r\n } else if(!this.nextBtn.classList.contains('btn-corner')) {\r\n this.handleChange = () => {\r\n this.nextBtn.toggleAttribute('disabled', !this.isChanged() || this.disabled);\r\n };\r\n }\r\n\r\n if(!options.withoutAvatar) {\r\n this.avatarElem = document.createElement('avatar-element') as AvatarElement;\r\n this.avatarElem.classList.add('avatar-placeholder', 'avatar-' + this.avatarSize);\r\n this.avatarElem.updateWithOptions({peerId: this.peerId});\r\n \r\n if(!options.doNotEditAvatar) {\r\n this.avatarEdit = new AvatarEdit((_upload) => {\r\n this.uploadAvatar = _upload;\r\n this.handleChange();\r\n this.avatarElem.remove();\r\n });\r\n \r\n this.avatarEdit.container.append(this.avatarElem);\r\n }\r\n }\r\n\r\n this.inputFields.forEach(inputField => {\r\n this.listenerSetter.add(inputField.input)('input', this.handleChange);\r\n });\r\n\r\n this.handleChange();\r\n }\r\n\r\n public get disabled() {\r\n return this._disabled;\r\n }\r\n\r\n public set disabled(value) {\r\n this._disabled = value;\r\n this.inputFields.forEach(inputField => inputField.input.toggleAttribute('disabled', value));\r\n this.handleChange();\r\n }\r\n\r\n public lockWithPromise(promise: Promise, unlockOnSuccess = false) {\r\n this.disabled = true;\r\n promise.then(() => {\r\n if(unlockOnSuccess) {\r\n this.disabled = false;\r\n }\r\n }, () => {\r\n this.disabled = false;\r\n });\r\n }\r\n\r\n public isChanged = () => {\r\n if(this.uploadAvatar) {\r\n return true;\r\n }\r\n\r\n let changedLength = 0, requiredLength = 0, requiredValidLength = 0;\r\n this.inputFields.forEach(inputField => {\r\n if(inputField.isValid()) {\r\n if(inputField.isChanged()) {\r\n ++changedLength;\r\n }\r\n\r\n if(inputField.required) {\r\n ++requiredValidLength;\r\n }\r\n }\r\n\r\n if(inputField.required) {\r\n ++requiredLength;\r\n }\r\n });\r\n\r\n return requiredLength === requiredValidLength && changedLength > 0;\r\n };\r\n\r\n public handleChange = () => {\r\n this.nextBtn.classList.toggle('is-visible', this.isChanged());\r\n };\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nexport default function RadioForm(radios: {container: HTMLElement, input: HTMLInputElement}[], onChange: (value: string, event: Event) => void) {\r\n const form = document.createElement('form');\r\n\r\n radios.forEach(r => {\r\n const {container, input} = r;\r\n form.append(container);\r\n input.addEventListener('change', (e) => {\r\n if(input.checked) {\r\n onChange(input.value, e);\r\n }\r\n });\r\n });\r\n\r\n return form;\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport CheckboxField from \"./checkboxField\";\r\nimport RadioField from \"./radioField\";\r\nimport ripple from \"./ripple\";\r\nimport { SliderSuperTab } from \"./slider\";\r\nimport RadioForm from \"./radioForm\";\r\nimport { i18n, LangPackKey } from \"../lib/langPack\";\r\nimport replaceContent from \"../helpers/dom/replaceContent\";\r\nimport setInnerHTML from \"../helpers/dom/setInnerHTML\";\r\n\r\nexport default class Row {\r\n public container: HTMLElement;\r\n public title: HTMLDivElement;\r\n public titleRight: HTMLElement;\r\n public subtitle: HTMLElement;\r\n public media: HTMLElement;\r\n\r\n public checkboxField: CheckboxField;\r\n public radioField: RadioField;\r\n\r\n public freezed = false;\r\n\r\n constructor(options: Partial<{\r\n icon: string,\r\n subtitle: string | HTMLElement | DocumentFragment,\r\n subtitleLangKey: LangPackKey,\r\n subtitleLangArgs: any[],\r\n radioField: Row['radioField'],\r\n checkboxField: Row['checkboxField'],\r\n noCheckboxSubtitle: boolean,\r\n title: string | HTMLElement,\r\n titleLangKey: LangPackKey,\r\n titleRight: string | HTMLElement,\r\n titleRightSecondary: string | HTMLElement,\r\n clickable: boolean | ((e: Event) => void),\r\n navigationTab: SliderSuperTab,\r\n havePadding: boolean,\r\n noRipple: boolean\r\n }> = {}) {\r\n this.container = document.createElement(options.radioField || options.checkboxField ? 'label' : 'div');\r\n this.container.classList.add('row');\r\n\r\n this.subtitle = document.createElement('div');\r\n this.subtitle.classList.add('row-subtitle');\r\n this.subtitle.setAttribute('dir', 'auto');\r\n if(options.subtitle) {\r\n if(typeof(options.subtitle) === 'string') {\r\n setInnerHTML(this.subtitle, options.subtitle);\r\n } else {\r\n this.subtitle.append(options.subtitle);\r\n }\r\n } else if(options.subtitleLangKey) {\r\n this.subtitle.append(i18n(options.subtitleLangKey, options.subtitleLangArgs));\r\n }\r\n this.container.append(this.subtitle);\r\n\r\n let havePadding = !!options.havePadding;\r\n if(options.radioField || options.checkboxField) {\r\n if(options.radioField) {\r\n this.radioField = options.radioField;\r\n this.container.append(this.radioField.label);\r\n havePadding = true;\r\n }\r\n\r\n if(options.checkboxField) {\r\n this.checkboxField = options.checkboxField;\r\n \r\n const isToggle = options.checkboxField.label.classList.contains('checkbox-field-toggle');\r\n if(isToggle) {\r\n this.container.classList.add('row-with-toggle');\r\n options.titleRight = this.checkboxField.label;\r\n } else {\r\n havePadding = true;\r\n this.container.append(this.checkboxField.label);\r\n }\r\n\r\n if(!options.noCheckboxSubtitle && !isToggle) {\r\n this.checkboxField.input.addEventListener('change', () => {\r\n replaceContent(this.subtitle, i18n(this.checkboxField.input.checked ? 'Checkbox.Enabled' : 'Checkbox.Disabled'));\r\n });\r\n }\r\n }\r\n\r\n const i = options.radioField || options.checkboxField;\r\n i.label.classList.add('disable-hover');\r\n } \r\n \r\n if(options.title || options.titleLangKey) {\r\n let c: HTMLElement;\r\n const titleRight = options.titleRight || options.titleRightSecondary;\r\n if(titleRight) {\r\n c = document.createElement('div');\r\n c.classList.add('row-title-row');\r\n this.container.append(c);\r\n } else {\r\n c = this.container;\r\n }\r\n\r\n this.title = document.createElement('div');\r\n this.title.classList.add('row-title');\r\n this.title.setAttribute('dir', 'auto');\r\n if(options.title) {\r\n if(typeof(options.title) === 'string') {\r\n this.title.innerHTML = options.title;\r\n } else {\r\n this.title.append(options.title);\r\n }\r\n } else {\r\n this.title.append(i18n(options.titleLangKey));\r\n }\r\n c.append(this.title);\r\n\r\n if(titleRight) {\r\n const titleRightEl = this.titleRight = document.createElement('div');\r\n titleRightEl.classList.add('row-title', 'row-title-right');\r\n\r\n if(options.titleRightSecondary) {\r\n titleRightEl.classList.add('row-title-right-secondary');\r\n }\r\n\r\n if(typeof(titleRight) === 'string') {\r\n titleRightEl.innerHTML = titleRight;\r\n } else {\r\n titleRightEl.append(titleRight);\r\n }\r\n\r\n c.append(titleRightEl);\r\n }\r\n }\r\n\r\n if(options.icon) {\r\n havePadding = true;\r\n this.title.classList.add('tgico', 'tgico-' + options.icon);\r\n this.container.classList.add('row-with-icon');\r\n }\r\n\r\n if(havePadding) {\r\n this.container.classList.add('row-with-padding');\r\n }\r\n\r\n if(options.navigationTab) {\r\n options.clickable = () => options.navigationTab.open();\r\n }\r\n\r\n if(options.clickable || options.radioField || options.checkboxField) {\r\n if(typeof(options.clickable) === 'function') {\r\n this.container.addEventListener('click', (e) => {\r\n if(this.freezed) return;\r\n (options.clickable as any)(e);\r\n });\r\n }\r\n\r\n this.container.classList.add('row-clickable', 'hover-effect');\r\n\r\n if(!options.noRipple) {\r\n ripple(this.container, undefined, undefined, true);\r\n }\r\n\r\n /* if(options.radioField || options.checkboxField) {\r\n this.container.prepend(this.container.lastElementChild);\r\n } */\r\n }\r\n }\r\n\r\n public createMedia(size?: 'small') {\r\n this.container.classList.add('row-with-padding');\r\n \r\n const media = this.media = document.createElement('div');\r\n media.classList.add('row-media');\r\n\r\n if(size) {\r\n media.classList.add('row-media-' + size);\r\n }\r\n\r\n this.container.append(media);\r\n\r\n return media;\r\n }\r\n}\r\n\r\nexport const RadioFormFromRows = (rows: Row[], onChange: (value: string) => void) => {\r\n return RadioForm(rows.map(r => ({container: r.container, input: r.radioField.input})), onChange);\r\n};\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\n// https://stackoverflow.com/a/30810322\r\nfunction fallbackCopyTextToClipboard(text: string) {\r\n var textArea = document.createElement(\"textarea\");\r\n textArea.value = text;\r\n \r\n // Avoid scrolling to bottom\r\n textArea.style.top = \"0\";\r\n textArea.style.left = \"0\";\r\n textArea.style.position = \"fixed\";\r\n\r\n document.body.appendChild(textArea);\r\n textArea.focus();\r\n textArea.select();\r\n\r\n try {\r\n document.execCommand('copy');\r\n //const successful = document.execCommand('copy');\r\n //const msg = successful ? 'successful' : 'unsuccessful';\r\n //console.log('Fallback: Copying text command was ' + msg);\r\n } catch(err) {\r\n //console.error('Fallback: Oops, unable to copy', err);\r\n }\r\n\r\n document.body.removeChild(textArea);\r\n}\r\n\r\nexport function copyTextToClipboard(text: string) {\r\n if(!navigator.clipboard) {\r\n fallbackCopyTextToClipboard(text);\r\n return;\r\n }\r\n \r\n navigator.clipboard.writeText(text);/* .then(function() {\r\n console.log('Async: Copying to clipboard was successful!');\r\n }, function(err) {\r\n console.error('Async: Could not copy text: ', err);\r\n }); */\r\n}","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport getDeepProperty from \"../helpers/object/getDeepProperty\";\r\nimport appStateManager from \"../lib/appManagers/appStateManager\";\r\nimport { LangPackKey, _i18n } from \"../lib/langPack\";\r\n\r\nexport default class RadioField {\r\n public input: HTMLInputElement;\r\n public label: HTMLLabelElement;\r\n public main: HTMLElement;\r\n\r\n constructor(options: {\r\n text?: string, \r\n langKey?: LangPackKey,\r\n name: string, \r\n value?: string, \r\n stateKey?: string,\r\n alignRight?: boolean\r\n }) {\r\n const label = this.label = document.createElement('label');\r\n label.classList.add('radio-field');\r\n\r\n if(options.alignRight) {\r\n label.classList.add('radio-field-right');\r\n }\r\n \r\n const input = this.input = document.createElement('input');\r\n input.type = 'radio';\r\n /* input.id = */input.name = 'input-radio-' + options.name;\r\n \r\n if(options.value) {\r\n input.value = options.value;\r\n \r\n if(options.stateKey) {\r\n appStateManager.getState().then(state => {\r\n input.checked = getDeepProperty(state, options.stateKey) === options.value;\r\n });\r\n \r\n input.addEventListener('change', () => {\r\n appStateManager.setByKey(options.stateKey, options.value);\r\n });\r\n }\r\n }\r\n \r\n const main = this.main = document.createElement('div');\r\n main.classList.add('radio-field-main');\r\n \r\n if(options.text) {\r\n main.innerHTML = options.text;\r\n /* const caption = document.createElement('div');\r\n caption.classList.add('radio-field-main-caption');\r\n caption.innerHTML = text;\r\n \r\n if(subtitle) {\r\n label.classList.add('radio-field-with-subtitle');\r\n caption.insertAdjacentHTML('beforeend', `${subtitle}`);\r\n }\r\n \r\n main.append(caption); */\r\n } else if(options.langKey) {\r\n _i18n(main, options.langKey);\r\n }\r\n \r\n label.append(input, main);\r\n }\r\n\r\n get checked() {\r\n return this.input.checked;\r\n }\r\n\r\n set checked(checked: boolean) {\r\n this.setValueSilently(checked);\r\n\r\n const event = new Event('change', {bubbles: true, cancelable: true});\r\n this.input.dispatchEvent(event);\r\n }\r\n\r\n public setValueSilently(checked: boolean) {\r\n this.input.checked = checked;\r\n }\r\n};\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport replaceContent from \"../helpers/dom/replaceContent\";\r\nimport { FormatterArguments, i18n, LangPackKey } from \"../lib/langPack\";\r\n\r\nconst toastEl = document.createElement('div');\r\ntoastEl.classList.add('toast');\r\nexport function toast(content: string | Node) {\r\n replaceContent(toastEl, content);\r\n document.body.append(toastEl);\r\n\r\n if(toastEl.dataset.timeout) clearTimeout(+toastEl.dataset.timeout);\r\n toastEl.dataset.timeout = '' + setTimeout(() => {\r\n toastEl.remove();\r\n delete toastEl.dataset.timeout;\r\n }, 3000);\r\n}\r\n\r\nexport function toastNew(options: Partial<{\r\n langPackKey: LangPackKey,\r\n langPackArguments: FormatterArguments\r\n}>) {\r\n toast(i18n(options.langPackKey, options.langPackArguments));\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport ListenerSetter from \"../helpers/listenerSetter\";\r\nimport debounce from \"../helpers/schedulers/debounce\";\r\nimport appChatsManager from \"../lib/appManagers/appChatsManager\";\r\nimport { LangPackKey } from \"../lib/langPack\";\r\nimport apiManager from \"../lib/mtproto/mtprotoworker\";\r\nimport RichTextProcessor from \"../lib/richtextprocessor\";\r\nimport InputField, { InputFieldOptions, InputState } from \"./inputField\";\r\n\r\nexport class UsernameInputField extends InputField {\r\n private checkUsernamePromise: Promise;\r\n private checkUsernameDebounced: (username: string) => void;\r\n public options: InputFieldOptions & {\r\n peerId?: PeerId,\r\n listenerSetter: ListenerSetter,\r\n onChange?: () => void,\r\n invalidText: LangPackKey,\r\n takenText: LangPackKey,\r\n availableText: LangPackKey,\r\n head?: string\r\n };\r\n\r\n constructor(options: UsernameInputField['options']) {\r\n super(options);\r\n\r\n this.checkUsernameDebounced = debounce(this.checkUsername.bind(this), 150, false, true);\r\n\r\n options.listenerSetter.add(this.input)('input', () => {\r\n const value = this.getValue();\r\n\r\n //console.log('userNameInput:', value);\r\n if(value === this.originalValue || !value.length) {\r\n this.setState(InputState.Neutral, this.options.label);\r\n this.options.onChange && this.options.onChange();\r\n return;\r\n } else if(!RichTextProcessor.isUsernameValid(value)) { // does not check the last underscore\r\n this.setError(this.options.invalidText);\r\n } else {\r\n this.setState(InputState.Neutral);\r\n }\r\n\r\n if(this.input.classList.contains('error')) {\r\n this.options.onChange && this.options.onChange();\r\n return;\r\n }\r\n\r\n this.checkUsernameDebounced(value);\r\n });\r\n }\r\n\r\n public getValue() {\r\n let value = this.value;\r\n if(this.options.head) {\r\n value = value.slice(this.options.head.length);\r\n this.setValueSilently(this.options.head + value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private checkUsername(username: string) {\r\n if(this.checkUsernamePromise) return;\r\n\r\n if(this.options.peerId) {\r\n this.checkUsernamePromise = apiManager.invokeApi('channels.checkUsername', {\r\n channel: appChatsManager.getChannelInput(this.options.peerId.toChatId()),\r\n username\r\n });\r\n } else {\r\n this.checkUsernamePromise = apiManager.invokeApi('account.checkUsername', {username});\r\n }\r\n\r\n this.checkUsernamePromise.then(available => {\r\n if(this.getValue() !== username) return;\r\n\r\n if(available) {\r\n this.setState(InputState.Valid, this.options.availableText);\r\n } else {\r\n this.setError(this.options.takenText);\r\n }\r\n }, (err) => {\r\n if(this.getValue() !== username) return;\r\n\r\n switch(err.type) {\r\n case 'USERNAME_INVALID': {\r\n this.setError(this.options.invalidText);\r\n break;\r\n }\r\n }\r\n }).then(() => {\r\n this.checkUsernamePromise = undefined;\r\n this.options.onChange && this.options.onChange();\r\n\r\n const value = this.getValue();\r\n if(value !== username && this.isValidToChange() && RichTextProcessor.isUsernameValid(value)) {\r\n this.checkUsername(value);\r\n }\r\n });\r\n };\r\n}\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport AvatarElement from \"../avatar\";\nimport PopupElement, { addCancelButton, PopupButton, PopupOptions } from \".\";\nimport { i18n, LangPackKey } from \"../../lib/langPack\";\nimport CheckboxField, { CheckboxFieldOptions } from \"../checkboxField\";\n\nexport type PopupPeerButton = Omit & Partial<{callback: PopupPeerButtonCallback}>;\nexport type PopupPeerButtonCallbackCheckboxes = Set;\nexport type PopupPeerButtonCallback = (checkboxes?: PopupPeerButtonCallbackCheckboxes) => void;\nexport type PopupPeerCheckboxOptions = CheckboxFieldOptions & {checkboxField?: CheckboxField};\n\nexport type PopupPeerOptions = PopupOptions & Partial<{\n peerId: PeerId,\n title: string | HTMLElement,\n titleLangKey?: LangPackKey,\n titleLangArgs?: any[],\n noTitle?: boolean,\n description: string,\n descriptionLangKey?: LangPackKey,\n descriptionLangArgs?: any[],\n buttons?: Array,\n checkboxes: Array\n}>;\nexport default class PopupPeer extends PopupElement {\n protected description: HTMLParagraphElement;\n\n constructor(private className: string, options: PopupPeerOptions = {}) {\n super('popup-peer' + (className ? ' ' + className : ''), options.buttons && addCancelButton(options.buttons), {overlayClosable: true, ...options});\n\n if(options.peerId) {\n const avatarEl = new AvatarElement();\n avatarEl.classList.add('avatar-32');\n avatarEl.updateWithOptions({\n isDialog: true,\n peerId: options.peerId\n });\n this.header.prepend(avatarEl);\n }\n\n if(!options.noTitle) {\n if(options.titleLangKey || !options.title) this.title.append(i18n(options.titleLangKey || 'AppName', options.titleLangArgs));\n else if(options.title instanceof HTMLElement) {\n this.title.append(options.title);\n } else this.title.innerText = options.title || '';\n }\n\n const fragment = document.createDocumentFragment();\n\n if(options.descriptionLangKey || options.description) {\n const p = this.description = document.createElement('p');\n p.classList.add('popup-description');\n if(options.descriptionLangKey) p.append(i18n(options.descriptionLangKey, options.descriptionLangArgs));\n else if(options.description) p.innerHTML = options.description;\n \n fragment.append(p);\n }\n\n if(options.checkboxes) {\n this.container.classList.add('have-checkbox');\n \n options.checkboxes.forEach(o => {\n o.withRipple = false;\n const checkboxField = new CheckboxField(o);\n o.checkboxField = checkboxField;\n fragment.append(checkboxField.label);\n });\n\n options.buttons.forEach(button => {\n if(button.callback) {\n const original = button.callback;\n button.callback = () => {\n const c: Set = new Set();\n options.checkboxes.forEach(o => {\n if(o.checkboxField.checked) {\n c.add(o.text);\n }\n });\n original(c);\n };\n }\n });\n }\n\n this.container.insertBefore(fragment, this.header.nextElementSibling);\n }\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { copyTextToClipboard } from \"../../../helpers/clipboard\";\r\nimport { randomLong } from \"../../../helpers/random\";\r\nimport { Chat, ChatFull, ExportedChatInvite } from \"../../../layer\";\r\nimport appChatsManager from \"../../../lib/appManagers/appChatsManager\";\r\nimport appProfileManager from \"../../../lib/appManagers/appProfileManager\";\r\nimport Button from \"../../button\";\r\nimport { setButtonLoader } from \"../../misc\";\r\nimport RadioField from \"../../radioField\";\r\nimport Row, { RadioFormFromRows } from \"../../row\";\r\nimport { SettingSection } from \"../../sidebarLeft\";\r\nimport { toast } from \"../../toast\";\r\nimport { UsernameInputField } from \"../../usernameInputField\";\r\nimport { SliderSuperTabEventable } from \"../../sliderTab\";\r\nimport I18n from \"../../../lib/langPack\";\r\nimport PopupPeer from \"../../popups/peer\";\r\nimport ButtonCorner from \"../../buttonCorner\";\r\nimport { attachClickEvent } from \"../../../helpers/dom/clickEvent\";\r\nimport toggleDisability from \"../../../helpers/dom/toggleDisability\";\r\nimport CheckboxField from \"../../checkboxField\";\r\nimport rootScope from \"../../../lib/rootScope\";\r\n\r\nexport default class AppChatTypeTab extends SliderSuperTabEventable {\r\n public chatId: ChatId;\r\n public chatFull: ChatFull;\r\n\r\n protected init() {\r\n this.container.classList.add('edit-peer-container', 'group-type-container');\r\n\r\n const isBroadcast = appChatsManager.isBroadcast(this.chatId);\r\n\r\n this.setTitle(isBroadcast ? 'ChannelType' : 'GroupType');\r\n\r\n const section = new SettingSection({\r\n name: isBroadcast ? 'ChannelType' : 'GroupType'\r\n });\r\n\r\n const random = randomLong();\r\n const privateRow = new Row({\r\n radioField: new RadioField({\r\n langKey: isBroadcast ? 'ChannelPrivate' : 'MegaPrivate', \r\n name: random, \r\n value: 'private'\r\n }),\r\n subtitleLangKey: isBroadcast ? 'ChannelPrivateInfo' : 'MegaPrivateInfo'\r\n });\r\n const publicRow = new Row({\r\n radioField: new RadioField({\r\n langKey: isBroadcast ? 'ChannelPublic' : 'MegaPublic', \r\n name: random, \r\n value: 'public'\r\n }),\r\n subtitleLangKey: isBroadcast ? 'ChannelPublicInfo' : 'MegaPublicInfo'\r\n });\r\n const form = RadioFormFromRows([privateRow, publicRow], (value) => {\r\n const a = [privateSection, publicSection];\r\n if(value === 'public') a.reverse();\r\n\r\n a[0].container.classList.remove('hide');\r\n a[1].container.classList.add('hide');\r\n\r\n onChange();\r\n });\r\n\r\n const chat: Chat = appChatsManager.getChat(this.chatId);\r\n\r\n section.content.append(form);\r\n\r\n const privateSection = new SettingSection({});\r\n\r\n //let revoked = false;\r\n const linkRow = new Row({\r\n title: (this.chatFull.exported_invite as ExportedChatInvite.chatInviteExported).link,\r\n subtitleLangKey: isBroadcast ? 'ChannelPrivateLinkHelp' : 'MegaPrivateLinkHelp',\r\n clickable: () => {\r\n copyTextToClipboard((this.chatFull.exported_invite as ExportedChatInvite.chatInviteExported).link);\r\n toast(I18n.format('LinkCopied', true));\r\n }\r\n });\r\n\r\n const btnRevoke = Button('btn-primary btn-transparent danger', {icon: 'delete', text: 'RevokeLink'});\r\n\r\n attachClickEvent(btnRevoke, () => {\r\n new PopupPeer('revoke-link', {\r\n buttons: [{\r\n langKey: 'RevokeButton',\r\n callback: () => {\r\n const toggle = toggleDisability([btnRevoke], true);\r\n \r\n appProfileManager.getChatInviteLink(this.chatId, true).then(link => {\r\n toggle();\r\n linkRow.title.innerHTML = link;\r\n //revoked = true;\r\n //onChange();\r\n });\r\n }\r\n }],\r\n titleLangKey: 'RevokeLink',\r\n descriptionLangKey: 'RevokeAlert'\r\n }).show();\r\n }, {listenerSetter: this.listenerSetter});\r\n\r\n privateSection.content.append(linkRow.container, btnRevoke);\r\n\r\n const publicSection = new SettingSection({\r\n caption: isBroadcast ? 'Channel.UsernameAboutChannel' : 'Channel.UsernameAboutGroup',\r\n noDelimiter: true\r\n });\r\n\r\n const inputWrapper = document.createElement('div');\r\n inputWrapper.classList.add('input-wrapper');\r\n\r\n const placeholder = 't.me/';\r\n\r\n const onChange = () => {\r\n const changed = (privateRow.radioField.checked && (originalValue !== placeholder/* || revoked */)) \r\n || (linkInputField.isValidToChange() && linkInputField.input.classList.contains('valid'));\r\n applyBtn.classList.toggle('is-visible', changed);\r\n };\r\n\r\n const linkInputField = new UsernameInputField({\r\n label: 'SetUrlPlaceholder',\r\n name: 'group-public-link',\r\n plainText: true,\r\n listenerSetter: this.listenerSetter,\r\n availableText: 'Link.Available',\r\n invalidText: 'Link.Invalid',\r\n takenText: 'Link.Taken',\r\n onChange: onChange,\r\n peerId: this.chatId.toPeerId(true),\r\n head: placeholder\r\n });\r\n\r\n const originalValue = placeholder + ((chat as Chat.channel).username || '');\r\n\r\n inputWrapper.append(linkInputField.container)\r\n publicSection.content.append(inputWrapper);\r\n\r\n const applyBtn = ButtonCorner({icon: 'check', className: 'is-visible'});\r\n this.content.append(applyBtn);\r\n\r\n attachClickEvent(applyBtn, () => {\r\n /* const unsetLoader = */setButtonLoader(applyBtn);\r\n const username = publicRow.radioField.checked ? linkInputField.getValue() : '';\r\n appChatsManager.migrateChat(this.chatId).then(channelId => {\r\n return appChatsManager.updateUsername(channelId, username);\r\n }).then(() => {\r\n //unsetLoader();\r\n this.close();\r\n });\r\n }, {listenerSetter: this.listenerSetter});\r\n\r\n (originalValue !== placeholder ? publicRow : privateRow).radioField.checked = true;\r\n linkInputField.setOriginalValue(originalValue);\r\n\r\n this.scrollable.append(section.container, privateSection.container, publicSection.container);\r\n\r\n {\r\n const section = new SettingSection({\r\n name: 'SavingContentTitle',\r\n caption: isBroadcast ? 'RestrictSavingContentInfoChannel' : 'RestrictSavingContentInfoGroup'\r\n });\r\n\r\n const checkboxField = new CheckboxField({\r\n text: 'RestrictSavingContent',\r\n withRipple: true\r\n });\r\n\r\n this.listenerSetter.add(checkboxField.input)('change', () => {\r\n const toggle = checkboxField.toggleDisability(true);\r\n appChatsManager.toggleNoForwards(this.chatId, checkboxField.checked).then(() => {\r\n toggle();\r\n });\r\n });\r\n\r\n const onChatUpdate = () => {\r\n checkboxField.setValueSilently(!!(chat as Chat.channel).pFlags.noforwards);\r\n };\r\n\r\n this.listenerSetter.add(rootScope)('chat_update', (chatId) => {\r\n if(this.chatId === chatId) {\r\n onChatUpdate();\r\n }\r\n });\r\n\r\n onChatUpdate();\r\n\r\n section.content.append(checkboxField.label);\r\n\r\n this.scrollable.append(section.container);\r\n }\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport Scrollable from \"../components/scrollable\";\r\nimport safeAssign from \"./object/safeAssign\";\r\n\r\nexport default class ScrollableLoader {\r\n public loading = false;\r\n private scrollable: Scrollable;\r\n private getPromise: () => Promise;\r\n private promise: Promise;\r\n private loaded = false;\r\n\r\n constructor(options: {\r\n scrollable: ScrollableLoader['scrollable'],\r\n getPromise: ScrollableLoader['getPromise']\r\n }) {\r\n safeAssign(this, options);\r\n\r\n options.scrollable.onScrolledBottom = () => {\r\n this.load();\r\n };\r\n }\r\n \r\n public load() {\r\n if(this.loaded) {\r\n return Promise.resolve();\r\n }\r\n \r\n if(this.loading) {\r\n return this.promise;\r\n }\r\n\r\n this.loading = true;\r\n this.promise = this.getPromise().then(done => {\r\n this.loading = false;\r\n this.promise = undefined;\r\n\r\n if(done) {\r\n this.loaded = true;\r\n this.scrollable.onScrolledBottom = null;\r\n } else {\r\n this.scrollable.checkForTriggers();\r\n }\r\n }, () => {\r\n this.promise = undefined;\r\n this.loading = false;\r\n });\r\n }\r\n}\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport appChatsManager, { ChatRights } from \"../lib/appManagers/appChatsManager\";\nimport appDialogsManager from \"../lib/appManagers/appDialogsManager\";\nimport appMessagesManager, { Dialog } from \"../lib/appManagers/appMessagesManager\";\nimport appUsersManager from \"../lib/appManagers/appUsersManager\";\nimport rootScope from \"../lib/rootScope\";\nimport Scrollable from \"./scrollable\";\nimport { FocusDirection } from \"../helpers/fastSmoothScroll\";\nimport CheckboxField from \"./checkboxField\";\nimport appProfileManager from \"../lib/appManagers/appProfileManager\";\nimport { i18n, LangPackKey, _i18n } from \"../lib/langPack\";\nimport findUpAttribute from \"../helpers/dom/findUpAttribute\";\nimport findUpClassName from \"../helpers/dom/findUpClassName\";\nimport PeerTitle from \"./peerTitle\";\nimport cancelEvent from \"../helpers/dom/cancelEvent\";\nimport replaceContent from \"../helpers/dom/replaceContent\";\nimport debounce from \"../helpers/schedulers/debounce\";\nimport windowSize from \"../helpers/windowSize\";\nimport appPeersManager, { IsPeerType } from \"../lib/appManagers/appPeersManager\";\nimport { generateDelimiter, SettingSection } from \"./sidebarLeft\";\nimport { attachClickEvent } from \"../helpers/dom/clickEvent\";\nimport filterUnique from \"../helpers/array/filterUnique\";\nimport indexOfAndSplice from \"../helpers/array/indexOfAndSplice\";\nimport safeAssign from \"../helpers/object/safeAssign\";\nimport findAndSplice from \"../helpers/array/findAndSplice\";\nimport AvatarElement from \"./avatar\";\n\ntype SelectSearchPeerType = 'contacts' | 'dialogs' | 'channelParticipants';\n\n// TODO: правильная сортировка для addMembers, т.е. для peerType: 'contacts', потому что там идут сначала контакты - потом неконтакты, а должно всё сортироваться по имени\n\nexport default class AppSelectPeers {\n public container = document.createElement('div');\n public list = appDialogsManager.createChatList(/* {\n handheldsSize: 66,\n avatarSize: 48\n } */);\n private chatsContainer = document.createElement('div');\n public scrollable: Scrollable;\n private selectedScrollable: Scrollable;\n \n private selectedContainer: HTMLElement;\n public input: HTMLInputElement;\n \n //public selected: {[peerId: PeerId]: HTMLElement} = {};\n public selected = new Set();\n\n public freezed = false;\n\n private folderId = 0;\n private offsetIndex = 0;\n private promise: Promise;\n\n private query = '';\n private cachedContacts: PeerId[];\n\n private loadedWhat: Partial<{[k in 'dialogs' | 'archived' | 'contacts' | 'channelParticipants']: true}> = {};\n\n private renderedPeerIds: Set = new Set();\n\n private appendTo: HTMLElement;\n private onChange: (length: number) => void;\n private peerType: SelectSearchPeerType[] = ['dialogs'];\n private renderResultsFunc: (peerIds: PeerId[]) => void;\n private chatRightsAction: ChatRights;\n private multiSelect = true;\n private rippleEnabled = true;\n private avatarSize = 48;\n private exceptSelf = false;\n private filterPeerTypeBy: IsPeerType[];\n\n private tempIds: {[k in keyof AppSelectPeers['loadedWhat']]: number} = {};\n private peerId: PeerId;\n\n private placeholder: LangPackKey;\n\n private selfPresence: LangPackKey = 'Presence.YourChat';\n \n private needSwitchList = false;\n\n private sectionNameLangPackKey: LangPackKey;\n \n constructor(options: {\n appendTo: AppSelectPeers['appendTo'], \n onChange?: AppSelectPeers['onChange'], \n peerType?: AppSelectPeers['peerType'], \n peerId?: AppSelectPeers['peerId'],\n onFirstRender?: () => void, \n renderResultsFunc?: AppSelectPeers['renderResultsFunc'], \n chatRightsAction?: AppSelectPeers['chatRightsAction'], \n multiSelect?: AppSelectPeers['multiSelect'],\n rippleEnabled?: AppSelectPeers['rippleEnabled'],\n avatarSize?: AppSelectPeers['avatarSize'],\n placeholder?: AppSelectPeers['placeholder'],\n selfPresence?: AppSelectPeers['selfPresence'],\n exceptSelf?: AppSelectPeers['exceptSelf'],\n filterPeerTypeBy?: AppSelectPeers['filterPeerTypeBy'],\n sectionNameLangPackKey?: AppSelectPeers['sectionNameLangPackKey']\n }) {\n safeAssign(this, options);\n\n this.container.classList.add('selector');\n\n const f = (this.renderResultsFunc || this.renderResults).bind(this);\n this.renderResultsFunc = (peerIds) => {\n if(this.needSwitchList) {\n this.scrollable.splitUp.replaceWith(this.list);\n this.scrollable.setVirtualContainer(this.list);\n this.needSwitchList = false;\n }\n \n peerIds = peerIds.filter(peerId => {\n const notRendered = !this.renderedPeerIds.has(peerId);\n if(notRendered) this.renderedPeerIds.add(peerId);\n return notRendered;\n });\n\n if(this.filterPeerTypeBy) {\n peerIds = peerIds.filter(peerId => {\n if(peerId.isPeerId()) {\n const peer = appPeersManager.getPeer(peerId);\n if(!peer.deleted) {\n return this.filterPeerTypeBy.find(method => appPeersManager[method](peerId));\n }\n }\n\n return true;\n });\n }\n\n return f(peerIds);\n };\n\n this.input = document.createElement('input');\n this.input.classList.add('selector-search-input');\n if(this.placeholder) {\n _i18n(this.input, this.placeholder, undefined, 'placeholder');\n } else {\n _i18n(this.input, 'SendMessageTo', undefined, 'placeholder');\n }\n\n this.input.type = 'text';\n\n if(this.multiSelect) {\n const section = new SettingSection({});\n section.innerContainer.classList.add('selector-search-section');\n let topContainer = document.createElement('div');\n topContainer.classList.add('selector-search-container');\n \n this.selectedContainer = document.createElement('div');\n this.selectedContainer.classList.add('selector-search');\n \n this.selectedContainer.append(this.input);\n topContainer.append(this.selectedContainer);\n this.selectedScrollable = new Scrollable(topContainer);\n \n // let delimiter = document.createElement('hr');\n\n attachClickEvent(this.selectedContainer, (e) => {\n if(this.freezed) return;\n let target = e.target as HTMLElement;\n target = findUpClassName(target, 'selector-user');\n \n if(!target) return;\n \n const peerId = target.dataset.key;\n const li = this.chatsContainer.querySelector('[data-peer-id=\"' + peerId + '\"]') as HTMLElement;\n if(!li) {\n this.remove(peerId.toPeerId());\n } else {\n li.click();\n }\n });\n\n section.content.append(topContainer);\n this.container.append(section.container/* , delimiter */);\n }\n\n this.chatsContainer.classList.add('chatlist-container');\n // this.chatsContainer.append(this.list);\n const section = new SettingSection({\n name: this.sectionNameLangPackKey,\n noShadow: true\n });\n section.content.append(this.list);\n this.chatsContainer.append(section.container);\n this.scrollable = new Scrollable(this.chatsContainer);\n this.scrollable.setVirtualContainer(this.list);\n\n attachClickEvent(this.chatsContainer, (e) => {\n const target = findUpAttribute(e.target, 'data-peer-id') as HTMLElement;\n cancelEvent(e);\n\n if(!target) return;\n if(this.freezed) return;\n\n let key: PeerId | string = target.dataset.peerId;\n key = key.isPeerId() ? key.toPeerId() : key;\n\n if(!this.multiSelect) {\n this.add(key);\n return;\n }\n\n //target.classList.toggle('active');\n if(this.selected.has(key)) {\n this.remove(key);\n } else {\n this.add(key);\n }\n\n const checkbox = target.querySelector('input') as HTMLInputElement;\n checkbox.checked = !checkbox.checked;\n });\n\n const debouncedInput = debounce(this.onInput, 200, false, true);\n this.input.addEventListener('input', debouncedInput);\n\n this.scrollable.onScrolledBottom = () => {\n this.getMoreResults();\n };\n\n this.scrollable.container.prepend(generateDelimiter());\n\n this.container.append(this.chatsContainer);\n this.appendTo.append(this.container);\n\n // WARNING TIMEOUT\n setTimeout(() => {\n let getResultsPromise = this.getMoreResults() as Promise;\n if(options.onFirstRender) {\n getResultsPromise.then(() => {\n options.onFirstRender();\n });\n }\n }, 0);\n }\n\n private onInput = () => {\n const value = this.input.value;\n if(this.query !== value) {\n if(this.peerType.includes('contacts') || this.peerType.includes('dialogs')) {\n this.cachedContacts = null;\n }\n \n if(this.peerType.includes('dialogs')) {\n this.folderId = 0;\n this.offsetIndex = 0;\n }\n\n for(let i in this.tempIds) {\n // @ts-ignore\n ++this.tempIds[i];\n }\n\n this.list = appDialogsManager.createChatList();\n\n this.promise = null;\n this.loadedWhat = {};\n this.query = value;\n this.renderedPeerIds.clear();\n this.needSwitchList = true;\n \n //console.log('selectPeers input:', this.query);\n this.getMoreResults();\n }\n };\n\n private renderSaved() {\n if(!this.exceptSelf && \n !this.offsetIndex && \n this.folderId === 0 && \n this.peerType.includes('dialogs') && \n (!this.query || appUsersManager.testSelfSearch(this.query))) {\n this.renderResultsFunc([rootScope.myId]);\n }\n }\n\n private getTempId(type: keyof AppSelectPeers['tempIds']) {\n if(this.tempIds[type] === undefined) {\n this.tempIds[type] = 0;\n }\n\n return ++this.tempIds[type];\n }\n\n private async getMoreDialogs(): Promise {\n if(this.promise) return this.promise;\n\n if(this.loadedWhat.dialogs && this.loadedWhat.archived) {\n return;\n }\n \n // в десктопе - сначала без группы, потом архивные, потом контакты без сообщений\n const pageCount = windowSize.height / 72 * 1.25 | 0;\n\n const tempId = this.getTempId('dialogs');\n const promise = appMessagesManager.getConversations(this.query, this.offsetIndex, pageCount, this.folderId, true).promise;\n this.promise = promise;\n const value = await promise;\n if(this.tempIds.dialogs !== tempId) {\n return;\n }\n\n this.promise = null;\n\n let dialogs = value.dialogs as Dialog[];\n if(dialogs.length) {\n const newOffsetIndex = dialogs[dialogs.length - 1].index || 0;\n\n dialogs = dialogs.slice();\n findAndSplice(dialogs, d => d.peerId === rootScope.myId); // no my account\n\n if(this.chatRightsAction) {\n dialogs = dialogs.filter(d => this.filterByRights(d.peerId));\n }\n\n this.renderSaved();\n\n this.offsetIndex = newOffsetIndex;\n }\n\n this.renderResultsFunc(dialogs.map(dialog => dialog.peerId));\n \n if(value.isEnd) {\n if(!this.loadedWhat.dialogs) {\n this.renderSaved();\n\n this.loadedWhat.dialogs = true;\n this.offsetIndex = 0;\n this.folderId = 1;\n\n return this.getMoreDialogs();\n } else {\n this.loadedWhat.archived = true;\n\n if(!this.loadedWhat.contacts/* && this.peerType.includes('contacts') */) {\n return this.getMoreContacts();\n }\n }\n }\n }\n\n private filterByRights(peerId: PeerId) {\n return (\n peerId.isUser() && \n (this.chatRightsAction !== 'send_messages' || appUsersManager.canSendToUser(peerId))\n ) || appChatsManager.hasRights(peerId.toChatId(), this.chatRightsAction);\n }\n\n private async getMoreContacts() {\n if(this.promise) return this.promise;\n\n if(this.loadedWhat.contacts) {\n return;\n }\n\n const isGlobalSearch = this.peerType.includes('contacts');\n\n if(!this.cachedContacts) {\n /* const promises: Promise[] = [appUsersManager.getContacts(this.query)];\n if(!this.peerType.includes('dialogs')) {\n promises.push(appMessagesManager.getConversationsAll());\n }\n\n this.promise = Promise.all(promises);\n this.cachedContacts = (await this.promise)[0].slice(); */\n const tempId = this.getTempId('contacts');\n const promise = Promise.all([\n isGlobalSearch ? appUsersManager.getContactsPeerIds(this.query) : [],\n this.query ? appUsersManager.searchContacts(this.query) : undefined\n ]);\n\n this.promise = promise;\n let [cachedContacts, searchResult] = await promise;\n if(this.tempIds.contacts !== tempId) {\n return;\n }\n\n if(searchResult) {\n // do not add global result if only dialogs needed\n let resultPeerIds = isGlobalSearch ? searchResult.my_results.concat(searchResult.results) : searchResult.my_results;\n\n if(this.chatRightsAction) {\n resultPeerIds = resultPeerIds.filter(peerId => this.filterByRights(peerId));\n }\n\n if(!this.peerType.includes('dialogs')) {\n resultPeerIds = resultPeerIds.filter(peerId => peerId.isUser());\n }\n\n this.cachedContacts = filterUnique(cachedContacts.concat(resultPeerIds));\n } else this.cachedContacts = cachedContacts.slice();\n\n indexOfAndSplice(this.cachedContacts, rootScope.myId); // no my account\n this.promise = null;\n }\n\n // if(this.cachedContacts.length) {\n const pageCount = windowSize.height / 72 * 1.25 | 0;\n const arr = this.cachedContacts.splice(0, pageCount);\n this.renderResultsFunc(arr);\n // }\n \n if(!this.cachedContacts.length) {\n this.loadedWhat.contacts = true;\n\n // need to load non-contacts\n /* if(!this.peerType.includes('dialogs')) {\n return this.getMoreDialogs();\n } */\n }\n }\n\n private async getMoreChannelParticipants() {\n if(this.promise) return this.promise;\n\n if(this.loadedWhat.channelParticipants) {\n return;\n }\n\n const pageCount = 50; // same as in group permissions to use cache\n\n const tempId = this.getTempId('channelParticipants');\n const promise = appProfileManager.getChannelParticipants(this.peerId.toChatId(), {_: 'channelParticipantsSearch', q: this.query}, pageCount, this.list.childElementCount);\n const participants = await promise;\n if(this.tempIds.channelParticipants !== tempId) {\n return;\n }\n \n const peerIds = participants.participants.map(participant => {\n return appChatsManager.getParticipantPeerId(participant);\n });\n indexOfAndSplice(peerIds, rootScope.myId);\n this.renderResultsFunc(peerIds);\n\n if(this.list.childElementCount >= participants.count || participants.participants.length < pageCount) {\n this.loadedWhat.channelParticipants = true;\n }\n }\n\n checkForTriggers = () => {\n this.scrollable.checkForTriggers();\n };\n\n private getMoreResults() {\n const get = () => {\n const promises: Promise[] = [];\n\n // if(!loadedAllDialogs && (this.peerType.includes('dialogs')/* || this.peerType.includes('contacts') */)) {\n // if(!loadAllDialogsPromise) {\n // loadAllDialogsPromise = appMessagesManager.getConversationsAll()\n // .then(() => {\n // loadedAllDialogs = true;\n // }).finally(() => {\n // loadAllDialogsPromise = null;\n // });\n // }\n\n // promises.push(loadAllDialogsPromise);\n // }\n \n if((this.peerType.includes('dialogs')/* || this.loadedWhat.contacts */) && !this.loadedWhat.archived) { // to load non-contacts\n promises.push(this.getMoreDialogs());\n \n if(!this.loadedWhat.archived) {\n return promises;\n }\n }\n \n if((this.peerType.includes('contacts') || this.peerType.includes('dialogs')) && !this.loadedWhat.contacts) {\n promises.push(this.getMoreContacts());\n }\n\n if(this.peerType.includes('channelParticipants') && !this.loadedWhat.channelParticipants) {\n promises.push(this.getMoreChannelParticipants());\n }\n \n return promises;\n };\n \n const promises = get();\n const promise = Promise.all(promises);\n if(promises.length) {\n promise.then(this.checkForTriggers);\n }\n\n return promise;\n }\n\n private renderResults(peerIds: PeerId[]) {\n //console.log('will renderResults:', peerIds);\n\n // оставим только неконтакты с диалогов\n if(!this.peerType.includes('dialogs') && this.loadedWhat.contacts) {\n peerIds = peerIds.filter(peerId => {\n return appUsersManager.isNonContactUser(peerId);\n });\n }\n\n peerIds.forEach(peerId => {\n const {dom} = appDialogsManager.addDialogNew({\n dialog: peerId,\n container: this.scrollable,\n drawStatus: false,\n rippleEnabled: this.rippleEnabled,\n avatarSize: this.avatarSize\n });\n\n if(this.multiSelect) {\n const selected = this.selected.has(peerId);\n const checkboxField = new CheckboxField();\n\n if(selected) {\n //dom.listEl.classList.add('active');\n checkboxField.input.checked = true;\n }\n\n dom.containerEl.prepend(checkboxField.label);\n }\n\n let subtitleEl: HTMLElement;\n if(peerId.isAnyChat()) {\n subtitleEl = appProfileManager.getChatMembersString(peerId.toChatId());\n } else if(peerId === rootScope.myId) {\n subtitleEl = i18n(this.selfPresence);\n } else {\n subtitleEl = appUsersManager.getUserStatusString(peerId);\n }\n\n dom.lastMessageSpan.append(subtitleEl);\n });\n }\n\n public add(key: PeerId | string, title?: string | HTMLElement, scroll = true) {\n //console.trace('add');\n this.selected.add(key);\n\n if(!this.multiSelect) {\n this.onChange(this.selected.size);\n return;\n }\n\n if(this.query.trim()) {\n this.input.value = '';\n this.onInput();\n }\n\n const div = document.createElement('div');\n div.classList.add('selector-user', 'scale-in');\n\n const avatarEl = new AvatarElement();\n avatarEl.classList.add('selector-user-avatar', 'tgico', 'avatar-32');\n avatarEl.isDialog = true;\n\n div.dataset.key = '' + key;\n if(key.isPeerId()) {\n if(title === undefined) {\n title = new PeerTitle({peerId: key.toPeerId(), dialog: true}).element;\n }\n\n avatarEl.updateWithOptions({\n peerId: key as PeerId\n });\n }\n\n if(title) {\n if(typeof(title) === 'string') {\n div.innerHTML = title;\n } else {\n replaceContent(div, title);\n div.append(title);\n }\n }\n\n div.insertAdjacentElement('afterbegin', avatarEl);\n\n this.selectedContainer.insertBefore(div, this.input);\n //this.selectedScrollable.scrollTop = this.selectedScrollable.scrollHeight;\n this.onChange && this.onChange(this.selected.size);\n \n if(scroll) {\n this.selectedScrollable.scrollIntoViewNew({\n element: this.input, \n position: 'center'\n });\n }\n \n return div;\n }\n\n public remove(key: PeerId | string) {\n if(!this.multiSelect) return;\n //const div = this.selected[peerId];\n const div = this.selectedContainer.querySelector(`[data-key=\"${key}\"]`) as HTMLElement;\n div.classList.remove('scale-in');\n void div.offsetWidth;\n div.classList.add('scale-out');\n\n const onAnimationEnd = () => {\n this.selected.delete(key);\n div.remove();\n this.onChange && this.onChange(this.selected.size);\n };\n\n if(rootScope.settings.animationsEnabled) {\n div.addEventListener('animationend', onAnimationEnd, {once: true});\n } else {\n onAnimationEnd();\n }\n }\n\n public getSelected() {\n return [...this.selected];\n }\n\n public addInitial(values: any[]) {\n values.forEach(value => {\n this.add(value, undefined, false);\n });\n\n window.requestAnimationFrame(() => { // ! not the best place for this raf though it works\n this.selectedScrollable.scrollIntoViewNew({\n element: this.input, \n position: 'center', \n forceDirection: FocusDirection.Static\n });\n });\n }\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { IS_TOUCH_SUPPORTED } from \"../../environment/touchSupport\";\r\nimport AppSelectPeers from \"../appSelectPeers\";\r\nimport PopupElement from \".\";\r\nimport { LangPackKey, _i18n } from \"../../lib/langPack\";\r\n\r\nexport default class PopupPickUser extends PopupElement {\r\n protected selector: AppSelectPeers;\r\n \r\n constructor(options: {\r\n peerTypes: AppSelectPeers['peerType'], \r\n onSelect?: (peerId: PeerId) => Promise | void, \r\n placeholder: LangPackKey,\r\n chatRightsAction?: AppSelectPeers['chatRightsAction'],\r\n peerId?: number,\r\n selfPresence?: LangPackKey\r\n }) {\r\n super('popup-forward', null, {closable: true, overlayClosable: true, body: true});\r\n\r\n this.selector = new AppSelectPeers({\r\n appendTo: this.body, \r\n onChange: async() => {\r\n const selected = this.selector.getSelected();\r\n const peerId = selected[selected.length - 1].toPeerId();\r\n \r\n if(options.onSelect) {\r\n const res = options.onSelect(peerId);\r\n if(res instanceof Promise) {\r\n try {\r\n await res;\r\n } catch(err) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n this.selector = null;\r\n this.hide();\r\n }, \r\n peerType: options.peerTypes, \r\n onFirstRender: () => {\r\n this.show();\r\n this.selector.checkForTriggers(); // ! due to zero height before mounting\r\n\r\n if(!IS_TOUCH_SUPPORTED) {\r\n this.selector.input.focus();\r\n }\r\n }, \r\n chatRightsAction: options.chatRightsAction, \r\n multiSelect: false,\r\n rippleEnabled: false,\r\n avatarSize: 46,\r\n peerId: options.peerId,\r\n placeholder: options.placeholder,\r\n selfPresence: options.selfPresence\r\n });\r\n\r\n //this.scrollable = new Scrollable(this.body);\r\n\r\n this.title.append(this.selector.input);\r\n }\r\n}\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport { attachClickEvent } from \"../../../helpers/dom/clickEvent\";\nimport toggleDisability from \"../../../helpers/dom/toggleDisability\";\nimport deepEqual from \"../../../helpers/object/deepEqual\";\nimport { ChannelParticipant } from \"../../../layer\";\nimport appChatsManager from \"../../../lib/appManagers/appChatsManager\";\nimport appDialogsManager from \"../../../lib/appManagers/appDialogsManager\";\nimport appUsersManager from \"../../../lib/appManagers/appUsersManager\";\nimport Button from \"../../button\";\nimport { SettingSection } from \"../../sidebarLeft\";\nimport { SliderSuperTabEventable } from \"../../sliderTab\";\nimport { ChatPermissions } from \"./groupPermissions\";\n\nexport default class AppUserPermissionsTab extends SliderSuperTabEventable {\n public participant: ChannelParticipant;\n public chatId: ChatId;\n public userId: UserId;\n\n protected init() {\n this.container.classList.add('edit-peer-container', 'user-permissions-container');\n this.setTitle('UserRestrictions');\n\n let destroyListener: () => void;\n\n {\n const section = new SettingSection({\n name: 'UserRestrictionsCanDo',\n });\n \n const div = document.createElement('div');\n div.classList.add('chatlist-container');\n section.content.insertBefore(div, section.title);\n\n const list = appDialogsManager.createChatList({new: true});\n div.append(list);\n\n const {dom} = appDialogsManager.addDialogNew({\n dialog: this.userId.toPeerId(false),\n container: list,\n drawStatus: false,\n rippleEnabled: true,\n avatarSize: 48\n });\n\n dom.lastMessageSpan.append(appUsersManager.getUserStatusString(this.userId));\n\n const p = new ChatPermissions({\n chatId: this.chatId,\n listenerSetter: this.listenerSetter,\n appendTo: section.content,\n participant: this.participant._ === 'channelParticipantBanned' ? this.participant : undefined\n });\n\n destroyListener = () => {\n //appChatsManager.editChatDefaultBannedRights(this.chatId, p.takeOut());\n const rights = p.takeOut();\n if(this.participant._ === 'channelParticipantBanned' && deepEqual(this.participant.banned_rights.pFlags, rights.pFlags)) {\n return;\n }\n\n appChatsManager.editBanned(this.chatId, this.participant, rights);\n };\n\n this.eventListener.addEventListener('destroy', destroyListener, {once: true});\n\n this.scrollable.append(section.container);\n }\n \n {\n const section = new SettingSection({});\n\n if(this.participant._ === 'channelParticipantBanned') {\n const btnDeleteException = Button('btn-primary btn-transparent danger', {icon: 'delete', text: 'GroupPermission.Delete'});\n\n attachClickEvent(btnDeleteException, () => {\n const toggle = toggleDisability([btnDeleteException], true);\n appChatsManager.clearChannelParticipantBannedRights(this.chatId, this.participant).then(() => {\n this.eventListener.removeEventListener('destroy', destroyListener);\n this.close();\n }, () => {\n toggle();\n });\n }, {listenerSetter: this.listenerSetter});\n \n section.content.append(btnDeleteException);\n }\n\n const btnDelete = Button('btn-primary btn-transparent danger', {icon: 'deleteuser', text: 'UserRestrictionsBlock'});\n\n attachClickEvent(btnDelete, () => {\n const toggle = toggleDisability([btnDelete], true);\n appChatsManager.kickFromChannel(this.chatId, this.participant).then(() => {\n this.eventListener.removeEventListener('destroy', destroyListener);\n this.close();\n });\n /* new PopupPeer('popup-group-kick-user', {\n peerId: -this.chatId,\n title: 'Ban User?',\n description: `Are you sure you want to ban ${appPeersManager.getPeerTitle(this.userId)}`,\n buttons: addCancelButton([{\n text: 'BAN',\n callback: () => {\n const toggle = toggleDisability([btnDelete], true);\n\n appChatsManager.kickFromChannel(this.chatId, this.participant).then(() => {\n this.eventListener.removeEventListener('destroy', destroyListener);\n this.close();\n }, () => {\n toggle();\n });\n },\n isDanger: true\n }])\n }).show(); */\n }, {listenerSetter: this.listenerSetter});\n\n section.content.append(btnDelete);\n\n this.scrollable.append(section.container);\n }\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport { attachClickEvent } from \"../../../helpers/dom/clickEvent\";\nimport findUpTag from \"../../../helpers/dom/findUpTag\";\nimport replaceContent from \"../../../helpers/dom/replaceContent\";\nimport ListenerSetter from \"../../../helpers/listenerSetter\";\nimport ScrollableLoader from \"../../../helpers/scrollableLoader\";\nimport { ChannelParticipant, Chat, ChatBannedRights, Update } from \"../../../layer\";\nimport appChatsManager, { ChatRights } from \"../../../lib/appManagers/appChatsManager\";\nimport appDialogsManager from \"../../../lib/appManagers/appDialogsManager\";\nimport appPeersManager from \"../../../lib/appManagers/appPeersManager\";\nimport appProfileManager from \"../../../lib/appManagers/appProfileManager\";\nimport I18n, { i18n, join, LangPackKey } from \"../../../lib/langPack\";\nimport rootScope from \"../../../lib/rootScope\";\nimport CheckboxField from \"../../checkboxField\";\nimport PopupPickUser from \"../../popups/pickUser\";\nimport Row from \"../../row\";\nimport { SettingSection } from \"../../sidebarLeft\";\nimport { SliderSuperTabEventable } from \"../../sliderTab\";\nimport { toast } from \"../../toast\";\nimport AppUserPermissionsTab from \"./userPermissions\";\n\nexport class ChatPermissions {\n public v: Array<{\n flags: ChatRights[],\n text: LangPackKey,\n exceptionText: LangPackKey,\n checkboxField?: CheckboxField,\n }>;\n private toggleWith: Partial<{[chatRight in ChatRights]: ChatRights[]}>;\n\n constructor(options: {\n chatId: ChatId,\n listenerSetter: ListenerSetter,\n appendTo: HTMLElement,\n participant?: ChannelParticipant.channelParticipantBanned\n }) {\n this.v = [\n {flags: ['send_messages'], text: 'UserRestrictionsSend', exceptionText: 'UserRestrictionsNoSend'},\n {flags: ['send_media'], text: 'UserRestrictionsSendMedia', exceptionText: 'UserRestrictionsNoSendMedia'},\n {flags: ['send_stickers', 'send_gifs'], text: 'UserRestrictionsSendStickers', exceptionText: 'UserRestrictionsNoSendStickers'},\n {flags: ['send_polls'], text: 'UserRestrictionsSendPolls', exceptionText: 'UserRestrictionsNoSendPolls'},\n {flags: ['embed_links'], text: 'UserRestrictionsEmbedLinks', exceptionText: 'UserRestrictionsNoEmbedLinks'},\n {flags: ['invite_users'], text: 'UserRestrictionsInviteUsers', exceptionText: 'UserRestrictionsNoInviteUsers'},\n {flags: ['pin_messages'], text: 'UserRestrictionsPinMessages', exceptionText: 'UserRestrictionsNoPinMessages'},\n {flags: ['change_info'], text: 'UserRestrictionsChangeInfo', exceptionText: 'UserRestrictionsNoChangeInfo'}\n ];\n\n this.toggleWith = {\n 'send_messages': ['send_media', 'send_stickers', 'send_polls', 'embed_links']\n };\n\n const chat: Chat.chat | Chat.channel = appChatsManager.getChat(options.chatId);\n const defaultBannedRights = chat.default_banned_rights;\n const rights = options.participant ? appChatsManager.combineParticipantBannedRights(options.chatId, options.participant.banned_rights) : defaultBannedRights;\n \n const restrictionText: LangPackKey = options.participant ? 'UserRestrictionsDisabled' : 'EditCantEditPermissionsPublic';\n for(const info of this.v) {\n const mainFlag = info.flags[0];\n info.checkboxField = new CheckboxField({\n text: info.text,\n checked: appChatsManager.hasRights(options.chatId, mainFlag, rights),\n restriction: true,\n withRipple: true\n });\n\n if((\n options.participant && \n defaultBannedRights.pFlags[mainFlag as keyof typeof defaultBannedRights['pFlags']]\n ) || (\n (chat as Chat.channel).username &&\n (\n info.flags.includes('pin_messages') ||\n info.flags.includes('change_info')\n )\n )\n ) {\n info.checkboxField.input.disabled = true;\n \n /* options.listenerSetter.add(info.checkboxField.input)('change', (e) => {\n if(!e.isTrusted) {\n return;\n }\n\n cancelEvent(e);\n toast('This option is disabled for all members in Group Permissions.');\n info.checkboxField.checked = false;\n }); */\n\n attachClickEvent(info.checkboxField.label, (e) => {\n toast(I18n.format(restrictionText, true));\n }, {listenerSetter: options.listenerSetter});\n }\n\n if(this.toggleWith[mainFlag]) {\n options.listenerSetter.add(info.checkboxField.input)('change', () => {\n if(!info.checkboxField.checked) {\n const other = this.v.filter(i => this.toggleWith[mainFlag].includes(i.flags[0]));\n other.forEach(info => {\n info.checkboxField.checked = false;\n });\n }\n });\n }\n\n options.appendTo.append(info.checkboxField.label);\n }\n }\n\n public takeOut() {\n const rights: ChatBannedRights = {\n _: 'chatBannedRights',\n until_date: 0x7FFFFFFF,\n pFlags: {}\n };\n\n for(const info of this.v) {\n const banned = !info.checkboxField.checked;\n if(banned) {\n info.flags.forEach(flag => {\n // @ts-ignore\n rights.pFlags[flag] = true;\n });\n }\n }\n\n return rights;\n }\n}\n\nexport default class AppGroupPermissionsTab extends SliderSuperTabEventable {\n public chatId: ChatId;\n\n protected async init() {\n this.container.classList.add('edit-peer-container', 'group-permissions-container');\n this.setTitle('ChannelPermissions');\n\n let chatPermissions: ChatPermissions;\n {\n const section = new SettingSection({\n name: 'ChannelPermissionsHeader',\n });\n\n chatPermissions = new ChatPermissions({\n chatId: this.chatId,\n listenerSetter: this.listenerSetter,\n appendTo: section.content,\n });\n\n this.eventListener.addEventListener('destroy', () => {\n appChatsManager.editChatDefaultBannedRights(this.chatId, chatPermissions.takeOut());\n }, {once: true});\n\n this.scrollable.append(section.container);\n }\n \n {\n const section = new SettingSection({\n name: 'PrivacyExceptions'\n });\n\n const addExceptionRow = new Row({\n titleLangKey: 'ChannelAddException',\n subtitleLangKey: 'Loading',\n icon: 'adduser',\n clickable: () => {\n new PopupPickUser({\n peerTypes: ['channelParticipants'],\n onSelect: (peerId) => {\n setTimeout(() => {\n openPermissions(peerId);\n }, 0);\n },\n placeholder: 'ExceptionModal.Search.Placeholder',\n peerId: -this.chatId,\n });\n }\n });\n\n const openPermissions = async(peerId: PeerId) => {\n let participant: AppUserPermissionsTab['participant'];\n try {\n participant = await appProfileManager.getChannelParticipant(this.chatId, peerId) as any;\n } catch(err) {\n toast('User is no longer participant');\n return;\n }\n\n const tab = new AppUserPermissionsTab(this.slider);\n tab.participant = participant;\n tab.chatId = this.chatId;\n tab.userId = peerId;\n tab.open();\n };\n\n section.content.append(addExceptionRow.container);\n\n /* const removedUsersRow = new Row({\n titleLangKey: 'ChannelBlockedUsers',\n subtitleLangKey: 'NoBlockedUsers',\n icon: 'deleteuser',\n clickable: true\n });\n\n section.content.append(removedUsersRow.container); */\n\n const c = section.generateContentElement();\n c.classList.add('chatlist-container');\n \n const list = appDialogsManager.createChatList({new: true});\n c.append(list);\n\n attachClickEvent(list, (e) => {\n const target = findUpTag(e.target, 'LI');\n if(!target) return;\n\n const peerId = target.dataset.peerId.toPeerId();\n openPermissions(peerId);\n }, {listenerSetter: this.listenerSetter});\n\n const setSubtitle = (li: Element, participant: ChannelParticipant.channelParticipantBanned) => {\n const bannedRights = participant.banned_rights;//appChatsManager.combineParticipantBannedRights(this.chatId, participant.banned_rights);\n const defaultBannedRights = (appChatsManager.getChat(this.chatId) as Chat.channel).default_banned_rights;\n //const combinedRights = appChatsManager.combineParticipantBannedRights(this.chatId, bannedRights);\n\n const cantWhat: LangPackKey[] = []/* , canWhat: LangPackKey[] = [] */;\n chatPermissions.v.forEach(info => {\n const mainFlag = info.flags[0];\n // @ts-ignore\n if(bannedRights.pFlags[mainFlag] && !defaultBannedRights.pFlags[mainFlag]) {\n cantWhat.push(info.exceptionText);\n // @ts-ignore\n }/* else if(!combinedRights.pFlags[mainFlag]) {\n canWhat.push(info.exceptionText);\n } */\n });\n\n const el = li.querySelector('.user-last-message') as HTMLElement;\n\n if(cantWhat.length) {\n el.innerHTML = '';\n el.append(...join(cantWhat.map(t => i18n(t)), false));\n }/* else if(canWhat.length) {\n str = 'Can ' + canWhat.join(canWhat.length === 2 ? ' and ' : ', ');\n } */\n \n el.classList.toggle('hide', !cantWhat.length);\n };\n\n const add = (participant: ChannelParticipant.channelParticipantBanned, append: boolean) => {\n const {dom} = appDialogsManager.addDialogNew({\n dialog: appPeersManager.getPeerId(participant.peer),\n container: list,\n drawStatus: false,\n rippleEnabled: true,\n avatarSize: 48,\n append\n });\n\n setSubtitle(dom.listEl, participant);\n\n //dom.titleSpan.innerHTML = 'Chinaza Akachi';\n //dom.lastMessageSpan.innerHTML = 'Can Add Users and Pin Messages';\n };\n\n this.listenerSetter.add(rootScope)('updateChannelParticipant', (update: Update.updateChannelParticipant) => {\n const needAdd = update.new_participant?._ === 'channelParticipantBanned' && !update.new_participant.banned_rights.pFlags.view_messages;\n const li = list.querySelector(`[data-peer-id=\"${update.user_id}\"]`);\n if(needAdd) {\n if(!li) {\n add(update.new_participant as ChannelParticipant.channelParticipantBanned, false);\n } else {\n setSubtitle(li, update.new_participant as ChannelParticipant.channelParticipantBanned);\n }\n\n if(update.prev_participant?._ !== 'channelParticipantBanned') {\n ++exceptionsCount;\n }\n } else {\n if(li) {\n li.remove();\n }\n\n if(update.prev_participant?._ === 'channelParticipantBanned') {\n --exceptionsCount;\n }\n }\n\n setLength();\n });\n\n const setLength = () => {\n replaceContent(addExceptionRow.subtitle, i18n(exceptionsCount ? 'Permissions.ExceptionsCount' : 'Permissions.NoExceptions', [exceptionsCount]));\n };\n\n let exceptionsCount = 0;\n let loader: ScrollableLoader;\n const setLoader = () => {\n const LOAD_COUNT = 50;\n loader = new ScrollableLoader({\n scrollable: this.scrollable,\n getPromise: () => {\n return appProfileManager.getChannelParticipants(this.chatId, {_: 'channelParticipantsBanned', q: ''}, LOAD_COUNT, list.childElementCount).then(res => {\n for(const participant of res.participants) {\n add(participant as ChannelParticipant.channelParticipantBanned, true);\n }\n \n exceptionsCount = res.count;\n setLength();\n \n return res.participants.length < LOAD_COUNT || res.count === list.childElementCount;\n });\n }\n });\n\n return loader.load();\n };\n\n this.scrollable.append(section.container);\n\n if(appChatsManager.isChannel(this.chatId)) {\n await setLoader();\n } else {\n setLength();\n \n this.listenerSetter.add(rootScope)('dialog_migrate', ({migrateFrom, migrateTo}) => {\n if(this.chatId === migrateFrom) {\n this.chatId = migrateTo;\n setLoader();\n }\n });\n }\n }\n }\n\n onOpenAfterTimeout() {\n this.scrollable.onScroll();\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport appChatsManager from \"../../lib/appManagers/appChatsManager\";\nimport appMessagesManager from \"../../lib/appManagers/appMessagesManager\";\nimport appPeersManager, { PeerType } from \"../../lib/appManagers/appPeersManager\";\nimport { LangPackKey } from \"../../lib/langPack\";\nimport PeerTitle from \"../peerTitle\";\nimport PopupPeer, { PopupPeerButtonCallbackCheckboxes, PopupPeerOptions } from \"./peer\";\n\nexport default class PopupDeleteDialog {\n constructor(\n peerId: PeerId, \n // actionType: 'leave' | 'delete', \n peerType: PeerType = appPeersManager.getDialogType(peerId), \n onSelect?: (promise: Promise) => void\n ) {\n const peerTitleElement = new PeerTitle({peerId}).element;\n\n /* const callbackFlush = (checked: PopupPeerButtonCallbackCheckboxes) => {\n const promise = appMessagesManager.flushHistory(peerId, checkboxes ? !checked[checkboxes[0].text] : undefined);\n onSelect && onSelect(promise);\n }; */\n\n const callbackLeave = (checked: PopupPeerButtonCallbackCheckboxes, flush = checkboxes && !!checked.size) => {\n let promise = appChatsManager.leave(peerId.toChatId());\n \n if(flush) {\n promise = promise.finally(() => {\n return appMessagesManager.flushHistory(peerId);\n }) as any;\n }\n \n onSelect && onSelect(promise);\n };\n\n const callbackDelete = (checked: PopupPeerButtonCallbackCheckboxes) => {\n let promise: Promise;\n\n if(peerId.isUser()) {\n promise = appMessagesManager.flushHistory(peerId, false, checkboxes ? !!checked.size : undefined);\n } else {\n if(checked.size) {\n promise = appChatsManager.delete(peerId.toChatId());\n } else {\n return callbackLeave(checked);\n }\n }\n \n onSelect && onSelect(promise);\n };\n\n let title: LangPackKey, description: LangPackKey, descriptionArgs: any[], buttons: PopupPeerOptions['buttons'], checkboxes: PopupPeerOptions['checkboxes'];\n switch(peerType) {\n case 'channel': {\n if(/* actionType === 'delete' && */appChatsManager.hasRights(peerId.toChatId(), 'delete_chat')) {\n appChatsManager.deleteChannel\n title = 'ChannelDeleteMenu';\n description = 'AreYouSureDeleteAndExitChannel';\n buttons = [{\n langKey: 'ChannelDeleteMenu',\n isDanger: true,\n callback: callbackDelete\n }];\n\n checkboxes = [{\n text: 'DeleteChannelForAll'\n }];\n } else {\n title = 'LeaveChannelMenu';\n description = 'ChannelLeaveAlertWithName';\n descriptionArgs = [peerTitleElement];\n buttons = [{\n langKey: 'LeaveChannel',\n isDanger: true,\n callback: callbackLeave\n }];\n }\n\n break;\n }\n\n /* case 'megagroup': {\n title = 'Leave Group?';\n description = `Are you sure you want to leave this group?`;\n buttons = [{\n text: 'LEAVE ' + peerTitleElement,\n isDanger: true,\n callback: callbackLeave\n }];\n\n break;\n } */\n\n case 'chat': {\n title = 'DeleteChatUser';\n description = 'AreYouSureDeleteThisChatWithUser';\n descriptionArgs = [peerTitleElement];\n\n buttons = [{\n langKey: 'DeleteChatUser',\n isDanger: true,\n callback: callbackDelete\n }];\n\n checkboxes = [{\n text: 'DeleteMessagesOptionAlso',\n textArgs: [\n new PeerTitle({peerId}).element\n ]\n }];\n\n break;\n }\n\n case 'saved': {\n title = 'DeleteChatUser';\n description = 'AreYouSureDeleteThisChatSavedMessages';\n buttons = [{\n langKey: 'DeleteChatUser',\n isDanger: true,\n callback: callbackDelete\n }];\n\n break;\n }\n\n case 'megagroup':\n case 'group': {\n if(/* actionType === 'delete' && */appChatsManager.hasRights(peerId.toChatId(), 'delete_chat')) {\n title = 'DeleteMegaMenu';\n description = 'AreYouSureDeleteAndExit';\n buttons = [{\n langKey: 'DeleteMegaMenu',\n isDanger: true,\n callback: callbackDelete\n }];\n\n checkboxes = [{\n text: 'DeleteChat.DeleteGroupForAll'\n }];\n } else {\n title = 'LeaveMegaMenu';\n description = 'AreYouSureDeleteAndExitName';\n descriptionArgs = [peerTitleElement];\n buttons = [{\n langKey: 'DeleteChatUser',\n isDanger: true,\n callback: (checkboxes) => callbackLeave(checkboxes, true)\n }];\n }\n\n break;\n }\n }\n\n new PopupPeer('popup-delete-chat', {\n peerId,\n titleLangKey: title,\n descriptionLangKey: description,\n descriptionLangArgs: descriptionArgs,\n buttons,\n checkboxes\n }).show();\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport debounce from \"../../../helpers/schedulers/debounce\";\nimport appChatsManager from \"../../../lib/appManagers/appChatsManager\";\nimport appProfileManager from \"../../../lib/appManagers/appProfileManager\";\nimport appReactionsManager from \"../../../lib/appManagers/appReactionsManager\";\nimport CheckboxField from \"../../checkboxField\";\nimport Row from \"../../row\";\nimport { SettingSection } from \"../../sidebarLeft\";\nimport { SliderSuperTabEventable } from \"../../sliderTab\";\nimport { wrapStickerToRow } from \"../../wrappers\";\n\nexport default class AppChatReactionsTab extends SliderSuperTabEventable {\n public chatId: ChatId;\n\n protected async init() {\n this.setTitle('Reactions');\n\n const availableReactions = await appReactionsManager.getActiveAvailableReactions();\n const chatFull = await appProfileManager.getChatFull(this.chatId);\n let originalReactions = chatFull.available_reactions ?? [];\n const enabledReactions = new Set(originalReactions);\n\n const toggleSection = new SettingSection({\n caption: appChatsManager.isBroadcast(this.chatId) ? 'EnableReactionsChannelInfo' : 'EnableReactionsGroupInfo'\n });\n\n const toggleCheckboxField = new CheckboxField({toggle: true, checked: !!enabledReactions.size});\n const toggleRow = new Row({\n checkboxField: toggleCheckboxField,\n titleLangKey: 'EnableReactions'\n });\n\n toggleSection.content.append(toggleRow.container);\n\n const reactionsSection = new SettingSection({\n name: 'AvailableReactions'\n });\n\n const checkboxFields = availableReactions.map(availableReaction => {\n const checkboxField = new CheckboxField({\n toggle: true, \n checked: enabledReactions.has(availableReaction.reaction)\n });\n\n this.listenerSetter.add(checkboxField.input)('change', () => {\n if(checkboxField.checked) {\n enabledReactions.add(availableReaction.reaction);\n\n if(!toggleCheckboxField.checked) {\n toggleCheckboxField.setValueSilently(true);\n }\n } else {\n enabledReactions.delete(availableReaction.reaction);\n\n if(!enabledReactions.size && toggleCheckboxField.checked) {\n toggleCheckboxField.setValueSilently(false);\n }\n }\n\n saveReactionsDebounced();\n });\n\n const row = new Row({\n checkboxField,\n title: availableReaction.title,\n havePadding: true\n });\n\n wrapStickerToRow({\n row,\n doc: availableReaction.static_icon,\n size: 'small'\n });\n\n reactionsSection.content.append(row.container);\n\n return checkboxField;\n });\n\n this.listenerSetter.add(toggleRow.checkboxField.input)('change', () => {\n if(!toggleCheckboxField.checked) {\n checkboxFields.forEach(checkboxField => checkboxField.checked = false);\n saveReactionsDebounced();\n } else if(checkboxFields.every(checkboxField => !checkboxField.checked)) {\n checkboxFields.forEach(checkboxField => checkboxField.checked = true);\n saveReactionsDebounced();\n }\n });\n\n const saveReactions = () => {\n const newReactions = Array.from(enabledReactions);\n if([...newReactions].sort().join() === [...originalReactions].sort().join()) {\n return;\n }\n\n const chatFull = appProfileManager.getCachedFullChat(this.chatId);\n if(chatFull) {\n chatFull.available_reactions = newReactions;\n }\n \n appChatsManager.setChatAvailableReactions(this.chatId, newReactions);\n originalReactions = newReactions;\n };\n\n const saveReactionsDebounced = debounce(saveReactions, 3000, false, true);\n\n this.eventListener.addEventListener('destroy', saveReactions, {once: true});\n\n this.scrollable.append(toggleSection.container, reactionsSection.container);\n }\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { SliderSuperTab } from \"../../slider\"\r\nimport InputField from \"../../inputField\";\r\nimport EditPeer from \"../../editPeer\";\r\nimport { SettingSection } from \"../../sidebarLeft\";\r\nimport Row from \"../../row\";\r\nimport Button from \"../../button\";\r\nimport appChatsManager, { ChatRights } from \"../../../lib/appManagers/appChatsManager\";\r\nimport appProfileManager from \"../../../lib/appManagers/appProfileManager\";\r\nimport { Chat, ChatFull } from \"../../../layer\";\r\nimport AppChatTypeTab from \"./chatType\";\r\nimport rootScope from \"../../../lib/rootScope\";\r\nimport AppGroupPermissionsTab from \"./groupPermissions\";\r\nimport { i18n, LangPackKey } from \"../../../lib/langPack\";\r\nimport PopupDeleteDialog from \"../../popups/deleteDialog\";\r\nimport { attachClickEvent } from \"../../../helpers/dom/clickEvent\";\r\nimport toggleDisability from \"../../../helpers/dom/toggleDisability\";\r\nimport CheckboxField from \"../../checkboxField\";\r\nimport appReactionsManager from \"../../../lib/appManagers/appReactionsManager\";\r\nimport AppChatReactionsTab from \"./chatReactions\";\r\n\r\nexport default class AppEditChatTab extends SliderSuperTab {\r\n private chatNameInputField: InputField;\r\n private descriptionInputField: InputField;\r\n private editPeer: EditPeer;\r\n private tempId: number;\r\n public chatId: ChatId;\r\n\r\n protected async _init() {\r\n // * cleanup prev\r\n this.listenerSetter.removeAll();\r\n this.scrollable.container.innerHTML = '';\r\n this.tempId ??= 0;\r\n const tempId = ++this.tempId;\r\n\r\n this.container.classList.add('edit-peer-container', 'edit-group-container');\r\n this.setTitle('Edit');\r\n \r\n let chatFull = await appProfileManager.getChatFull(this.chatId, true);\r\n\r\n const chat: Chat.chat | Chat.channel = appChatsManager.getChat(this.chatId);\r\n const isBroadcast = appChatsManager.isBroadcast(this.chatId);\r\n const isChannel = appChatsManager.isChannel(this.chatId);\r\n\r\n const chatUpdateListeners: (() => void)[] = [];\r\n const addChatUpdateListener = (callback: () => void) => {\r\n chatUpdateListeners.push(callback);\r\n };\r\n\r\n this.listenerSetter.add(rootScope)('chat_update', (chatId) => {\r\n if(this.chatId === chatId) {\r\n chatUpdateListeners.forEach(callback => callback());\r\n }\r\n });\r\n\r\n this.listenerSetter.add(rootScope)('chat_full_update', (chatId) => {\r\n if(this.chatId === chatId) {\r\n chatFull = appProfileManager.getCachedFullChat(chatId) || chatFull;\r\n }\r\n });\r\n\r\n const peerId = this.chatId.toPeerId(true);\r\n const canChangeType = appChatsManager.hasRights(this.chatId, 'change_type');\r\n const canChangePermissions = appChatsManager.hasRights(this.chatId, 'change_permissions');\r\n\r\n {\r\n const section = new SettingSection({noDelimiter: true});\r\n const inputFields: InputField[] = [];\r\n\r\n const inputWrapper = document.createElement('div');\r\n inputWrapper.classList.add('input-wrapper');\r\n \r\n this.chatNameInputField = new InputField({\r\n label: isBroadcast ? 'EnterChannelName' : 'CreateGroup.NameHolder',\r\n name: 'chat-name',\r\n maxLength: 255,\r\n required: true\r\n });\r\n this.descriptionInputField = new InputField({\r\n label: 'DescriptionPlaceholder',\r\n name: 'chat-description',\r\n maxLength: 255\r\n });\r\n \r\n this.chatNameInputField.setOriginalValue(chat.title);\r\n this.descriptionInputField.setOriginalValue(chatFull.about);\r\n\r\n inputWrapper.append(this.chatNameInputField.container, this.descriptionInputField.container);\r\n \r\n inputFields.push(this.chatNameInputField, this.descriptionInputField);\r\n\r\n this.editPeer = new EditPeer({\r\n peerId,\r\n inputFields,\r\n listenerSetter: this.listenerSetter\r\n });\r\n this.content.append(this.editPeer.nextBtn);\r\n\r\n section.content.append(this.editPeer.avatarEdit.container, inputWrapper);\r\n \r\n if(canChangeType) {\r\n const chatTypeRow = new Row({\r\n titleLangKey: isBroadcast ? 'ChannelType' : 'GroupType',\r\n clickable: () => {\r\n const tab = new AppChatTypeTab(this.slider);\r\n tab.chatId = this.chatId;\r\n tab.chatFull = chatFull;\r\n tab.open();\r\n\r\n this.listenerSetter.add(tab.eventListener)('destroy', setChatTypeSubtitle);\r\n },\r\n icon: 'lock'\r\n });\r\n\r\n const setChatTypeSubtitle = () => {\r\n chatTypeRow.subtitle.textContent = '';\r\n\r\n let key: LangPackKey;\r\n if(isBroadcast) {\r\n key = (chat as Chat.channel).username ? 'TypePublic' : 'TypePrivate';\r\n } else {\r\n key = (chat as Chat.channel).username ? 'TypePublicGroup' : 'TypePrivateGroup';\r\n }\r\n\r\n chatTypeRow.subtitle.append(i18n(key));\r\n };\r\n\r\n setChatTypeSubtitle();\r\n section.content.append(chatTypeRow.container);\r\n }\r\n\r\n if(canChangeType || canChangePermissions) {\r\n const reactionsRow = new Row({\r\n titleLangKey: 'Reactions',\r\n icon: 'reactions',\r\n clickable: () => {\r\n const tab = new AppChatReactionsTab(this.slider);\r\n tab.chatId = this.chatId;\r\n tab.open().then(() => {\r\n if(this.tempId !== tempId) {\r\n return;\r\n }\r\n \r\n this.listenerSetter.add(tab.eventListener)('destroy', setReactionsLength);\r\n });\r\n }\r\n });\r\n\r\n const availableReactions = await appReactionsManager.getAvailableReactions();\r\n const availableReactionsLength = availableReactions.filter(availableReaction => !availableReaction.pFlags.inactive).length;\r\n const setReactionsLength = () => {\r\n const reactions = chatFull.available_reactions ?? [];\r\n reactionsRow.subtitle.innerHTML = reactions.length + '/' + availableReactionsLength;\r\n };\r\n\r\n setReactionsLength();\r\n\r\n section.content.append(reactionsRow.container);\r\n }\r\n\r\n if(canChangePermissions && !isBroadcast) {\r\n const flags = [\r\n 'send_messages',\r\n 'send_media',\r\n 'send_stickers',\r\n 'send_polls',\r\n 'embed_links',\r\n 'invite_users',\r\n 'pin_messages',\r\n 'change_info'\r\n ] as ChatRights[];\r\n\r\n const permissionsRow = new Row({\r\n titleLangKey: 'ChannelPermissions',\r\n clickable: () => {\r\n const tab = new AppGroupPermissionsTab(this.slider);\r\n tab.chatId = this.chatId;\r\n tab.open();\r\n },\r\n icon: 'permissions',\r\n });\r\n\r\n const setPermissionsLength = () => {\r\n permissionsRow.subtitle.innerHTML = flags.reduce((acc, f) => acc + +appChatsManager.hasRights(this.chatId, f, chat.default_banned_rights), 0) + '/' + flags.length;\r\n };\r\n\r\n setPermissionsLength(); \r\n section.content.append(permissionsRow.container);\r\n\r\n this.listenerSetter.add(rootScope)('chat_update', (chatId) => {\r\n if(this.chatId === chatId) {\r\n setPermissionsLength();\r\n }\r\n });\r\n }\r\n\r\n /* const administratorsRow = new Row({\r\n titleLangKey: 'PeerInfo.Administrators',\r\n subtitle: '' + ((chatFull as ChatFull.channelFull).admins_count || 1),\r\n icon: 'admin',\r\n clickable: true\r\n });\r\n\r\n section.content.append(administratorsRow.container); */\r\n\r\n this.scrollable.append(section.container);\r\n\r\n attachClickEvent(this.editPeer.nextBtn, () => {\r\n this.editPeer.nextBtn.disabled = true;\r\n \r\n let promises: Promise[] = [];\r\n\r\n const id = this.chatId;\r\n if(this.chatNameInputField.isValidToChange()) {\r\n promises.push(appChatsManager.editTitle(id, this.chatNameInputField.value));\r\n }\r\n\r\n if(this.descriptionInputField.isValidToChange()) {\r\n promises.push(appChatsManager.editAbout(id, this.descriptionInputField.value));\r\n }\r\n\r\n if(this.editPeer.uploadAvatar) {\r\n promises.push(this.editPeer.uploadAvatar().then(inputFile => {\r\n return appChatsManager.editPhoto(id, inputFile);\r\n }));\r\n }\r\n \r\n Promise.race(promises).finally(() => {\r\n this.editPeer.nextBtn.removeAttribute('disabled');\r\n this.close();\r\n });\r\n }, {listenerSetter: this.listenerSetter});\r\n\r\n \r\n /* if(appChatsManager.hasRights(-this.peerId, 'change_info')) {\r\n const discussionRow = new Row({\r\n titleLangKey: 'PeerInfo.Discussion',\r\n subtitleLangKey: 'PeerInfo.Discussion.Add',\r\n clickable: true,\r\n icon: 'message'\r\n });\r\n\r\n section.content.append(discussionRow.container);\r\n }\r\n\r\n const administratorsRow = new Row({\r\n titleLangKey: 'PeerInfo.Administrators',\r\n subtitle: '' + chatFull.admins_count,\r\n icon: 'admin',\r\n clickable: true\r\n });\r\n\r\n section.content.append(administratorsRow.container); */\r\n\r\n if(isBroadcast && appChatsManager.hasRights(this.chatId, 'change_info')) {\r\n const signMessagesCheckboxField = new CheckboxField({\r\n text: 'PeerInfo.SignMessages',\r\n checked: !!(chat as Chat.channel).pFlags.signatures,\r\n withRipple: true\r\n });\r\n\r\n this.listenerSetter.add(signMessagesCheckboxField.input)('change', () => {\r\n const toggle = signMessagesCheckboxField.toggleDisability(true);\r\n appChatsManager.toggleSignatures(this.chatId, signMessagesCheckboxField.checked).then(() => {\r\n toggle();\r\n });\r\n });\r\n\r\n addChatUpdateListener(() => {\r\n signMessagesCheckboxField.setValueSilently(!!(chat as Chat.channel).pFlags.signatures);\r\n });\r\n\r\n section.content.append(signMessagesCheckboxField.label);\r\n }\r\n }\r\n\r\n if(!isBroadcast) {\r\n const section = new SettingSection({\r\n\r\n });\r\n\r\n /* const membersRow = new Row({\r\n titleLangKey: isBroadcast ? 'PeerInfo.Subscribers' : 'GroupMembers',\r\n icon: 'newgroup',\r\n clickable: true\r\n });\r\n\r\n membersRow.subtitle.append(i18n('Subscribers', [numberThousandSplitter(335356)]));\r\n\r\n section.content.append(membersRow.container); */\r\n\r\n if(!isBroadcast && canChangeType) {\r\n const showChatHistoryCheckboxField = new CheckboxField({\r\n text: 'ChatHistory',\r\n withRipple: true\r\n });\r\n\r\n this.listenerSetter.add(showChatHistoryCheckboxField.input)('change', () => {\r\n const toggle = showChatHistoryCheckboxField.toggleDisability(true);\r\n appChatsManager.togglePreHistoryHidden(this.chatId, !showChatHistoryCheckboxField.checked).then(() => {\r\n toggle();\r\n });\r\n });\r\n\r\n // ! it won't be updated because chatFull will be old\r\n const onChatUpdate = () => {\r\n showChatHistoryCheckboxField.setValueSilently(isChannel && !(chatFull as ChatFull.channelFull).pFlags.hidden_prehistory);\r\n };\r\n\r\n onChatUpdate();\r\n addChatUpdateListener(onChatUpdate);\r\n \r\n section.content.append(showChatHistoryCheckboxField.label);\r\n }\r\n\r\n if(section.content.childElementCount) {\r\n this.scrollable.append(section.container);\r\n }\r\n }\r\n\r\n if(appChatsManager.hasRights(this.chatId, 'delete_chat')) {\r\n const section = new SettingSection({});\r\n\r\n const btnDelete = Button('btn-primary btn-transparent danger', {icon: 'delete', text: isBroadcast ? 'PeerInfo.DeleteChannel' : 'DeleteAndExitButton'});\r\n\r\n attachClickEvent(btnDelete, () => {\r\n new PopupDeleteDialog(peerId/* , 'delete' */, undefined, (promise) => {\r\n const toggle = toggleDisability([btnDelete], true);\r\n promise.then(() => {\r\n this.close();\r\n }, () => {\r\n toggle();\r\n });\r\n });\r\n }, {listenerSetter: this.listenerSetter});\r\n\r\n section.content.append(btnDelete);\r\n\r\n this.scrollable.append(section.container);\r\n }\r\n\r\n if(!isChannel) {\r\n // ! this one will fire earlier than tab's closeAfterTimeout (destroy) event and listeners will be erased, so destroy won't fire\r\n this.listenerSetter.add(rootScope)('dialog_migrate', ({migrateFrom, migrateTo}) => {\r\n if(peerId === migrateFrom) {\r\n this.chatId = migrateTo.toChatId();\r\n this._init();\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected init() {\r\n return this._init();\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { SliderSuperTab } from \"../../slider\"\r\nimport InputField from \"../../inputField\";\r\nimport EditPeer from \"../../editPeer\";\r\nimport { SettingSection } from \"../../sidebarLeft\";\r\nimport Row from \"../../row\";\r\nimport CheckboxField from \"../../checkboxField\";\r\nimport Button from \"../../button\";\r\nimport appUsersManager from \"../../../lib/appManagers/appUsersManager\";\r\nimport appNotificationsManager from \"../../../lib/appManagers/appNotificationsManager\";\r\nimport PeerTitle from \"../../peerTitle\";\r\nimport appMessagesManager from \"../../../lib/appManagers/appMessagesManager\";\r\nimport rootScope from \"../../../lib/rootScope\";\r\nimport appPeersManager from \"../../../lib/appManagers/appPeersManager\";\r\nimport PopupPeer from \"../../popups/peer\";\r\nimport { addCancelButton } from \"../../popups\";\r\nimport { i18n } from \"../../../lib/langPack\";\r\nimport { attachClickEvent } from \"../../../helpers/dom/clickEvent\";\r\nimport toggleDisability from \"../../../helpers/dom/toggleDisability\";\r\n\r\nexport default class AppEditContactTab extends SliderSuperTab {\r\n private nameInputField: InputField;\r\n private lastNameInputField: InputField;\r\n private editPeer: EditPeer;\r\n public peerId: PeerId;\r\n\r\n protected init() {\r\n this.container.classList.add('edit-peer-container', 'edit-contact-container');\r\n const isNew = !appUsersManager.isContact(this.peerId.toUserId());\r\n this.setTitle(isNew ? 'AddContactTitle' : 'Edit');\r\n\r\n {\r\n const section = new SettingSection({noDelimiter: true});\r\n const inputFields: InputField[] = [];\r\n\r\n const inputWrapper = document.createElement('div');\r\n inputWrapper.classList.add('input-wrapper');\r\n \r\n this.nameInputField = new InputField({\r\n label: 'FirstName',\r\n name: 'contact-name',\r\n maxLength: 70,\r\n required: true\r\n });\r\n this.lastNameInputField = new InputField({\r\n label: 'LastName',\r\n name: 'contact-lastname',\r\n maxLength: 70\r\n });\r\n\r\n if(this.peerId) {\r\n const user = appUsersManager.getUser(this.peerId);\r\n\r\n if(isNew) {\r\n this.nameInputField.setDraftValue(user.first_name);\r\n this.lastNameInputField.setDraftValue(user.last_name);\r\n } else {\r\n this.nameInputField.setOriginalValue(user.first_name);\r\n this.lastNameInputField.setOriginalValue(user.last_name);\r\n }\r\n }\r\n \r\n inputWrapper.append(this.nameInputField.container, this.lastNameInputField.container);\r\n inputFields.push(this.nameInputField, this.lastNameInputField);\r\n\r\n this.editPeer = new EditPeer({\r\n peerId: this.peerId,\r\n inputFields,\r\n listenerSetter: this.listenerSetter,\r\n doNotEditAvatar: true\r\n });\r\n this.content.append(this.editPeer.nextBtn);\r\n\r\n if(this.peerId) {\r\n const div = document.createElement('div');\r\n div.classList.add('avatar-edit');\r\n div.append(this.editPeer.avatarElem);\r\n \r\n const notificationsCheckboxField = new CheckboxField({\r\n text: 'Notifications'\r\n });\r\n \r\n notificationsCheckboxField.input.addEventListener('change', (e) => {\r\n if(!e.isTrusted) {\r\n return;\r\n }\r\n \r\n appMessagesManager.togglePeerMute(this.peerId);\r\n });\r\n \r\n this.listenerSetter.add(rootScope)('notify_settings', (update) => {\r\n if(update.peer._ !== 'notifyPeer') return;\r\n const peerId = appPeersManager.getPeerId(update.peer.peer);\r\n if(this.peerId === peerId) {\r\n const enabled = !appNotificationsManager.isMuted(update.notify_settings);\r\n if(enabled !== notificationsCheckboxField.checked) {\r\n notificationsCheckboxField.checked = enabled;\r\n }\r\n }\r\n });\r\n \r\n const profileNameDiv = document.createElement('div');\r\n profileNameDiv.classList.add('profile-name');\r\n profileNameDiv.append(new PeerTitle({\r\n peerId: this.peerId\r\n }).element);\r\n //profileNameDiv.innerHTML = 'Karen Stanford';\r\n \r\n const profileSubtitleDiv = document.createElement('div');\r\n profileSubtitleDiv.classList.add('profile-subtitle');\r\n profileSubtitleDiv.append(i18n('EditContact.OriginalName'));\r\n\r\n section.content.append(div, profileNameDiv, profileSubtitleDiv, inputWrapper);\r\n\r\n if(!isNew) {\r\n const notificationsRow = new Row({\r\n checkboxField: notificationsCheckboxField\r\n });\r\n \r\n const enabled = !appNotificationsManager.isPeerLocalMuted(this.peerId, false);\r\n notificationsCheckboxField.checked = enabled;\r\n\r\n section.content.append(notificationsRow.container);\r\n } else {\r\n const user = appUsersManager.getUser(this.peerId);\r\n\r\n const phoneRow = new Row({\r\n icon: 'phone',\r\n titleLangKey: user.phone ? undefined : 'MobileHidden',\r\n title: user.phone ? appUsersManager.formatUserPhone(user.phone) : undefined,\r\n subtitleLangKey: user.phone ? 'Phone' : 'MobileHiddenExceptionInfo',\r\n subtitleLangArgs: user.phone ? undefined : [new PeerTitle({peerId: this.peerId}).element]\r\n });\r\n\r\n section.content.append(phoneRow.container);\r\n }\r\n } else {\r\n section.content.append(inputWrapper);\r\n }\r\n\r\n this.scrollable.append(section.container);\r\n\r\n attachClickEvent(this.editPeer.nextBtn, () => {\r\n this.editPeer.nextBtn.disabled = true;\r\n\r\n appUsersManager.addContact(this.peerId, this.nameInputField.value, this.lastNameInputField.value, appUsersManager.getUser(this.peerId).phone)\r\n .finally(() => {\r\n this.editPeer.nextBtn.removeAttribute('disabled');\r\n this.close();\r\n });\r\n }, {listenerSetter: this.listenerSetter});\r\n }\r\n\r\n if(!isNew) {\r\n const section = new SettingSection({\r\n \r\n });\r\n\r\n const btnDelete = Button('btn-primary btn-transparent danger', {icon: 'delete', text: 'PeerInfo.DeleteContact'});\r\n\r\n attachClickEvent(btnDelete, () => {\r\n new PopupPeer('popup-delete-contact', {\r\n peerId: this.peerId,\r\n titleLangKey: 'DeleteContact',\r\n descriptionLangKey: 'AreYouSureDeleteContact',\r\n buttons: addCancelButton([{\r\n langKey: 'Delete',\r\n callback: () => {\r\n const toggle = toggleDisability([btnDelete], true);\r\n\r\n appUsersManager.deleteContacts([this.peerId]).then(() => {\r\n this.close();\r\n }, () => {\r\n toggle();\r\n });\r\n },\r\n isDanger: true\r\n }])\r\n }).show();\r\n }, {listenerSetter: this.listenerSetter});\r\n\r\n section.content.append(btnDelete);\r\n\r\n this.scrollable.append(section.container);\r\n }\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { SliderSuperTab } from \"../../slider\";\r\nimport AppSelectPeers from \"../../appSelectPeers\";\r\nimport { setButtonLoader } from \"../../misc\";\r\nimport { LangPackKey, _i18n } from \"../../../lib/langPack\";\r\nimport ButtonCorner from \"../../buttonCorner\";\r\n\r\nexport default class AppAddMembersTab extends SliderSuperTab {\r\n private nextBtn: HTMLButtonElement;\r\n private selector: AppSelectPeers;\r\n private peerType: 'channel' | 'chat' | 'privacy';\r\n private takeOut: (peerIds: PeerId[]) => Promise | false | void;\r\n private skippable: boolean;\r\n\r\n protected init() {\r\n this.container.classList.add('add-members-container');\r\n this.nextBtn = ButtonCorner({icon: 'arrow_next'});\r\n this.content.append(this.nextBtn);\r\n this.scrollable.container.remove();\r\n \r\n this.nextBtn.addEventListener('click', () => {\r\n const peerIds = this.selector.getSelected().map(sel => sel.toPeerId());\r\n\r\n if(this.skippable) {\r\n this.takeOut(peerIds);\r\n this.close();\r\n } else {\r\n const promise = this.takeOut(peerIds);\r\n\r\n if(promise instanceof Promise) {\r\n this.attachToPromise(promise);\r\n } else if(promise === undefined) {\r\n this.close();\r\n }\r\n }\r\n });\r\n }\r\n\r\n public attachToPromise(promise: Promise) {\r\n const removeLoader = setButtonLoader(this.nextBtn, 'arrow_next');\r\n\r\n promise.then(() => {\r\n this.close();\r\n }, () => {\r\n removeLoader();\r\n });\r\n }\r\n\r\n public open(options: {\r\n title: LangPackKey,\r\n placeholder: LangPackKey,\r\n type: AppAddMembersTab['peerType'], \r\n takeOut?: AppAddMembersTab['takeOut'],\r\n skippable: boolean,\r\n selectedPeerIds?: PeerId[]\r\n }) {\r\n const ret = super.open();\r\n\r\n this.setTitle(options.title);\r\n this.peerType = options.type;\r\n this.takeOut = options.takeOut;\r\n this.skippable = options.skippable;\r\n\r\n const isPrivacy = this.peerType === 'privacy';\r\n this.selector = new AppSelectPeers({\r\n appendTo: this.content, \r\n onChange: this.skippable ? null : (length) => {\r\n this.nextBtn.classList.toggle('is-visible', !!length);\r\n }, \r\n peerType: [isPrivacy ? 'dialogs' : 'contacts'],\r\n placeholder: options.placeholder,\r\n exceptSelf: isPrivacy,\r\n filterPeerTypeBy: isPrivacy ? ['isAnyGroup', 'isUser'] : undefined\r\n });\r\n\r\n if(options.selectedPeerIds) {\r\n this.selector.addInitial(options.selectedPeerIds);\r\n }\r\n\r\n this.nextBtn.classList.add('tgico-arrow_next');\r\n this.nextBtn.innerHTML = '';\r\n this.nextBtn.disabled = false;\r\n this.nextBtn.classList.toggle('is-visible', this.skippable);\r\n\r\n return ret;\r\n }\r\n}","import { IS_FIREFOX } from \"./userAgent\";\n\nconst IS_PARALLAX_SUPPORTED = !IS_FIREFOX && false;\n\nexport default IS_PARALLAX_SUPPORTED;\n","import { _i18n } from \"../lib/langPack\";\n\nexport default function generateFakeIcon(isScam?: boolean) {\n const span = document.createElement('span');\n span.classList.add('badge-fake');\n _i18n(span, isScam ? 'ScamMessage' : 'FakeMessage');\n return span;\n}","import { Chat, User } from \"../layer\";\nimport appPeersManager from \"../lib/appManagers/appPeersManager\";\nimport generateFakeIcon from \"./generateFakeIcon\";\nimport generateVerifiedIcon from \"./generateVerifiedIcon\";\n\nexport default function generateTitleIcons(peerId: PeerId) {\n const elements: Element[] = [];\n const peer = appPeersManager.getPeer(peerId);\n if(peer?.pFlags?.verified) {\n elements.push(generateVerifiedIcon());\n }\n\n if((peer as Chat.channel).pFlags.fake || (peer as User.user).pFlags.scam) {\n elements.push(generateFakeIcon((peer as User.user).pFlags.scam));\n }\n\n return elements;\n}\n","export default function generateVerifiedIcon() {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttributeNS(null, 'viewBox', '0 0 24 24');\n svg.setAttributeNS(null, 'width', '24');\n svg.setAttributeNS(null, 'height', '24');\n svg.classList.add('verified-icon');\n\n const use = document.createElementNS('http://www.w3.org/2000/svg', 'use');\n use.setAttributeNS(null, 'href', '#verified-background');\n use.classList.add('verified-background');\n\n const use2 = document.createElementNS('http://www.w3.org/2000/svg', 'use');\n use2.setAttributeNS(null, 'href', '#verified-check');\n use2.classList.add('verified-check');\n\n svg.append(use, use2);\n\n return svg;\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport cancelEvent from \"../helpers/dom/cancelEvent\";\r\nimport { IS_TOUCH_SUPPORTED } from \"../environment/touchSupport\";\r\nimport rootScope from \"../lib/rootScope\";\r\nimport safeAssign from \"../helpers/object/safeAssign\";\r\n\r\nconst getEvent = (e: TouchEvent | MouseEvent) => {\r\n return (e as TouchEvent).touches ? (e as TouchEvent).touches[0] : e as MouseEvent;\r\n};\r\n\r\nconst attachGlobalListenerTo = window;\r\n\r\nlet RESET_GLOBAL = false;\r\nrootScope.addEventListener('context_menu_toggle', (visible) => {\r\n RESET_GLOBAL = visible;\r\n});\r\n\r\nexport type SwipeHandlerOptions = {\r\n element: SwipeHandler['element'],\r\n onSwipe: SwipeHandler['onSwipe'],\r\n verifyTouchTarget?: SwipeHandler['verifyTouchTarget'],\r\n onFirstSwipe?: SwipeHandler['onFirstSwipe'],\r\n onReset?: SwipeHandler['onReset'],\r\n cursor?: SwipeHandler['cursor'],\r\n cancelEvent?: SwipeHandler['cancelEvent'],\r\n listenerOptions?: SwipeHandler['listenerOptions']\r\n};\r\n\r\nexport default class SwipeHandler {\r\n private element: HTMLElement;\r\n private onSwipe: (xDiff: number, yDiff: number, e: TouchEvent | MouseEvent) => boolean | void;\r\n private verifyTouchTarget: (evt: TouchEvent | MouseEvent) => boolean;\r\n private onFirstSwipe: () => void;\r\n private onReset: () => void;\r\n private cursor: 'grabbing' | 'move' | 'row-resize' | 'col-resize' | 'nesw-resize' | 'nwse-resize' | 'ne-resize' | 'se-resize' | 'sw-resize' | 'nw-resize' | 'n-resize' | 'e-resize' | 's-resize' | 'w-resize' | '' = 'grabbing';\r\n private cancelEvent = true;\r\n private listenerOptions: boolean | AddEventListenerOptions = false;\r\n private setCursorTo: HTMLElement;\r\n\r\n private hadMove = false;\r\n private xDown: number = null;\r\n private yDown: number = null;\r\n\r\n constructor(options: SwipeHandlerOptions) {\r\n safeAssign(this, options);\r\n \r\n this.setCursorTo = this.element;\r\n\r\n this.setListeners();\r\n }\r\n\r\n public setListeners() {\r\n if(!IS_TOUCH_SUPPORTED) {\r\n this.element.addEventListener('mousedown', this.handleStart, this.listenerOptions);\r\n attachGlobalListenerTo.addEventListener('mouseup', this.reset);\r\n } else {\r\n this.element.addEventListener('touchstart', this.handleStart, this.listenerOptions);\r\n attachGlobalListenerTo.addEventListener('touchend', this.reset);\r\n }\r\n }\r\n\r\n public removeListeners() {\r\n if(!IS_TOUCH_SUPPORTED) {\r\n this.element.removeEventListener('mousedown', this.handleStart, this.listenerOptions);\r\n attachGlobalListenerTo.removeEventListener('mouseup', this.reset);\r\n } else {\r\n this.element.removeEventListener('touchstart', this.handleStart, this.listenerOptions);\r\n attachGlobalListenerTo.removeEventListener('touchend', this.reset);\r\n }\r\n }\r\n\r\n public setCursor(cursor: SwipeHandler['cursor']) {\r\n this.cursor = cursor;\r\n \r\n if(!IS_TOUCH_SUPPORTED && this.hadMove) {\r\n this.setCursorTo.style.setProperty('cursor', this.cursor, 'important');\r\n }\r\n }\r\n\r\n reset = (e?: Event) => {\r\n /* if(e) {\r\n cancelEvent(e);\r\n } */\r\n\r\n if(IS_TOUCH_SUPPORTED) {\r\n attachGlobalListenerTo.removeEventListener('touchmove', this.handleMove, {capture: true});\r\n } else {\r\n attachGlobalListenerTo.removeEventListener('mousemove', this.handleMove);\r\n this.setCursorTo.style.cursor = '';\r\n }\r\n\r\n if(this.onReset && this.hadMove) {\r\n this.onReset();\r\n }\r\n\r\n this.xDown = this.yDown = null;\r\n this.hadMove = false;\r\n };\r\n\r\n handleStart = (_e: TouchEvent | MouseEvent) => {\r\n const e = getEvent(_e);\r\n if(this.verifyTouchTarget && !this.verifyTouchTarget(_e)) {\r\n return this.reset();\r\n }\r\n\r\n this.xDown = e.clientX;\r\n this.yDown = e.clientY;\r\n\r\n if(IS_TOUCH_SUPPORTED) {\r\n attachGlobalListenerTo.addEventListener('touchmove', this.handleMove, {passive: false, capture: true});\r\n } else {\r\n attachGlobalListenerTo.addEventListener('mousemove', this.handleMove, false);\r\n }\r\n };\r\n\r\n handleMove = (_e: TouchEvent | MouseEvent) => {\r\n if(this.xDown === null || this.yDown === null || RESET_GLOBAL) {\r\n this.reset();\r\n return;\r\n }\r\n\r\n if(this.cancelEvent) {\r\n cancelEvent(_e);\r\n }\r\n\r\n const e = getEvent(_e);\r\n const xUp = e.clientX;\r\n const yUp = e.clientY;\r\n\r\n const xDiff = this.xDown - xUp;\r\n const yDiff = this.yDown - yUp;\r\n\r\n if(!this.hadMove) {\r\n if(!xDiff && !yDiff) {\r\n return;\r\n }\r\n\r\n this.hadMove = true;\r\n\r\n if(!IS_TOUCH_SUPPORTED) {\r\n this.setCursorTo.style.setProperty('cursor', this.cursor, 'important');\r\n }\r\n\r\n if(this.onFirstSwipe) {\r\n this.onFirstSwipe();\r\n }\r\n }\r\n\r\n // if(Math.abs(xDiff) > Math.abs(yDiff)) { /*most significant*/\r\n // if(xDiff > 0) { /* left swipe */ \r\n\r\n // } else { /* right swipe */\r\n\r\n // } \r\n // } else {\r\n // if(yDiff > 0) { /* up swipe */ \r\n \r\n // } else { /* down swipe */\r\n \r\n // }\r\n // }\r\n\r\n /* reset values */\r\n const onSwipeResult = this.onSwipe(xDiff, yDiff, _e);\r\n if(onSwipeResult !== undefined && onSwipeResult) {\r\n this.reset();\r\n }\r\n };\r\n}\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport IS_PARALLAX_SUPPORTED from \"../environment/parallaxSupport\";\nimport { IS_TOUCH_SUPPORTED } from \"../environment/touchSupport\";\nimport findAndSplice from \"../helpers/array/findAndSplice\";\nimport cancelEvent from \"../helpers/dom/cancelEvent\";\nimport { attachClickEvent } from \"../helpers/dom/clickEvent\";\nimport filterChatPhotosMessages from \"../helpers/filterChatPhotosMessages\";\nimport ListenerSetter from \"../helpers/listenerSetter\";\nimport ListLoader from \"../helpers/listLoader\";\nimport { fastRaf } from \"../helpers/schedulers\";\nimport { Message, ChatFull, MessageAction, Photo } from \"../layer\";\nimport appAvatarsManager from \"../lib/appManagers/appAvatarsManager\";\nimport appMessagesManager, { AppMessagesManager } from \"../lib/appManagers/appMessagesManager\";\nimport appPeersManager from \"../lib/appManagers/appPeersManager\";\nimport appPhotosManager from \"../lib/appManagers/appPhotosManager\";\nimport appProfileManager from \"../lib/appManagers/appProfileManager\";\nimport rootScope from \"../lib/rootScope\";\nimport { openAvatarViewer } from \"./avatar\";\nimport Scrollable from \"./scrollable\";\nimport SwipeHandler from \"./swipeHandler\";\nimport { wrapPhoto } from \"./wrappers\";\n\nconst LOAD_NEAREST = 3;\n\nexport default class PeerProfileAvatars {\n private static BASE_CLASS = 'profile-avatars';\n private static SCALE = IS_PARALLAX_SUPPORTED ? 2 : 1;\n private static TRANSLATE_TEMPLATE = IS_PARALLAX_SUPPORTED ? `translate3d({x}, 0, -1px) scale(${PeerProfileAvatars.SCALE})` : 'translate({x}, 0)';\n public container: HTMLElement;\n public avatars: HTMLElement;\n public gradient: HTMLElement;\n public info: HTMLElement;\n public arrowPrevious: HTMLElement;\n public arrowNext: HTMLElement;\n private tabs: HTMLDivElement;\n private listLoader: ListLoader;\n private peerId: PeerId;\n private intersectionObserver: IntersectionObserver;\n private loadCallbacks: Map void>;\n private listenerSetter: ListenerSetter;\n private swipeHandler: SwipeHandler;\n\n constructor(public scrollable: Scrollable) {\n this.container = document.createElement('div');\n this.container.classList.add(PeerProfileAvatars.BASE_CLASS + '-container');\n\n this.avatars = document.createElement('div');\n this.avatars.classList.add(PeerProfileAvatars.BASE_CLASS + '-avatars');\n\n this.gradient = document.createElement('div');\n this.gradient.classList.add(PeerProfileAvatars.BASE_CLASS + '-gradient');\n\n this.info = document.createElement('div');\n this.info.classList.add(PeerProfileAvatars.BASE_CLASS + '-info');\n\n this.tabs = document.createElement('div');\n this.tabs.classList.add(PeerProfileAvatars.BASE_CLASS + '-tabs');\n\n this.arrowPrevious = document.createElement('div');\n this.arrowPrevious.classList.add(PeerProfileAvatars.BASE_CLASS + '-arrow', 'tgico-avatarprevious');\n\n /* const previousIcon = document.createElement('i');\n previousIcon.classList.add(PeerProfileAvatars.BASE_CLASS + '-arrow-icon', 'tgico-previous');\n this.arrowBack.append(previousIcon); */\n \n this.arrowNext = document.createElement('div');\n this.arrowNext.classList.add(PeerProfileAvatars.BASE_CLASS + '-arrow', PeerProfileAvatars.BASE_CLASS + '-arrow-next', 'tgico-avatarnext');\n\n /* const nextIcon = document.createElement('i');\n nextIcon.classList.add(PeerProfileAvatars.BASE_CLASS + '-arrow-icon', 'tgico-next');\n this.arrowNext.append(nextIcon); */\n\n this.container.append(this.avatars, this.gradient, this.info, this.tabs, this.arrowPrevious, this.arrowNext);\n\n this.loadCallbacks = new Map();\n this.listenerSetter = new ListenerSetter();\n\n const checkScrollTop = () => {\n if(this.scrollable.scrollTop !== 0) {\n this.scrollable.scrollIntoViewNew({\n element: this.scrollable.container.firstElementChild as HTMLElement, \n position: 'start'\n });\n return false;\n }\n\n return true;\n };\n\n const SWITCH_ZONE = 1 / 3;\n let cancel = false;\n let freeze = false;\n attachClickEvent(this.container, async(_e) => {\n if(freeze) {\n cancelEvent(_e);\n return;\n }\n\n if(cancel) {\n cancel = false;\n return;\n }\n\n if(!checkScrollTop()) {\n return;\n }\n\n const rect = this.container.getBoundingClientRect();\n\n // const e = (_e as TouchEvent).touches ? (_e as TouchEvent).touches[0] : _e as MouseEvent;\n const e = _e;\n const x = e.pageX;\n\n const clickX = x - rect.left;\n if((!this.listLoader.previous.length && !this.listLoader.next.length) \n || (clickX > (rect.width * SWITCH_ZONE) && clickX < (rect.width - rect.width * SWITCH_ZONE))) {\n const peerId = this.peerId;\n\n const targets: {element: HTMLElement, item: Photo.photo['id'] | Message.messageService}[] = [];\n this.listLoader.previous.concat(this.listLoader.current, this.listLoader.next).forEach((item, idx) => {\n targets.push({\n element: /* null */this.avatars.children[idx] as HTMLElement,\n item\n });\n });\n\n const prevTargets = targets.slice(0, this.listLoader.previous.length);\n const nextTargets = targets.slice(this.listLoader.previous.length + 1);\n\n const target = this.avatars.children[this.listLoader.previous.length] as HTMLElement;\n freeze = true;\n openAvatarViewer(target, peerId, () => peerId === this.peerId, this.listLoader.current, prevTargets, nextTargets);\n freeze = false;\n } else {\n const centerX = rect.right - (rect.width / 2);\n const toRight = x > centerX;\n \n // this.avatars.classList.remove('no-transition');\n // fastRaf(() => {\n this.avatars.classList.add('no-transition');\n void this.avatars.offsetLeft; // reflow\n\n let distance: number;\n if(this.listLoader.index === 0 && !toRight) distance = this.listLoader.count - 1;\n else if(this.listLoader.index === (this.listLoader.count - 1) && toRight) distance = -(this.listLoader.count - 1);\n else distance = toRight ? 1 : -1;\n this.listLoader.go(distance);\n\n fastRaf(() => {\n this.avatars.classList.remove('no-transition');\n });\n // });\n }\n }, {listenerSetter: this.listenerSetter});\n\n const cancelNextClick = () => {\n cancel = true;\n document.body.addEventListener(IS_TOUCH_SUPPORTED ? 'touchend' : 'click', (e) => {\n cancel = false;\n }, {once: true});\n };\n\n let width = 0, x = 0, lastDiffX = 0, lastIndex = 0, minX = 0;\n const swipeHandler = this.swipeHandler = new SwipeHandler({\n element: this.avatars, \n onSwipe: (xDiff, yDiff) => {\n lastDiffX = xDiff;\n let lastX = x + xDiff * -PeerProfileAvatars.SCALE;\n if(lastX > 0) lastX = 0;\n else if(lastX < minX) lastX = minX;\n\n this.avatars.style.transform = PeerProfileAvatars.TRANSLATE_TEMPLATE.replace('{x}', lastX + 'px');\n //console.log(xDiff, yDiff);\n return false;\n }, \n verifyTouchTarget: (e) => {\n if(!checkScrollTop()) {\n cancelNextClick();\n cancelEvent(e);\n return false;\n } else if(this.container.classList.contains('is-single') || freeze) {\n return false;\n }\n\n return true;\n }, \n onFirstSwipe: () => {\n const rect = this.avatars.getBoundingClientRect();\n width = rect.width;\n minX = -width * (this.tabs.childElementCount - 1);\n\n /* lastIndex = whichChild(this.tabs.querySelector('.active'));\n x = -width * lastIndex; */\n x = rect.left - this.container.getBoundingClientRect().left;\n \n this.avatars.style.transform = PeerProfileAvatars.TRANSLATE_TEMPLATE.replace('{x}', x + 'px');\n\n this.container.classList.add('is-swiping');\n this.avatars.classList.add('no-transition');\n void this.avatars.offsetLeft; // reflow\n },\n onReset: () => {\n const addIndex = Math.ceil(Math.abs(lastDiffX) / (width / PeerProfileAvatars.SCALE)) * (lastDiffX >= 0 ? 1 : -1);\n cancelNextClick();\n \n //console.log(addIndex);\n\n this.avatars.classList.remove('no-transition');\n fastRaf(() => {\n this.listLoader.go(addIndex);\n this.container.classList.remove('is-swiping');\n });\n }\n });\n\n this.intersectionObserver = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if(!entry.isIntersecting) {\n return;\n }\n\n this.loadNearestToTarget(entry.target);\n });\n });\n\n /* this.listenerSetter.add(rootScope)('avatar_update', (peerId) => {\n if(this.peerId === peerId) {\n const photo = appPeersManager.getPeerPhoto(peerId);\n if(photo) {\n const id = photo.photo_id;\n const previous = this.listLoader.previous;\n for(let i = 0; i < previous.length; ++i) {\n if(previous[i] === id)\n }\n this.listLoader.previous.forEach((_id, idx, arr) => {});\n }\n }\n }); */\n }\n\n public setPeer(peerId: PeerId) {\n this.peerId = peerId;\n\n const photo = appPeersManager.getPeerPhoto(peerId);\n if(!photo) {\n return;\n }\n\n const listLoader: PeerProfileAvatars['listLoader'] = this.listLoader = new ListLoader({\n loadCount: 50,\n loadMore: (anchor, older, loadCount) => {\n if(!older) return Promise.resolve({count: undefined, items: []});\n\n if(peerId.isUser()) {\n const maxId: Photo.photo['id'] = anchor as any;\n return appPhotosManager.getUserPhotos(peerId, maxId, loadCount).then(value => {\n return {\n count: value.count,\n items: value.photos\n };\n });\n } else {\n const promises: [Promise, ReturnType] = [] as any;\n if(!listLoader.current) {\n promises.push(Promise.resolve(appProfileManager.getChatFull(peerId.toChatId())));\n }\n \n promises.push(appMessagesManager.getSearch({\n peerId,\n maxId: Number.MAX_SAFE_INTEGER,\n inputFilter: {\n _: 'inputMessagesFilterChatPhotos'\n },\n limit: loadCount,\n backLimit: 0\n }));\n\n return Promise.all(promises).then((result) => {\n const value = result.pop() as typeof result[1];\n\n filterChatPhotosMessages(value);\n\n if(!listLoader.current) {\n const chatFull = result[0];\n const message = findAndSplice(value.history, m => {\n return ((m as Message.messageService).action as MessageAction.messageActionChannelEditPhoto).photo.id === chatFull.chat_photo.id;\n }) as Message.messageService;\n \n listLoader.current = message || appMessagesManager.generateFakeAvatarMessage(this.peerId, chatFull.chat_photo);\n }\n\n //console.log('avatars loaded:', value);\n return {\n count: value.count,\n items: value.history\n };\n });\n }\n },\n processItem: this.processItem,\n onJump: (item, older) => {\n const id = this.listLoader.index;\n //const nextId = Math.max(0, id);\n const x = 100 * PeerProfileAvatars.SCALE * id;\n this.avatars.style.transform = PeerProfileAvatars.TRANSLATE_TEMPLATE.replace('{x}', `-${x}%`);\n\n const activeTab = this.tabs.querySelector('.active');\n if(activeTab) activeTab.classList.remove('active');\n\n const tab = this.tabs.children[id] as HTMLElement;\n tab.classList.add('active');\n\n this.loadNearestToTarget(this.avatars.children[id]);\n }\n });\n\n if(photo._ === 'userProfilePhoto') {\n listLoader.current = photo.photo_id;\n }\n\n this.processItem(listLoader.current);\n\n // listLoader.loaded\n listLoader.load(true);\n }\n\n public addTab() {\n const tab = document.createElement('div');\n tab.classList.add(PeerProfileAvatars.BASE_CLASS + '-tab');\n this.tabs.append(tab);\n\n if(this.tabs.childElementCount === 1) {\n tab.classList.add('active');\n }\n\n this.container.classList.toggle('is-single', this.tabs.childElementCount <= 1);\n }\n\n public processItem = (photoId: Photo.photo['id'] | Message.messageService) => {\n const avatar = document.createElement('div');\n avatar.classList.add(PeerProfileAvatars.BASE_CLASS + '-avatar', 'media-container');\n\n let photo: Photo.photo;\n if(photoId) {\n photo = typeof(photoId) !== 'object' ? \n appPhotosManager.getPhoto(photoId) : \n (photoId.action as MessageAction.messageActionChannelEditPhoto).photo as Photo.photo;\n }\n\n const img = new Image();\n img.classList.add('avatar-photo');\n img.draggable = false;\n\n const loadCallback = () => {\n if(photo) {\n const res = wrapPhoto({\n container: avatar,\n photo,\n size: appPhotosManager.choosePhotoSize(photo, 420, 420, false),\n withoutPreloader: true\n });\n \n [res.images.thumb, res.images.full].filter(Boolean).forEach(img => {\n img.classList.add('avatar-photo');\n });\n } else {\n const photo = appPeersManager.getPeerPhoto(this.peerId);\n appAvatarsManager.putAvatar(avatar, this.peerId, photo, 'photo_big', img);\n }\n };\n\n if(this.avatars.childElementCount <= LOAD_NEAREST) {\n loadCallback();\n } else {\n this.intersectionObserver.observe(avatar);\n this.loadCallbacks.set(avatar, loadCallback);\n }\n\n this.avatars.append(avatar);\n\n this.addTab();\n\n return photoId;\n };\n\n private loadNearestToTarget(target: Element) {\n const children = Array.from(target.parentElement.children);\n const idx = children.indexOf(target);\n const slice = children.slice(Math.max(0, idx - LOAD_NEAREST), Math.min(children.length, idx + LOAD_NEAREST));\n\n slice.forEach(target => {\n const callback = this.loadCallbacks.get(target);\n if(callback) {\n callback();\n this.loadCallbacks.delete(target);\n this.intersectionObserver.unobserve(target);\n }\n });\n }\n\n public cleanup() {\n this.listenerSetter.removeAll();\n this.swipeHandler.removeListeners();\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport IS_PARALLAX_SUPPORTED from \"../environment/parallaxSupport\";\nimport callbackify from \"../helpers/callbackify\";\nimport { copyTextToClipboard } from \"../helpers/clipboard\";\nimport replaceContent from \"../helpers/dom/replaceContent\";\nimport ListenerSetter from \"../helpers/listenerSetter\";\nimport { fastRaf } from \"../helpers/schedulers\";\nimport { Chat, ChatFull, User } from \"../layer\";\nimport appChatsManager, { Channel } from \"../lib/appManagers/appChatsManager\";\nimport appImManager from \"../lib/appManagers/appImManager\";\nimport appMessagesManager from \"../lib/appManagers/appMessagesManager\";\nimport appNotificationsManager from \"../lib/appManagers/appNotificationsManager\";\nimport appPeersManager from \"../lib/appManagers/appPeersManager\";\nimport appProfileManager from \"../lib/appManagers/appProfileManager\";\nimport appUsersManager from \"../lib/appManagers/appUsersManager\";\nimport I18n from \"../lib/langPack\";\nimport RichTextProcessor from \"../lib/richtextprocessor\";\nimport rootScope from \"../lib/rootScope\";\nimport AvatarElement from \"./avatar\";\nimport CheckboxField from \"./checkboxField\";\nimport generateTitleIcons from \"./generateTitleIcons\";\nimport PeerProfileAvatars from \"./peerProfileAvatars\";\nimport PeerTitle from \"./peerTitle\";\nimport Row from \"./row\";\nimport Scrollable from \"./scrollable\";\nimport { SettingSection, generateDelimiter } from \"./sidebarLeft\";\nimport { toast } from \"./toast\";\n\nlet setText = (text: string, row: Row) => {\n //fastRaf(() => {\n row.title.innerHTML = text || '';\n row.container.style.display = text ? '' : 'none';\n //});\n};\n\nexport default class PeerProfile {\n public element: HTMLElement;\n private avatars: PeerProfileAvatars;\n private avatar: AvatarElement;\n private section: SettingSection;\n private name: HTMLDivElement;\n private subtitle: HTMLDivElement;\n private bio: Row;\n private username: Row;\n private phone: Row;\n private notifications: Row;\n private location: Row;\n private link: Row;\n \n private cleaned: boolean;\n private setMoreDetailsTimeout: number;\n private setPeerStatusInterval: number;\n\n private peerId: PeerId;\n private threadId: number;\n\n constructor(\n public scrollable: Scrollable, \n private listenerSetter?: ListenerSetter,\n private isDialog = true\n ) {\n if(!IS_PARALLAX_SUPPORTED) {\n this.scrollable.container.classList.add('no-parallax');\n }\n\n if(!listenerSetter) {\n this.listenerSetter = new ListenerSetter();\n }\n }\n\n public init() {\n this.init = null;\n\n\n this.element = document.createElement('div');\n this.element.classList.add('profile-content');\n\n this.section = new SettingSection({\n noDelimiter: true\n });\n\n this.avatar = new AvatarElement();\n this.avatar.classList.add('profile-avatar', 'avatar-120');\n this.avatar.isDialog = this.isDialog;\n this.avatar.attachClickEvent();\n\n this.name = document.createElement('div');\n this.name.classList.add('profile-name');\n\n this.subtitle = document.createElement('div');\n this.subtitle.classList.add('profile-subtitle');\n\n this.bio = new Row({\n title: ' ',\n subtitleLangKey: 'UserBio',\n icon: 'info',\n clickable: (e) => {\n if((e.target as HTMLElement).tagName === 'A') {\n return;\n }\n \n Promise.resolve(appProfileManager.getProfileByPeerId(this.peerId)).then(full => {\n copyTextToClipboard(full.about);\n toast(I18n.format('BioCopied', true));\n });\n }\n });\n\n this.bio.title.classList.add('pre-wrap');\n\n this.username = new Row({\n title: ' ',\n subtitleLangKey: 'Username',\n icon: 'username',\n clickable: () => {\n const peer: Channel | User.user = appPeersManager.getPeer(this.peerId);\n copyTextToClipboard('@' + peer.username);\n toast(I18n.format('UsernameCopied', true));\n }\n });\n\n this.phone = new Row({\n title: ' ',\n subtitleLangKey: 'Phone',\n icon: 'phone',\n clickable: () => {\n const peer: User = appUsersManager.getUser(this.peerId);\n copyTextToClipboard('+' + peer.phone);\n toast(I18n.format('PhoneCopied', true));\n }\n });\n\n this.link = new Row({\n title: ' ',\n subtitleLangKey: 'SetUrlPlaceholder',\n icon: 'link',\n clickable: () => {\n copyTextToClipboard(this.link.title.textContent);\n // Promise.resolve(appProfileManager.getChatFull(this.peerId.toChatId())).then(chatFull => {\n // copyTextToClipboard(chatFull.exported_invite.link);\n toast(I18n.format('LinkCopied', true));\n // });\n }\n });\n\n this.location = new Row({\n title: ' ',\n subtitleLangKey: 'ChatLocation',\n icon: 'location'\n });\n\n this.section.content.append(\n this.phone.container,\n this.username.container,\n this.location.container,\n this.bio.container,\n this.link.container\n );\n\n const {listenerSetter} = this;\n if(this.isDialog) {\n this.notifications = new Row({\n checkboxField: new CheckboxField({toggle: true}),\n titleLangKey: 'Notifications',\n icon: 'unmute'\n });\n\n listenerSetter.add(this.notifications.checkboxField.input)('change', (e) => {\n if(!e.isTrusted) {\n return;\n }\n \n //let checked = this.notificationsCheckbox.checked;\n appMessagesManager.togglePeerMute(this.peerId);\n });\n\n listenerSetter.add(rootScope)('dialog_notify_settings', (dialog) => {\n if(this.peerId === dialog.peerId) {\n const muted = appNotificationsManager.isPeerLocalMuted(this.peerId, false);\n this.notifications.checkboxField.checked = !muted;\n }\n });\n\n this.section.content.append(this.notifications.container);\n }\n\n this.element.append(this.section.container);\n\n if(IS_PARALLAX_SUPPORTED) {\n this.element.append(generateDelimiter());\n }\n\n listenerSetter.add(rootScope)('peer_typings', ({peerId}) => {\n if(this.peerId === peerId) {\n this.setPeerStatus();\n }\n });\n\n listenerSetter.add(rootScope)('peer_bio_edit', (peerId) => {\n if(peerId === this.peerId) {\n this.setMoreDetails(true);\n }\n });\n\n listenerSetter.add(rootScope)('peer_title_edit', (peerId) => {\n if(peerId === this.peerId) {\n this.fillUsername();\n }\n });\n\n listenerSetter.add(rootScope)('user_update', (userId) => {\n if(this.peerId === userId.toPeerId()) {\n this.setPeerStatus();\n }\n });\n\n listenerSetter.add(rootScope)('contacts_update', (userId) => {\n if(this.peerId === userId.toPeerId()) {\n const user = appUsersManager.getUser(userId);\n if(!user.pFlags.self || !this.isDialog) {\n this.fillUserPhone();\n }\n }\n });\n\n listenerSetter.add(rootScope)('avatar_update', (peerId) => {\n if(this.peerId === peerId) {\n // const photo = appPeersManager.getPeerPhoto(peerId);\n // if(!photo && this.avatars) {\n this.setAvatar();\n // }\n }\n });\n\n this.setPeerStatusInterval = window.setInterval(this.setPeerStatus, 60e3);\n }\n\n public setPeerStatus = (needClear = false) => {\n const peerId = this.peerId;\n this.element.classList.toggle('is-me', peerId === rootScope.myId);\n if(!peerId || (rootScope.myId === peerId && this.isDialog)) return;\n\n appImManager.setPeerStatus(this.peerId, this.subtitle, needClear, true, () => peerId === this.peerId, !this.isDialog);\n };\n\n public cleanupHTML() {\n [\n this.bio,\n this.phone,\n this.username,\n this.location,\n this.link\n ].forEach(row => {\n row.container.style.display = 'none';\n });\n\n if(this.notifications) {\n this.notifications.container.style.display = '';\n this.notifications.checkboxField.checked = true;\n }\n\n if(this.setMoreDetailsTimeout) {\n window.clearTimeout(this.setMoreDetailsTimeout);\n this.setMoreDetailsTimeout = 0;\n }\n }\n\n private canBeDetailed() {\n return this.peerId !== rootScope.myId || !this.isDialog;\n }\n\n public setAvatar() {\n if(this.canBeDetailed()) {\n const photo = appPeersManager.getPeerPhoto(this.peerId);\n\n if(photo) {\n const oldAvatars = this.avatars;\n this.avatars = new PeerProfileAvatars(this.scrollable);\n this.avatars.setPeer(this.peerId);\n this.avatars.info.append(this.name, this.subtitle);\n \n this.avatar.remove();\n \n if(oldAvatars) oldAvatars.container.replaceWith(this.avatars.container);\n else this.element.prepend(this.avatars.container);\n\n if(IS_PARALLAX_SUPPORTED) {\n this.scrollable.container.classList.add('parallax');\n }\n\n return;\n }\n }\n\n if(IS_PARALLAX_SUPPORTED) {\n this.scrollable.container.classList.remove('parallax');\n }\n\n if(this.avatars) {\n this.avatars.container.remove();\n this.avatars.cleanup();\n this.avatars = undefined;\n }\n\n this.avatar.updateWithOptions({peerId: this.peerId});\n\n this.section.content.prepend(this.avatar, this.name, this.subtitle);\n }\n\n private fillUsername() {\n const {peerId} = this;\n if(peerId.isUser() && this.canBeDetailed()) {\n const username = appPeersManager.getPeerUsername(peerId);\n setText(username, this.username);\n }\n }\n\n private fillUserPhone() {\n const {peerId} = this;\n if(peerId.isUser() && this.canBeDetailed()) {\n const user = appUsersManager.getUser(peerId);\n setText(user.phone ? appUsersManager.formatUserPhone(user.phone) : undefined, this.phone);\n }\n }\n\n private fillNotifications() {\n const notificationsRow = this.notifications;\n if(!notificationsRow) {\n return;\n }\n\n if(this.canBeDetailed()) {\n const muted = appNotificationsManager.isPeerLocalMuted(this.peerId, false);\n notificationsRow.checkboxField.checked = !muted;\n } else {\n fastRaf(() => {\n notificationsRow.container.style.display = 'none';\n });\n }\n }\n\n private fillRows() {\n const peerId = this.peerId;\n\n this.fillUsername();\n this.fillUserPhone();\n this.fillNotifications();\n this.setMoreDetails();\n\n replaceContent(this.name, new PeerTitle({\n peerId,\n dialog: this.isDialog,\n }).element);\n\n this.name.append(...generateTitleIcons(peerId));\n\n this.setPeerStatus(true);\n }\n\n public fillProfileElements() {\n if(!this.cleaned) return;\n this.cleaned = false;\n \n this.cleanupHTML();\n this.setAvatar();\n this.fillRows();\n }\n\n public setMoreDetails(override?: true) {\n if(this.setMoreDetailsTimeout) {\n window.clearTimeout(this.setMoreDetailsTimeout);\n this.setMoreDetailsTimeout = 0;\n }\n\n const peerId = this.peerId;\n const threadId = this.threadId;\n\n if(!peerId || appPeersManager.isRestricted(peerId) || !this.canBeDetailed()) {\n return;\n }\n\n callbackify(appProfileManager.getProfileByPeerId(peerId, override), (peerFull) => {\n if(this.peerId !== peerId || this.threadId !== threadId || appPeersManager.isRestricted(peerId)) {\n //this.log.warn('peer changed');\n return;\n }\n \n //this.log('chatInfo res 2:', chatFull);\n \n // if(peerFull.about) {\n setText(peerFull.about ? RichTextProcessor.wrapRichText(peerFull.about) : undefined, this.bio);\n // }\n\n if(!peerId.isUser()) {\n const chat: Chat.channel = appChatsManager.getChat(peerId.toChatId());\n if(chat.username) {\n setText('https://t.me/' + chat.username, this.link);\n } else {\n const exportedInvite = (peerFull as ChatFull.channelFull).exported_invite;\n if(exportedInvite) {\n setText(exportedInvite.link, this.link);\n }\n }\n }\n\n const location = (peerFull as ChatFull.channelFull).location;\n if(location?._ == 'channelLocation') {\n setText(location.address, this.location);\n }\n\n this.setMoreDetailsTimeout = window.setTimeout(() => this.setMoreDetails(true), 60e3);\n });\n }\n\n public setPeer(peerId: PeerId, threadId = 0) {\n if(this.peerId === peerId && this.threadId === threadId) return;\n\n if(this.init) {\n this.init();\n }\n\n this.peerId = peerId;\n this.threadId = threadId;\n \n this.cleaned = true;\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport appMessagesManager from \"../../../lib/appManagers/appMessagesManager\";\nimport appUsersManager from \"../../../lib/appManagers/appUsersManager\";\nimport rootScope from \"../../../lib/rootScope\";\nimport AppSearchSuper, { SearchSuperType } from \"../../appSearchSuper.\";\nimport SidebarSlider, { SliderSuperTab } from \"../../slider\";\nimport { TransitionSlider } from \"../../transition\";\nimport AppEditChatTab from \"./editChat\";\nimport PeerTitle from \"../../peerTitle\";\nimport AppEditContactTab from \"./editContact\";\nimport appChatsManager from \"../../../lib/appManagers/appChatsManager\";\nimport Button from \"../../button\";\nimport ButtonIcon from \"../../buttonIcon\";\nimport { i18n, LangPackKey } from \"../../../lib/langPack\";\nimport { toastNew } from \"../../toast\";\nimport AppAddMembersTab from \"../../sidebarLeft/tabs/addMembers\";\nimport PopupPickUser from \"../../popups/pickUser\";\nimport PopupPeer, { PopupPeerButtonCallbackCheckboxes, PopupPeerCheckboxOptions } from \"../../popups/peer\";\nimport ButtonCorner from \"../../buttonCorner\";\nimport { attachClickEvent } from \"../../../helpers/dom/clickEvent\";\nimport PeerProfile from \"../../peerProfile\";\n\n// TODO: отредактированное сообщение не изменится\nexport default class AppSharedMediaTab extends SliderSuperTab {\n private editBtn: HTMLElement;\n\n private peerId: PeerId;\n private threadId = 0;\n\n private historiesStorage: {\n [peerId: PeerId]: Partial<{\n [type in SearchSuperType]: {mid: number, peerId: PeerId}[]\n }>\n } = {};\n\n private searchSuper: AppSearchSuper;\n\n private profile: PeerProfile;\n private peerChanged: boolean;\n\n constructor(slider: SidebarSlider) {\n super(slider, false);\n }\n\n public init() {\n //const perf = performance.now();\n\n this.container.classList.add('shared-media-container', 'profile-container');\n\n // * header\n const newCloseBtn = Button('btn-icon sidebar-close-button', {noRipple: true});\n this.closeBtn.replaceWith(newCloseBtn);\n this.closeBtn = newCloseBtn;\n\n const animatedCloseIcon = document.createElement('div');\n animatedCloseIcon.classList.add('animated-close-icon');\n newCloseBtn.append(animatedCloseIcon);\n\n const transitionContainer = document.createElement('div');\n transitionContainer.className = 'transition slide-fade';\n \n const transitionFirstItem = document.createElement('div');\n transitionFirstItem.classList.add('transition-item');\n\n this.title.append(i18n('Profile'));\n this.editBtn = ButtonIcon('edit');\n //const moreBtn = ButtonIcon('more');\n\n transitionFirstItem.append(this.title, this.editBtn/* , moreBtn */);\n\n const transitionLastItem = document.createElement('div');\n transitionLastItem.classList.add('transition-item');\n\n const secondTitle: HTMLElement = this.title.cloneNode() as any;\n secondTitle.append(i18n('PeerInfo.SharedMedia'));\n\n transitionLastItem.append(secondTitle);\n\n transitionContainer.append(transitionFirstItem, transitionLastItem);\n\n this.header.append(transitionContainer);\n\n // * body\n\n this.profile = new PeerProfile(this.scrollable);\n this.profile.init();\n \n this.scrollable.append(this.profile.element);\n\n const HEADER_HEIGHT = 56;\n this.scrollable.onAdditionalScroll = () => {\n const rect = this.searchSuper.nav.getBoundingClientRect(); \n if(!rect.width) return;\n\n const top = rect.top - 1;\n setIsSharedMedia(top <= HEADER_HEIGHT);\n };\n\n const setIsSharedMedia = (isSharedMedia: boolean) => {\n animatedCloseIcon.classList.toggle('state-back', isSharedMedia);\n this.searchSuper.container.classList.toggle('is-full-viewport', isSharedMedia);\n transition(+isSharedMedia);\n\n if(!isSharedMedia) {\n this.searchSuper.cleanScrollPositions();\n }\n };\n\n const transition = TransitionSlider(transitionContainer, 'slide-fade', 400, null, false);\n\n transition(0);\n\n attachClickEvent(this.closeBtn, (e) => {\n if(this.closeBtn.firstElementChild.classList.contains('state-back')) {\n this.scrollable.scrollIntoViewNew({\n element: this.scrollable.container.firstElementChild as HTMLElement, \n position: 'start'\n });\n transition(0);\n animatedCloseIcon.classList.remove('state-back');\n } else if(!this.scrollable.isHeavyAnimationInProgress) {\n this.slider.onCloseBtnClick();\n }\n });\n\n attachClickEvent(this.editBtn, (e) => {\n let tab: AppEditChatTab | AppEditContactTab;\n if(this.peerId.isAnyChat()) {\n tab = new AppEditChatTab(this.slider);\n } else {\n tab = new AppEditContactTab(this.slider);\n }\n\n if(tab) {\n if(tab instanceof AppEditChatTab) {\n tab.chatId = this.peerId.toChatId();\n } else {\n tab.peerId = this.peerId;\n }\n \n tab.open();\n }\n });\n\n rootScope.addEventListener('contacts_update', (userId) => {\n if(this.peerId === userId) {\n this.toggleEditBtn();\n }\n });\n\n rootScope.addEventListener('chat_update', (chatId) => {\n if(this.peerId === chatId.toPeerId(true)) {\n this.toggleEditBtn();\n }\n });\n\n rootScope.addEventListener('history_multiappend', (msgIdsByPeer) => {\n for(const peerId in msgIdsByPeer) {\n this.renderNewMessages(peerId.toPeerId(), Array.from(msgIdsByPeer[peerId]));\n }\n });\n \n rootScope.addEventListener('history_delete', ({peerId, msgs}) => {\n this.deleteDeletedMessages(peerId, Array.from(msgs));\n });\n\n // Calls when message successfully sent and we have an id\n rootScope.addEventListener('message_sent', ({message}) => {\n this.renderNewMessages(message.peerId, [message.mid]);\n });\n\n //this.container.prepend(this.closeBtn.parentElement);\n\n this.searchSuper = new AppSearchSuper({\n mediaTabs: [{\n inputFilter: 'inputMessagesFilterEmpty',\n name: 'PeerMedia.Members',\n type: 'members'\n }, {\n inputFilter: 'inputMessagesFilterPhotoVideo',\n name: 'SharedMediaTab2',\n type: 'media'\n }, {\n inputFilter: 'inputMessagesFilterDocument',\n name: 'SharedFilesTab2',\n type: 'files'\n }, {\n inputFilter: 'inputMessagesFilterUrl',\n name: 'SharedLinksTab2',\n type: 'links'\n }, {\n inputFilter: 'inputMessagesFilterMusic',\n name: 'SharedMusicTab2',\n type: 'music'\n }, {\n inputFilter: 'inputMessagesFilterRoundVoice',\n name: 'SharedVoiceTab2',\n type: 'voice'\n }], \n scrollable: this.scrollable,\n onChangeTab: (mediaTab) => {\n let timeout = mediaTab.type === 'members' && rootScope.settings.animationsEnabled ? 250 : 0;\n setTimeout(() => {\n btnAddMembers.classList.toggle('is-hidden', mediaTab.type !== 'members');\n }, timeout);\n }\n });\n\n this.searchSuper.scrollStartCallback = () => {\n setIsSharedMedia(true);\n };\n\n this.profile.element.append(this.searchSuper.container);\n\n const btnAddMembers = ButtonCorner({icon: 'addmember_filled'});\n this.content.append(btnAddMembers);\n\n btnAddMembers.addEventListener('click', () => {\n const peerId = this.peerId;\n const id = this.peerId.toChatId();\n const isChannel = appChatsManager.isChannel(id);\n\n const showConfirmation = (peerIds: PeerId[], callback: (checked: PopupPeerButtonCallbackCheckboxes) => void) => {\n let titleLangKey: LangPackKey, titleLangArgs: any[],\n descriptionLangKey: LangPackKey, descriptionLangArgs: any[],\n checkboxes: PopupPeerCheckboxOptions[];\n\n if(peerIds.length > 1) {\n titleLangKey = 'AddMembersAlertTitle';\n titleLangArgs = [i18n('Members', [peerIds.length])];\n descriptionLangKey = 'AddMembersAlertCountText';\n descriptionLangArgs = peerIds.map(peerId => {\n const b = document.createElement('b');\n b.append(new PeerTitle({peerId}).element);\n return b;\n });\n\n if(!isChannel) {\n checkboxes = [{\n text: 'AddMembersForwardMessages',\n checked: true\n }];\n }\n } else {\n titleLangKey = 'AddOneMemberAlertTitle';\n descriptionLangKey = 'AddMembersAlertNamesText';\n const b = document.createElement('b');\n b.append(new PeerTitle({\n peerId: peerIds[0]\n }).element);\n descriptionLangArgs = [b];\n\n if(!isChannel) {\n checkboxes = [{\n text: 'AddOneMemberForwardMessages',\n textArgs: [new PeerTitle({peerId: peerIds[0]}).element],\n checked: true\n }];\n }\n }\n\n descriptionLangArgs.push(new PeerTitle({\n peerId\n }).element);\n\n new PopupPeer('popup-add-members', {\n peerId,\n titleLangKey,\n descriptionLangKey,\n descriptionLangArgs,\n buttons: [{\n langKey: 'Add',\n callback\n }],\n checkboxes\n }).show();\n };\n\n const onError = (err: any) => {\n if(err.type === 'USER_PRIVACY_RESTRICTED') {\n toastNew({langPackKey: 'InviteToGroupError'});\n }\n };\n \n if(isChannel) {\n const tab = new AppAddMembersTab(this.slider);\n tab.open({\n type: 'channel',\n skippable: false,\n takeOut: (peerIds) => {\n showConfirmation(peerIds, () => {\n const promise = appChatsManager.inviteToChannel(id, peerIds);\n promise.catch(onError);\n tab.attachToPromise(promise);\n });\n\n return false;\n },\n title: 'GroupAddMembers',\n placeholder: 'SendMessageTo'\n });\n } else {\n new PopupPickUser({\n peerTypes: ['contacts'],\n placeholder: 'Search',\n onSelect: (peerId) => {\n setTimeout(() => {\n showConfirmation([peerId], (checked) => {\n appChatsManager.addChatUser(id, peerId, checked.size ? undefined : 0)\n .catch(onError);\n });\n }, 0);\n },\n });\n }\n });\n\n //console.log('construct shared media time:', performance.now() - perf);\n }\n\n public renderNewMessages(peerId: PeerId, mids: number[]) {\n if(this.init) return; // * not inited yet\n\n if(!this.historiesStorage[peerId]) return;\n \n mids = mids.slice().reverse(); // ! because it will be ascend sorted array\n for(const mediaTab of this.searchSuper.mediaTabs) {\n const inputFilter = mediaTab.inputFilter;\n const filtered = this.searchSuper.filterMessagesByType(mids.map(mid => appMessagesManager.getMessageByPeer(peerId, mid)), inputFilter);\n if(filtered.length) {\n const history = this.historiesStorage[peerId][inputFilter];\n if(history) {\n history.unshift(...filtered.map(message => ({mid: message.mid, peerId: message.peerId})));\n }\n\n if(this.peerId === peerId && this.searchSuper.usedFromHistory[inputFilter] !== -1) {\n this.searchSuper.usedFromHistory[inputFilter] += filtered.length;\n this.searchSuper.performSearchResult(filtered, mediaTab, false);\n }\n }\n }\n }\n\n public deleteDeletedMessages(peerId: PeerId, mids: number[]) {\n if(this.init) return; // * not inited yet\n\n if(!this.historiesStorage[peerId]) return;\n\n for(const mid of mids) {\n for(const type of this.searchSuper.mediaTabs) {\n const inputFilter = type.inputFilter;\n\n const history = this.historiesStorage[peerId][inputFilter];\n if(!history) continue;\n\n const idx = history.findIndex(m => m.mid === mid);\n if(idx !== -1) {\n history.splice(idx, 1);\n\n if(this.peerId === peerId) {\n const container = this.searchSuper.tabs[inputFilter];\n const div = container.querySelector(`div[data-mid=\"${mid}\"][data-peer-id=\"${peerId}\"]`) as HTMLElement;\n if(div) {\n if(this.searchSuper.selection.isSelecting) {\n this.searchSuper.selection.toggleByElement(div);\n }\n\n div.remove();\n }\n \n if(this.searchSuper.usedFromHistory[inputFilter] >= (idx + 1)) {\n this.searchSuper.usedFromHistory[inputFilter]--;\n }\n }\n\n break;\n }\n }\n }\n\n this.scrollable.onScroll();\n }\n\n public cleanupHTML() {\n // const perf = performance.now();\n this.profile.cleanupHTML();\n \n this.editBtn.classList.add('hide');\n\n this.searchSuper.cleanupHTML(true);\n\n this.container.classList.toggle('can-add-members', this.searchSuper.canViewMembers() && appChatsManager.hasRights(this.peerId.toChatId(), 'invite_users'));\n\n // console.log('cleanupHTML shared media time:', performance.now() - perf);\n }\n\n public setLoadMutex(promise: Promise) {\n this.searchSuper.loadMutex = promise;\n }\n\n public setPeer(peerId: PeerId, threadId = 0) {\n if(this.peerId === peerId && this.threadId === threadId) return false;\n\n this.peerId = peerId;\n this.threadId = threadId;\n this.peerChanged = true;\n\n if(this.init) {\n this.init();\n this.init = null;\n }\n\n this.searchSuper.setQuery({\n peerId, \n //threadId, \n historyStorage: this.historiesStorage[peerId] ?? (this.historiesStorage[peerId] = {})\n });\n\n this.profile.setPeer(peerId, threadId);\n \n return true;\n }\n\n public fillProfileElements() {\n if(!this.peerChanged) {\n return;\n }\n\n this.peerChanged = false;\n\n this.cleanupHTML();\n\n this.profile.fillProfileElements();\n\n this.toggleEditBtn();\n }\n\n private toggleEditBtn() {\n let show: boolean;\n if(this.peerId.isUser()) {\n show = this.peerId !== rootScope.myId && appUsersManager.isContact(this.peerId.toUserId());\n } else {\n show = appChatsManager.hasRights(this.peerId.toChatId(), 'change_info');\n }\n\n this.editBtn.classList.toggle('hide', !show);\n }\n\n public loadSidebarMedia(single: boolean, justLoad = false) {\n this.searchSuper.load(single, justLoad);\n }\n\n onOpenAfterTimeout() {\n this.scrollable.onScroll();\n }\n}\n\n// MOUNT_CLASS_TO && (MOUNT_CLASS_TO.AppSharedMediaTab = AppSharedMediaTab);\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport appImManager from \"../../lib/appManagers/appImManager\";\r\nimport SidebarSlider from \"../slider\";\r\nimport mediaSizes, { ScreenSize } from \"../../helpers/mediaSizes\";\r\nimport AppSharedMediaTab from \"./tabs/sharedMedia\";\r\nimport { MOUNT_CLASS_TO } from \"../../config/debug\";\r\n\r\nexport const RIGHT_COLUMN_ACTIVE_CLASSNAME = 'is-right-column-shown';\r\n\r\nexport class AppSidebarRight extends SidebarSlider {\r\n public sharedMediaTab: AppSharedMediaTab;\r\n private isColumnProportionSet = false;\r\n\r\n constructor() {\r\n super({\r\n sidebarEl: document.getElementById('column-right') as HTMLElement,\r\n canHideFirst: true,\r\n navigationType: 'right'\r\n });\r\n\r\n mediaSizes.addEventListener('changeScreen', (from, to) => {\r\n if(to === ScreenSize.medium && from !== ScreenSize.mobile) {\r\n this.toggleSidebar(false);\r\n }\r\n });\r\n\r\n mediaSizes.addEventListener('resize', () => {\r\n this.setColumnProportion();\r\n });\r\n\r\n this.sharedMediaTab = new AppSharedMediaTab(this);\r\n }\r\n\r\n public onCloseTab(id: number, animate: boolean, isNavigation?: boolean) {\r\n if(!this.historyTabIds.length) {\r\n this.toggleSidebar(false, animate);\r\n }\r\n\r\n super.onCloseTab(id, animate, isNavigation);\r\n }\r\n\r\n /* public selectTab(id: number) {\r\n const res = super.selectTab(id);\r\n\r\n if(id !== -1) {\r\n this.toggleSidebar(true);\r\n }\r\n\r\n return res;\r\n } */\r\n\r\n private setColumnProportion() {\r\n const proportion = this.sidebarEl.scrollWidth / this.sidebarEl.previousElementSibling.scrollWidth;\r\n document.documentElement.style.setProperty('--right-column-proportion', '' + proportion);\r\n }\r\n\r\n public toggleSidebar(enable?: boolean, animate?: boolean) {\r\n /////this.log('sidebarEl', this.sidebarEl, enable, isElementInViewport(this.sidebarEl));\r\n\r\n const active = document.body.classList.contains(RIGHT_COLUMN_ACTIVE_CLASSNAME);\r\n let willChange: boolean;\r\n if(enable !== undefined) {\r\n if(enable) {\r\n if(!active) {\r\n willChange = true;\r\n }\r\n } else if(active) {\r\n willChange = true;\r\n }\r\n } else {\r\n willChange = true;\r\n }\r\n\r\n if(!willChange) return Promise.resolve();\r\n\r\n if(!active && !this.historyTabIds.length) {\r\n this.sharedMediaTab.open();\r\n //this.selectTab(this.sharedMediaTab);\r\n }\r\n\r\n if(!this.isColumnProportionSet) {\r\n this.setColumnProportion();\r\n this.isColumnProportionSet = true;\r\n }\r\n\r\n const animationPromise = appImManager.selectTab(active ? 1 : 2, animate);\r\n document.body.classList.toggle(RIGHT_COLUMN_ACTIVE_CLASSNAME, enable);\r\n return animationPromise;\r\n\r\n /* return new Promise((resolve, reject) => {\r\n const hidden: {element: HTMLDivElement, height: number}[] = [];\r\n const observer = new IntersectionObserver((entries) => {\r\n for(const entry of entries) {\r\n const bubble = entry.target as HTMLDivElement;\r\n if(!entry.isIntersecting) {\r\n hidden.push({element: bubble, height: bubble.scrollHeight});\r\n }\r\n }\r\n \r\n for(const item of hidden) {\r\n item.element.style.minHeight = item.height + 'px';\r\n (item.element.firstElementChild as HTMLElement).style.display = 'none';\r\n item.element.style.width = '1px';\r\n }\r\n \r\n //console.log('hidden', hidden);\r\n observer.disconnect();\r\n \r\n set();\r\n \r\n setTimeout(() => {\r\n for(const item of hidden) {\r\n item.element.style.minHeight = '';\r\n item.element.style.width = '';\r\n (item.element.firstElementChild as HTMLElement).style.display = '';\r\n }\r\n\r\n resolve();\r\n }, 200);\r\n });\r\n \r\n const length = Object.keys(appImManager.bubbles).length;\r\n if(length) {\r\n for(const i in appImManager.bubbles) {\r\n observer.observe(appImManager.bubbles[i]);\r\n }\r\n } else {\r\n set();\r\n setTimeout(resolve, 200);\r\n }\r\n }); */\r\n }\r\n}\r\n\r\nconst appSidebarRight = new AppSidebarRight();\r\nMOUNT_CLASS_TO.appSidebarRight = appSidebarRight;\r\nexport default appSidebarRight;\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { SliderSuperTab } from \"../../slider\";\r\nimport appSidebarRight from \"..\";\r\nimport appPollsManager from \"../../../lib/appManagers/appPollsManager\";\r\nimport { roundPercents } from \"../../poll\";\r\nimport { RichTextProcessor } from \"../../../lib/richtextprocessor\";\r\nimport appDialogsManager from \"../../../lib/appManagers/appDialogsManager\";\r\nimport ripple from \"../../ripple\";\r\nimport { i18n } from \"../../../lib/langPack\";\r\n\r\nexport default class AppPollResultsTab extends SliderSuperTab {\r\n private resultsDiv: HTMLElement;\r\n\r\n protected init() {\r\n this.container.id = 'poll-results-container';\r\n this.container.classList.add('chatlist-container');\r\n\r\n this.resultsDiv = document.createElement('div');\r\n this.resultsDiv.classList.add('poll-results');\r\n this.scrollable.append(this.resultsDiv);\r\n }\r\n\r\n public open(message: any) {\r\n const ret = super.open();\r\n const poll = appPollsManager.getPoll(message.media.poll.id);\r\n\r\n this.setTitle(poll.poll.pFlags.quiz ? 'PollResults.Title.Quiz' : 'PollResults.Title.Poll');\r\n\r\n const title = document.createElement('h3');\r\n title.innerHTML = poll.poll.rQuestion;\r\n\r\n const percents = poll.results.results.map(v => v.voters / poll.results.total_voters * 100);\r\n roundPercents(percents);\r\n\r\n const fragment = document.createDocumentFragment();\r\n poll.results.results.forEach((result, idx) => {\r\n if(!result.voters) return;\r\n\r\n const hr = document.createElement('hr');\r\n\r\n const answer = poll.poll.answers[idx];\r\n\r\n // Head\r\n const answerEl = document.createElement('div');\r\n answerEl.classList.add('poll-results-answer');\r\n\r\n const answerTitle = document.createElement('div');\r\n answerTitle.innerHTML = RichTextProcessor.wrapEmojiText(answer.text);\r\n\r\n const answerPercents = document.createElement('div');\r\n answerPercents.innerText = Math.round(percents[idx]) + '%';\r\n\r\n answerEl.append(answerTitle, answerPercents);\r\n\r\n // Humans\r\n const list = appDialogsManager.createChatList();\r\n list.classList.add('poll-results-voters');\r\n\r\n appDialogsManager.setListClickListener(list, () => {\r\n appSidebarRight.onCloseBtnClick();\r\n }, undefined, true);\r\n\r\n list.style.minHeight = Math.min(result.voters, 4) * 50 + 'px';\r\n\r\n fragment.append(hr, answerEl, list);\r\n\r\n let offset: string, limit = 4, loading = false, left = result.voters - 4;\r\n const load = () => {\r\n if(loading) return;\r\n loading = true;\r\n\r\n appPollsManager.getVotes(message, answer.option, offset, limit).then(votesList => {\r\n votesList.votes.forEach(vote => {\r\n const {dom} = appDialogsManager.addDialogNew({\r\n dialog: vote.user_id.toPeerId(false),\r\n container: list,\r\n drawStatus: false,\r\n rippleEnabled: false, \r\n meAsSaved: false,\r\n avatarSize: 32\r\n });\r\n dom.lastMessageSpan.parentElement.remove();\r\n });\r\n\r\n if(offset) {\r\n left -= votesList.votes.length;\r\n (showMore.lastElementChild as HTMLElement).replaceWith(i18n('PollResults.LoadMore', [Math.min(20, left)]));\r\n }\r\n \r\n offset = votesList.next_offset;\r\n limit = 20;\r\n\r\n if(!left || !votesList.votes.length) {\r\n showMore.remove();\r\n }\r\n }).finally(() => {\r\n loading = false;\r\n });\r\n };\r\n\r\n load();\r\n\r\n if(left <= 0) return;\r\n\r\n const showMore = document.createElement('div');\r\n showMore.classList.add('poll-results-more', 'show-more', 'rp-overflow');\r\n showMore.addEventListener('click', load);\r\n ripple(showMore);\r\n const down = document.createElement('div');\r\n down.classList.add('tgico-down');\r\n showMore.append(down, i18n('PollResults.LoadMore', [Math.min(20, left)]));\r\n\r\n fragment.append(showMore);\r\n });\r\n\r\n this.resultsDiv.append(title, fragment);\r\n\r\n appSidebarRight.toggleSidebar(true).then(() => {\r\n /* appPollsManager.getVotes(mid).then(votes => {\r\n console.log('gOt VotEs', votes);\r\n }); */\r\n });\r\n\r\n return ret;\r\n }\r\n}\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport AvatarElement from \"./avatar\";\nimport type { LazyLoadQueueIntersector } from \"./lazyLoadQueue\";\n\nconst CLASS_NAME = 'stacked-avatars';\nconst AVATAR_CLASS_NAME = CLASS_NAME + '-avatar';\nconst AVATAR_CONTAINER_CLASS_NAME = AVATAR_CLASS_NAME + '-container';\n\nexport default class StackedAvatars {\n public container: HTMLElement;\n private lazyLoadQueue: LazyLoadQueueIntersector;\n private avatarSize: number;\n\n constructor(options: {\n lazyLoadQueue?: LazyLoadQueueIntersector,\n avatarSize: number\n }) {\n this.lazyLoadQueue = options.lazyLoadQueue;\n this.avatarSize = options.avatarSize;\n\n this.container = document.createElement('div');\n this.container.classList.add(CLASS_NAME);\n\n this.container.style.setProperty('--avatar-size', options.avatarSize + 'px');\n }\n /**\n * MACOS, ANDROID - без реверса\n * WINDOWS DESKTOP - реверс\n * все приложения накладывают аватарку первую на вторую, а в макете зато вторая на первую, ЛОЛ!\n */\n public render(peerIds: PeerId[], loadPromises?: Promise[]) {\n const children = this.container.children;\n peerIds = peerIds.slice().reverse();\n if(peerIds.length > 3) {\n peerIds = peerIds.slice(-3);\n }\n\n peerIds.forEach((peerId, idx) => {\n let avatarContainer = children[idx] as HTMLElement;\n if(!avatarContainer) {\n avatarContainer = document.createElement('div');\n avatarContainer.classList.add(AVATAR_CONTAINER_CLASS_NAME);\n }\n\n let avatarElem = avatarContainer.firstElementChild as AvatarElement;\n if(!avatarElem) {\n avatarElem = new AvatarElement();\n avatarElem.classList.add('avatar-' + this.avatarSize, AVATAR_CLASS_NAME);\n avatarElem.updateOptions({\n isDialog: false,\n loadPromises\n });\n }\n\n avatarElem.updateWithOptions({\n lazyLoadQueue: this.lazyLoadQueue,\n peerId: peerId\n });\n \n if(!avatarElem.parentNode) {\n avatarContainer.append(avatarElem);\n }\n\n if(!avatarContainer.parentNode) {\n this.container.append(avatarContainer);\n }\n });\n\n // if were 3 and became 2\n (Array.from(children) as HTMLElement[]).slice(peerIds.length).forEach(el => el.remove());\n }\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport mediaSizes from \"../helpers/mediaSizes\";\r\nimport { IS_TOUCH_SUPPORTED } from \"../environment/touchSupport\";\r\nimport appImManager from \"../lib/appManagers/appImManager\";\r\nimport appPollsManager from \"../lib/appManagers/appPollsManager\";\r\nimport serverTimeManager from \"../lib/mtproto/serverTimeManager\";\r\nimport { RichTextProcessor } from \"../lib/richtextprocessor\";\r\nimport rootScope from \"../lib/rootScope\";\r\nimport ripple from \"./ripple\";\r\nimport appSidebarRight from \"./sidebarRight\";\r\nimport AppPollResultsTab from \"./sidebarRight/tabs/pollResults\";\r\nimport { i18n, LangPackKey } from \"../lib/langPack\";\r\nimport { fastRaf } from \"../helpers/schedulers\";\r\nimport SetTransition from \"./singleTransition\";\r\nimport findUpClassName from \"../helpers/dom/findUpClassName\";\r\nimport cancelEvent from \"../helpers/dom/cancelEvent\";\r\nimport { attachClickEvent, detachClickEvent } from \"../helpers/dom/clickEvent\";\r\nimport replaceContent from \"../helpers/dom/replaceContent\";\r\nimport windowSize from \"../helpers/windowSize\";\r\nimport { Poll, PollResults } from \"../layer\";\r\nimport toHHMMSS from \"../helpers/string/toHHMMSS\";\r\nimport StackedAvatars from \"./stackedAvatars\";\r\n\r\nlet lineTotalLength = 0;\r\nconst tailLength = 9;\r\nconst times = 10;\r\nconst fullTime = 340;\r\nconst oneTime = fullTime / times;\r\n\r\nexport const roundPercents = (percents: number[]) => {\r\n //console.log('roundPercents before percents:', percents);\r\n\r\n const sum = percents.reduce((acc, p) => acc + Math.round(p), 0);\r\n if(sum > 100) {\r\n const diff = sum - 100;\r\n const length = percents.length;\r\n for(let i = 0; i < diff; ++i) {\r\n let minIndex = -1, minRemainder = 1;\r\n for(let k = 0; k < length; ++k) {\r\n let remainder = percents[k] % 1;\r\n if(remainder >= 0.5 && remainder < minRemainder) {\r\n minRemainder = remainder;\r\n minIndex = k;\r\n }\r\n }\r\n\r\n if(minIndex === -1) {\r\n //throw new Error('lol chto');\r\n return;\r\n }\r\n\r\n percents[minIndex] -= minRemainder;\r\n }\r\n } else if(sum < 100) {\r\n const diff = 100 - sum;\r\n const length = percents.length;\r\n for(let i = 0; i < diff; ++i) {\r\n let minIndex = -1, maxRemainder = 0;\r\n for(let k = 0; k < length; ++k) {\r\n let remainder = percents[k] % 1;\r\n if(remainder < 0.5 && remainder > maxRemainder) {\r\n maxRemainder = remainder;\r\n minIndex = k;\r\n }\r\n }\r\n\r\n if(minIndex === -1) {\r\n //throw new Error('lol chto');\r\n return;\r\n }\r\n\r\n percents[minIndex] += 1 - maxRemainder;\r\n }\r\n }\r\n\r\n //console.log('roundPercents after percents:', percents);\r\n};\r\n\r\n/* const connectedPolls: {id: string, element: PollElement}[] = [];\r\nrootScope.on('poll_update', (e) => {\r\n const {poll, results} = e as {poll: Poll, results: PollResults};\r\n\r\n //console.log('poll_update', poll, results);\r\n for(const connected of connectedPolls) {\r\n if(connected.id === poll.id) {\r\n const pollElement = connected.element;\r\n pollElement.isClosed = !!poll.pFlags.closed;\r\n pollElement.performResults(results, poll.chosenIndexes);\r\n }\r\n }\r\n}); */\r\n\r\nrootScope.addEventListener('poll_update', ({poll, results}) => {\r\n const pollElements = Array.from(document.querySelectorAll(`poll-element[poll-id=\"${poll.id}\"]`)) as PollElement[];\r\n pollElements.forEach(pollElement => {\r\n //console.log('poll_update', poll, results);\r\n pollElement.isClosed = !!poll.pFlags.closed;\r\n pollElement.performResults(results, poll.chosenIndexes);\r\n });\r\n});\r\n\r\nrootScope.addEventListener('peer_changed', () => {\r\n if(prevQuizHint) {\r\n hideQuizHint(prevQuizHint, prevQuizHintOnHide, prevQuizHintTimeout);\r\n }\r\n});\r\n\r\nmediaSizes.addEventListener('resize', () => {\r\n PollElement.setMaxLength();\r\n PollElement.resizePolls();\r\n});\r\n\r\nmediaSizes.addEventListener('changeScreen', () => {\r\n PollElement.setMaxLength();\r\n});\r\n\r\nconst hideQuizHint = (element: HTMLElement, onHide: () => void, timeout: number) => {\r\n element.classList.remove('active');\r\n\r\n clearTimeout(timeout);\r\n setTimeout(() => {\r\n onHide();\r\n element.remove();\r\n\r\n if(prevQuizHint === element && prevQuizHintOnHide === onHide && prevQuizHintTimeout === timeout) {\r\n prevQuizHint = prevQuizHintOnHide = null;\r\n prevQuizHintTimeout = 0;\r\n }\r\n }, 200);\r\n};\r\n\r\nlet prevQuizHint: HTMLElement, prevQuizHintOnHide: () => void, prevQuizHintTimeout: number;\r\nconst setQuizHint = (solution: string, solution_entities: any[], onHide: () => void) => {\r\n if(prevQuizHint) {\r\n hideQuizHint(prevQuizHint, prevQuizHintOnHide, prevQuizHintTimeout);\r\n }\r\n\r\n const element = document.createElement('div');\r\n element.classList.add('quiz-hint');\r\n\r\n const container = document.createElement('div');\r\n container.classList.add('container', 'tgico');\r\n\r\n const textEl = document.createElement('div');\r\n textEl.classList.add('text');\r\n\r\n container.append(textEl);\r\n element.append(container);\r\n\r\n textEl.innerHTML = RichTextProcessor.wrapRichText(solution, {entities: solution_entities});\r\n appImManager.chat.bubbles.bubblesContainer.append(element);\r\n\r\n void element.offsetLeft; // reflow\r\n element.classList.add('active');\r\n\r\n prevQuizHint = element;\r\n prevQuizHintOnHide = onHide;\r\n prevQuizHintTimeout = window.setTimeout(() => {\r\n hideQuizHint(element, onHide, prevQuizHintTimeout);\r\n }, IS_TOUCH_SUPPORTED ? 5000 : 7000);\r\n};\r\n\r\nexport default class PollElement extends HTMLElement {\r\n public static MAX_OFFSET = -46.5;\r\n public static MAX_LENGTH = 0;\r\n public svgLines: SVGSVGElement[];\r\n private numberDivs: HTMLDivElement[];\r\n private answerDivs: HTMLDivElement[];\r\n private descDiv: HTMLElement;\r\n private typeDiv: HTMLElement;\r\n private avatarsDiv: HTMLElement;\r\n private viewResults: HTMLElement;\r\n private votersCountDiv: HTMLDivElement;\r\n\r\n // private maxLength: number;\r\n // private maxLengths: number[];\r\n private maxPercents: number[];\r\n\r\n public isClosed = false;\r\n private isQuiz = false;\r\n private isRetracted = false;\r\n private isPublic = false;\r\n private isMultiple = false;\r\n private chosenIndexes: number[] = [];\r\n private percents: number[];\r\n\r\n public message: any;\r\n\r\n private quizInterval: number;\r\n private quizTimer: SVGSVGElement;\r\n\r\n private sendVoteBtn: HTMLElement;\r\n private chosingIndexes: number[] = [];\r\n\r\n private sendVotePromise: Promise;\r\n private sentVote = false;\r\n\r\n constructor() {\r\n super();\r\n // элемент создан\r\n }\r\n\r\n public static setMaxLength() {\r\n const width = windowSize.width <= 360 ? windowSize.width - 120 : mediaSizes.active.poll.width;\r\n this.MAX_LENGTH = width + tailLength + this.MAX_OFFSET + -13.7; // 13 - position left\r\n }\r\n\r\n public static resizePolls() {\r\n if(!this.MAX_LENGTH) return;\r\n const pollElements = Array.from(document.querySelectorAll('poll-element.is-voted')) as PollElement[];\r\n pollElements.forEach(pollElement => {\r\n pollElement.svgLines.forEach((svg, idx) => {\r\n //void svg.getBoundingClientRect(); // reflow\r\n pollElement.setLineProgress(idx, 1);\r\n });\r\n });\r\n }\r\n\r\n public render() {\r\n // браузер вызывает этот метод при добавлении элемента в документ\r\n // (может вызываться много раз, если элемент многократно добавляется/удаляется)\r\n\r\n if(!lineTotalLength) {\r\n lineTotalLength = (document.getElementById('poll-line') as any as SVGPathElement).getTotalLength();\r\n //console.log('line total length:', lineTotalLength);\r\n PollElement.setMaxLength();\r\n }\r\n\r\n const pollId = this.message.media.poll.id;\r\n const {poll, results} = appPollsManager.getPoll(pollId);\r\n\r\n /* const timestamp = Date.now() / 1000 | 0;\r\n if(timestamp < this.message.date) { */\r\n if(this.message.pFlags.is_scheduled) {\r\n this.classList.add('disable-hover');\r\n }\r\n\r\n //console.log('pollElement poll:', poll, results);\r\n\r\n let descKey: LangPackKey;\r\n if(poll.pFlags) {\r\n this.isPublic = !!poll.pFlags.public_voters;\r\n this.isQuiz = !!poll.pFlags.quiz;\r\n this.isClosed = !!poll.pFlags.closed;\r\n this.isMultiple = !!poll.pFlags.multiple_choice;\r\n\r\n if(this.isClosed) {\r\n descKey = 'Chat.Poll.Type.Closed';\r\n this.classList.add('is-closed');\r\n } else if(this.isQuiz) {\r\n descKey = this.isPublic ? 'Chat.Poll.Type.Quiz' : 'Chat.Poll.Type.AnonymousQuiz';\r\n } else {\r\n descKey = this.isPublic ? 'Chat.Poll.Type.Public' : 'Chat.Poll.Type.Anonymous';\r\n }\r\n }\r\n\r\n this.classList.toggle('is-multiple', this.isMultiple);\r\n\r\n const multipleSelect = this.isMultiple ? '' : '';\r\n const votes = poll.answers.map((answer, idx) => {\r\n return `\r\n \r\n \r\n \r\n \r\n \r\n \r\n ${multipleSelect}\r\n \r\n \r\n ${RichTextProcessor.wrapEmojiText(answer.text)}\r\n \r\n \r\n \r\n \r\n \r\n `;\r\n }).join('');\r\n\r\n this.innerHTML = `\r\n ${poll.rQuestion}\r\n \r\n \r\n \r\n \r\n ${votes}`;\r\n\r\n this.descDiv = this.firstElementChild.nextElementSibling as HTMLElement;\r\n this.typeDiv = this.descDiv.firstElementChild as HTMLElement;\r\n this.avatarsDiv = this.descDiv.lastElementChild as HTMLElement;\r\n\r\n if(descKey) {\r\n this.typeDiv.append(i18n(descKey));\r\n }\r\n\r\n if(this.isQuiz) {\r\n this.classList.add('is-quiz');\r\n\r\n if(poll.close_period && poll.close_date) {\r\n const timeLeftDiv = document.createElement('div');\r\n timeLeftDiv.classList.add('poll-time');\r\n this.descDiv.append(timeLeftDiv);\r\n\r\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\r\n //svg.setAttributeNS(null, 'viewBox', '0 0 15 15');\r\n svg.classList.add('poll-quiz-timer');\r\n\r\n this.quizTimer = svg;\r\n\r\n const strokeWidth = 2;\r\n const radius = 7;\r\n const circumference = 2 * Math.PI * radius;\r\n\r\n const circle = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\r\n circle.classList.add('poll-quiz-timer-circle');\r\n circle.setAttributeNS(null, 'cx', '16');\r\n circle.setAttributeNS(null, 'cy', '16');\r\n circle.setAttributeNS(null, 'r', '' + radius);\r\n circle.setAttributeNS(null, 'stroke-width', '' + strokeWidth);\r\n\r\n svg.append(circle);\r\n this.descDiv.append(svg);\r\n \r\n const period = poll.close_period * 1000;\r\n const closeTime = (poll.close_date - serverTimeManager.serverTimeOffset) * 1000;\r\n\r\n //console.log('closeTime:', poll.close_date, serverTimeManager.serverTimeOffset, Date.now() / 1000 | 0);\r\n\r\n // let time = Date.now();\r\n // let percents = (closeTime - time) / period;\r\n\r\n // timeLeftDiv.innerHTML = String((closeTime - time) / 1000 + 1 | 0).toHHMMSS();\r\n\r\n // // @ts-ignore\r\n // circle.style.strokeDashoffset = circumference + percents * circumference;\r\n // circle.style.strokeDasharray = ${circumference} ${circumference};\r\n\r\n this.quizInterval = window.setInterval(() => {\r\n const time = Date.now();\r\n const percents = (closeTime - time) / period;\r\n const timeLeft = (closeTime - time) / 1000 + 1 | 0;\r\n timeLeftDiv.innerHTML = toHHMMSS(timeLeft);\r\n \r\n if (timeLeft <= 5) {\r\n timeLeftDiv.style.color = '#ee545c';\r\n circle.style.stroke = '#ee545c';\r\n }\r\n //timeLeftDiv.style.visibility = 'visible';\r\n\r\n // @ts-ignore\r\n circle.style.strokeDashoffset = circumference + percents * circumference;\r\n circle.style.strokeDasharray = `${circumference} ${circumference}`;\r\n\r\n if(time >= closeTime) {\r\n clearInterval(this.quizInterval);\r\n timeLeftDiv.innerHTML = '';\r\n // @ts-ignore\r\n circle.style.strokeDashoffset = circumference;\r\n this.quizInterval = 0;\r\n\r\n setTimeout(() => {\r\n // нужно запросить апдейт чтобы опрос обновился\r\n appPollsManager.getResults(this.message);\r\n }, 3e3);\r\n }\r\n }, 1e3);\r\n }\r\n }\r\n \r\n this.answerDivs = Array.from(this.querySelectorAll('.poll-answer')) as HTMLDivElement[];\r\n this.svgLines = Array.from(this.querySelectorAll('.poll-line')) as SVGSVGElement[];\r\n this.numberDivs = Array.from(this.querySelectorAll('.poll-answer-percents')) as HTMLDivElement[];\r\n\r\n const footerDiv = document.createElement('div');\r\n footerDiv.classList.add('poll-footer');\r\n\r\n this.viewResults = document.createElement('div');\r\n this.viewResults.className = 'poll-footer-button poll-view-results hide';\r\n this.viewResults.append(i18n('Chat.Poll.ViewResults'));\r\n\r\n this.votersCountDiv = document.createElement('div');\r\n this.votersCountDiv.className = 'poll-votes-count';\r\n\r\n footerDiv.append(this.viewResults, this.votersCountDiv);\r\n this.append(footerDiv);\r\n\r\n this.viewResults.addEventListener('click', (e) => {\r\n cancelEvent(e);\r\n\r\n if(!appSidebarRight.isTabExists(AppPollResultsTab)) {\r\n new AppPollResultsTab(appSidebarRight).open(this.message);\r\n }\r\n });\r\n ripple(this.viewResults);\r\n\r\n if(this.isMultiple) {\r\n this.sendVoteBtn = document.createElement('div');\r\n this.sendVoteBtn.classList.add('poll-footer-button', 'poll-send-vote');\r\n this.sendVoteBtn.append(i18n('Chat.Poll.SubmitVote'));\r\n ripple(this.sendVoteBtn);\r\n\r\n if(!poll.chosenIndexes.length) {\r\n this.votersCountDiv.classList.add('hide');\r\n }\r\n\r\n attachClickEvent(this.sendVoteBtn, (e) => {\r\n cancelEvent(e);\r\n /* const indexes = this.answerDivs.filter(el => el.classList.contains('is-chosing')).map(el => +el.dataset.index);\r\n if(indexes.length) {\r\n \r\n } */\r\n if(this.chosingIndexes.length) {\r\n this.sendVotes(this.chosingIndexes).then(() => {\r\n this.chosingIndexes.length = 0;\r\n this.answerDivs.forEach(el => {\r\n el.classList.remove('is-chosing');\r\n });\r\n });\r\n }\r\n });\r\n\r\n footerDiv.append(this.sendVoteBtn);\r\n }\r\n\r\n // const width = this.getBoundingClientRect().width;\r\n // const width = mediaSizes.active.poll.width;\r\n // this.maxLength = width + tailLength + this.maxOffset + -13.7; // 13 - position left\r\n\r\n const canVote = !(poll.chosenIndexes.length || this.isClosed);\r\n if(!canVote || this.isPublic) {\r\n this.performResults(results, poll.chosenIndexes, false);\r\n }\r\n\r\n if(canVote) {\r\n this.setVotersCount(results);\r\n attachClickEvent(this, this.clickHandler);\r\n }\r\n }\r\n\r\n initQuizHint(results: PollResults) {\r\n if(results.solution && results.solution_entities) {\r\n const toggleHint = document.createElement('div');\r\n toggleHint.classList.add('tgico-tip', 'poll-hint');\r\n this.descDiv.append(toggleHint);\r\n\r\n //let active = false;\r\n attachClickEvent(toggleHint, (e) => {\r\n cancelEvent(e);\r\n\r\n //active = true;\r\n toggleHint.classList.add('active');\r\n setQuizHint(results.solution, results.solution_entities, () => {\r\n //active = false;\r\n toggleHint.classList.remove('active');\r\n });\r\n });\r\n\r\n if(this.sentVote) {\r\n const correctResult = results.results.find(r => r.pFlags.correct);\r\n if(correctResult && !correctResult.pFlags.chosen) {\r\n toggleHint.click();\r\n }\r\n }\r\n }\r\n }\r\n\r\n clickHandler(e: Event) {\r\n const target = findUpClassName(e.target, 'poll-answer') as HTMLElement;\r\n if(!target) {\r\n return;\r\n }\r\n \r\n cancelEvent(e);\r\n const answerIndex = +target.dataset.index;\r\n if(this.isMultiple) {\r\n target.classList.toggle('is-chosing');\r\n\r\n const foundIndex = this.chosingIndexes.indexOf(answerIndex);\r\n if(foundIndex !== -1) {\r\n this.chosingIndexes.splice(foundIndex, 1);\r\n } else {\r\n this.chosingIndexes.push(answerIndex);\r\n }\r\n } else {\r\n this.sendVotes([answerIndex]);\r\n }\r\n \r\n /* target.classList.add('is-voting');\r\n setTimeout(() => { // simulate\r\n this.setResults([100, 0], answerIndex);\r\n target.classList.remove('is-voting');\r\n }, 1000); */\r\n }\r\n\r\n sendVotes(indexes: number[]) {\r\n if(this.sendVotePromise) return this.sendVotePromise;\r\n\r\n const targets = this.answerDivs.filter((_, idx) => indexes.includes(idx));\r\n targets.forEach(target => {\r\n target.classList.add('is-voting');\r\n });\r\n \r\n this.classList.add('disable-hover');\r\n this.sentVote = true;\r\n return this.sendVotePromise = appPollsManager.sendVote(this.message, indexes).then(() => {\r\n targets.forEach(target => {\r\n target.classList.remove('is-voting');\r\n });\r\n\r\n this.classList.remove('disable-hover');\r\n }).catch(() => {\r\n this.sentVote = false;\r\n }).finally(() => {\r\n this.sendVotePromise = null;\r\n });\r\n }\r\n\r\n performResults(results: PollResults, chosenIndexes: number[], animate = true) {\r\n if(!rootScope.settings.animationsEnabled) {\r\n animate = false;\r\n }\r\n\r\n if(this.isQuiz && (results.results?.length || this.isClosed)) {\r\n this.answerDivs.forEach((el, idx) => {\r\n el.classList.toggle('is-correct', !!results.results[idx].pFlags.correct);\r\n });\r\n\r\n if(this.initQuizHint) {\r\n this.initQuizHint(results);\r\n this.initQuizHint = null;\r\n }\r\n\r\n if(this.quizInterval) {\r\n clearInterval(this.quizInterval);\r\n this.quizInterval = 0;\r\n }\r\n\r\n if(this.quizTimer?.parentElement) {\r\n this.quizTimer.remove();\r\n }\r\n\r\n const timeEl = this.descDiv.querySelector('.poll-time');\r\n if(timeEl) {\r\n timeEl.remove();\r\n }\r\n }\r\n\r\n if(this.isClosed) {\r\n this.classList.add('is-closed');\r\n replaceContent(this.typeDiv, i18n('Chat.Poll.Type.Closed'));\r\n }\r\n\r\n // set chosen\r\n if(this.chosenIndexes.length !== chosenIndexes.length || this.isClosed) { // if we voted\r\n this.isRetracted = this.chosenIndexes.length && !chosenIndexes.length;\r\n this.chosenIndexes = chosenIndexes.slice();\r\n\r\n if(this.isRetracted) {\r\n attachClickEvent(this, this.clickHandler);\r\n } else {\r\n detachClickEvent(this, this.clickHandler);\r\n }\r\n }\r\n \r\n // is need update\r\n if(this.chosenIndexes.length || this.isRetracted || this.isClosed) {\r\n const percents = results.results.map(v => results.total_voters ? v.voters / results.total_voters * 100 : 0);\r\n\r\n this.classList.toggle('no-transition', !animate);\r\n if(animate) {\r\n SetTransition(this, '', !this.isRetracted, 340);\r\n }\r\n\r\n fastRaf(() => {\r\n this.setResults(this.isRetracted ? this.percents : percents, this.chosenIndexes, animate);\r\n this.percents = percents;\r\n this.isRetracted = false;\r\n });\r\n }\r\n \r\n this.setVotersCount(results);\r\n\r\n if(this.isPublic) {\r\n if(!this.isMultiple) {\r\n this.viewResults.classList.toggle('hide', !results.total_voters || !this.chosenIndexes.length);\r\n this.votersCountDiv.classList.toggle('hide', !!this.chosenIndexes.length);\r\n }\r\n\r\n const peerIds = (results.recent_voters || []).map(userId => userId.toPeerId());\r\n const stackedAvatars = new StackedAvatars({avatarSize: 16});\r\n stackedAvatars.render(peerIds);\r\n replaceContent(this.avatarsDiv, stackedAvatars.container);\r\n }\r\n\r\n if(this.isMultiple) {\r\n const isVoted = !!this.chosenIndexes.length;\r\n\r\n const hideSendVoteBtn = this.isClosed || isVoted;\r\n const hideViewResultsBtn = !this.isPublic || !results.total_voters || (!isVoted && !this.isClosed);\r\n this.sendVoteBtn.classList.toggle('hide', hideSendVoteBtn);\r\n this.viewResults.classList.toggle('hide', hideViewResultsBtn);\r\n this.votersCountDiv.classList.toggle('hide', !hideSendVoteBtn || !hideViewResultsBtn);\r\n }\r\n }\r\n\r\n setResults(percents: number[], chosenIndexes: number[], animate: boolean) {\r\n this.svgLines.forEach(svg => svg.style.display = '');\r\n\r\n this.answerDivs.forEach((el, idx) => {\r\n el.classList.toggle('is-chosen', chosenIndexes.includes(idx));\r\n });\r\n\r\n const maxValue = Math.max(...percents);\r\n // this.maxLengths = percents.map(p => p / maxValue * this.maxLength);\r\n this.maxPercents = percents.map(p => p / maxValue);\r\n\r\n // line\r\n if(this.isRetracted) {\r\n this.svgLines.forEach((svg, idx) => {\r\n this.setLineProgress(idx, -1);\r\n });\r\n } else {\r\n const cb = () => {\r\n this.svgLines.forEach((svg, idx) => {\r\n //void svg.getBoundingClientRect(); // reflow\r\n this.setLineProgress(idx, 1);\r\n });\r\n };\r\n \r\n animate ? fastRaf(cb) : cb();\r\n }\r\n\r\n percents = percents.slice();\r\n roundPercents(percents);\r\n let getPercentValue: (percents: number, index: number) => number;\r\n const iterate = (i: number) => {\r\n percents.forEach((percents, idx) => {\r\n const value = getPercentValue(percents, i);\r\n this.numberDivs[idx].innerText = value + '%';\r\n });\r\n };\r\n // numbers\r\n if(this.isRetracted) {\r\n getPercentValue = (percents, index) => Math.round(percents / times * index);\r\n\r\n if(animate) {\r\n for(let i = (times - 1), k = 0; i >= 0; --i, ++k) {\r\n setTimeout(() => {\r\n iterate(i);\r\n }, oneTime * k);\r\n }\r\n } else {\r\n iterate(0);\r\n }\r\n } else {\r\n getPercentValue = (percents, index) => Math.round(percents / times * (index + 1));\r\n\r\n if(animate) {\r\n for(let i = 0; i < times; ++i) {\r\n setTimeout(() => {\r\n iterate(i);\r\n }, oneTime * i);\r\n }\r\n } else {\r\n iterate(times - 1);\r\n }\r\n }\r\n\r\n if(this.isRetracted) {\r\n if(animate) {\r\n this.classList.add('is-retracting');\r\n }\r\n\r\n this.classList.remove('is-voted');\r\n const cb = () => {\r\n this.svgLines.forEach(svg => svg.style.display = 'none');\r\n };\r\n\r\n if(animate) {\r\n setTimeout(() => {\r\n this.classList.remove('is-retracting');\r\n cb();\r\n }, fullTime);\r\n } else {\r\n cb();\r\n }\r\n } else {\r\n this.classList.add('is-voted');\r\n }\r\n }\r\n\r\n setVotersCount(results: PollResults) {\r\n const votersCount = results.total_voters || 0;\r\n let key: LangPackKey, args = [votersCount];\r\n if(this.isClosed) {\r\n if(this.isQuiz) key = votersCount ? 'Chat.Quiz.TotalVotes' : 'Chat.Quiz.TotalVotesResultEmpty';\r\n else key = votersCount ? 'Chat.Poll.TotalVotes1' : 'Chat.Poll.TotalVotesResultEmpty';\r\n } else {\r\n if(this.isQuiz) key = votersCount ? 'Chat.Quiz.TotalVotes' : 'Chat.Quiz.TotalVotesEmpty';\r\n else key = votersCount ? 'Chat.Poll.TotalVotes1' : 'Chat.Poll.TotalVotesEmpty';\r\n }\r\n \r\n replaceContent(this.votersCountDiv, i18n(key, args));\r\n }\r\n\r\n setLineProgress(index: number, multiplier: number) {\r\n const svg = this.svgLines[index];\r\n\r\n if(multiplier === -1) {\r\n svg.style.strokeDasharray = '';\r\n svg.style.strokeDashoffset = '';\r\n } else {\r\n // svg.style.strokeDasharray = (multiplier * this.maxLengths[index]) + ', 485.9';\r\n svg.style.strokeDasharray = (multiplier * this.maxPercents[index] * PollElement.MAX_LENGTH) + ', 485.9';\r\n // svg.style.strokeDasharray = (multiplier * this.maxPercents[index] * 100) + '%, 485.9';\r\n svg.style.strokeDashoffset = '' + multiplier * PollElement.MAX_OFFSET;\r\n }\r\n }\r\n\r\n // у элемента могут быть ещё другие методы и свойства\r\n}\r\n\r\ncustomElements.define(\"poll-element\", PollElement);\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport type Chat from './chat/chat';\r\nimport { getEmojiToneIndex } from '../vendor/emoji';\r\nimport deferredPromise from '../helpers/cancellablePromise';\r\nimport { formatFullSentTime } from '../helpers/date';\r\nimport mediaSizes, { MediaSizeType, ScreenSize } from '../helpers/mediaSizes';\r\nimport { IS_SAFARI } from '../environment/userAgent';\r\nimport { Message, MessageMedia, PhotoSize, StickerSet, WebPage } from '../layer';\r\nimport appDocsManager, { MyDocument } from \"../lib/appManagers/appDocsManager\";\r\nimport appMessagesManager from '../lib/appManagers/appMessagesManager';\r\nimport appPhotosManager, { MyPhoto } from '../lib/appManagers/appPhotosManager';\r\nimport LottieLoader from '../lib/rlottie/lottieLoader';\r\nimport webpWorkerController from '../lib/webp/webpWorkerController';\r\nimport animationIntersector from './animationIntersector';\r\nimport appMediaPlaybackController, { MediaSearchContext } from './appMediaPlaybackController';\r\nimport AudioElement, { findMediaTargets } from './audio';\r\nimport ReplyContainer from './chat/replyContainer';\r\nimport { Layouter, RectPart } from './groupedLayout';\r\nimport LazyLoadQueue from './lazyLoadQueue';\r\nimport PollElement from './poll';\r\nimport ProgressivePreloader from './preloader';\r\nimport './middleEllipsis';\r\nimport RichTextProcessor from '../lib/richtextprocessor';\r\nimport appImManager from '../lib/appManagers/appImManager';\r\nimport rootScope from '../lib/rootScope';\r\nimport { onMediaLoad } from '../helpers/files';\r\nimport { animateSingle } from '../helpers/animation';\r\nimport renderImageFromUrl from '../helpers/dom/renderImageFromUrl';\r\nimport sequentialDom from '../helpers/sequentialDom';\r\nimport { fastRaf } from '../helpers/schedulers';\r\nimport appDownloadManager, { DownloadBlob, ThumbCache } from '../lib/appManagers/appDownloadManager';\r\nimport appStickersManager from '../lib/appManagers/appStickersManager';\r\nimport cancelEvent from '../helpers/dom/cancelEvent';\r\nimport { attachClickEvent, simulateClickEvent } from '../helpers/dom/clickEvent';\r\nimport isInDOM from '../helpers/dom/isInDOM';\r\nimport lottieLoader from '../lib/rlottie/lottieLoader';\r\nimport { clearBadCharsAndTrim } from '../helpers/cleanSearchText';\r\nimport blur from '../helpers/blur';\r\nimport IS_WEBP_SUPPORTED from '../environment/webpSupport';\r\nimport MEDIA_MIME_TYPES_SUPPORTED from '../environment/mediaMimeTypesSupport';\r\nimport { MiddleEllipsisElement } from './middleEllipsis';\r\nimport { joinElementsWith } from '../lib/langPack';\r\nimport throttleWithRaf from '../helpers/schedulers/throttleWithRaf';\r\nimport { NULL_PEER_ID } from '../lib/mtproto/mtproto_config';\r\nimport findUpClassName from '../helpers/dom/findUpClassName';\r\nimport RLottiePlayer from '../lib/rlottie/rlottiePlayer';\r\nimport assumeType from '../helpers/assumeType';\r\nimport appMessagesIdsManager from '../lib/appManagers/appMessagesIdsManager';\r\nimport throttle from '../helpers/schedulers/throttle';\r\nimport { SendMessageEmojiInteractionData } from '../types';\r\nimport IS_VIBRATE_SUPPORTED from '../environment/vibrateSupport';\r\nimport Row from './row';\r\nimport { ChatAutoDownloadSettings } from '../helpers/autoDownload';\r\nimport formatBytes from '../helpers/formatBytes';\r\nimport toHHMMSS from '../helpers/string/toHHMMSS';\r\n\r\nconst MAX_VIDEO_AUTOPLAY_SIZE = 50 * 1024 * 1024; // 50 MB\r\n\r\nlet roundVideoCircumference = 0;\r\nmediaSizes.addEventListener('changeScreen', (from, to) => {\r\n if(to === ScreenSize.mobile || from === ScreenSize.mobile) {\r\n const elements = Array.from(document.querySelectorAll('.media-round .progress-ring')) as SVGSVGElement[];\r\n const width = mediaSizes.active.round.width;\r\n const halfSize = width / 2;\r\n const radius = halfSize - 7;\r\n roundVideoCircumference = 2 * Math.PI * radius;\r\n elements.forEach(element => {\r\n element.setAttributeNS(null, 'width', '' + width);\r\n element.setAttributeNS(null, 'height', '' + width);\r\n\r\n const circle = element.firstElementChild as SVGCircleElement;\r\n circle.setAttributeNS(null, 'cx', '' + halfSize);\r\n circle.setAttributeNS(null, 'cy', '' + halfSize);\r\n circle.setAttributeNS(null, 'r', '' + radius);\r\n\r\n circle.style.strokeDasharray = roundVideoCircumference + ' ' + roundVideoCircumference;\r\n circle.style.strokeDashoffset = '' + roundVideoCircumference;\r\n });\r\n }\r\n});\r\n\r\nexport function wrapVideo({doc, container, message, boxWidth, boxHeight, withTail, isOut, middleware, lazyLoadQueue, noInfo, group, onlyPreview, withoutPreloader, loadPromises, noPlayButton, size, searchContext, autoDownload}: {\r\n doc: MyDocument, \r\n container?: HTMLElement, \r\n message?: Message.message, \r\n boxWidth?: number, \r\n boxHeight?: number, \r\n withTail?: boolean, \r\n isOut?: boolean,\r\n middleware?: () => boolean,\r\n lazyLoadQueue?: LazyLoadQueue,\r\n noInfo?: true,\r\n noPlayButton?: boolean,\r\n group?: string,\r\n onlyPreview?: boolean,\r\n withoutPreloader?: boolean,\r\n loadPromises?: Promise[],\r\n autoDownload?: ChatAutoDownloadSettings,\r\n size?: PhotoSize,\r\n searchContext?: MediaSearchContext,\r\n}) {\r\n const autoDownloadSize = autoDownload?.video;\r\n let noAutoDownload = autoDownloadSize === 0;\r\n const isAlbumItem = !(boxWidth && boxHeight);\r\n const canAutoplay = /* doc.sticker || */(\r\n (\r\n doc.type !== 'video' || (\r\n doc.size <= MAX_VIDEO_AUTOPLAY_SIZE && \r\n !isAlbumItem\r\n )\r\n ) && (doc.type === 'gif' ? rootScope.settings.autoPlay.gifs : rootScope.settings.autoPlay.videos)\r\n );\r\n let spanTime: HTMLElement, spanPlay: HTMLElement;\r\n\r\n if(!noInfo) {\r\n spanTime = document.createElement('span');\r\n spanTime.classList.add('video-time');\r\n container.append(spanTime);\r\n \r\n let needPlayButton = false;\r\n if(doc.type !== 'gif') {\r\n spanTime.innerText = toHHMMSS(doc.duration, false);\r\n\r\n if(!noPlayButton && doc.type !== 'round') {\r\n if(canAutoplay && !noAutoDownload) {\r\n spanTime.classList.add('tgico', 'can-autoplay');\r\n } else {\r\n needPlayButton = true;\r\n }\r\n }\r\n } else {\r\n spanTime.innerText = 'GIF';\r\n\r\n if(!canAutoplay && !noPlayButton) {\r\n needPlayButton = true;\r\n noAutoDownload = undefined;\r\n }\r\n }\r\n\r\n if(needPlayButton) {\r\n spanPlay = document.createElement('span');\r\n spanPlay.classList.add('video-play', 'tgico-largeplay', 'btn-circle', 'position-center');\r\n container.append(spanPlay);\r\n }\r\n }\r\n\r\n let res: {\r\n thumb?: typeof photoRes,\r\n loadPromise: Promise\r\n } = {} as any;\r\n\r\n if(doc.mime_type === 'image/gif') {\r\n const photoRes = wrapPhoto({\r\n photo: doc, \r\n message, \r\n container, \r\n boxWidth, \r\n boxHeight, \r\n withTail, \r\n isOut, \r\n lazyLoadQueue, \r\n middleware,\r\n withoutPreloader,\r\n loadPromises,\r\n autoDownloadSize,\r\n size\r\n });\r\n\r\n res.thumb = photoRes;\r\n res.loadPromise = photoRes.loadPromises.full;\r\n return res;\r\n }\r\n\r\n /* const video = doc.type === 'round' ? appMediaPlaybackController.addMedia(doc, message.mid) as HTMLVideoElement : document.createElement('video');\r\n if(video.parentElement) {\r\n video.remove();\r\n } */\r\n\r\n let preloader: ProgressivePreloader; // it must be here, otherwise will get error before initialization in round onPlay\r\n\r\n const video = document.createElement('video');\r\n video.classList.add('media-video');\r\n video.setAttribute('playsinline', 'true');\r\n video.muted = true;\r\n if(doc.type === 'round') {\r\n const divRound = document.createElement('div');\r\n divRound.classList.add('media-round', 'z-depth-1');\r\n divRound.dataset.mid = '' + message.mid;\r\n divRound.dataset.peerId = '' + message.peerId;\r\n (divRound as any).message = message;\r\n\r\n const size = mediaSizes.active.round;\r\n const halfSize = size.width / 2;\r\n const strokeWidth = 3.5;\r\n const radius = halfSize - (strokeWidth * 2);\r\n divRound.innerHTML = `\r\n \r\n `;\r\n\r\n const circle = divRound.firstElementChild.firstElementChild as SVGCircleElement;\r\n if(!roundVideoCircumference) {\r\n roundVideoCircumference = 2 * Math.PI * radius;\r\n }\r\n circle.style.strokeDasharray = roundVideoCircumference + ' ' + roundVideoCircumference;\r\n circle.style.strokeDashoffset = '' + roundVideoCircumference;\r\n \r\n spanTime.classList.add('tgico');\r\n\r\n const isUnread = message.pFlags.media_unread;\r\n if(isUnread) {\r\n divRound.classList.add('is-unread');\r\n }\r\n\r\n const canvas = document.createElement('canvas');\r\n canvas.width = canvas.height = doc.w/* * window.devicePixelRatio */;\r\n\r\n divRound.prepend(canvas, spanTime);\r\n divRound.append(video);\r\n container.append(divRound);\r\n\r\n const ctx = canvas.getContext('2d');\r\n /* ctx.beginPath();\r\n ctx.arc(canvas.width / 2, canvas.height / 2, canvas.width / 2, 0, Math.PI * 2);\r\n ctx.clip(); */\r\n\r\n const onLoad = () => {\r\n const message: Message.message = (divRound as any).message;\r\n const globalVideo = appMediaPlaybackController.addMedia(message, !noAutoDownload) as HTMLVideoElement;\r\n const clear = () => {\r\n (appImManager.chat.setPeerPromise || Promise.resolve()).finally(() => {\r\n if(isInDOM(globalVideo)) {\r\n return;\r\n }\r\n \r\n globalVideo.removeEventListener('play', onPlay);\r\n globalVideo.removeEventListener('timeupdate', throttledTimeUpdate);\r\n globalVideo.removeEventListener('pause', onPaused);\r\n globalVideo.removeEventListener('ended', onEnded);\r\n });\r\n };\r\n \r\n const onFrame = () => {\r\n ctx.drawImage(globalVideo, 0, 0);\r\n \r\n const offset = roundVideoCircumference - globalVideo.currentTime / globalVideo.duration * roundVideoCircumference;\r\n circle.style.strokeDashoffset = '' + offset;\r\n \r\n return !globalVideo.paused;\r\n };\r\n\r\n const onTimeUpdate = () => {\r\n if(!globalVideo.duration) {\r\n return;\r\n }\r\n \r\n if(!isInDOM(globalVideo)) {\r\n clear();\r\n return;\r\n }\r\n\r\n if(globalVideo.paused) {\r\n onFrame();\r\n }\r\n \r\n spanTime.innerText = toHHMMSS(globalVideo.duration - globalVideo.currentTime, false);\r\n };\r\n\r\n const throttledTimeUpdate = throttleWithRaf(onTimeUpdate);\r\n \r\n const onPlay = () => {\r\n video.classList.add('hide');\r\n divRound.classList.remove('is-paused');\r\n animateSingle(onFrame, canvas);\r\n \r\n if(preloader && preloader.preloader && preloader.preloader.classList.contains('manual')) {\r\n preloader.onClick();\r\n }\r\n };\r\n \r\n const onPaused = () => {\r\n if(!isInDOM(globalVideo)) {\r\n clear();\r\n return;\r\n }\r\n \r\n divRound.classList.add('is-paused');\r\n };\r\n \r\n const onEnded = () => {\r\n video.classList.remove('hide');\r\n divRound.classList.add('is-paused');\r\n \r\n video.currentTime = 0;\r\n spanTime.innerText = toHHMMSS(globalVideo.duration, false);\r\n \r\n if(globalVideo.currentTime) {\r\n globalVideo.currentTime = 0;\r\n }\r\n };\r\n \r\n globalVideo.addEventListener('play', onPlay);\r\n globalVideo.addEventListener('timeupdate', throttledTimeUpdate);\r\n globalVideo.addEventListener('pause', onPaused);\r\n globalVideo.addEventListener('ended', onEnded);\r\n \r\n attachClickEvent(canvas, (e) => {\r\n cancelEvent(e);\r\n \r\n // ! костыль\r\n if(preloader && !preloader.detached) {\r\n preloader.onClick();\r\n }\r\n \r\n // ! can't use it here. on Safari iOS video won't start.\r\n /* if(globalVideo.readyState < 2) {\r\n return;\r\n } */\r\n \r\n if(globalVideo.paused) {\r\n const hadSearchContext = !!searchContext;\r\n if(appMediaPlaybackController.setSearchContext(searchContext || {\r\n peerId: NULL_PEER_ID, \r\n inputFilter: {_: 'inputMessagesFilterEmpty'}, \r\n useSearch: false\r\n })) {\r\n const [prev, next] = !hadSearchContext ? [] : findMediaTargets(divRound, message.mid/* , searchContext.useSearch */);\r\n appMediaPlaybackController.setTargets({peerId: message.peerId, mid: message.mid}, prev, next);\r\n }\r\n \r\n globalVideo.play();\r\n } else {\r\n globalVideo.pause();\r\n }\r\n });\r\n \r\n if(globalVideo.paused) {\r\n if(globalVideo.duration && globalVideo.currentTime !== globalVideo.duration && globalVideo.currentTime > 0) {\r\n onFrame();\r\n onTimeUpdate();\r\n video.classList.add('hide');\r\n } else {\r\n onPaused();\r\n }\r\n } else {\r\n onPlay();\r\n }\r\n };\r\n\r\n if(message.pFlags.is_outgoing) {\r\n (divRound as any).onLoad = onLoad;\r\n divRound.dataset.isOutgoing = '1';\r\n } else {\r\n onLoad();\r\n }\r\n } else {\r\n video.autoplay = true; // для safari\r\n }\r\n\r\n let photoRes: ReturnType;\r\n if(message) {\r\n photoRes = wrapPhoto({\r\n photo: doc, \r\n message, \r\n container, \r\n boxWidth, \r\n boxHeight, \r\n withTail, \r\n isOut, \r\n lazyLoadQueue, \r\n middleware,\r\n withoutPreloader: true,\r\n loadPromises,\r\n autoDownloadSize: autoDownload?.photo,\r\n size\r\n });\r\n\r\n res.thumb = photoRes;\r\n\r\n if((!canAutoplay && doc.type !== 'gif') || onlyPreview) {\r\n res.loadPromise = photoRes.loadPromises.full;\r\n return res;\r\n }\r\n\r\n if(withTail) {\r\n const foreignObject = (photoRes.images.thumb || photoRes.images.full).parentElement;\r\n video.width = +foreignObject.getAttributeNS(null, 'width');\r\n video.height = +foreignObject.getAttributeNS(null, 'height');\r\n foreignObject.append(video);\r\n }\r\n } else { // * gifs masonry\r\n const gotThumb = appDocsManager.getThumb(doc, false);\r\n if(gotThumb) {\r\n gotThumb.promise.then(() => {\r\n video.poster = gotThumb.cacheContext.url;\r\n });\r\n }\r\n }\r\n\r\n if(!video.parentElement && container) {\r\n (photoRes?.aspecter || container).append(video);\r\n }\r\n\r\n const cacheContext = appDownloadManager.getCacheContext(doc);\r\n\r\n const isUpload = !!(message?.media as any)?.preloader;\r\n if(isUpload) { // means upload\r\n preloader = (message.media as any).preloader as ProgressivePreloader;\r\n preloader.attach(container, false);\r\n noAutoDownload = undefined;\r\n } else if(!cacheContext.downloaded && !doc.supportsStreaming && !withoutPreloader) {\r\n preloader = new ProgressivePreloader({\r\n attachMethod: 'prepend'\r\n });\r\n } else if(doc.supportsStreaming) {\r\n preloader = new ProgressivePreloader({\r\n cancelable: false,\r\n attachMethod: 'prepend'\r\n });\r\n }\r\n\r\n const renderDeferred = deferredPromise();\r\n video.addEventListener('error', (e) => {\r\n if(video.error.code !== 4) {\r\n console.error(\"Error \" + video.error.code + \"; details: \" + video.error.message);\r\n }\r\n \r\n if(preloader && !isUpload) {\r\n preloader.detach();\r\n }\r\n\r\n if(!renderDeferred.isFulfilled) {\r\n renderDeferred.resolve();\r\n }\r\n }, {once: true});\r\n\r\n onMediaLoad(video).then(() => {\r\n if(group) {\r\n animationIntersector.addAnimation(video, group);\r\n }\r\n\r\n if(preloader && !isUpload) {\r\n preloader.detach();\r\n }\r\n\r\n renderDeferred.resolve();\r\n });\r\n\r\n if(doc.type === 'video') {\r\n const onTimeUpdate = () => {\r\n if(!video.videoWidth) {\r\n return;\r\n }\r\n \r\n spanTime.innerText = toHHMMSS(video.duration - video.currentTime, false);\r\n };\r\n\r\n const throttledTimeUpdate = throttleWithRaf(onTimeUpdate);\r\n\r\n video.addEventListener('timeupdate', throttledTimeUpdate);\r\n\r\n if(spanPlay) {\r\n video.addEventListener('timeupdate', () => {\r\n sequentialDom.mutateElement(spanPlay, () => {\r\n spanPlay.remove();\r\n });\r\n }, {once: true});\r\n }\r\n }\r\n\r\n video.muted = true;\r\n video.loop = true;\r\n //video.play();\r\n video.autoplay = true;\r\n\r\n let loadPhotoThumbFunc = noAutoDownload && photoRes?.preloader?.loadFunc;\r\n const load = () => {\r\n if(preloader && noAutoDownload && !withoutPreloader) {\r\n preloader.construct();\r\n preloader.setManual();\r\n }\r\n\r\n let loadPromise: Promise = Promise.resolve();\r\n if((preloader && !isUpload) || withoutPreloader) {\r\n if(!cacheContext.downloaded && !doc.supportsStreaming) {\r\n const promise = loadPromise = appDocsManager.downloadDoc(doc, lazyLoadQueue?.queueId, noAutoDownload);\r\n if(preloader) {\r\n preloader.attach(container, false, promise);\r\n }\r\n } else if(doc.supportsStreaming) {\r\n if(noAutoDownload) {\r\n loadPromise = Promise.reject();\r\n } else if(!cacheContext.downloaded && preloader) { // * check for uploading video\r\n preloader.attach(container, false, null);\r\n video.addEventListener(IS_SAFARI ? 'timeupdate' : 'canplay', () => {\r\n preloader.detach();\r\n }, {once: true});\r\n }\r\n }\r\n }\r\n\r\n if(!noAutoDownload && loadPhotoThumbFunc) {\r\n loadPhotoThumbFunc();\r\n loadPhotoThumbFunc = null;\r\n }\r\n\r\n noAutoDownload = undefined;\r\n\r\n loadPromise.then(() => {\r\n if(middleware && !middleware()) {\r\n renderDeferred.resolve();\r\n return;\r\n }\r\n\r\n if(doc.type === 'round') {\r\n appMediaPlaybackController.resolveWaitingForLoadMedia(message.peerId, message.mid, message.pFlags.is_scheduled);\r\n }\r\n\r\n renderImageFromUrl(video, cacheContext.url);\r\n }, () => {});\r\n\r\n return {download: loadPromise, render: renderDeferred};\r\n };\r\n\r\n if(preloader && !isUpload) {\r\n preloader.setDownloadFunction(load);\r\n }\r\n\r\n /* if(doc.size >= 20e6 && !doc.downloaded) {\r\n let downloadDiv = document.createElement('div');\r\n downloadDiv.classList.add('download');\r\n\r\n let span = document.createElement('span');\r\n span.classList.add('btn-circle', 'tgico-download');\r\n downloadDiv.append(span);\r\n\r\n downloadDiv.addEventListener('click', () => {\r\n downloadDiv.remove();\r\n loadVideo();\r\n });\r\n\r\n container.prepend(downloadDiv);\r\n\r\n return;\r\n } */\r\n\r\n if(doc.type === 'gif' && !canAutoplay) {\r\n attachClickEvent(container, (e) => {\r\n cancelEvent(e);\r\n spanPlay.remove();\r\n load();\r\n }, {capture: true, once: true});\r\n } else {\r\n res.loadPromise = !lazyLoadQueue ? load().render : (lazyLoadQueue.push({div: container, load: () => load().render}), Promise.resolve());\r\n }\r\n\r\n return res;\r\n}\r\n\r\nrootScope.addEventListener('download_start', (docId) => {\r\n const elements = Array.from(document.querySelectorAll(`.document[data-doc-id=\"${docId}\"]`)) as HTMLElement[];\r\n elements.forEach(element => {\r\n if(element.querySelector('.preloader-container.manual')) {\r\n simulateClickEvent(element);\r\n }\r\n });\r\n});\r\n\r\nexport function wrapDocument({message, withTime, fontWeight, voiceAsMusic, showSender, searchContext, loadPromises, autoDownloadSize, lazyLoadQueue, sizeType}: {\r\n message: Message.message, \r\n withTime?: boolean,\r\n fontWeight?: number,\r\n voiceAsMusic?: boolean,\r\n showSender?: boolean,\r\n searchContext?: MediaSearchContext,\r\n loadPromises?: Promise[],\r\n autoDownloadSize?: number,\r\n lazyLoadQueue?: LazyLoadQueue,\r\n sizeType?: MediaSizeType\r\n}): HTMLElement {\r\n if(!fontWeight) fontWeight = 500;\r\n if(!sizeType) sizeType = '' as any;\r\n const noAutoDownload = autoDownloadSize === 0;\r\n\r\n const doc = ((message.media as MessageMedia.messageMediaDocument).document || ((message.media as MessageMedia.messageMediaWebPage).webpage as WebPage.webPage).document) as MyDocument;\r\n const uploading = message.pFlags.is_outgoing && (message.media as any)?.preloader;\r\n if(doc.type === 'audio' || doc.type === 'voice' || doc.type === 'round') {\r\n const audioElement = new AudioElement();\r\n audioElement.withTime = withTime;\r\n audioElement.message = message;\r\n audioElement.noAutoDownload = noAutoDownload;\r\n audioElement.lazyLoadQueue = lazyLoadQueue;\r\n audioElement.loadPromises = loadPromises;\r\n \r\n if(voiceAsMusic) audioElement.voiceAsMusic = voiceAsMusic;\r\n if(searchContext) audioElement.searchContext = searchContext;\r\n if(showSender) audioElement.showSender = showSender;\r\n if(uploading) audioElement.preloader = (message.media as any).preloader;\r\n\r\n audioElement.dataset.fontWeight = '' + fontWeight;\r\n audioElement.dataset.sizeType = sizeType;\r\n audioElement.render();\r\n return audioElement;\r\n }\r\n\r\n let extSplitted = doc.file_name ? doc.file_name.split('.') : '';\r\n let ext = '';\r\n ext = extSplitted.length > 1 && Array.isArray(extSplitted) ? \r\n clearBadCharsAndTrim(extSplitted.pop().split(' ', 1)[0].toLowerCase()) : \r\n 'file';\r\n\r\n let docDiv = document.createElement('div');\r\n docDiv.classList.add('document', `ext-${ext}`);\r\n docDiv.dataset.docId = '' + doc.id;\r\n\r\n const icoDiv = document.createElement('div');\r\n icoDiv.classList.add('document-ico');\r\n\r\n const cacheContext = appDownloadManager.getCacheContext(doc);\r\n if((doc.thumbs?.length || (message.pFlags.is_outgoing && cacheContext.url && doc.type === 'photo'))/* && doc.mime_type !== 'image/gif' */) {\r\n docDiv.classList.add('document-with-thumb');\r\n\r\n let imgs: HTMLImageElement[] = [];\r\n // ! WARNING, use thumbs for check when thumb will be generated for media\r\n if(message.pFlags.is_outgoing && ['photo', 'video'].includes(doc.type)) {\r\n icoDiv.innerHTML = ``;\r\n imgs.push(icoDiv.firstElementChild as HTMLImageElement);\r\n } else {\r\n const wrapped = wrapPhoto({\r\n photo: doc, \r\n message: null, \r\n container: icoDiv, \r\n boxWidth: 54, \r\n boxHeight: 54,\r\n loadPromises,\r\n withoutPreloader: true,\r\n lazyLoadQueue,\r\n size: appPhotosManager.choosePhotoSize(doc, 54, 54, true)\r\n });\r\n icoDiv.style.width = icoDiv.style.height = '';\r\n if(wrapped.images.thumb) imgs.push(wrapped.images.thumb);\r\n if(wrapped.images.full) imgs.push(wrapped.images.full);\r\n }\r\n\r\n imgs.forEach(img => img.classList.add('document-thumb'));\r\n } else {\r\n icoDiv.innerText = ext;\r\n }\r\n\r\n //let fileName = stringMiddleOverflow(doc.file_name || 'Unknown.file', 26);\r\n let fileName = doc.fileName || 'Unknown.file';\r\n const descriptionEl = document.createElement('div');\r\n descriptionEl.classList.add('document-description');\r\n const descriptionParts: (HTMLElement | string | DocumentFragment)[] = [formatBytes(doc.size)];\r\n \r\n if(withTime) {\r\n descriptionParts.push(formatFullSentTime(message.date));\r\n }\r\n\r\n if(showSender) {\r\n descriptionParts.push(appMessagesManager.wrapSenderToPeer(message));\r\n }\r\n\r\n docDiv.innerHTML = `\r\n ${(cacheContext.downloaded && !uploading) || !message.mid ? '' : ``}\r\n \r\n \r\n `;\r\n\r\n const nameDiv = docDiv.querySelector('.document-name') as HTMLElement;\r\n const middleEllipsisEl = new MiddleEllipsisElement();\r\n middleEllipsisEl.dataset.fontWeight = '' + fontWeight;\r\n middleEllipsisEl.dataset.sizeType = sizeType;\r\n middleEllipsisEl.innerHTML = fileName;\r\n\r\n nameDiv.append(middleEllipsisEl);\r\n\r\n if(showSender) {\r\n nameDiv.append(appMessagesManager.wrapSentTime(message));\r\n }\r\n\r\n const sizeDiv = docDiv.querySelector('.document-size') as HTMLElement;\r\n sizeDiv.append(...joinElementsWith(descriptionParts, ' · '));\r\n\r\n docDiv.prepend(icoDiv);\r\n\r\n if(!uploading && message.pFlags.is_outgoing && !message.mid) {\r\n return docDiv;\r\n }\r\n\r\n let downloadDiv: HTMLElement, preloader: ProgressivePreloader = null;\r\n const onLoad = () => {\r\n if(downloadDiv) {\r\n downloadDiv.classList.add('downloaded');\r\n const _downloadDiv = downloadDiv;\r\n setTimeout(() => {\r\n _downloadDiv.remove();\r\n }, 200);\r\n downloadDiv = null;\r\n }\r\n\r\n if(preloader) {\r\n preloader = null;\r\n }\r\n };\r\n\r\n const load = (e?: Event) => {\r\n const save = !e || e.isTrusted;\r\n const doc = appDocsManager.getDoc(docDiv.dataset.docId);\r\n let download: DownloadBlob;\r\n const queueId = appImManager.chat.bubbles ? appImManager.chat.bubbles.lazyLoadQueue.queueId : undefined;\r\n if(!save) {\r\n download = appDocsManager.downloadDoc(doc, queueId);\r\n } else if(doc.type === 'pdf') {\r\n const canOpenAfter = appDocsManager.downloading.has(doc.id) || cacheContext.downloaded;\r\n download = appDocsManager.downloadDoc(doc, queueId);\r\n if(canOpenAfter) {\r\n download.then(() => {\r\n setTimeout(() => { // wait for preloader animation end\r\n const url = appDownloadManager.getCacheContext(doc).url;\r\n window.open(url);\r\n }, rootScope.settings.animationsEnabled ? 250 : 0);\r\n });\r\n }\r\n } else if(MEDIA_MIME_TYPES_SUPPORTED.has(doc.mime_type) && doc.thumbs?.length) {\r\n download = appDocsManager.downloadDoc(doc, queueId);\r\n } else {\r\n download = appDocsManager.saveDocFile(doc, queueId);\r\n }\r\n\r\n if(downloadDiv) {\r\n download.then(onLoad);\r\n preloader.attach(downloadDiv, true, download);\r\n }\r\n\r\n return {download};\r\n };\r\n\r\n if(appDocsManager.downloading.has(doc.id)) {\r\n downloadDiv = docDiv.querySelector('.document-download');\r\n preloader = new ProgressivePreloader();\r\n preloader.attach(downloadDiv, false, appDocsManager.downloading.get(doc.id));\r\n } else if(!cacheContext.downloaded || uploading) {\r\n downloadDiv = docDiv.querySelector('.document-download');\r\n preloader = (message.media as any).preloader as ProgressivePreloader;\r\n\r\n if(!preloader) {\r\n preloader = new ProgressivePreloader();\r\n\r\n preloader.construct();\r\n preloader.setManual();\r\n preloader.attach(downloadDiv);\r\n preloader.setDownloadFunction(load);\r\n\r\n if(autoDownloadSize !== undefined && autoDownloadSize >= doc.size) {\r\n simulateClickEvent(preloader.preloader);\r\n }\r\n } else {\r\n preloader.attach(downloadDiv);\r\n (message.media as any).promise.then(onLoad);\r\n }\r\n }\r\n\r\n attachClickEvent(docDiv, (e) => {\r\n if(preloader) {\r\n preloader.onClick(e);\r\n } else {\r\n load(e);\r\n }\r\n });\r\n\r\n return docDiv;\r\n}\r\n\r\n/* function wrapMediaWithTail(photo: MyPhoto | MyDocument, message: {mid: number, message: string}, container: HTMLElement, boxWidth: number, boxHeight: number, isOut: boolean) {\r\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\r\n svg.classList.add('bubble__media-container', isOut ? 'is-out' : 'is-in');\r\n \r\n const foreignObject = document.createElementNS(\"http://www.w3.org/2000/svg\", 'foreignObject');\r\n\r\n const gotThumb = appPhotosManager.getStrippedThumbIfNeeded(photo, true);\r\n if(gotThumb) {\r\n foreignObject.append(gotThumb.image);\r\n }\r\n appPhotosManager.setAttachmentSize(photo, foreignObject, boxWidth, boxHeight);\r\n \r\n const width = +foreignObject.getAttributeNS(null, 'width');\r\n const height = +foreignObject.getAttributeNS(null, 'height');\r\n\r\n svg.setAttributeNS(null, 'width', '' + width);\r\n svg.setAttributeNS(null, 'height', '' + height);\r\n\r\n svg.setAttributeNS(null, 'viewBox', '0 0 ' + width + ' ' + height);\r\n svg.setAttributeNS(null, 'preserveAspectRatio', 'none');\r\n\r\n const clipId = 'clip' + message.mid + '_' + nextRandomInt(9999);\r\n svg.dataset.clipId = clipId;\r\n \r\n const defs = document.createElementNS(\"http://www.w3.org/2000/svg\", 'defs');\r\n let clipPathHTML: string = '';\r\n \r\n if(message.message) {\r\n //clipPathHTML += ``;\r\n } else {\r\n if(isOut) {\r\n clipPathHTML += `\r\n \r\n \r\n `;\r\n } else {\r\n clipPathHTML += `\r\n \r\n \r\n `;\r\n }\r\n }\r\n\r\n defs.innerHTML = `${clipPathHTML}`;\r\n \r\n container.style.width = parseInt(container.style.width) - 9 + 'px';\r\n container.classList.add('with-tail');\r\n\r\n svg.append(defs, foreignObject);\r\n container.append(svg);\r\n\r\n let img = foreignObject.firstElementChild as HTMLImageElement;\r\n if(!img) {\r\n foreignObject.append(img = new Image());\r\n }\r\n\r\n return img;\r\n} */\r\n\r\nexport function wrapPhoto({photo, message, container, boxWidth, boxHeight, withTail, isOut, lazyLoadQueue, middleware, size, withoutPreloader, loadPromises, autoDownloadSize, noBlur, noThumb, noFadeIn, blurAfter}: {\r\n photo: MyPhoto | MyDocument, \r\n message?: any, \r\n container: HTMLElement, \r\n boxWidth?: number, \r\n boxHeight?: number, \r\n withTail?: boolean, \r\n isOut?: boolean, \r\n lazyLoadQueue?: LazyLoadQueue, \r\n middleware?: () => boolean, \r\n size?: PhotoSize,\r\n withoutPreloader?: boolean,\r\n loadPromises?: Promise[],\r\n autoDownloadSize?: number,\r\n noBlur?: boolean,\r\n noThumb?: boolean,\r\n noFadeIn?: boolean,\r\n blurAfter?: boolean,\r\n}) {\r\n if(!((photo as MyPhoto).sizes || (photo as MyDocument).thumbs)) {\r\n if(boxWidth && boxHeight && !size && photo._ === 'document') {\r\n appPhotosManager.setAttachmentSize(photo, container, boxWidth, boxHeight, undefined, message);\r\n }\r\n\r\n return {\r\n loadPromises: {\r\n thumb: Promise.resolve(),\r\n full: Promise.resolve()\r\n },\r\n images: {\r\n thumb: null,\r\n full: null\r\n },\r\n preloader: null,\r\n aspecter: null\r\n };\r\n }\r\n\r\n let noAutoDownload = autoDownloadSize === 0;\r\n\r\n if(!size) {\r\n if(boxWidth === undefined) boxWidth = mediaSizes.active.regular.width;\r\n if(boxHeight === undefined) boxHeight = mediaSizes.active.regular.height;\r\n }\r\n\r\n container.classList.add('media-container');\r\n let aspecter = container;\r\n\r\n let isFit = true;\r\n let loadThumbPromise: Promise = Promise.resolve();\r\n let thumbImage: HTMLImageElement;\r\n let image: HTMLImageElement;\r\n let cacheContext: ThumbCache;\r\n const isGif = photo._ === 'document' && photo.mime_type === 'image/gif' && !size;\r\n // if(withTail) {\r\n // image = wrapMediaWithTail(photo, message, container, boxWidth, boxHeight, isOut);\r\n // } else {\r\n image = new Image();\r\n\r\n if(boxWidth && boxHeight && !size) { // !album\r\n const set = appPhotosManager.setAttachmentSize(photo, container, boxWidth, boxHeight, undefined, message, undefined, isGif ? {\r\n _: 'photoSize',\r\n w: photo.w,\r\n h: photo.h,\r\n size: photo.size,\r\n type: 'full'\r\n } : undefined);\r\n size = set.photoSize;\r\n isFit = set.isFit;\r\n cacheContext = appDownloadManager.getCacheContext(photo, size.type);\r\n\r\n if(!isFit) {\r\n aspecter = document.createElement('div');\r\n aspecter.classList.add('media-container-aspecter');\r\n aspecter.style.width = set.size.width + 'px';\r\n aspecter.style.height = set.size.height + 'px';\r\n\r\n const gotThumb = appPhotosManager.getStrippedThumbIfNeeded(photo, cacheContext, !noBlur, true);\r\n if(gotThumb) {\r\n loadThumbPromise = gotThumb.loadPromise;\r\n const thumbImage = gotThumb.image; // local scope\r\n thumbImage.classList.add('media-photo');\r\n container.append(thumbImage);\r\n } else {\r\n const res = wrapPhoto({\r\n container,\r\n message,\r\n photo,\r\n boxWidth: 0,\r\n boxHeight: 0,\r\n size,\r\n lazyLoadQueue,\r\n isOut,\r\n loadPromises,\r\n middleware,\r\n withoutPreloader,\r\n withTail,\r\n autoDownloadSize,\r\n noBlur,\r\n noThumb: true,\r\n blurAfter: true\r\n //noFadeIn: true\r\n });\r\n const thumbImage = res.images.full;\r\n thumbImage.classList.add('media-photo', 'thumbnail');\r\n //container.append(thumbImage);\r\n }\r\n\r\n container.classList.add('media-container-fitted');\r\n container.append(aspecter);\r\n }\r\n } else {\r\n if(!size) {\r\n size = appPhotosManager.choosePhotoSize(photo, boxWidth, boxHeight, true);\r\n }\r\n \r\n cacheContext = appDownloadManager.getCacheContext(photo, size?.type);\r\n }\r\n\r\n if(!noThumb) {\r\n const gotThumb = appPhotosManager.getStrippedThumbIfNeeded(photo, cacheContext, !noBlur);\r\n if(gotThumb) {\r\n loadThumbPromise = Promise.all([loadThumbPromise, gotThumb.loadPromise]);\r\n thumbImage = gotThumb.image;\r\n thumbImage.classList.add('media-photo');\r\n aspecter.append(thumbImage);\r\n }\r\n }\r\n // }\r\n\r\n image.classList.add('media-photo');\r\n \r\n //console.log('wrapPhoto downloaded:', photo, photo.downloaded, container);\r\n\r\n const needFadeIn = (thumbImage || !cacheContext.downloaded) && rootScope.settings.animationsEnabled && !noFadeIn;\r\n\r\n let preloader: ProgressivePreloader;\r\n if(message?.media?.preloader && !withoutPreloader) { // means upload\r\n preloader = message.media.preloader;\r\n preloader.attach(container);\r\n noAutoDownload = undefined;\r\n } else if(!cacheContext.downloaded) {\r\n preloader = new ProgressivePreloader({\r\n attachMethod: 'prepend'\r\n });\r\n }\r\n\r\n const getDownloadPromise = () => {\r\n const promise = isGif && !size ? \r\n appDocsManager.downloadDoc(photo, /* undefined, */lazyLoadQueue?.queueId) : \r\n appPhotosManager.preloadPhoto(photo, size, lazyLoadQueue?.queueId, noAutoDownload);\r\n\r\n return promise;\r\n };\r\n\r\n const renderOnLoad = (url: string) => {\r\n return renderImageWithFadeIn(container, image, url, needFadeIn, aspecter, thumbImage);\r\n };\r\n\r\n const onLoad = (): Promise => {\r\n if(middleware && !middleware()) return Promise.resolve();\r\n\r\n if(blurAfter) {\r\n return blur(cacheContext.url, 12).then(url => {\r\n return renderOnLoad(url);\r\n });\r\n }\r\n\r\n return renderOnLoad(cacheContext.url);\r\n };\r\n\r\n let loadPromise: Promise;\r\n const canAttachPreloader = (\r\n (size as PhotoSize.photoSize).w >= 150 && \r\n (size as PhotoSize.photoSize).h >= 150\r\n ) || noAutoDownload;\r\n const load = () => {\r\n if(noAutoDownload && !withoutPreloader && preloader) {\r\n preloader.construct();\r\n preloader.setManual();\r\n }\r\n\r\n const promise = getDownloadPromise();\r\n\r\n if(preloader && \r\n !cacheContext.downloaded && \r\n !withoutPreloader && \r\n canAttachPreloader\r\n ) {\r\n preloader.attach(container, false, promise);\r\n }\r\n\r\n noAutoDownload = undefined;\r\n\r\n const renderPromise = promise.then(onLoad);\r\n renderPromise.catch(() => {});\r\n return {download: promise, render: renderPromise};\r\n };\r\n\r\n if(preloader) {\r\n preloader.setDownloadFunction(load);\r\n }\r\n \r\n if(cacheContext.downloaded) {\r\n loadThumbPromise = loadPromise = load().render;\r\n } else {\r\n if(!lazyLoadQueue) loadPromise = load().render;\r\n /* else if(noAutoDownload) {\r\n preloader.construct();\r\n preloader.setManual();\r\n preloader.attach(container);\r\n } */ else lazyLoadQueue.push({div: container, load: () => load().download});\r\n }\r\n\r\n if(loadPromises && loadThumbPromise) {\r\n loadPromises.push(loadThumbPromise);\r\n }\r\n\r\n return {\r\n loadPromises: {\r\n thumb: loadThumbPromise,\r\n full: loadPromise || Promise.resolve()\r\n },\r\n images: {\r\n thumb: thumbImage,\r\n full: image\r\n },\r\n preloader,\r\n aspecter\r\n };\r\n}\r\n\r\nexport function renderImageWithFadeIn(container: HTMLElement, \r\n image: HTMLImageElement, \r\n url: string, \r\n needFadeIn: boolean, \r\n aspecter = container,\r\n thumbImage?: HTMLImageElement\r\n) {\r\n if(needFadeIn) {\r\n image.classList.add('fade-in');\r\n }\r\n\r\n return new Promise((resolve) => {\r\n /* if(photo._ === 'document') {\r\n console.error('wrapPhoto: will render document', photo, size, cacheContext);\r\n return resolve();\r\n } */\r\n\r\n renderImageFromUrl(image, url, () => {\r\n sequentialDom.mutateElement(container, () => {\r\n aspecter.append(image);\r\n\r\n fastRaf(() => {\r\n resolve();\r\n });\r\n\r\n if(needFadeIn) {\r\n image.addEventListener('animationend', () => {\r\n sequentialDom.mutate(() => {\r\n image.classList.remove('fade-in');\r\n \r\n if(thumbImage) {\r\n thumbImage.remove();\r\n }\r\n });\r\n }, {once: true});\r\n }\r\n });\r\n });\r\n });\r\n}\r\n\r\n// export function renderImageWithFadeIn(container: HTMLElement, \r\n// image: HTMLImageElement, \r\n// url: string, \r\n// needFadeIn: boolean, \r\n// aspecter = container,\r\n// thumbImage?: HTMLImageElement\r\n// ) {\r\n// if(needFadeIn) {\r\n// // image.classList.add('fade-in-new', 'not-yet');\r\n// image.classList.add('fade-in');\r\n// }\r\n\r\n// return new Promise((resolve) => {\r\n// /* if(photo._ === 'document') {\r\n// console.error('wrapPhoto: will render document', photo, size, cacheContext);\r\n// return resolve();\r\n// } */\r\n\r\n// renderImageFromUrl(image, url, () => {\r\n// sequentialDom.mutateElement(container, () => {\r\n// aspecter.append(image);\r\n// // (needFadeIn ? getHeavyAnimationPromise() : Promise.resolve()).then(() => {\r\n\r\n// // fastRaf(() => {\r\n// resolve();\r\n// // });\r\n\r\n// if(needFadeIn) {\r\n// fastRaf(() => {\r\n// /* if(!image.isConnected) {\r\n// alert('aaaa');\r\n// } */\r\n// // fastRaf(() => {\r\n// image.classList.remove('not-yet');\r\n// // });\r\n// });\r\n\r\n// image.addEventListener('transitionend', () => {\r\n// sequentialDom.mutate(() => {\r\n// image.classList.remove('fade-in-new');\r\n \r\n// if(thumbImage) {\r\n// thumbImage.remove();\r\n// }\r\n// });\r\n// }, {once: true});\r\n// }\r\n// // });\r\n// });\r\n// });\r\n// });\r\n// }\r\n\r\nexport function wrapStickerAnimation({\r\n size,\r\n doc,\r\n middleware,\r\n target,\r\n side,\r\n skipRatio,\r\n play\r\n}: {\r\n size: number,\r\n doc: MyDocument,\r\n middleware?: () => boolean,\r\n target: HTMLElement,\r\n side: 'left' | 'center' | 'right',\r\n skipRatio?: number,\r\n play: boolean\r\n}) {\r\n const animationDiv = document.createElement('div');\r\n animationDiv.classList.add('emoji-animation');\r\n\r\n // const size = 280;\r\n animationDiv.style.width = size + 'px';\r\n animationDiv.style.height = size + 'px';\r\n\r\n const stickerPromise = wrapSticker({\r\n div: animationDiv,\r\n doc,\r\n middleware,\r\n withThumb: false,\r\n needFadeIn: false,\r\n loop: false,\r\n width: size,\r\n height: size,\r\n play,\r\n group: 'none',\r\n skipRatio\r\n }).then(animation => {\r\n assumeType(animation);\r\n animation.addEventListener('enterFrame', (frameNo) => {\r\n if(frameNo === animation.maxFrame) {\r\n animation.remove();\r\n animationDiv.remove();\r\n appImManager.chat.bubbles.scrollable.container.removeEventListener('scroll', onScroll);\r\n }\r\n });\r\n\r\n if(IS_VIBRATE_SUPPORTED) {\r\n animation.addEventListener('firstFrame', () => {\r\n navigator.vibrate(100);\r\n }, {once: true});\r\n }\r\n\r\n return animation;\r\n });\r\n\r\n const generateRandomSigned = (max: number) => {\r\n const r = Math.random() * max * 2;\r\n return r > max ? -r % max : r;\r\n };\r\n\r\n const randomOffsetX = generateRandomSigned(16);\r\n const randomOffsetY = generateRandomSigned(4);\r\n const stableOffsetX = size / 8 * (side === 'right' ? 1 : -1);\r\n const setPosition = () => {\r\n if(!isInDOM(target)) {\r\n return;\r\n }\r\n \r\n const rect = target.getBoundingClientRect();\r\n /* const boxWidth = Math.max(rect.width, rect.height);\r\n const boxHeight = Math.max(rect.width, rect.height);\r\n const x = rect.left + ((boxWidth - size) / 2);\r\n const y = rect.top + ((boxHeight - size) / 2); */\r\n\r\n const rectX = side === 'right' ? rect.right : rect.left;\r\n\r\n const addOffsetX = side === 'center' ? (rect.width - size) / 2 : (side === 'right' ? -size : 0) + stableOffsetX + randomOffsetX;\r\n const x = rectX + addOffsetX;\r\n // const y = rect.bottom - size + size / 4;\r\n const y = rect.top + ((rect.height - size) / 2) + (side === 'center' ? 0 : randomOffsetY);\r\n // animationDiv.style.transform = `translate(${x}px, ${y}px)`;\r\n animationDiv.style.top = y + 'px';\r\n animationDiv.style.left = x + 'px';\r\n };\r\n\r\n const onScroll = throttleWithRaf(setPosition);\r\n\r\n appImManager.chat.bubbles.scrollable.container.addEventListener('scroll', onScroll);\r\n\r\n setPosition();\r\n\r\n appImManager.emojiAnimationContainer.append(animationDiv);\r\n\r\n return {animationDiv, stickerPromise};\r\n}\r\n\r\nexport function wrapSticker({doc, div, middleware, lazyLoadQueue, group, play, onlyThumb, emoji, width, height, withThumb, loop, loadPromises, needFadeIn, needUpscale, skipRatio, static: asStatic}: {\r\n doc: MyDocument, \r\n div: HTMLElement, \r\n middleware?: () => boolean, \r\n lazyLoadQueue?: LazyLoadQueue, \r\n group?: string, \r\n play?: boolean, \r\n onlyThumb?: boolean,\r\n emoji?: string,\r\n width?: number,\r\n height?: number,\r\n withThumb?: boolean,\r\n loop?: boolean,\r\n loadPromises?: Promise[],\r\n needFadeIn?: boolean,\r\n needUpscale?: boolean,\r\n skipRatio?: number,\r\n static?: boolean\r\n}): Promise {\r\n const stickerType = doc.sticker;\r\n if(stickerType === 1) {\r\n asStatic = true;\r\n }\r\n\r\n if(!width) {\r\n width = !emoji ? 200 : undefined;\r\n }\r\n\r\n if(!height) {\r\n height = !emoji ? 200 : undefined;\r\n }\r\n\r\n if(stickerType === 2) {\r\n //LottieLoader.loadLottie();\r\n LottieLoader.loadLottieWorkers();\r\n }\r\n \r\n if(!stickerType) {\r\n console.error('wrong doc for wrapSticker!', doc);\r\n throw new Error('wrong doc for wrapSticker!');\r\n }\r\n\r\n div.dataset.docId = '' + doc.id;\r\n div.classList.add('media-sticker-wrapper');\r\n\r\n /* if(stickerType === 3) {\r\n const videoRes = wrapVideo({\r\n doc,\r\n boxWidth: width,\r\n boxHeight: height,\r\n container: div,\r\n group,\r\n lazyLoadQueue,\r\n middleware,\r\n withoutPreloader: true,\r\n loadPromises,\r\n noPlayButton: true,\r\n noInfo: true\r\n });\r\n\r\n if(videoRes.thumb) {\r\n if(videoRes.thumb.images.thumb) {\r\n videoRes.thumb.images.thumb.classList.add('media-sticker', 'thumbnail');\r\n }\r\n\r\n if(videoRes.thumb.images.full) {\r\n videoRes.thumb.images.full.classList.add('media-sticker');\r\n }\r\n }\r\n\r\n return videoRes.loadPromise;\r\n } */\r\n \r\n //console.log('wrap sticker', doc, div, onlyThumb);\r\n\r\n let cacheContext: ThumbCache;\r\n if(asStatic && stickerType !== 1) {\r\n const thumb = appPhotosManager.choosePhotoSize(doc, width, height, false) as PhotoSize.photoSize;\r\n cacheContext = appDownloadManager.getCacheContext(doc, thumb.type);\r\n } else {\r\n cacheContext = appDownloadManager.getCacheContext(doc);\r\n }\r\n\r\n const toneIndex = emoji ? getEmojiToneIndex(emoji) : -1;\r\n const downloaded = cacheContext.downloaded && !needFadeIn;\r\n\r\n const isAnimated = !asStatic && (stickerType === 2 || stickerType === 3);\r\n const isThumbNeededForType = isAnimated;\r\n \r\n let loadThumbPromise = deferredPromise();\r\n let haveThumbCached = false;\r\n if((\r\n doc.thumbs?.length || \r\n doc.stickerCachedThumbs\r\n ) && \r\n !div.firstElementChild && (\r\n !downloaded || \r\n isThumbNeededForType || \r\n onlyThumb\r\n ) && withThumb !== false/* && doc.thumbs[0]._ !== 'photoSizeEmpty' */\r\n ) {\r\n let thumb = doc.stickerCachedThumbs && doc.stickerCachedThumbs[toneIndex] || doc.thumbs[0];\r\n \r\n //console.log('wrap sticker', thumb, div);\r\n\r\n let thumbImage: HTMLImageElement;\r\n const afterRender = () => {\r\n if(!div.childElementCount) {\r\n thumbImage.classList.add('media-sticker', 'thumbnail');\r\n \r\n sequentialDom.mutateElement(div, () => {\r\n div.append(thumbImage);\r\n loadThumbPromise.resolve();\r\n });\r\n }\r\n };\r\n\r\n if('url' in thumb) {\r\n thumbImage = new Image();\r\n renderImageFromUrl(thumbImage, thumb.url, afterRender);\r\n haveThumbCached = true;\r\n } else if('bytes' in thumb) {\r\n if(thumb._ === 'photoPathSize') {\r\n if(thumb.bytes.length) {\r\n const d = appPhotosManager.getPathFromPhotoPathSize(thumb);\r\n div.innerHTML = `\r\n \r\n `;\r\n } else {\r\n thumb = doc.thumbs.find(t => (t as PhotoSize.photoStrippedSize).bytes?.length) || thumb;\r\n }\r\n } \r\n \r\n if(thumb && thumb._ !== 'photoPathSize' && toneIndex <= 0) {\r\n thumbImage = new Image();\r\n\r\n if((IS_WEBP_SUPPORTED || doc.pFlags.stickerThumbConverted || cacheContext.url)/* && false */) {\r\n renderImageFromUrl(thumbImage, appPhotosManager.getPreviewURLFromThumb(doc, thumb as PhotoSize.photoStrippedSize, true), afterRender);\r\n haveThumbCached = true;\r\n } else {\r\n webpWorkerController.convert('' + doc.id, (thumb as PhotoSize.photoStrippedSize).bytes as Uint8Array).then(bytes => {\r\n (thumb as PhotoSize.photoStrippedSize).bytes = bytes;\r\n doc.pFlags.stickerThumbConverted = true;\r\n \r\n if(middleware && !middleware()) return;\r\n \r\n if(!div.childElementCount) {\r\n renderImageFromUrl(thumbImage, appPhotosManager.getPreviewURLFromThumb(doc, thumb as PhotoSize.photoStrippedSize, true), afterRender);\r\n }\r\n }).catch(() => {});\r\n }\r\n }\r\n } else if(((stickerType === 2 && toneIndex <= 0) || stickerType === 3) && (withThumb || onlyThumb)) {\r\n thumbImage = new Image();\r\n\r\n const load = () => {\r\n if(div.childElementCount || (middleware && !middleware())) return;\r\n\r\n const r = () => {\r\n if(div.childElementCount || (middleware && !middleware())) return;\r\n renderImageFromUrl(thumbImage, cacheContext.url, afterRender);\r\n };\r\n \r\n if(cacheContext.url) {\r\n r();\r\n return Promise.resolve();\r\n } else {\r\n return appDocsManager.getThumbURL(doc, thumb as PhotoSize.photoStrippedSize).promise.then(r);\r\n }\r\n };\r\n \r\n if(lazyLoadQueue && onlyThumb) {\r\n lazyLoadQueue.push({div, load});\r\n return Promise.resolve();\r\n } else {\r\n load();\r\n\r\n if((thumb as any).url) {\r\n haveThumbCached = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if(loadPromises && haveThumbCached) {\r\n loadPromises.push(loadThumbPromise);\r\n }\r\n\r\n if(onlyThumb) { // for sticker panel\r\n return Promise.resolve();\r\n }\r\n \r\n const load = async() => {\r\n if(middleware && !middleware()) return;\r\n\r\n if(stickerType === 2 && !asStatic) {\r\n /* if(doc.id === '1860749763008266301') {\r\n console.log('loaded sticker:', doc, div);\r\n } */\r\n\r\n //await new Promise((resolve) => setTimeout(resolve, 500));\r\n //return;\r\n\r\n //console.time('download sticker' + doc.id);\r\n\r\n //appDocsManager.downloadDocNew(doc.id).promise.then(res => res.json()).then(async(json) => {\r\n //fetch(doc.url).then(res => res.json()).then(async(json) => {\r\n return await appDocsManager.downloadDoc(doc, /* undefined, */lazyLoadQueue?.queueId)\r\n .then(async(blob) => {\r\n //console.timeEnd('download sticker' + doc.id);\r\n //console.log('loaded sticker:', doc, div/* , blob */);\r\n if(middleware && !middleware()) {\r\n throw new Error('wrapSticker 2 middleware');\r\n }\r\n\r\n let animation = await LottieLoader.loadAnimationWorker({\r\n container: div,\r\n loop: loop && !emoji,\r\n autoplay: play,\r\n animationData: blob,\r\n width,\r\n height,\r\n name: 'doc' + doc.id,\r\n needUpscale,\r\n skipRatio,\r\n toneIndex\r\n }, group, middleware);\r\n\r\n //const deferred = deferredPromise();\r\n \r\n animation.addEventListener('firstFrame', () => {\r\n const element = div.firstElementChild;\r\n if(needFadeIn !== false) {\r\n needFadeIn = (needFadeIn || !element || element.tagName === 'svg') && rootScope.settings.animationsEnabled;\r\n }\r\n\r\n const cb = () => {\r\n if(element && element !== animation.canvas) {\r\n element.remove();\r\n }\r\n };\r\n\r\n if(!needFadeIn) {\r\n if(element) {\r\n sequentialDom.mutate(cb);\r\n }\r\n } else {\r\n sequentialDom.mutate(() => {\r\n animation.canvas.classList.add('fade-in');\r\n if(element) {\r\n element.classList.add('fade-out');\r\n }\r\n \r\n animation.canvas.addEventListener('animationend', () => {\r\n sequentialDom.mutate(() => {\r\n animation.canvas.classList.remove('fade-in');\r\n cb();\r\n });\r\n }, {once: true});\r\n });\r\n }\r\n\r\n if(withThumb !== false) {\r\n appDocsManager.saveLottiePreview(doc, animation.canvas, toneIndex);\r\n }\r\n\r\n //deferred.resolve();\r\n }, {once: true});\r\n \r\n if(emoji) {\r\n const data: SendMessageEmojiInteractionData = {\r\n a: [],\r\n v: 1\r\n };\r\n\r\n let sendInteractionThrottled: () => void;\r\n\r\n appStickersManager.preloadAnimatedEmojiStickerAnimation(emoji);\r\n\r\n attachClickEvent(div, async(e) => {\r\n cancelEvent(e);\r\n const animation = LottieLoader.getAnimation(div);\r\n \r\n if(animation.paused) {\r\n const doc = appStickersManager.getAnimatedEmojiSoundDocument(emoji);\r\n if(doc) {\r\n const audio = document.createElement('audio');\r\n audio.style.display = 'none';\r\n div.parentElement.append(audio);\r\n\r\n try {\r\n await appDocsManager.downloadDoc(doc);\r\n\r\n const cacheContext = appDownloadManager.getCacheContext(doc);\r\n audio.src = cacheContext.url;\r\n audio.play();\r\n await onMediaLoad(audio, undefined, true);\r\n \r\n audio.addEventListener('ended', () => {\r\n audio.src = '';\r\n audio.remove();\r\n }, {once: true});\r\n } catch(err) {\r\n \r\n }\r\n }\r\n\r\n animation.autoplay = true;\r\n animation.restart();\r\n }\r\n\r\n const peerId = appImManager.chat.peerId;\r\n if(!peerId.isUser()) {\r\n return;\r\n }\r\n\r\n const doc = appStickersManager.getAnimatedEmojiSticker(emoji, true);\r\n if(!doc) {\r\n return;\r\n }\r\n \r\n const bubble = findUpClassName(div, 'bubble');\r\n const isOut = bubble.classList.contains('is-out');\r\n\r\n const {animationDiv} = wrapStickerAnimation({\r\n doc,\r\n middleware,\r\n side: isOut ? 'right' : 'left',\r\n size: 280,\r\n target: div,\r\n play: true\r\n });\r\n\r\n if(bubble) {\r\n if(isOut) {\r\n animationDiv.classList.add('is-out');\r\n } else {\r\n animationDiv.classList.add('is-in');\r\n }\r\n }\r\n\r\n if(!sendInteractionThrottled) {\r\n sendInteractionThrottled = throttle(() => {\r\n const length = data.a.length;\r\n if(!length) {\r\n return;\r\n }\r\n \r\n const firstTime = data.a[0].t;\r\n \r\n data.a.forEach((a) => {\r\n a.t = (a.t - firstTime) / 1000;\r\n });\r\n \r\n const bubble = findUpClassName(div, 'bubble');\r\n appMessagesManager.setTyping(appImManager.chat.peerId, {\r\n _: 'sendMessageEmojiInteraction',\r\n msg_id: appMessagesIdsManager.getServerMessageId(+bubble.dataset.mid),\r\n emoticon: emoji,\r\n interaction: {\r\n _: 'dataJSON',\r\n data: JSON.stringify(data)\r\n }\r\n }, true);\r\n \r\n data.a.length = 0;\r\n }, 1000, false);\r\n }\r\n\r\n // using a trick here: simulated event from interlocutor's interaction won't fire ours\r\n if(e.isTrusted) {\r\n data.a.push({\r\n i: 1,\r\n t: Date.now()\r\n });\r\n \r\n sendInteractionThrottled();\r\n }\r\n });\r\n }\r\n\r\n return animation;\r\n\r\n //return deferred;\r\n //await new Promise((resolve) => setTimeout(resolve, 5e3));\r\n });\r\n\r\n //console.timeEnd('render sticker' + doc.id);\r\n } else if(asStatic || stickerType === 3) {\r\n let media: HTMLElement;\r\n if(asStatic) {\r\n media = new Image();\r\n } else {\r\n media = document.createElement('video');\r\n media.setAttribute('playsinline', 'true');\r\n (media as HTMLVideoElement).muted = true;\r\n\r\n if(play) {\r\n (media as HTMLVideoElement).autoplay = true;\r\n (media as HTMLVideoElement).loop = true;\r\n }\r\n }\r\n\r\n const thumbImage = div.firstElementChild !== media && div.firstElementChild;\r\n if(needFadeIn !== false) {\r\n needFadeIn = (needFadeIn || !downloaded || (asStatic ? thumbImage : (!thumbImage || thumbImage.tagName === 'svg'))) && rootScope.settings.animationsEnabled;\r\n }\r\n\r\n media.classList.add('media-sticker');\r\n\r\n if(needFadeIn) {\r\n media.classList.add('fade-in');\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const r = () => {\r\n if(middleware && !middleware()) return resolve();\r\n \r\n const onLoad = () => {\r\n sequentialDom.mutateElement(div, () => {\r\n div.append(media);\r\n if(thumbImage) {\r\n thumbImage.classList.add('fade-out');\r\n }\r\n\r\n if(stickerType === 3 && !appDocsManager.isSavingLottiePreview(doc, toneIndex)) {\r\n // const perf = performance.now();\r\n assumeType(media);\r\n const canvas = document.createElement('canvas');\r\n canvas.width = width * window.devicePixelRatio;\r\n canvas.height = height * window.devicePixelRatio;\r\n const ctx = canvas.getContext('2d');\r\n ctx.drawImage(media, 0, 0, canvas.width, canvas.height);\r\n appDocsManager.saveLottiePreview(doc, canvas, toneIndex);\r\n // console.log('perf', performance.now() - perf);\r\n }\r\n\r\n if(stickerType === 3 && group) {\r\n animationIntersector.addAnimation(media as HTMLVideoElement, group);\r\n }\r\n\r\n resolve();\r\n\r\n if(needFadeIn) {\r\n media.addEventListener('animationend', () => {\r\n media.classList.remove('fade-in');\r\n if(thumbImage) {\r\n thumbImage.remove();\r\n }\r\n }, {once: true});\r\n }\r\n });\r\n };\r\n\r\n if(asStatic) {\r\n renderImageFromUrl(media, cacheContext.url, onLoad);\r\n } else {\r\n (media as HTMLVideoElement).src = cacheContext.url;\r\n onMediaLoad(media as HTMLVideoElement).then(onLoad);\r\n }\r\n };\r\n\r\n if(cacheContext.url) r();\r\n else {\r\n let promise: Promise;\r\n if(stickerType === 2 && asStatic) {\r\n const thumb = appPhotosManager.choosePhotoSize(doc, width, height, false) as PhotoSize.photoSize;\r\n promise = appDocsManager.getThumbURL(doc, thumb).promise\r\n } else {\r\n promise = appDocsManager.downloadDoc(doc, /* undefined, */lazyLoadQueue?.queueId);\r\n }\r\n \r\n promise.then(r, resolve);\r\n }\r\n });\r\n }\r\n };\r\n\r\n const loadPromise: Promise = lazyLoadQueue && (!downloaded || isAnimated) ? \r\n (lazyLoadQueue.push({div, load}), Promise.resolve()) : \r\n load();\r\n\r\n if(downloaded && (asStatic/* || stickerType === 3 */)) {\r\n loadThumbPromise = loadPromise as any;\r\n if(loadPromises) {\r\n loadPromises.push(loadThumbPromise);\r\n }\r\n }\r\n\r\n return loadPromise;\r\n}\r\n\r\nexport async function wrapStickerSetThumb({set, lazyLoadQueue, container, group, autoplay, width, height}: {\r\n set: StickerSet.stickerSet,\r\n lazyLoadQueue: LazyLoadQueue,\r\n container: HTMLElement,\r\n group: string,\r\n autoplay: boolean,\r\n width: number,\r\n height: number\r\n}) {\r\n if(set.thumbs?.length) {\r\n container.classList.add('media-sticker-wrapper');\r\n lazyLoadQueue.push({\r\n div: container,\r\n load: () => {\r\n const downloadOptions = appStickersManager.getStickerSetThumbDownloadOptions(set);\r\n const promise = appDownloadManager.download(downloadOptions);\r\n\r\n if(set.pFlags.animated && !set.pFlags.videos) {\r\n return promise\r\n .then((blob) => {\r\n lottieLoader.loadAnimationWorker({\r\n container,\r\n loop: true,\r\n autoplay,\r\n animationData: blob,\r\n width,\r\n height,\r\n needUpscale: true,\r\n name: 'setThumb' + set.id\r\n }, group);\r\n });\r\n } else {\r\n let media: HTMLElement;\r\n if(set.pFlags.videos) {\r\n media = document.createElement('video');\r\n media.setAttribute('playsinline', 'true');\r\n (media as HTMLVideoElement).autoplay = true;\r\n (media as HTMLVideoElement).muted = true;\r\n (media as HTMLVideoElement).loop = true;\r\n } else {\r\n media = new Image();\r\n }\r\n\r\n media.classList.add('media-sticker');\r\n \r\n return promise.then(blob => {\r\n renderImageFromUrl(media, URL.createObjectURL(blob), () => {\r\n container.append(media);\r\n });\r\n });\r\n }\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n const promise = appStickersManager.getStickerSet(set);\r\n const stickerSet = await promise;\r\n if(stickerSet.documents[0]._ !== 'documentEmpty') { // as thumb will be used first sticker\r\n wrapSticker({\r\n doc: stickerSet.documents[0],\r\n div: container, \r\n group: group,\r\n lazyLoadQueue\r\n }); // kostil\r\n }\r\n}\r\n\r\nexport function wrapStickerToRow({doc, row, size}: {\r\n doc: MyDocument,\r\n row: Row,\r\n size?: 'small' | 'large',\r\n}) {\r\n const previousMedia = row.media;\r\n const media = row.createMedia('small');\r\n\r\n if(previousMedia) {\r\n media.classList.add('hide');\r\n }\r\n\r\n const loadPromises: Promise[] = previousMedia ? [] : undefined;\r\n\r\n const _size = size === 'small' ? 32 : 48;\r\n const result = wrapSticker({\r\n div: media,\r\n doc: doc,\r\n width: _size,\r\n height: _size,\r\n loadPromises\r\n });\r\n\r\n loadPromises && Promise.all(loadPromises).then(() => {\r\n media.classList.remove('hide');\r\n previousMedia.remove();\r\n });\r\n\r\n return result;\r\n}\r\n\r\nexport function wrapLocalSticker({emoji, width, height}: {\r\n doc?: MyDocument,\r\n url?: string,\r\n emoji?: string,\r\n width: number,\r\n height: number,\r\n}) {\r\n const container = document.createElement('div');\r\n\r\n const doc = appStickersManager.getAnimatedEmojiSticker(emoji);\r\n if(doc) {\r\n wrapSticker({\r\n doc,\r\n div: container,\r\n loop: false,\r\n play: true,\r\n width,\r\n height,\r\n emoji\r\n }).then(() => {\r\n // this.animation = player;\r\n });\r\n } else {\r\n container.classList.add('media-sticker-wrapper');\r\n }\r\n\r\n return {container};\r\n}\r\n\r\nexport function wrapReply(title: Parameters[0], subtitle: Parameters[1], message?: any) {\r\n const replyContainer = new ReplyContainer('reply');\r\n replyContainer.fill(title, subtitle, message);\r\n /////////console.log('wrapReply', title, subtitle, media);\r\n return replyContainer.container;\r\n}\r\n\r\nexport function prepareAlbum(options: {\r\n container: HTMLElement,\r\n items: {w: number, h: number}[],\r\n maxWidth: number,\r\n minWidth: number,\r\n spacing: number,\r\n maxHeight?: number,\r\n forMedia?: true\r\n}) {\r\n const layouter = new Layouter(options.items, options.maxWidth, options.minWidth, options.spacing, options.maxHeight);\r\n const layout = layouter.layout();\r\n\r\n const widthItem = layout.find(item => item.sides & RectPart.Right);\r\n const width = widthItem.geometry.width + widthItem.geometry.x;\r\n\r\n const heightItem = layout.find(item => item.sides & RectPart.Bottom);\r\n const height = heightItem.geometry.height + heightItem.geometry.y;\r\n\r\n const container = options.container;\r\n container.style.width = width + 'px';\r\n container.style.height = height + 'px';\r\n const children = container.children;\r\n\r\n layout.forEach(({geometry, sides}, idx) => {\r\n let div: HTMLElement;\r\n div = children[idx] as HTMLElement;\r\n if(!div) {\r\n div = document.createElement('div');\r\n container.append(div);\r\n }\r\n\r\n div.classList.add('album-item', 'grouped-item');\r\n\r\n div.style.width = (geometry.width / width * 100) + '%';\r\n div.style.height = (geometry.height / height * 100) + '%';\r\n div.style.top = (geometry.y / height * 100) + '%';\r\n div.style.left = (geometry.x / width * 100) + '%';\r\n\r\n if(sides & RectPart.Left && sides & RectPart.Top) {\r\n div.style.borderTopLeftRadius = 'inherit';\r\n }\r\n\r\n if(sides & RectPart.Left && sides & RectPart.Bottom) {\r\n div.style.borderBottomLeftRadius = 'inherit';\r\n }\r\n\r\n if(sides & RectPart.Right && sides & RectPart.Top) {\r\n div.style.borderTopRightRadius = 'inherit';\r\n }\r\n\r\n if(sides & RectPart.Right && sides & RectPart.Bottom) {\r\n div.style.borderBottomRightRadius = 'inherit';\r\n }\r\n\r\n if(options.forMedia) {\r\n const mediaDiv = document.createElement('div');\r\n mediaDiv.classList.add('album-item-media');\r\n \r\n div.append(mediaDiv);\r\n }\r\n\r\n // @ts-ignore\r\n //div.style.backgroundColor = '#' + Math.floor(Math.random() * (2 ** 24 - 1)).toString(16).padStart(6, '0');\r\n });\r\n\r\n /* if(options.forMedia) {\r\n layout.forEach((_, i) => {\r\n const mediaDiv = document.createElement('div');\r\n mediaDiv.classList.add('album-item-media');\r\n \r\n options.container.children[i].append(mediaDiv);\r\n });\r\n } */\r\n}\r\n\r\nexport function wrapAlbum({groupId, attachmentDiv, middleware, uploading, lazyLoadQueue, isOut, chat, loadPromises, autoDownload}: {\r\n groupId: string, \r\n attachmentDiv: HTMLElement,\r\n middleware?: () => boolean,\r\n lazyLoadQueue?: LazyLoadQueue,\r\n uploading?: boolean,\r\n isOut: boolean,\r\n chat: Chat,\r\n loadPromises?: Promise[],\r\n autoDownload?: ChatAutoDownloadSettings,\r\n}) {\r\n const items: {size: PhotoSize.photoSize, media: any, message: any}[] = [];\r\n\r\n // !lowest msgID will be the FIRST in album\r\n const storage = appMessagesManager.getMidsByAlbum(groupId);\r\n for(const mid of storage) {\r\n const m = chat.getMessage(mid);\r\n const media = m.media.photo || m.media.document;\r\n\r\n const size: any = media._ === 'photo' ? appPhotosManager.choosePhotoSize(media, 480, 480) : {w: media.w, h: media.h};\r\n items.push({size, media, message: m});\r\n }\r\n\r\n /* // * pending\r\n if(storage[0] < 0) {\r\n items.reverse();\r\n } */\r\n\r\n prepareAlbum({\r\n container: attachmentDiv,\r\n items: items.map(i => ({w: i.size.w, h: i.size.h})),\r\n maxWidth: mediaSizes.active.album.width,\r\n minWidth: 100,\r\n spacing: 2,\r\n forMedia: true\r\n });\r\n\r\n items.forEach((item, idx) => {\r\n const {size, media, message} = item;\r\n\r\n const div = attachmentDiv.children[idx] as HTMLElement;\r\n div.dataset.mid = '' + message.mid;\r\n div.dataset.peerId = '' + message.peerId;\r\n const mediaDiv = div.firstElementChild as HTMLElement;\r\n const isPhoto = media._ === 'photo';\r\n if(isPhoto) {\r\n wrapPhoto({\r\n photo: media,\r\n message,\r\n container: mediaDiv,\r\n boxWidth: 0,\r\n boxHeight: 0,\r\n isOut,\r\n lazyLoadQueue,\r\n middleware,\r\n size,\r\n loadPromises,\r\n autoDownloadSize: autoDownload.photo\r\n });\r\n } else {\r\n wrapVideo({\r\n doc: message.media.document,\r\n container: mediaDiv,\r\n message,\r\n boxWidth: 0,\r\n boxHeight: 0,\r\n withTail: false,\r\n isOut,\r\n lazyLoadQueue,\r\n middleware,\r\n loadPromises,\r\n autoDownload\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function wrapGroupedDocuments({albumMustBeRenderedFull, message, bubble, messageDiv, chat, loadPromises, autoDownloadSize, lazyLoadQueue, searchContext, useSearch, sizeType}: {\r\n albumMustBeRenderedFull: boolean,\r\n message: any,\r\n messageDiv: HTMLElement,\r\n bubble: HTMLElement,\r\n uploading?: boolean,\r\n chat: Chat,\r\n loadPromises?: Promise[],\r\n autoDownloadSize?: number,\r\n lazyLoadQueue?: LazyLoadQueue,\r\n searchContext?: MediaSearchContext,\r\n useSearch?: boolean,\r\n sizeType?: MediaSizeType\r\n}) {\r\n let nameContainer: HTMLElement;\r\n const mids = albumMustBeRenderedFull ? chat.getMidsByMid(message.mid) : [message.mid];\r\n /* if(isPending) {\r\n mids.reverse();\r\n } */\r\n\r\n mids.forEach((mid, idx) => {\r\n const message = chat.getMessage(mid);\r\n const div = wrapDocument({\r\n message,\r\n loadPromises,\r\n autoDownloadSize,\r\n lazyLoadQueue,\r\n searchContext,\r\n sizeType\r\n });\r\n\r\n const container = document.createElement('div');\r\n container.classList.add('document-container');\r\n container.dataset.mid = '' + mid;\r\n container.dataset.peerId = '' + message.peerId;\r\n\r\n const wrapper = document.createElement('div');\r\n wrapper.classList.add('document-wrapper');\r\n \r\n if(message.message) {\r\n const messageDiv = document.createElement('div');\r\n messageDiv.classList.add('document-message');\r\n\r\n const richText = RichTextProcessor.wrapRichText(message.message, {\r\n entities: message.totalEntities\r\n });\r\n\r\n messageDiv.innerHTML = richText;\r\n wrapper.append(messageDiv);\r\n }\r\n\r\n if(mids.length > 1) {\r\n const selection = document.createElement('div');\r\n selection.classList.add('document-selection');\r\n container.append(selection);\r\n \r\n container.classList.add('grouped-item');\r\n\r\n if(idx === 0) {\r\n nameContainer = wrapper;\r\n }\r\n }\r\n\r\n wrapper.append(div);\r\n container.append(wrapper);\r\n messageDiv.append(container);\r\n });\r\n\r\n if(mids.length > 1) {\r\n bubble.classList.add('is-multiple-documents', 'is-grouped');\r\n }\r\n\r\n return nameContainer;\r\n}\r\n\r\nexport function wrapPoll(message: any) {\r\n const elem = new PollElement();\r\n elem.message = message;\r\n elem.setAttribute('peer-id', '' + message.peerId);\r\n elem.setAttribute('poll-id', message.media.poll.id);\r\n elem.setAttribute('message-id', '' + message.mid);\r\n elem.render();\r\n return elem;\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport whichChild from \"./whichChild\";\r\n\r\nexport default function positionElementByIndex(element: HTMLElement, container: HTMLElement, pos: number, prevPos?: number) {\r\n if(prevPos === undefined) {\r\n prevPos = element.parentElement === container ? whichChild(element) : -1;\r\n }\r\n\r\n if(prevPos === pos) {\r\n return false;\r\n } else if(prevPos !== -1 && prevPos < pos) { // was higher\r\n pos += 1;\r\n }\r\n\r\n if(!pos) {\r\n container.prepend(element);\r\n } else if(container.childElementCount > pos) {\r\n container.insertBefore(element, container.children[pos]);\r\n } else {\r\n container.append(element);\r\n }\r\n\r\n return true;\r\n}\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport insertInDescendSortedArray from \"./array/insertInDescendSortedArray\";\nimport { getMiddleware } from \"./middleware\";\nimport safeAssign from \"./object/safeAssign\";\n\nexport type SortedElementId = PeerId;\nexport type SortedElementBase = {\n id: SortedElementId, \n index: number\n};\n\nexport default class SortedList {\n protected elements: Map;\n protected sorted: Array;\n\n protected getIndex: (element: SortedElement) => number;\n protected onDelete: (element: SortedElement) => void;\n protected onUpdate: (element: SortedElement) => void;\n protected onSort: (element: SortedElement, idx: number) => void;\n protected onElementCreate: (base: SortedElementBase, batch: boolean) => SortedElement;\n\n protected updateElementWith = (callback: () => void) => callback();\n protected updateListWith = (callback: (canUpdate: boolean | undefined) => void) => callback(true);\n\n protected middleware = getMiddleware();\n\n constructor(options: {\n getIndex: SortedList['getIndex'],\n onDelete?: SortedList['onDelete'],\n onUpdate?: SortedList['onUpdate'],\n onSort?: SortedList['onSort'],\n onElementCreate: SortedList['onElementCreate'],\n\n updateElementWith?: SortedList['updateElementWith'],\n updateListWith?: SortedList['updateListWith']\n }) {\n safeAssign(this, options);\n\n this.elements = new Map();\n this.sorted = [];\n }\n\n public clear() {\n this.middleware.clean();\n this.elements.clear();\n this.sorted.length = 0;\n }\n\n protected _updateList() {\n this.elements.forEach(element => {\n this.update(element.id, true);\n });\n\n if(this.onSort) {\n this.sorted.forEach((element, idx) => {\n this.onSort(element, idx);\n });\n }\n }\n\n public updateList(callback: (updated: boolean) => void) {\n const middleware = this.middleware.get();\n this.updateListWith((canUpdate) => {\n if(!middleware() || (canUpdate !== undefined && !canUpdate)) {\n return callback(false);\n }\n\n this._updateList();\n \n callback(true);\n });\n }\n\n public has(id: SortedElementId) {\n return this.elements.has(id);\n }\n\n public get(id: SortedElementId) {\n return this.elements.get(id);\n }\n\n public getAll() {\n return this.elements;\n }\n\n public add(id: SortedElementId, batch = false, updateElementWith?: SortedList['updateElementWith'], updateBatch = batch) {\n let element = this.get(id);\n if(element) {\n return element;\n }\n\n const base: SortedElementBase = {\n id,\n index: 0\n };\n\n element = this.onElementCreate(base, batch);\n this.elements.set(id, element);\n this.update(id, updateBatch, element, updateElementWith);\n\n return element;\n }\n\n public delete(id: SortedElementId, noScheduler?: boolean) {\n const element = this.elements.get(id);\n if(!element) {\n return false;\n }\n \n this.elements.delete(id);\n \n const idx = this.sorted.indexOf(element);\n if(idx !== -1) {\n this.sorted.splice(idx, 1);\n }\n\n if(this.onDelete) {\n if(noScheduler) {\n this.onDelete(element);\n } else {\n const middleware = this.middleware.get();\n this.updateElementWith(() => {\n if(!middleware()) {\n return;\n }\n\n this.onDelete(element);\n });\n }\n }\n\n return true;\n }\n\n public update(id: SortedElementId, batch = false, element = this.get(id), updateElementWith?: SortedList['updateElementWith']) {\n if(!element) {\n return;\n }\n\n element.index = this.getIndex(element);\n this.onUpdate && this.onUpdate(element);\n\n const idx = insertInDescendSortedArray(this.sorted, element, 'index');\n if(!batch && this.onSort) {\n const middleware = this.middleware.get();\n (updateElementWith || this.updateElementWith)(() => {\n if(!middleware()) {\n return;\n }\n\n // * в случае пересортировки этого же элемента во время ожидания вызовется вторая такая же. нужно соблюдать последовательность событий\n this.onSort(element, idx);\n /* if(this.get(id) === element) {\n this.onSort(element, this.sorted.indexOf(element));\n } */\n });\n }\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport type { LazyLoadQueueIntersector } from \"./lazyLoadQueue\";\nimport appDialogsManager, { AppDialogsManager, DialogDom } from \"../lib/appManagers/appDialogsManager\";\nimport { getHeavyAnimationPromise } from \"../hooks/useHeavyAnimationCheck\";\nimport appUsersManager from \"../lib/appManagers/appUsersManager\";\nimport isInDOM from \"../helpers/dom/isInDOM\";\nimport positionElementByIndex from \"../helpers/dom/positionElementByIndex\";\nimport replaceContent from \"../helpers/dom/replaceContent\";\nimport { fastRaf } from \"../helpers/schedulers\";\nimport SortedList, { SortedElementBase } from \"../helpers/sortedList\";\nimport safeAssign from \"../helpers/object/safeAssign\";\n\ninterface SortedUser extends SortedElementBase {\n dom: DialogDom\n}\n\nexport default class SortedUserList extends SortedList {\n protected static SORT_INTERVAL = 30e3;\n public list: HTMLUListElement;\n \n protected lazyLoadQueue: LazyLoadQueueIntersector;\n protected avatarSize = 48;\n protected rippleEnabled = true;\n protected autonomous = true;\n protected createChatListOptions: Parameters[0];\n protected onListLengthChange: () => void;\n protected getIndex: (element: SortedUser) => number;\n protected onUpdate: (element: SortedUser) => void;\n\n constructor(options: Partial<{\n lazyLoadQueue: SortedUserList['lazyLoadQueue'],\n avatarSize: SortedUserList['avatarSize'],\n rippleEnabled: SortedUserList['rippleEnabled'],\n createChatListOptions: SortedUserList['createChatListOptions'],\n autonomous: SortedUserList['autonomous'],\n onListLengthChange: SortedUserList['onListLengthChange'],\n getIndex: SortedUserList['getIndex'],\n onUpdate: SortedUserList['onUpdate']\n }> = {}) {\n super({\n getIndex: options.getIndex || ((element) => appUsersManager.getUserStatusForSort(element.id)),\n onDelete: (element) => {\n element.dom.listEl.remove();\n this.onListLengthChange && this.onListLengthChange();\n },\n onUpdate: options.onUpdate || ((element) => {\n const status = appUsersManager.getUserStatusString(element.id);\n replaceContent(element.dom.lastMessageSpan, status);\n }),\n onSort: (element, idx) => {\n const willChangeLength = element.dom.listEl.parentElement !== this.list;\n positionElementByIndex(element.dom.listEl, this.list, idx);\n\n if(willChangeLength && this.onListLengthChange) {\n this.onListLengthChange();\n }\n },\n onElementCreate: (base) => {\n const {dom} = appDialogsManager.addDialogNew({\n dialog: base.id,\n container: false,\n drawStatus: false,\n avatarSize: this.avatarSize,\n autonomous: this.autonomous,\n meAsSaved: false,\n rippleEnabled: this.rippleEnabled,\n lazyLoadQueue: this.lazyLoadQueue\n });\n\n (base as SortedUser).dom = dom;\n return base as SortedUser;\n },\n updateElementWith: fastRaf,\n updateListWith: async(callback) => {\n if(!isInDOM(this.list)) {\n return callback(false);\n }\n \n await getHeavyAnimationPromise();\n \n if(!isInDOM(this.list)) {\n return callback(false);\n }\n\n callback(true);\n }\n });\n\n safeAssign(this, options);\n\n this.list = appDialogsManager.createChatList(this.createChatListOptions);\n\n let timeout: number;\n const doTimeout = () => {\n timeout = window.setTimeout(() => {\n this.updateList((good) => {\n if(good) {\n doTimeout();\n }\n });\n }, SortedUserList.SORT_INTERVAL);\n };\n\n doTimeout();\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport SwipeHandler, { SwipeHandlerOptions } from \"../../components/swipeHandler\";\nimport cancelEvent from \"./cancelEvent\";\nimport findUpClassName from \"./findUpClassName\";\nimport isSwipingBackSafari from \"./isSwipingBackSafari\";\n\nexport type SwipeHandlerHorizontalOptions = SwipeHandlerOptions & {\n // xThreshold?: number\n};\n\nexport default function handleHorizontalSwipe(options: SwipeHandlerHorizontalOptions) {\n let cancelY = false;\n return new SwipeHandler({\n ...options,\n verifyTouchTarget: (e) => {\n return !findUpClassName(e.target, 'progress-line') && \n !isSwipingBackSafari(e) && \n (options.verifyTouchTarget ? options.verifyTouchTarget(e) : true);\n },\n onSwipe: (xDiff, yDiff, e) => {\n if(!cancelY && Math.abs(yDiff) > 20) {\n return true;\n }\n\n if(Math.abs(xDiff) > Math.abs(yDiff)) {\n cancelEvent(e);\n cancelY = true;\n } else if(!cancelY && Math.abs(yDiff) > Math.abs(xDiff)/* || Math.abs(yDiff) > 20 */) {\n return true;\n }\n\n /* if(!cancelY && options.xThreshold !== undefined && xDiff >= options.xThreshold) {\n cancelY = true;\n } */\n\n return options.onSwipe(xDiff, yDiff, e);\n },\n onReset: () => {\n cancelY = false;\n options.onReset && options.onReset();\n },\n cancelEvent: false // cannot use cancelEvent on Safari iOS because scroll will be canceled too\n });\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport { cancelContextMenuOpening } from \"../../components/misc\";\nimport handleHorizontalSwipe, { SwipeHandlerHorizontalOptions } from \"./handleHorizontalSwipe\";\n\nexport default function handleTabSwipe(options: SwipeHandlerHorizontalOptions) {\n return handleHorizontalSwipe({\n ...options,\n onSwipe: (xDiff, yDiff, e) => {\n if(Math.abs(xDiff) > 50) {\n options.onSwipe(xDiff, yDiff, e);\n cancelContextMenuOpening();\n\n return true;\n }\n }\n });\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport appImManager from \"../../lib/appManagers/appImManager\";\r\nimport PopupPickUser from \"./pickUser\";\r\n\r\nexport default class PopupForward extends PopupPickUser {\r\n constructor(\r\n peerIdMids: {[fromPeerId: PeerId]: number[]}, \r\n onSelect?: (peerId: PeerId) => Promise | void, \r\n overrideOnSelect = false\r\n ) {\r\n super({\r\n peerTypes: ['dialogs', 'contacts'],\r\n onSelect: overrideOnSelect ? onSelect : async(peerId) => {\r\n if(onSelect) {\r\n const res = onSelect(peerId);\r\n if(res instanceof Promise) {\r\n await res;\r\n }\r\n }\r\n\r\n appImManager.setInnerPeer({peerId});\r\n appImManager.chat.input.initMessagesForward(peerIdMids);\r\n },\r\n placeholder: 'ShareModal.Search.ForwardPlaceholder',\r\n chatRightsAction: 'send_messages',\r\n selfPresence: 'ChatYourSelf'\r\n });\r\n }\r\n}\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport appChatsManager from \"../../lib/appManagers/appChatsManager\";\nimport appMessagesManager from \"../../lib/appManagers/appMessagesManager\";\nimport rootScope from \"../../lib/rootScope\";\nimport { addCancelButton } from \".\";\nimport PopupPeer, { PopupPeerButtonCallbackCheckboxes, PopupPeerOptions } from \"./peer\";\nimport { ChatType } from \"../chat/chat\";\nimport { i18n, LangPackKey } from \"../../lib/langPack\";\nimport PeerTitle from \"../peerTitle\";\nimport appPeersManager from \"../../lib/appManagers/appPeersManager\";\n\nexport default class PopupDeleteMessages {\n constructor(peerId: PeerId, mids: number[], type: ChatType, onConfirm?: () => void) {\n const peerTitleElement = new PeerTitle({peerId}).element;\n\n mids = mids.slice();\n const callback = (checked: PopupPeerButtonCallbackCheckboxes, revoke?: boolean) => {\n onConfirm && onConfirm();\n if(type === 'scheduled') {\n appMessagesManager.deleteScheduledMessages(peerId, mids);\n } else {\n appMessagesManager.deleteMessages(peerId, mids, !!checked.size || revoke);\n }\n };\n\n let title: LangPackKey, titleArgs: any[], description: LangPackKey, descriptionArgs: any[], buttons: PopupPeerOptions['buttons'], checkboxes: PopupPeerOptions['checkboxes'] = [];\n if(mids.length === 1) {\n title = 'DeleteSingleMessagesTitle';\n } else {\n title = 'DeleteMessagesTitle';\n titleArgs = [i18n('messages', [mids.length])];\n }\n \n if(appPeersManager.isMegagroup(peerId)) {\n description = mids.length === 1 ? 'AreYouSureDeleteSingleMessageMega' : 'AreYouSureDeleteFewMessagesMega';\n } else {\n description = mids.length === 1 ? 'AreYouSureDeleteSingleMessage' : 'AreYouSureDeleteFewMessages';\n }\n\n buttons = [{\n langKey: 'Delete',\n isDanger: true,\n callback\n }];\n\n if(peerId === rootScope.myId || type === 'scheduled') {\n \n } else {\n if(peerId.isUser()) {\n checkboxes.push({\n text: 'DeleteMessagesOptionAlso',\n textArgs: [peerTitleElement]\n });\n } else {\n const chat = appChatsManager.getChat(peerId.toChatId());\n\n const hasRights = appChatsManager.hasRights(peerId.toChatId(), 'delete_messages');\n if(chat._ === 'chat') {\n const canRevoke = hasRights ? mids.slice() : mids.filter(mid => {\n const message = appMessagesManager.getMessageByPeer(peerId, mid);\n return message.fromId === rootScope.myId;\n });\n\n if(canRevoke.length) {\n if(canRevoke.length === mids.length) {\n checkboxes.push({\n text: 'DeleteForAll'\n });\n } else {\n checkboxes.push({\n text: 'DeleteMessagesOption'\n });\n\n description = 'DeleteMessagesTextGroup';\n descriptionArgs = [i18n('messages', [canRevoke.length])];\n //description = `You can also delete the ${canRevoke.length} message${canRevoke.length > 1 ? 's' : ''} you sent from the inboxes of other group members by pressing \"${buttonText}\".`;\n }\n }\n } else {\n buttons[0].callback = (checked) => callback(checked, true);\n }\n }\n }\n\n addCancelButton(buttons);\n\n const popup = new PopupPeer('popup-delete-chat', {\n peerId,\n titleLangKey: title,\n titleLangArgs: titleArgs,\n descriptionLangKey: description,\n descriptionLangArgs: descriptionArgs,\n buttons,\n checkboxes\n });\n\n popup.show();\n }\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport appMessagesManager from \"../../lib/appManagers/appMessagesManager\";\nimport { PopupButton } from \".\";\nimport PopupPeer from \"./peer\";\n\nexport default class PopupSendNow {\n constructor(peerId: PeerId, mids: number[], onConfirm?: () => void) {\n let title: string, description: string, buttons: PopupButton[] = [];\n\n title = `Send Message${mids.length > 1 ? 's' : ''} Now`;\n description = mids.length > 1 ? 'Send ' + mids.length + ' messages now?' : 'Send message now?';\n\n const callback = () => {\n onConfirm && onConfirm();\n appMessagesManager.sendScheduledMessages(peerId, mids);\n };\n\n buttons.push({\n langKey: 'Send',\n callback\n });\n\n const popup = new PopupPeer('popup-delete-chat', {\n peerId,\n title,\n description,\n buttons\n });\n\n popup.show();\n }\n}","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nexport default function cancelSelection() {\r\n if(window.getSelection) {\r\n if(window.getSelection().empty) { // Chrome\r\n window.getSelection().empty();\r\n } else if(window.getSelection().removeAllRanges) { // Firefox\r\n window.getSelection().removeAllRanges();\r\n }\r\n // @ts-ignore\r\n } else if(document.selection) { // IE?\r\n // @ts-ignore\r\n document.selection.empty();\r\n }\r\n}\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport type { AppMessagesManager } from \"../../lib/appManagers/appMessagesManager\";\nimport type ChatBubbles from \"./bubbles\";\nimport type ChatInput from \"./input\";\nimport type Chat from \"./chat\";\nimport { IS_TOUCH_SUPPORTED } from \"../../environment/touchSupport\";\nimport Button from \"../button\";\nimport ButtonIcon from \"../buttonIcon\";\nimport CheckboxField from \"../checkboxField\";\nimport PopupDeleteMessages from \"../popups/deleteMessages\";\nimport PopupForward from \"../popups/forward\";\nimport { toast } from \"../toast\";\nimport SetTransition from \"../singleTransition\";\nimport ListenerSetter from \"../../helpers/listenerSetter\";\nimport PopupSendNow from \"../popups/sendNow\";\nimport appNavigationController, { NavigationItem } from \"../appNavigationController\";\nimport { IS_MOBILE_SAFARI } from \"../../environment/userAgent\";\nimport I18n, { i18n, _i18n } from \"../../lib/langPack\";\nimport findUpClassName from \"../../helpers/dom/findUpClassName\";\nimport blurActiveElement from \"../../helpers/dom/blurActiveElement\";\nimport cancelEvent from \"../../helpers/dom/cancelEvent\";\nimport cancelSelection from \"../../helpers/dom/cancelSelection\";\nimport getSelectedText from \"../../helpers/dom/getSelectedText\";\nimport rootScope from \"../../lib/rootScope\";\nimport { fastRaf } from \"../../helpers/schedulers\";\nimport replaceContent from \"../../helpers/dom/replaceContent\";\nimport AppSearchSuper from \"../appSearchSuper.\";\nimport isInDOM from \"../../helpers/dom/isInDOM\";\nimport { randomLong } from \"../../helpers/random\";\nimport { attachContextMenuListener } from \"../misc\";\nimport { attachClickEvent, AttachClickOptions } from \"../../helpers/dom/clickEvent\";\nimport findUpAsChild from \"../../helpers/dom/findUpAsChild\";\nimport EventListenerBase from \"../../helpers/eventListenerBase\";\nimport safeAssign from \"../../helpers/object/safeAssign\";\n\nconst accumulateMapSet = (map: Map>) => {\n return [...map.values()].reduce((acc, v) => acc + v.size, 0);\n};\n\n//const MIN_CLICK_MOVE = 32; // minimum bubble height\n\nclass AppSelection extends EventListenerBase<{\n toggle: (isSelecting: boolean) => void\n}> {\n public selectedMids: Map> = new Map();\n public isSelecting = false;\n\n public selectedText: string;\n\n protected listenerSetter: ListenerSetter;\n protected appMessagesManager: AppMessagesManager;\n protected isScheduled: boolean;\n protected listenElement: HTMLElement;\n\n protected onToggleSelection: (forwards: boolean, animate: boolean) => void;\n protected onUpdateContainer: (cantForward: boolean, cantDelete: boolean, cantSend: boolean) => void;\n protected onCancelSelection: () => void;\n protected toggleByMid: (peerId: PeerId, mid: number) => void;\n protected toggleByElement: (bubble: HTMLElement) => void;\n\n protected navigationType: NavigationItem['type'];\n\n protected getElementFromTarget: (target: HTMLElement) => HTMLElement;\n protected verifyTarget: (e: MouseEvent, target: HTMLElement) => boolean;\n protected verifyMouseMoveTarget: (e: MouseEvent, element: HTMLElement, selecting: boolean) => boolean;\n protected verifyTouchLongPress: () => boolean;\n protected targetLookupClassName: string;\n protected lookupBetweenParentClassName: string;\n protected lookupBetweenElementsQuery: string;\n\n protected doNotAnimate: boolean;\n\n constructor(options: {\n appMessagesManager: AppMessagesManager,\n listenElement: HTMLElement,\n listenerSetter: ListenerSetter,\n getElementFromTarget: AppSelection['getElementFromTarget'],\n verifyTarget?: AppSelection['verifyTarget'],\n verifyMouseMoveTarget?: AppSelection['verifyMouseMoveTarget'],\n verifyTouchLongPress?: AppSelection['verifyTouchLongPress'],\n targetLookupClassName: string,\n lookupBetweenParentClassName: string,\n lookupBetweenElementsQuery: string,\n isScheduled?: AppSelection['isScheduled']\n }) {\n super(false);\n\n safeAssign(this, options);\n\n this.navigationType = 'multiselect-' + randomLong() as any;\n\n if(IS_TOUCH_SUPPORTED) {\n this.listenerSetter.add(this.listenElement)('touchend', () => {\n if(!this.isSelecting) return;\n this.selectedText = getSelectedText();\n });\n\n attachContextMenuListener(this.listenElement, (e) => {\n if(this.isSelecting || (this.verifyTouchLongPress && !this.verifyTouchLongPress())) return;\n\n // * these two lines will fix instant text selection on iOS Safari\n document.body.classList.add('no-select'); // * need no-select on body because chat-input transforms in channels\n this.listenElement.addEventListener('touchend', (e) => {\n cancelEvent(e); // ! this one will fix propagation to document loader button, etc\n document.body.classList.remove('no-select');\n\n //this.chat.bubbles.onBubblesClick(e);\n }, {once: true, capture: true});\n\n cancelSelection();\n //cancelEvent(e as any);\n const element = this.getElementFromTarget(e.target as HTMLElement);\n if(element) {\n this.toggleByElement(element);\n }\n }, this.listenerSetter);\n\n return;\n }\n\n const getElementsBetween = (first: HTMLElement, last: HTMLElement) => { \n if(first === last) {\n return [];\n }\n\n const firstRect = first.getBoundingClientRect();\n const lastRect = last.getBoundingClientRect();\n const difference = (firstRect.top - lastRect.top) || (firstRect.left - lastRect.left);\n const isHigher = difference < 0;\n\n const parent = findUpClassName(first, this.lookupBetweenParentClassName);\n if(!parent) {\n return [];\n }\n\n const elements = Array.from(parent.querySelectorAll(this.lookupBetweenElementsQuery)) as HTMLElement[];\n let firstIndex = elements.indexOf(first);\n let lastIndex = elements.indexOf(last);\n\n if(!isHigher) {\n [lastIndex, firstIndex] = [firstIndex, lastIndex];\n }\n\n const slice = elements.slice(firstIndex + 1, lastIndex);\n\n // console.log('getElementsBetween', first, last, slice, firstIndex, lastIndex, isHigher);\n\n return slice;\n };\n\n this.listenerSetter.add(this.listenElement)('mousedown', (e) => {\n //console.log('selection mousedown', e);\n const element = findUpClassName(e.target, this.targetLookupClassName);\n if(e.button !== 0) {\n return;\n }\n\n if(this.verifyTarget && !this.verifyTarget(e, element)) {\n return;\n }\n \n const seen: AppSelection['selectedMids'] = new Map();\n let selecting: boolean;\n\n /* let good = false;\n const {x, y} = e; */\n\n /* const bubbles = appImManager.bubbles;\n for(const mid in bubbles) {\n const bubble = bubbles[mid];\n bubble.addEventListener('mouseover', () => {\n console.log('mouseover');\n }, {once: true});\n } */\n\n let firstTarget = element;\n\n const processElement = (element: HTMLElement, checkBetween = true) => {\n const mid = +element.dataset.mid;\n if(!mid || !element.dataset.peerId) return;\n const peerId = element.dataset.peerId.toPeerId();\n\n if(!isInDOM(firstTarget)) {\n firstTarget = element;\n }\n\n let seenSet = seen.get(peerId);\n if(!seenSet) {\n seen.set(peerId, seenSet = new Set());\n }\n\n if(!seenSet.has(mid)) {\n const isSelected = this.isMidSelected(peerId, mid);\n if(selecting === undefined) {\n //bubblesContainer.classList.add('no-select');\n selecting = !isSelected;\n }\n\n seenSet.add(mid);\n\n if((selecting && !isSelected) || (!selecting && isSelected)) {\n const seenLength = accumulateMapSet(seen);\n if(this.toggleByElement && checkBetween) {\n if(seenLength < 2) {\n if(findUpAsChild(element, firstTarget)) {\n firstTarget = element;\n }\n }\n\n const elementsBetween = getElementsBetween(firstTarget, element);\n // console.log(elementsBetween);\n if(elementsBetween.length) {\n elementsBetween.forEach(element => {\n processElement(element, false);\n });\n }\n }\n\n if(!this.selectedMids.size) {\n if(seenLength === 2 && this.toggleByMid) {\n for(const [peerId, mids] of seen) {\n for(const mid of mids) {\n this.toggleByMid(peerId, mid);\n }\n }\n }\n } else if(this.toggleByElement) {\n this.toggleByElement(element);\n }\n }\n }\n };\n\n //const foundTargets: Map = new Map();\n let canceledSelection = false;\n const onMouseMove = (e: MouseEvent) => {\n if(!canceledSelection) {\n cancelSelection();\n canceledSelection = true;\n }\n /* if(!good) {\n if(Math.abs(e.x - x) > MIN_CLICK_MOVE || Math.abs(e.y - y) > MIN_CLICK_MOVE) {\n good = true;\n } else {\n return;\n }\n } */\n\n /* if(foundTargets.has(e.target as HTMLElement)) return;\n foundTargets.set(e.target as HTMLElement, true); */\n const element = this.getElementFromTarget(e.target as HTMLElement);\n if(!element) {\n //console.error('found no bubble', e);\n return;\n }\n\n if(this.verifyMouseMoveTarget && !this.verifyMouseMoveTarget(e, element, selecting)) {\n this.listenerSetter.removeManual(this.listenElement, 'mousemove', onMouseMove);\n this.listenerSetter.removeManual(document, 'mouseup', onMouseUp, documentListenerOptions);\n return;\n }\n\n processElement(element);\n };\n\n const onMouseUp = (e: MouseEvent) => {\n if(seen.size) {\n attachClickEvent(window, cancelEvent, {capture: true, once: true, passive: false});\n }\n\n this.listenerSetter.removeManual(this.listenElement, 'mousemove', onMouseMove);\n //bubblesContainer.classList.remove('no-select');\n\n // ! CANCEL USER SELECTION !\n cancelSelection();\n };\n\n const documentListenerOptions = {once: true};\n this.listenerSetter.add(this.listenElement)('mousemove', onMouseMove);\n this.listenerSetter.add(document)('mouseup', onMouseUp, documentListenerOptions);\n });\n }\n\n protected isElementShouldBeSelected(element: HTMLElement) {\n return this.isMidSelected(element.dataset.peerId.toPeerId(), +element.dataset.mid);\n }\n\n protected appendCheckbox(element: HTMLElement, checkboxField: CheckboxField) {\n element.prepend(checkboxField.label);\n }\n\n public toggleElementCheckbox(element: HTMLElement, show: boolean) {\n const hasCheckbox = !!this.getCheckboxInputFromElement(element);\n if(show) {\n if(hasCheckbox) {\n return false;\n }\n \n const checkboxField = new CheckboxField({\n name: element.dataset.mid, \n round: true\n });\n \n // * if it is a render of new message\n if(this.isSelecting) { // ! avoid breaking animation on start\n if(this.isElementShouldBeSelected(element)) {\n checkboxField.input.checked = true;\n element.classList.add('is-selected');\n }\n }\n \n this.appendCheckbox(element, checkboxField);\n } else if(hasCheckbox) {\n this.getCheckboxInputFromElement(element).parentElement.remove();\n }\n\n return true;\n }\n\n protected getCheckboxInputFromElement(element: HTMLElement): HTMLInputElement {\n return element.firstElementChild?.tagName === 'LABEL' && \n element.firstElementChild.firstElementChild as HTMLInputElement;\n }\n\n protected updateContainer(forceSelection = false) {\n const size = this.selectedMids.size;\n if(!size && !forceSelection) return;\n \n let cantForward = !size, \n cantDelete = !size, \n cantSend = !size;\n for(const [peerId, mids] of this.selectedMids) {\n const storage = this.isScheduled ? this.appMessagesManager.getScheduledMessagesStorage(peerId) : this.appMessagesManager.getMessagesStorage(peerId);\n for(const mid of mids) {\n const message = this.appMessagesManager.getMessageFromStorage(storage, mid);\n if(!cantForward) {\n cantForward = !this.appMessagesManager.canForward(message);\n }\n \n if(!cantDelete) {\n cantDelete = !this.appMessagesManager.canDeleteMessage(message);\n }\n\n if(cantForward && cantDelete) break;\n }\n\n if(cantForward && cantDelete) break;\n }\n \n this.onUpdateContainer && this.onUpdateContainer(cantForward, cantDelete, cantSend);\n }\n\n public toggleSelection(toggleCheckboxes = true, forceSelection = false) {\n const wasSelecting = this.isSelecting;\n const size = this.selectedMids.size;\n this.isSelecting = !!size || forceSelection;\n\n if(wasSelecting === this.isSelecting) return false;\n\n this.dispatchEvent('toggle', this.isSelecting);\n \n // const bubblesContainer = this.bubbles.bubblesContainer;\n //bubblesContainer.classList.toggle('is-selecting', !!size);\n\n /* if(bubblesContainer.classList.contains('is-chat-input-hidden')) {\n const scrollable = this.appImManager.scrollable;\n if(scrollable.isScrolledDown) {\n scrollable.scrollTo(scrollable.scrollHeight, 'top', true, true, 200);\n }\n } */\n\n if(!IS_TOUCH_SUPPORTED) {\n this.listenElement.classList.toggle('no-select', this.isSelecting);\n\n if(wasSelecting) {\n // ! CANCEL USER SELECTION !\n cancelSelection();\n }\n }/* else {\n if(!wasSelecting) {\n bubblesContainer.classList.add('no-select');\n setTimeout(() => {\n cancelSelection();\n bubblesContainer.classList.remove('no-select');\n cancelSelection();\n }, 100);\n }\n } */\n\n blurActiveElement();\n\n const forwards = !!size || forceSelection;\n this.onToggleSelection && this.onToggleSelection(forwards, !this.doNotAnimate);\n\n if(!IS_MOBILE_SAFARI) {\n if(forwards) {\n appNavigationController.pushItem({\n type: this.navigationType,\n onPop: () => {\n this.cancelSelection();\n }\n });\n } else {\n appNavigationController.removeByType(this.navigationType);\n }\n }\n\n if(forceSelection) {\n this.updateContainer(forceSelection);\n }\n\n return true;\n }\n\n public cancelSelection = (doNotAnimate?: boolean) => {\n if(doNotAnimate) this.doNotAnimate = true;\n this.onCancelSelection && this.onCancelSelection();\n this.selectedMids.clear();\n this.toggleSelection();\n cancelSelection();\n if(doNotAnimate) this.doNotAnimate = undefined;\n };\n\n public cleanup() {\n this.doNotAnimate = true;\n this.selectedMids.clear();\n this.toggleSelection(false);\n this.doNotAnimate = undefined;\n }\n\n protected updateElementSelection(element: HTMLElement, isSelected: boolean) {\n this.toggleElementCheckbox(element, true);\n const input = this.getCheckboxInputFromElement(element);\n input.checked = isSelected;\n\n this.toggleSelection();\n this.updateContainer();\n SetTransition(element, 'is-selected', isSelected, 200);\n }\n\n public isMidSelected(peerId: PeerId, mid: number) {\n const set = this.selectedMids.get(peerId);\n return set?.has(mid);\n }\n\n public length() {\n return accumulateMapSet(this.selectedMids);\n }\n\n protected toggleMid(peerId: PeerId, mid: number, unselect?: boolean) {\n let set = this.selectedMids.get(peerId);\n if(unselect || (unselect === undefined && set?.has(mid))) {\n if(set) {\n set.delete(mid);\n\n if(!set.size) {\n this.selectedMids.delete(peerId);\n }\n }\n } else {\n const diff = rootScope.config.forwarded_count_max - this.length() - 1;\n if(diff < 0) {\n toast(I18n.format('Chat.Selection.LimitToast', true));\n return false;\n /* const it = this.selectedMids.values();\n do {\n const mid = it.next().value;\n const mounted = this.appImManager.getMountedBubble(mid);\n if(mounted) {\n this.toggleByBubble(mounted.bubble);\n } else {\n const mids = this.appMessagesManager.getMidsByMid(mid);\n for(const mid of mids) {\n this.selectedMids.delete(mid);\n }\n }\n } while(this.selectedMids.size > MAX_SELECTION_LENGTH); */\n }\n\n if(!set) {\n set = new Set();\n this.selectedMids.set(peerId, set);\n }\n\n set.add(mid);\n }\n\n return true;\n }\n\n /**\n * ! Call this method only to handle deleted messages\n */\n public deleteSelectedMids(peerId: PeerId, mids: number[]) {\n const set = this.selectedMids.get(peerId);\n if(!set) {\n return;\n }\n\n mids.forEach(mid => {\n set.delete(mid);\n });\n\n if(!set.size) {\n this.selectedMids.delete(peerId);\n }\n\n this.updateContainer();\n this.toggleSelection();\n }\n}\n\nexport class SearchSelection extends AppSelection {\n protected selectionContainer: HTMLElement;\n protected selectionCountEl: HTMLElement;\n public selectionForwardBtn: HTMLElement;\n public selectionDeleteBtn: HTMLElement;\n public selectionGotoBtn: HTMLElement;\n\n private isPrivate: boolean;\n\n constructor(private searchSuper: AppSearchSuper, appMessagesManager: AppMessagesManager) {\n super({\n appMessagesManager,\n listenElement: searchSuper.container,\n listenerSetter: new ListenerSetter(),\n verifyTarget: (e, target) => !!target && this.isSelecting,\n getElementFromTarget: (target) => findUpClassName(target, 'search-super-item'),\n targetLookupClassName: 'search-super-item',\n lookupBetweenParentClassName: 'tabs-tab',\n lookupBetweenElementsQuery: '.search-super-item'\n });\n\n this.isPrivate = !searchSuper.showSender;\n }\n\n /* public appendCheckbox(element: HTMLElement, checkboxField: CheckboxField) {\n checkboxField.label.classList.add('bubble-select-checkbox');\n\n if(element.classList.contains('document') || element.tagName === 'AUDIO-ELEMENT') {\n element.querySelector('.document, audio-element').append(checkboxField.label);\n } else {\n super.appendCheckbox(bubble, checkboxField);\n }\n } */\n\n public toggleSelection(toggleCheckboxes = true, forceSelection = false) {\n const ret = super.toggleSelection(toggleCheckboxes, forceSelection);\n\n if(ret && toggleCheckboxes) {\n const elements = Array.from(this.searchSuper.tabsContainer.querySelectorAll('.search-super-item')) as HTMLElement[];\n elements.forEach(element => {\n this.toggleElementCheckbox(element, this.isSelecting);\n });\n }\n\n return ret;\n }\n\n public toggleByElement = (element: HTMLElement) => {\n const mid = +element.dataset.mid;\n const peerId = element.dataset.peerId.toPeerId();\n\n if(!this.toggleMid(peerId, mid)) {\n return;\n }\n\n this.updateElementSelection(element, this.isMidSelected(peerId, mid));\n };\n\n public toggleByMid = (peerId: PeerId, mid: number) => {\n const element = this.searchSuper.mediaTab.contentTab.querySelector(`.search-super-item[data-peer-id=\"${peerId}\"][data-mid=\"${mid}\"]`) as HTMLElement;\n this.toggleByElement(element);\n };\n\n protected onUpdateContainer = (cantForward: boolean, cantDelete: boolean, cantSend: boolean) => {\n const length = this.length();\n replaceContent(this.selectionCountEl, i18n('messages', [length]));\n this.selectionGotoBtn.classList.toggle('hide', length !== 1);\n this.selectionForwardBtn.classList.toggle('hide', cantForward);\n this.selectionDeleteBtn && this.selectionDeleteBtn.classList.toggle('hide', cantDelete);\n };\n\n protected onToggleSelection = (forwards: boolean, animate: boolean) => {\n SetTransition(this.searchSuper.navScrollableContainer, 'is-selecting', forwards, animate ? 200 : 0, () => {\n if(!this.isSelecting) {\n this.selectionContainer.remove();\n this.selectionContainer = \n this.selectionForwardBtn = \n this.selectionDeleteBtn = \n null;\n this.selectedText = undefined;\n }\n });\n\n SetTransition(this.searchSuper.container, 'is-selecting', forwards, 200);\n\n if(this.isSelecting) {\n if(!this.selectionContainer) {\n const BASE_CLASS = 'search-super-selection';\n this.selectionContainer = document.createElement('div');\n this.selectionContainer.classList.add(BASE_CLASS + '-container');\n\n const btnCancel = ButtonIcon(`close ${BASE_CLASS}-cancel`, {noRipple: true});\n this.listenerSetter.add(btnCancel)('click', () => this.cancelSelection(), {once: true});\n\n this.selectionCountEl = document.createElement('div');\n this.selectionCountEl.classList.add(BASE_CLASS + '-count');\n\n this.selectionGotoBtn = ButtonIcon(`message ${BASE_CLASS}-goto`);\n\n const attachClickOptions: AttachClickOptions = {listenerSetter: this.listenerSetter};\n attachClickEvent(this.selectionGotoBtn, () => {\n const peerId = [...this.selectedMids.keys()][0];\n const mid = [...this.selectedMids.get(peerId)][0];\n this.cancelSelection();\n\n rootScope.dispatchEvent('history_focus', {\n peerId,\n mid\n });\n }, attachClickOptions);\n\n this.selectionForwardBtn = ButtonIcon(`forward ${BASE_CLASS}-forward`);\n attachClickEvent(this.selectionForwardBtn, () => {\n const obj: {[fromPeerId: PeerId]: number[]} = {};\n for(const [fromPeerId, mids] of this.selectedMids) {\n obj[fromPeerId] = Array.from(mids).sort((a, b) => a - b);\n }\n\n new PopupForward(obj, () => {\n this.cancelSelection();\n });\n }, attachClickOptions);\n\n if(this.isPrivate) {\n this.selectionDeleteBtn = ButtonIcon(`delete danger ${BASE_CLASS}-delete`);\n attachClickEvent(this.selectionDeleteBtn, () => {\n const peerId = [...this.selectedMids.keys()][0];\n new PopupDeleteMessages(peerId, [...this.selectedMids.get(peerId)], 'chat', () => {\n this.cancelSelection();\n });\n }, attachClickOptions);\n }\n\n this.selectionContainer.append(...[\n btnCancel, \n this.selectionCountEl, \n this.selectionGotoBtn, \n this.selectionForwardBtn, \n this.selectionDeleteBtn\n ].filter(Boolean));\n\n const transitionElement = this.selectionContainer;\n transitionElement.style.opacity = '0';\n this.searchSuper.navScrollableContainer.append(transitionElement);\n\n void transitionElement.offsetLeft; // reflow\n transitionElement.style.opacity = '';\n }\n }\n };\n}\n\nexport default class ChatSelection extends AppSelection {\n protected selectionInputWrapper: HTMLElement;\n protected selectionContainer: HTMLElement;\n protected selectionCountEl: HTMLElement;\n public selectionSendNowBtn: HTMLElement;\n public selectionForwardBtn: HTMLElement;\n public selectionDeleteBtn: HTMLElement;\n private selectionLeft: HTMLDivElement;\n private selectionRight: HTMLDivElement;\n\n constructor(private chat: Chat, private bubbles: ChatBubbles, private input: ChatInput, appMessagesManager: AppMessagesManager) {\n super({\n appMessagesManager,\n listenElement: bubbles.bubblesContainer,\n listenerSetter: bubbles.listenerSetter,\n getElementFromTarget: (target) => findUpClassName(target, 'grouped-item') || findUpClassName(target, 'bubble'),\n verifyTarget: (e, target) => {\n // LEFT BUTTON\n // проверка внизу нужна для того, чтобы не активировать селект если target потомок .bubble\n const bad = !this.selectedMids.size \n && !(e.target as HTMLElement).classList.contains('bubble')\n && !(e.target as HTMLElement).classList.contains('document-selection')\n && target;\n\n return !bad;\n },\n verifyMouseMoveTarget: (e, element, selecting) => {\n const bad = e.target !== element && \n !(e.target as HTMLElement).classList.contains('document-selection') && \n selecting === undefined && \n !this.selectedMids.size;\n return !bad;\n },\n verifyTouchLongPress: () => !this.chat.input.recording,\n targetLookupClassName: 'bubble',\n lookupBetweenParentClassName: 'bubbles-inner',\n lookupBetweenElementsQuery: '.bubble:not(.is-multiple-documents), .grouped-item',\n isScheduled: chat.type === 'scheduled'\n });\n }\n\n public appendCheckbox(bubble: HTMLElement, checkboxField: CheckboxField) {\n checkboxField.label.classList.add('bubble-select-checkbox');\n\n if(bubble.classList.contains('document-container')) {\n bubble.querySelector('.document, audio-element').append(checkboxField.label);\n } else {\n super.appendCheckbox(bubble, checkboxField);\n }\n }\n\n public toggleSelection(toggleCheckboxes = true, forceSelection = false) {\n const ret = super.toggleSelection(toggleCheckboxes, forceSelection);\n\n if(ret && toggleCheckboxes) {\n for(const mid in this.bubbles.bubbles) {\n const bubble = this.bubbles.bubbles[mid];\n this.toggleElementCheckbox(bubble, this.isSelecting);\n }\n }\n\n return ret;\n }\n\n public toggleElementCheckbox(bubble: HTMLElement, show: boolean) {\n if(!this.canSelectBubble(bubble)) return;\n\n const ret = super.toggleElementCheckbox(bubble, show);\n if(ret) {\n const isGrouped = bubble.classList.contains('is-grouped');\n if(isGrouped) {\n this.bubbles.getBubbleGroupedItems(bubble).forEach(item => this.toggleElementCheckbox(item, show));\n }\n }\n \n return ret;\n }\n\n public toggleByElement = (bubble: HTMLElement) => {\n if(!this.canSelectBubble(bubble)) return;\n\n const mid = +bubble.dataset.mid;\n\n const isGrouped = bubble.classList.contains('is-grouped');\n if(isGrouped) {\n if(!this.isGroupedBubbleSelected(bubble)) {\n const set = this.selectedMids.get(this.bubbles.peerId);\n if(set) {\n const mids = this.chat.getMidsByMid(mid);\n mids.forEach(mid => set.delete(mid));\n }\n }\n\n this.bubbles.getBubbleGroupedItems(bubble).forEach(this.toggleByElement);\n return;\n }\n\n if(!this.toggleMid(this.bubbles.peerId, mid)) {\n return;\n }\n\n const isGroupedItem = bubble.classList.contains('grouped-item');\n if(isGroupedItem) {\n const groupContainer = findUpClassName(bubble, 'bubble');\n const isGroupedSelected = this.isGroupedBubbleSelected(groupContainer);\n const isGroupedMidsSelected = this.isGroupedMidsSelected(mid);\n\n const willChange = isGroupedMidsSelected || isGroupedSelected;\n if(willChange) {\n this.updateElementSelection(groupContainer, isGroupedMidsSelected);\n }\n }\n\n this.updateElementSelection(bubble, this.isMidSelected(this.bubbles.peerId, mid));\n };\n\n protected toggleByMid = (peerId: PeerId, mid: number) => {\n const mounted = this.bubbles.getMountedBubble(mid);\n if(mounted) {\n this.toggleByElement(mounted.bubble);\n }\n };\n\n public isElementShouldBeSelected(element: HTMLElement) {\n const isGrouped = element.classList.contains('is-grouped');\n return super.isElementShouldBeSelected(element) && (!isGrouped || this.isGroupedMidsSelected(+element.dataset.mid));\n }\n\n protected isGroupedBubbleSelected(bubble: HTMLElement) {\n const groupedCheckboxInput = this.getCheckboxInputFromElement(bubble);\n return groupedCheckboxInput?.checked;\n }\n\n protected isGroupedMidsSelected(mid: number) {\n const mids = this.chat.getMidsByMid(mid);\n const selectedMids = mids.filter(mid => this.isMidSelected(this.bubbles.peerId, mid));\n return mids.length === selectedMids.length;\n }\n\n protected getCheckboxInputFromElement(bubble: HTMLElement) {\n /* let perf = performance.now();\n let checkbox = bubble.firstElementChild.tagName === 'LABEL' && bubble.firstElementChild.firstElementChild as HTMLInputElement;\n console.log('getCheckboxInputFromBubble firstElementChild time:', performance.now() - perf);\n \n perf = performance.now();\n checkbox = bubble.querySelector('label input');\n console.log('getCheckboxInputFromBubble querySelector time:', performance.now() - perf); */\n /* let perf = performance.now();\n let contains = bubble.classList.contains('document-container');\n console.log('getCheckboxInputFromBubble classList time:', performance.now() - perf);\n \n perf = performance.now();\n contains = bubble.className.includes('document-container');\n console.log('getCheckboxInputFromBubble className time:', performance.now() - perf); */\n \n return bubble.classList.contains('document-container') ? \n bubble.querySelector('label input') as HTMLInputElement : \n super.getCheckboxInputFromElement(bubble);\n }\n\n public canSelectBubble(bubble: HTMLElement) {\n return !bubble.classList.contains('service') && \n !bubble.classList.contains('is-outgoing') && \n !bubble.classList.contains('bubble-first') && \n !bubble.classList.contains('avoid-selection');\n }\n\n protected onToggleSelection = (forwards: boolean, animate: boolean) => {\n const {needTranslateX, widthFrom, widthTo} = this.chat.input.center(animate);\n\n SetTransition(this.listenElement, 'is-selecting', forwards, animate ? 200 : 0, () => {\n if(!this.isSelecting) {\n this.selectionInputWrapper.remove();\n this.selectionInputWrapper = \n this.selectionContainer = \n this.selectionSendNowBtn = \n this.selectionForwardBtn = \n this.selectionDeleteBtn = \n this.selectionLeft = \n this.selectionRight = \n null;\n this.selectedText = undefined;\n }\n \n /* fastRaf(() => {\n this.bubbles.onScroll();\n }); */\n });\n\n //const chatInput = this.appImManager.chatInput;\n\n const translateButtonsX = widthFrom < widthTo ? undefined : needTranslateX * 2;\n if(this.isSelecting) {\n if(!this.selectionContainer) {\n this.selectionInputWrapper = document.createElement('div');\n this.selectionInputWrapper.classList.add('chat-input-wrapper', 'selection-wrapper');\n\n // const background = document.createElement('div');\n // background.classList.add('chat-input-wrapper-background');\n\n this.selectionContainer = document.createElement('div');\n this.selectionContainer.classList.add('selection-container');\n\n const attachClickOptions: AttachClickOptions = {listenerSetter: this.listenerSetter};\n const btnCancel = ButtonIcon('close', {noRipple: true});\n attachClickEvent(btnCancel, () => this.cancelSelection(), {once: true, listenerSetter: this.listenerSetter});\n\n this.selectionCountEl = document.createElement('div');\n this.selectionCountEl.classList.add('selection-container-count');\n\n if(this.chat.type === 'scheduled') {\n this.selectionSendNowBtn = Button('btn-primary btn-transparent btn-short text-bold selection-container-send', {icon: 'send2'});\n this.selectionSendNowBtn.append(i18n('MessageScheduleSend'));\n attachClickEvent(this.selectionSendNowBtn, () => {\n new PopupSendNow(this.bubbles.peerId, [...this.selectedMids.get(this.bubbles.peerId)], () => {\n this.cancelSelection();\n });\n }, attachClickOptions);\n } else {\n this.selectionForwardBtn = Button('btn-primary btn-transparent text-bold selection-container-forward', {icon: 'forward'});\n this.selectionForwardBtn.append(i18n('Forward'));\n attachClickEvent(this.selectionForwardBtn, () => {\n const obj: {[fromPeerId: PeerId]: number[]} = {};\n for(const [fromPeerId, mids] of this.selectedMids) {\n obj[fromPeerId] = Array.from(mids).sort((a, b) => a - b);\n }\n\n new PopupForward(obj, () => {\n this.cancelSelection();\n });\n }, attachClickOptions);\n }\n\n this.selectionDeleteBtn = Button('btn-primary btn-transparent danger text-bold selection-container-delete', {icon: 'delete'});\n this.selectionDeleteBtn.append(i18n('Delete'));\n attachClickEvent(this.selectionDeleteBtn, () => {\n new PopupDeleteMessages(this.bubbles.peerId, [...this.selectedMids.get(this.bubbles.peerId)], this.chat.type, () => {\n this.cancelSelection();\n });\n }, attachClickOptions);\n\n const left = this.selectionLeft = document.createElement('div');\n left.classList.add('selection-container-left');\n left.append(btnCancel, this.selectionCountEl);\n\n const right = this.selectionRight = document.createElement('div');\n right.classList.add('selection-container-right');\n right.append(...[\n this.selectionSendNowBtn, \n this.selectionForwardBtn, \n this.selectionDeleteBtn\n ].filter(Boolean))\n\n if(translateButtonsX !== undefined) {\n left.style.transform = `translateX(${-translateButtonsX}px)`;\n right.style.transform = `translateX(${translateButtonsX}px)`;\n }\n\n this.selectionContainer.append(left, right);\n\n // background.style.opacity = '0';\n this.selectionInputWrapper.style.opacity = '0';\n this.selectionInputWrapper.append(/* background, */this.selectionContainer);\n this.input.inputContainer.append(this.selectionInputWrapper);\n \n void this.selectionInputWrapper.offsetLeft; // reflow\n // background.style.opacity = '';\n this.selectionInputWrapper.style.opacity = '';\n left.style.transform = '';\n right.style.transform = '';\n }\n } else if(this.selectionLeft && translateButtonsX !== undefined) {\n this.selectionLeft.style.transform = `translateX(-${translateButtonsX}px)`;\n this.selectionRight.style.transform = `translateX(${translateButtonsX}px)`;\n }\n };\n\n protected onUpdateContainer = (cantForward: boolean, cantDelete: boolean, cantSend: boolean) => {\n replaceContent(this.selectionCountEl, i18n('messages', [this.length()]));\n this.selectionSendNowBtn && this.selectionSendNowBtn.toggleAttribute('disabled', cantSend);\n this.selectionForwardBtn && this.selectionForwardBtn.toggleAttribute('disabled', cantForward);\n this.selectionDeleteBtn.toggleAttribute('disabled', cantDelete);\n };\n\n protected onCancelSelection = () => {\n for(const [peerId, mids] of this.selectedMids) {\n for(const mid of mids) {\n const mounted = this.bubbles.getMountedBubble(mid);\n if(mounted) {\n //this.toggleByBubble(mounted.message.grouped_id ? mounted.bubble.querySelector(`.grouped-item[data-mid=\"${mid}\"]`) : mounted.bubble);\n this.toggleByElement(mounted.bubble);\n }\n /* const bubble = this.appImManager.bubbles[mid];\n if(bubble) {\n this.toggleByBubble(bubble);\n } */\n }\n }\n };\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nexport default function getSelectedText(): string {\r\n if(window.getSelection) {\r\n return window.getSelection().toString();\r\n // @ts-ignore\r\n } else if(document.selection) {\r\n // @ts-ignore\r\n return document.selection.createRange().text;\r\n }\r\n \r\n return '';\r\n}\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport appChatsManager from \"../lib/appManagers/appChatsManager\";\nimport appDialogsManager from \"../lib/appManagers/appDialogsManager\";\nimport appMessagesManager, { MyInputMessagesFilter, MyMessage } from \"../lib/appManagers/appMessagesManager\";\nimport appPeersManager from \"../lib/appManagers/appPeersManager\";\nimport appPhotosManager from \"../lib/appManagers/appPhotosManager\";\nimport appStateManager from \"../lib/appManagers/appStateManager\";\nimport appUsersManager from \"../lib/appManagers/appUsersManager\";\nimport { logger } from \"../lib/logger\";\nimport RichTextProcessor from \"../lib/richtextprocessor\";\nimport rootScope from \"../lib/rootScope\";\nimport { SearchGroup, SearchGroupType } from \"./appSearch\";\nimport { horizontalMenu } from \"./horizontalMenu\";\nimport LazyLoadQueue from \"./lazyLoadQueue\";\nimport { attachContextMenuListener, openBtnMenu, positionMenu, putPreloader } from \"./misc\";\nimport ripple from \"./ripple\";\nimport Scrollable, { ScrollableX } from \"./scrollable\";\nimport { wrapDocument, wrapPhoto, wrapVideo } from \"./wrappers\";\nimport useHeavyAnimationCheck, { getHeavyAnimationPromise } from \"../hooks/useHeavyAnimationCheck\";\nimport I18n, { LangPackKey, i18n } from \"../lib/langPack\";\nimport findUpClassName from \"../helpers/dom/findUpClassName\";\nimport { getMiddleware } from \"../helpers/middleware\";\nimport appProfileManager from \"../lib/appManagers/appProfileManager\";\nimport { ChannelParticipant, ChatFull, ChatParticipant, ChatParticipants, Message, MessageMedia, Photo, WebPage } from \"../layer\";\nimport SortedUserList from \"./sortedUserList\";\nimport findUpTag from \"../helpers/dom/findUpTag\";\nimport appSidebarRight from \"./sidebarRight\";\nimport mediaSizes from \"../helpers/mediaSizes\";\nimport appImManager from \"../lib/appManagers/appImManager\";\nimport positionElementByIndex from \"../helpers/dom/positionElementByIndex\";\nimport cleanSearchText from \"../helpers/cleanSearchText\";\nimport { IS_TOUCH_SUPPORTED } from \"../environment/touchSupport\";\nimport handleTabSwipe from \"../helpers/dom/handleTabSwipe\";\nimport windowSize from \"../helpers/windowSize\";\nimport { formatPhoneNumber } from \"../helpers/formatPhoneNumber\";\nimport ButtonMenu, { ButtonMenuItemOptions } from \"./buttonMenu\";\nimport PopupForward from \"./popups/forward\";\nimport PopupDeleteMessages from \"./popups/deleteMessages\";\nimport Row from \"./row\";\nimport htmlToDocumentFragment from \"../helpers/dom/htmlToDocumentFragment\";\nimport { SearchSelection } from \"./chat/selection\";\nimport cancelEvent from \"../helpers/dom/cancelEvent\";\nimport { attachClickEvent, simulateClickEvent } from \"../helpers/dom/clickEvent\";\nimport { MyDocument } from \"../lib/appManagers/appDocsManager\";\nimport AppMediaViewer from \"./appMediaViewer\";\nimport lockTouchScroll from \"../helpers/dom/lockTouchScroll\";\nimport copy from \"../helpers/object/copy\";\nimport getObjectKeysAndSort from \"../helpers/object/getObjectKeysAndSort\";\nimport safeAssign from \"../helpers/object/safeAssign\";\nimport escapeRegExp from \"../helpers/string/escapeRegExp\";\nimport limitSymbols from \"../helpers/string/limitSymbols\";\nimport findAndSplice from \"../helpers/array/findAndSplice\";\nimport { ScrollStartCallbackDimensions } from \"../helpers/fastSmoothScroll\";\n\n//const testScroll = false;\n\nexport type SearchSuperType = MyInputMessagesFilter/* | 'members' */;\nexport type SearchSuperContext = {\n peerId: PeerId,\n inputFilter: {_: MyInputMessagesFilter},\n query?: string,\n maxId?: number,\n folderId?: number,\n threadId?: number,\n date?: number,\n nextRate?: number,\n minDate?: number,\n maxDate?: number\n};\n\nexport type SearchSuperMediaType = 'members' | 'media' | 'files' | 'links' | 'music' | 'chats' | 'voice';\nexport type SearchSuperMediaTab = {\n inputFilter: SearchSuperType,\n name: LangPackKey,\n type: SearchSuperMediaType,\n contentTab?: HTMLElement,\n menuTab?: HTMLElement,\n scroll?: {scrollTop: number, scrollHeight: number}\n};\n\nclass SearchContextMenu {\n private buttons: (ButtonMenuItemOptions & {verify?: () => boolean, withSelection?: true})[];\n private element: HTMLElement;\n private target: HTMLElement;\n private peerId: PeerId;\n private mid: number;\n private isSelected: boolean;\n\n constructor(\n private attachTo: HTMLElement,\n private searchSuper: AppSearchSuper\n ) {\n const onContextMenu = (e: MouseEvent) => {\n if(this.init) {\n this.init();\n this.init = null;\n }\n\n let item: HTMLElement;\n try {\n item = findUpClassName(e.target, 'search-super-item');\n } catch(e) {}\n\n if(!item) return;\n\n if(e instanceof MouseEvent) e.preventDefault();\n if(this.element.classList.contains('active')) {\n return false;\n }\n if(e instanceof MouseEvent) e.cancelBubble = true;\n\n this.target = item;\n this.peerId = item.dataset.peerId.toPeerId();\n this.mid = +item.dataset.mid;\n this.isSelected = searchSuper.selection.isMidSelected(this.peerId, this.mid);\n\n this.buttons.forEach(button => {\n let good: boolean;\n\n if(this.isSelected && !button.withSelection) {\n good = false;\n } else {\n good = button.verify ? button.verify() : true;\n }\n\n button.element.classList.toggle('hide', !good);\n });\n\n item.classList.add('menu-open');\n\n positionMenu(e, this.element);\n openBtnMenu(this.element, () => {\n item.classList.remove('menu-open');\n });\n };\n\n if(IS_TOUCH_SUPPORTED) {\n\n } else {\n attachContextMenuListener(attachTo, onContextMenu as any);\n }\n }\n\n private init() {\n this.buttons = [{\n icon: 'forward',\n text: 'Forward',\n onClick: this.onForwardClick,\n verify: () => appMessagesManager.canForward(appMessagesManager.getMessageByPeer(this.peerId, this.mid))\n }, {\n icon: 'forward',\n text: 'Message.Context.Selection.Forward',\n onClick: this.onForwardClick,\n verify: () => this.isSelected && \n !this.searchSuper.selection.selectionForwardBtn.classList.contains('hide'),\n withSelection: true\n }, {\n icon: 'message',\n text: 'Message.Context.Goto',\n onClick: this.onGotoClick,\n withSelection: true\n }, {\n icon: 'select',\n text: 'Message.Context.Select',\n onClick: this.onSelectClick\n }, {\n icon: 'select',\n text: 'Message.Context.Selection.Clear',\n onClick: this.onClearSelectionClick,\n verify: () => this.isSelected,\n withSelection: true\n }, {\n icon: 'delete danger',\n text: 'Delete',\n onClick: this.onDeleteClick,\n verify: () => appMessagesManager.canDeleteMessage(appMessagesManager.getMessageByPeer(this.peerId, this.mid))\n }, {\n icon: 'delete danger',\n text: 'Message.Context.Selection.Delete',\n onClick: this.onDeleteClick,\n verify: () => this.isSelected && !this.searchSuper.selection.selectionDeleteBtn.classList.contains('hide'),\n withSelection: true\n }];\n\n this.element = ButtonMenu(this.buttons);\n this.element.classList.add('search-contextmenu', 'contextmenu');\n document.getElementById('page-chats').append(this.element);\n }\n\n private onGotoClick = () => {\n rootScope.dispatchEvent('history_focus', {\n peerId: this.peerId,\n mid: this.mid,\n threadId: this.searchSuper.searchContext.threadId\n });\n };\n\n private onForwardClick = () => {\n if(this.searchSuper.selection.isSelecting) {\n simulateClickEvent(this.searchSuper.selection.selectionForwardBtn);\n } else {\n new PopupForward({\n [this.peerId]: [this.mid]\n });\n }\n };\n\n private onSelectClick = () => {\n this.searchSuper.selection.toggleByElement(this.target);\n };\n\n private onClearSelectionClick = () => {\n this.searchSuper.selection.cancelSelection();\n };\n\n private onDeleteClick = () => {\n if(this.searchSuper.selection.isSelecting) {\n simulateClickEvent(this.searchSuper.selection.selectionDeleteBtn);\n } else {\n new PopupDeleteMessages(this.peerId, [this.mid], 'chat');\n }\n };\n}\n\nexport type ProcessSearchSuperResult = {\n message: Message.message, \n middleware: () => boolean, \n promises: Promise[], \n elemsToAppend: {element: HTMLElement, message: any}[],\n inputFilter: MyInputMessagesFilter,\n searchGroup?: SearchGroup\n};\n\nexport default class AppSearchSuper {\n public tabs: {[t in SearchSuperType]: HTMLDivElement} = {} as any;\n\n public mediaTab: SearchSuperMediaTab;\n\n public container: HTMLElement;\n public nav: HTMLElement;\n public navScrollableContainer: HTMLDivElement;\n public tabsContainer: HTMLElement;\n public navScrollable: ScrollableX;\n private tabsMenu: HTMLElement;\n private prevTabId = -1;\n \n private lazyLoadQueue = new LazyLoadQueue();\n public middleware = getMiddleware();\n\n public historyStorage: Partial<{[type in SearchSuperType]: {mid: number, peerId: PeerId}[]}> = {};\n public usedFromHistory: Partial<{[type in SearchSuperType]: number}> = {};\n public urlsToRevoke: string[] = [];\n\n public searchContext: SearchSuperContext;\n public loadMutex: Promise = Promise.resolve();\n\n private nextRates: Partial<{[type in SearchSuperType]: number}> = {};\n private loadPromises: Partial<{[type in SearchSuperType]: Promise}> = {};\n private loaded: Partial<{[type in SearchSuperType]: boolean}> = {};\n private loadedChats = false;\n private firstLoad = true;\n\n private log = logger('SEARCH-SUPER');\n public selectTab: ReturnType;\n \n private monthContainers: Partial<{\n [type in SearchSuperType]: {\n [timestamp: number]: {\n container: HTMLElement,\n items: HTMLElement\n }\n }\n }> = {};\n\n private searchGroupMedia: SearchGroup;\n\n public mediaTabsMap: Map = new Map();\n\n private membersList: SortedUserList;\n\n private skipScroll: boolean;\n\n // * arguments\n public mediaTabs: SearchSuperMediaTab[];\n public scrollable: Scrollable;\n public searchGroups?: {[group in SearchGroupType]: SearchGroup};\n public asChatList? = false;\n public groupByMonth? = true;\n public hideEmptyTabs? = true;\n public onChangeTab?: (mediaTab: SearchSuperMediaTab) => void;\n public showSender? = false;\n\n private searchContextMenu: SearchContextMenu;\n public selection: SearchSelection;\n\n public scrollStartCallback: (dimensions: ScrollStartCallbackDimensions) => void;\n\n constructor(options: Pick) {\n safeAssign(this, options);\n\n this.container = document.createElement('div');\n this.container.classList.add('search-super');\n\n this.searchContextMenu = new SearchContextMenu(this.container, this);\n this.selection = new SearchSelection(this, appMessagesManager);\n\n const navScrollableContainer = this.navScrollableContainer = document.createElement('div');\n navScrollableContainer.classList.add('search-super-tabs-scrollable', 'menu-horizontal-scrollable', 'sticky');\n\n const navScrollable = this.navScrollable = new ScrollableX(navScrollableContainer);\n navScrollable.container.classList.add('search-super-nav-scrollable');\n\n const nav = this.nav = document.createElement('nav');\n nav.classList.add('search-super-tabs', 'menu-horizontal-div');\n this.tabsMenu = nav;\n\n navScrollable.container.append(nav);\n\n for(const mediaTab of this.mediaTabs) {\n const menuTab = document.createElement('div');\n menuTab.classList.add('menu-horizontal-div-item');\n const span = document.createElement('span');\n const i = document.createElement('i');\n\n span.append(i18n(mediaTab.name));\n span.append(i);\n\n menuTab.append(span);\n\n ripple(menuTab);\n\n this.tabsMenu.append(menuTab);\n\n this.mediaTabsMap.set(mediaTab.type, mediaTab);\n\n mediaTab.menuTab = menuTab;\n }\n\n this.tabsContainer = document.createElement('div');\n this.tabsContainer.classList.add('search-super-tabs-container', 'tabs-container');\n\n let unlockScroll: ReturnType;\n if(IS_TOUCH_SUPPORTED) {\n handleTabSwipe({\n element: this.tabsContainer, \n onSwipe: (xDiff, yDiff, e) => {\n const prevId = this.selectTab.prevId();\n const children = Array.from(this.tabsMenu.children) as HTMLElement[];\n let idx: number;\n if(xDiff > 0) {\n for(let i = prevId + 1; i < children.length; ++i) {\n if(!children[i].classList.contains('hide')) {\n idx = i;\n break;\n }\n }\n } else {\n for(let i = prevId - 1; i >= 0; --i) {\n if(!children[i].classList.contains('hide')) {\n idx = i;\n break;\n }\n }\n }\n\n if(idx !== undefined) {\n unlockScroll = lockTouchScroll(this.tabsContainer);\n this.selectTab(idx);\n }\n }\n });\n }\n\n for(const mediaTab of this.mediaTabs) {\n const container = document.createElement('div');\n container.classList.add('search-super-container-' + mediaTab.type, 'tabs-tab');\n\n const content = document.createElement('div');\n content.classList.add('search-super-content-' + mediaTab.type);\n\n container.append(content);\n\n this.tabsContainer.append(container);\n\n this.tabs[mediaTab.inputFilter] = content;\n\n mediaTab.contentTab = content;\n }\n\n this.container.append(navScrollableContainer, this.tabsContainer);\n\n // * construct end\n\n this.searchGroupMedia = new SearchGroup(false, 'messages', true);\n\n this.scrollable.onScrolledBottom = () => {\n if(this.mediaTab.contentTab && !this.loaded[this.mediaTab.inputFilter]/* && false */) {\n //this.log('onScrolledBottom will load media');\n this.load(true);\n }\n };\n //this.scroll.attachSentinels(undefined, 400);\n\n this.selectTab = horizontalMenu(this.tabsMenu, this.tabsContainer, (id, tabContent, animate) => {\n if(this.prevTabId === id && !this.skipScroll) {\n this.scrollable.scrollIntoViewNew({\n element: this.container, \n position: 'start',\n startCallback: this.scrollStartCallback\n });\n return;\n }\n \n const newMediaTab = this.mediaTabs[id];\n if(this.onChangeTab) {\n this.onChangeTab(newMediaTab);\n }\n \n const fromMediaTab = this.mediaTab;\n this.mediaTab = newMediaTab;\n\n if(this.prevTabId !== -1 && animate) {\n this.onTransitionStart();\n }\n\n if(this.skipScroll) {\n this.skipScroll = false;\n } else {\n const offsetTop = this.container.offsetTop;\n let scrollTop = this.scrollable.scrollTop;\n if(scrollTop < offsetTop) {\n this.scrollable.scrollIntoViewNew({\n element: this.container, \n position: 'start',\n startCallback: this.scrollStartCallback\n });\n scrollTop = offsetTop;\n }\n \n fromMediaTab.scroll = {scrollTop: scrollTop, scrollHeight: this.scrollable.scrollHeight};\n \n if(newMediaTab.scroll === undefined) {\n const rect = this.container.getBoundingClientRect();\n const rect2 = this.container.parentElement.getBoundingClientRect();\n const diff = rect.y - rect2.y;\n \n if(scrollTop > diff) {\n newMediaTab.scroll = {scrollTop: diff, scrollHeight: 0};\n }\n }\n \n if(newMediaTab.scroll) {\n const diff = fromMediaTab.scroll.scrollTop - newMediaTab.scroll.scrollTop;\n //console.log('what you gonna do', this.goingHard, diff);\n \n //this.scrollable.scrollTop = scrollTop;\n if(diff/* && diff < 0 */) {\n /* if(diff > -(fromMediaTab.contentTab.scrollHeight + this.nav.scrollHeight)) {\n fromMediaTab.contentTab.style.transform = `translateY(${diff}px)`;\n this.scrollable.scrollTop = scrollTop - diff;\n } else { */\n newMediaTab.contentTab.style.transform = `translateY(${diff}px)`;\n //}\n }\n }\n }\n \n /* if(this.prevTabId !== -1 && nav.offsetTop) {\n this.scrollable.scrollTop -= nav.offsetTop;\n } */\n\n /* this.log('setVirtualContainer', id, this.sharedMediaSelected, this.sharedMediaSelected.childElementCount);\n this.scroll.setVirtualContainer(this.sharedMediaSelected); */\n\n if(this.prevTabId !== -1 && !newMediaTab.contentTab.childElementCount) { // quick brown fix\n //this.contentContainer.classList.remove('loaded');\n this.load(true);\n }\n\n this.prevTabId = id;\n }, () => {\n this.scrollable.onScroll();\n \n //console.log('what y', this.tabSelected.style.transform);\n if(this.mediaTab.scroll !== undefined) {\n this.mediaTab.contentTab.style.transform = '';\n this.scrollable.scrollTop = this.mediaTab.scroll.scrollTop;\n }\n\n if(unlockScroll) {\n unlockScroll();\n unlockScroll = undefined;\n }\n\n this.onTransitionEnd();\n }, undefined, navScrollable);\n\n attachClickEvent(this.tabsContainer, (e) => {\n if(this.selection.isSelecting) {\n cancelEvent(e);\n this.selection.toggleByElement(findUpClassName(e.target, 'search-super-item'));\n }\n }, {capture: true, passive: false});\n \n const onMediaClick = (className: string, targetClassName: string, inputFilter: MyInputMessagesFilter, e: MouseEvent) => {\n const target = findUpClassName(e.target as HTMLDivElement, className);\n if(!target) return;\n \n const mid = +target.dataset.mid;\n if(!mid) {\n this.log.warn('no messageId by click on target:', target);\n return;\n }\n\n const peerId = target.dataset.peerId.toPeerId();\n\n const targets = (Array.from(this.tabs[inputFilter].querySelectorAll('.' + targetClassName)) as HTMLElement[]).map(el => {\n const containerEl = findUpClassName(el, className);\n return {\n element: el, \n mid: +containerEl.dataset.mid, \n peerId: containerEl.dataset.peerId.toPeerId()\n };\n });\n\n //const ids = Object.keys(this.mediaDivsByIds).map(k => +k).sort((a, b) => a - b);\n const idx = targets.findIndex(item => item.mid === mid && item.peerId === peerId);\n \n const message = appMessagesManager.getMessageByPeer(peerId, mid);\n new AppMediaViewer()\n .setSearchContext(this.copySearchContext(inputFilter))\n .openMedia(message, targets[idx].element, 0, false, targets.slice(0, idx), targets.slice(idx + 1));\n };\n\n attachClickEvent(this.tabs.inputMessagesFilterPhotoVideo, onMediaClick.bind(null, 'grid-item', 'grid-item', 'inputMessagesFilterPhotoVideo'));\n attachClickEvent(this.tabs.inputMessagesFilterDocument, onMediaClick.bind(null, 'document-with-thumb', 'media-container', 'inputMessagesFilterDocument'));\n\n /* attachClickEvent(this.tabs.inputMessagesFilterUrl, (e) => {\n const target = e.target as HTMLElement;\n if(target.tagName === 'A') {\n return;\n }\n\n try {\n const a = findUpClassName(target, 'row').querySelector('.anchor-url:last-child') as HTMLAnchorElement;\n a.click();\n } catch(err) {}\n }); */\n\n this.mediaTab = this.mediaTabs[0];\n\n useHeavyAnimationCheck(() => {\n this.lazyLoadQueue.lock();\n }, () => {\n this.lazyLoadQueue.unlockAndRefresh(); // ! maybe not so efficient\n });\n }\n\n private onTransitionStart = () => {\n this.container.classList.add('sliding');\n };\n\n private onTransitionEnd = () => {\n this.container.classList.remove('sliding');\n };\n\n public filterMessagesByType(messages: any[], type: SearchSuperType): MyMessage[] {\n if(type === 'inputMessagesFilterEmpty') return messages;\n\n if(type !== 'inputMessagesFilterUrl') {\n messages = messages.filter(message => !!message.media);\n }\n\n /* if(!this.peerId) {\n messages = messages.filter(message => {\n if(message.peerId === rootScope.myId) {\n return true;\n }\n\n const dialog = appMessagesManager.getDialogByPeerId(message.fromId)[0];\n return dialog && dialog.folder_id === 0;\n });\n } */\n\n let filtered: any[] = [];\n\n switch(type) {\n case 'inputMessagesFilterPhotoVideo': {\n for(let message of messages) {\n let media = message.media.photo || message.media.document || (message.media.webpage && message.media.webpage.document);\n if(!media) {\n //this.log('no media!', message);\n continue;\n }\n \n if(media._ === 'document' && media.type !== 'video'/* && media.type !== 'gif' */) {\n //this.log('broken video', media);\n continue;\n }\n\n filtered.push(message);\n }\n \n break;\n }\n\n case 'inputMessagesFilterDocument': {\n for(let message of messages) {\n if(!message.media.document || ['voice', 'audio', 'gif', 'sticker', 'round'].includes(message.media.document.type)) {\n continue;\n }\n \n filtered.push(message);\n }\n break;\n }\n\n case 'inputMessagesFilterUrl': {\n //this.log('inputMessagesFilterUrl', messages);\n for(let message of messages) {\n //if((message.media.webpage && message.media.webpage._ !== 'webPageEmpty')) {\n filtered.push(message);\n //}\n }\n \n break;\n }\n\n case 'inputMessagesFilterMusic': {\n for(let message of messages) {\n if(!message.media.document || message.media.document.type !== 'audio') {\n continue;\n }\n\n filtered.push(message);\n }\n\n break;\n }\n\n case 'inputMessagesFilterVoice': {\n for(let message of messages) {\n if(!message.media.document || message.media.document.type !== 'voice') {\n continue;\n }\n\n filtered.push(message);\n }\n\n break;\n }\n\n case 'inputMessagesFilterRoundVoice': {\n for(let message of messages) {\n if(!message.media.document || !(['voice', 'round'] as MyDocument['type'][]).includes(message.media.document.type)) {\n continue;\n }\n\n filtered.push(message);\n }\n\n break;\n }\n\n default:\n break;\n }\n\n return filtered;\n }\n\n private processEmptyFilter({message, searchGroup}: ProcessSearchSuperResult) {\n const {dialog, dom} = appDialogsManager.addDialogNew({\n dialog: message.peerId, \n container: searchGroup.list, \n drawStatus: false,\n avatarSize: 54\n });\n\n appDialogsManager.setLastMessage(dialog, message, dom, this.searchContext.query);\n }\n\n private processPhotoVideoFilter({message, promises, middleware, elemsToAppend}: ProcessSearchSuperResult) {\n const media = appMessagesManager.getMediaFromMessage(message);\n\n const div = document.createElement('div');\n div.classList.add('grid-item');\n //this.log(message, photo);\n\n let wrapped: ReturnType;\n const size = appPhotosManager.choosePhotoSize(media, 200, 200);\n if(media._ !== 'photo') {\n wrapped = wrapVideo({\n doc: media,\n message,\n container: div,\n boxWidth: 0,\n boxHeight: 0,\n lazyLoadQueue: this.lazyLoadQueue,\n middleware,\n onlyPreview: true,\n withoutPreloader: true,\n noPlayButton: true,\n size\n }).thumb;\n } else {\n wrapped = wrapPhoto({\n photo: media,\n message,\n container: div,\n boxWidth: 0,\n boxHeight: 0,\n lazyLoadQueue: this.lazyLoadQueue,\n middleware,\n withoutPreloader: true,\n noBlur: true,\n size\n });\n }\n\n [wrapped.images.thumb, wrapped.images.full].filter(Boolean).forEach(image => {\n image.classList.add('grid-item-media');\n });\n\n promises.push(wrapped.loadPromises.thumb);\n\n elemsToAppend.push({element: div, message});\n }\n\n private processDocumentFilter({message, elemsToAppend, inputFilter}: ProcessSearchSuperResult) {\n const document = appMessagesManager.getMediaFromMessage(message);\n const showSender = this.showSender || (['voice', 'round'] as MyDocument['type'][]).includes(document.type);\n const div = wrapDocument({\n message,\n withTime: !showSender,\n fontWeight: 400,\n voiceAsMusic: true,\n showSender,\n searchContext: this.copySearchContext(inputFilter),\n lazyLoadQueue: this.lazyLoadQueue,\n autoDownloadSize: 0\n });\n\n if((['audio', 'voice', 'round'] as MyDocument['type'][]).includes(document.type)) {\n div.classList.add('audio-48');\n }\n\n elemsToAppend.push({element: div, message});\n }\n\n private processUrlFilter({message, promises, middleware, elemsToAppend}: ProcessSearchSuperResult) {\n let webpage = (message.media as MessageMedia.messageMediaWebPage)?.webpage as WebPage.webPage;\n\n if(!webpage) {\n const entity = message.totalEntities ? message.totalEntities.find((e: any) => e._ === 'messageEntityUrl' || e._ === 'messageEntityTextUrl') : null;\n let url: string, display_url: string, sliced: string;\n\n if(!entity) {\n //this.log.error('NO ENTITY:', message);\n const match = RichTextProcessor.matchUrl(message.message);\n if(!match) {\n //this.log.error('NO ENTITY AND NO MATCH:', message);\n return;\n }\n\n url = match[0];\n } else {\n sliced = message.message.slice(entity.offset, entity.offset + entity.length);\n }\n\n if(entity?._ === 'messageEntityTextUrl') {\n url = entity.url;\n //display_url = sliced;\n } else {\n url = url || sliced;\n }\n\n display_url = url;\n\n const same = message.message === url;\n if(!url.match(/^(ftp|http|https):\\/\\//)) {\n display_url = 'https://' + url;\n url = url.includes('@') ? url : 'https://' + url;\n }\n\n display_url = new URL(display_url).hostname;\n\n webpage = {\n _: 'webPage',\n url,\n display_url,\n id: '',\n hash: 0\n };\n\n if(!same) {\n webpage.description = message.message;\n webpage.rDescription = RichTextProcessor.wrapRichText(limitSymbols(message.message, 150, 180));\n }\n }\n\n let previewDiv = document.createElement('div');\n previewDiv.classList.add('preview', 'row-media');\n \n //this.log('wrapping webpage', webpage);\n \n if(webpage.photo) {\n const res = wrapPhoto({\n container: previewDiv,\n message: null,\n photo: webpage.photo as Photo.photo,\n boxWidth: 0,\n boxHeight: 0,\n withoutPreloader: true,\n lazyLoadQueue: this.lazyLoadQueue,\n middleware,\n size: appPhotosManager.choosePhotoSize(webpage.photo as Photo.photo, 60, 60, false),\n loadPromises: promises,\n noBlur: true\n });\n } else {\n previewDiv.classList.add('empty');\n previewDiv.innerHTML = RichTextProcessor.getAbbreviation(webpage.title || webpage.display_url || webpage.description || webpage.url, true);\n }\n \n let title = webpage.rTitle || '';\n let subtitle = webpage.rDescription || '';\n\n const subtitleFragment = htmlToDocumentFragment(subtitle);\n const aFragment = htmlToDocumentFragment(RichTextProcessor.wrapRichText(webpage.url || ''));\n const a = aFragment.firstElementChild;\n if(a instanceof HTMLAnchorElement) {\n try { // can have 'URIError: URI malformed'\n a.innerText = decodeURIComponent(a.href);\n } catch(err) {\n\n }\n }\n\n if(subtitleFragment.firstChild) {\n subtitleFragment.append('\\n');\n }\n\n subtitleFragment.append(a);\n\n if(this.showSender) {\n subtitleFragment.append('\\n', appMessagesManager.wrapSenderToPeer(message));\n }\n \n if(!title) {\n //title = new URL(webpage.url).hostname;\n title = RichTextProcessor.wrapPlainText(webpage.display_url.split('/', 1)[0]);\n }\n\n const row = new Row({\n title,\n titleRight: appMessagesManager.wrapSentTime(message),\n subtitle: subtitleFragment,\n havePadding: true,\n clickable: true,\n noRipple: true\n });\n\n /* const mediaDiv = document.createElement('div');\n mediaDiv.classList.add('row-media'); */\n\n row.container.append(previewDiv);\n \n /* ripple(div);\n div.append(previewDiv);\n div.insertAdjacentHTML('beforeend', `\n ${title}${titleAdditionHTML}\n ${subtitle}\n ${url}\n ${sender}\n `); */\n \n if(row.container.innerText.trim().length) {\n elemsToAppend.push({element: row.container, message});\n }\n }\n \n public async performSearchResult(messages: any[], mediaTab: SearchSuperMediaTab, append = true) {\n const elemsToAppend: {element: HTMLElement, message: any}[] = [];\n const sharedMediaDiv: HTMLElement = mediaTab.contentTab;\n const promises: Promise[] = [];\n const middleware = this.middleware.get();\n let inputFilter = mediaTab.inputFilter;\n\n await getHeavyAnimationPromise();\n \n let searchGroup: SearchGroup;\n if(inputFilter === 'inputMessagesFilterPhotoVideo' && !!this.searchContext.query.trim()) {\n inputFilter = 'inputMessagesFilterEmpty';\n searchGroup = this.searchGroupMedia;\n sharedMediaDiv.append(searchGroup.container);\n } else if(inputFilter === 'inputMessagesFilterEmpty') {\n searchGroup = this.searchGroups.messages;\n }\n\n const options: ProcessSearchSuperResult = {\n elemsToAppend,\n inputFilter,\n message: undefined,\n middleware,\n promises,\n searchGroup\n };\n\n let processCallback: (options: ProcessSearchSuperResult) => any;\n\n // https://core.telegram.org/type/MessagesFilter\n switch(inputFilter) {\n case 'inputMessagesFilterEmpty': {\n processCallback = this.processEmptyFilter;\n break;\n }\n\n case 'inputMessagesFilterPhotoVideo': {\n processCallback = this.processPhotoVideoFilter;\n break;\n }\n \n case 'inputMessagesFilterVoice':\n case 'inputMessagesFilterRoundVoice':\n case 'inputMessagesFilterMusic':\n case 'inputMessagesFilterDocument': {\n processCallback = this.processDocumentFilter;\n break;\n }\n \n case 'inputMessagesFilterUrl': {\n processCallback = this.processUrlFilter;\n break;\n }\n\n default:\n //this.log.warn('death is my friend', messages);\n break;\n }\n\n if(processCallback) {\n processCallback = processCallback.bind(this);\n\n for(const message of messages) {\n try {\n options.message = message;\n processCallback(options);\n } catch(err) {\n this.log.error('error rendering filter', inputFilter, options, message, err);\n }\n }\n }\n \n if(searchGroup && searchGroup.list.childElementCount) {\n searchGroup.setActive();\n }\n\n if(this.loadMutex) {\n promises.push(this.loadMutex);\n }\n\n if(promises.length) {\n await Promise.all(promises);\n if(!middleware()) {\n //this.log.warn('peer changed');\n return;\n }\n }\n \n if(elemsToAppend.length) {\n const method = append ? 'append' : 'prepend';\n elemsToAppend.forEach(details => {\n const {element, message} = details;\n const monthContainer = this.getMonthContainerByTimestamp(this.groupByMonth ? message.date : 0, inputFilter);\n element.classList.add('search-super-item');\n element.dataset.mid = '' + message.mid;\n element.dataset.peerId = '' + message.peerId;\n monthContainer.items[method](element);\n\n if(this.selection.isSelecting) {\n this.selection.toggleElementCheckbox(element, true);\n }\n });\n }\n \n //if(type !== 'inputMessagesFilterEmpty') {\n this.afterPerforming(inputFilter === 'inputMessagesFilterEmpty' ? 1 : messages.length, sharedMediaDiv);\n //}\n }\n\n private afterPerforming(length: number, contentTab: HTMLElement) {\n if(contentTab) {\n const parent = contentTab.parentElement;\n Array.from(parent.children).slice(1).forEach(child => {\n child.remove();\n });\n\n //this.contentContainer.classList.add('loaded');\n\n if(!length && !contentTab.childElementCount) {\n const div = document.createElement('div');\n div.innerText = 'Nothing interesting here yet...';\n div.classList.add('position-center', 'text-center', 'content-empty', 'no-select');\n\n parent.append(div);\n }\n }\n }\n\n private loadChats() {\n const renderedPeerIds: Set = new Set();\n const middleware = this.middleware.get();\n\n for(let i in this.searchGroups) {\n const group = this.searchGroups[i as SearchGroupType];\n this.tabs.inputMessagesFilterEmpty.append(group.container);\n group.clear();\n }\n\n const query = this.searchContext.query;\n if(query) {\n const setResults = (results: PeerId[], group: SearchGroup, showMembersCount = false) => {\n results.forEach((peerId) => {\n if(renderedPeerIds.has(peerId)) {\n return;\n }\n \n renderedPeerIds.add(peerId);\n \n const peer = appPeersManager.getPeer(peerId);\n \n //////////this.log('contacts peer', peer);\n \n const {dom} = appDialogsManager.addDialogNew({\n dialog: peerId, \n container: group.list, \n drawStatus: false,\n avatarSize: 48,\n autonomous: group.autonomous\n });\n \n if(showMembersCount && (peer.participants_count || peer.participants)) {\n const regExp = new RegExp(`(${escapeRegExp(query)}|${escapeRegExp(cleanSearchText(query))})`, 'gi');\n dom.titleSpan.innerHTML = dom.titleSpan.innerHTML.replace(regExp, '$1');\n dom.lastMessageSpan.append(appProfileManager.getChatMembersString(peerId.toChatId()));\n } else if(peerId === rootScope.myId) {\n dom.lastMessageSpan.append(i18n('Presence.YourChat'));\n } else {\n let username = appPeersManager.getPeerUsername(peerId);\n if(!username) {\n const user = appUsersManager.getUser(peerId);\n if(user && user.phone) {\n username = '+' + formatPhoneNumber(user.phone).formatted;\n }\n } else {\n username = '@' + username;\n }\n \n dom.lastMessageSpan.innerHTML = '' + username + '';\n }\n });\n \n group.toggle();\n };\n \n const onLoad = (arg: T) => {\n if(!middleware()) {\n return;\n }\n \n //this.loadedContacts = true;\n \n return arg;\n };\n \n return Promise.all([\n appUsersManager.getContactsPeerIds(query, true)\n .then(onLoad)\n .then((contacts) => {\n if(contacts) {\n setResults(contacts, this.searchGroups.contacts, true);\n }\n }),\n \n appUsersManager.searchContacts(query, 20)\n .then(onLoad)\n .then((contacts) => {\n if(contacts) {\n setResults(contacts.my_results, this.searchGroups.contacts, true);\n setResults(contacts.results/* .concat(contacts.results, contacts.results, contacts.results) */, this.searchGroups.globalContacts);\n\n this.searchGroups.globalContacts.container.classList.add('is-short');\n\n if(this.searchGroups.globalContacts.nameEl.lastElementChild !== this.searchGroups.globalContacts.nameEl.firstElementChild) {\n this.searchGroups.globalContacts.nameEl.lastElementChild.remove();\n }\n \n if(this.searchGroups.globalContacts.list.childElementCount > 3) {\n const showMore = document.createElement('div');\n showMore.classList.add('search-group__show-more');\n const intlElement = new I18n.IntlElement({\n key: 'Separator.ShowMore'\n });\n showMore.append(intlElement.element);\n this.searchGroups.globalContacts.nameEl.append(showMore);\n attachClickEvent(showMore, () => {\n const isShort = this.searchGroups.globalContacts.container.classList.toggle('is-short');\n intlElement.key = isShort ? 'Separator.ShowMore' : 'Separator.ShowLess';\n intlElement.update();\n });\n }\n }\n }),\n \n appMessagesManager.getConversations(query, 0, 20, 0).promise\n .then(onLoad)\n .then(value => {\n if(value) {\n setResults(value.dialogs.map(d => d.peerId), this.searchGroups.contacts, true);\n }\n })\n ]);\n } else if(!this.searchContext.peerId && !this.searchContext.minDate) {\n const renderRecentSearch = (setActive = true) => {\n return appStateManager.getState().then(state => {\n if(!middleware()) {\n return;\n }\n \n this.searchGroups.recent.list.innerHTML = '';\n \n state.recentSearch.slice(0, 20).forEach(peerId => {\n let {dialog, dom} = appDialogsManager.addDialogNew({\n dialog: peerId,\n container: this.searchGroups.recent.list,\n drawStatus: false,\n meAsSaved: true,\n avatarSize: 48,\n autonomous: true\n });\n \n dom.lastMessageSpan.append(peerId.isUser() ? appUsersManager.getUserStatusString(peerId) : appProfileManager.getChatMembersString(peerId.toChatId()));\n });\n \n if(!state.recentSearch.length) {\n this.searchGroups.recent.clear();\n } else if(setActive) {\n this.searchGroups.recent.setActive();\n }\n });\n };\n\n return Promise.all([\n appUsersManager.getTopPeers('correspondents').then(peers => {\n if(!middleware()) return;\n\n const idx = peers.findIndex(peer => peer.id === rootScope.myId);\n if(idx !== -1) {\n peers = peers.slice();\n peers.splice(idx, 1);\n }\n //console.log('got top categories:', categories);\n if(peers.length) {\n peers.forEach((peer) => {\n appDialogsManager.addDialogNew({\n dialog: peer.id, \n container: this.searchGroups.people.list, \n drawStatus: false,\n onlyFirstName: true,\n avatarSize: 54,\n autonomous: false\n });\n });\n }\n \n this.searchGroups.people.setActive();\n }),\n\n renderRecentSearch()\n ]);\n } else return Promise.resolve();\n }\n\n private loadMembers(mediaTab: SearchSuperMediaTab) {\n const id = this.searchContext.peerId.toChatId();\n const middleware = this.middleware.get();\n let promise: Promise