2 lines
226 KiB
JavaScript
2 lines
226 KiB
JavaScript
!function(){"use strict";var e,t,s,a,n={221:function(e,t,s){s.d(t,{A:function(){return l}});var a=s(1594),n=s.n(a),i=s(8181);class r extends n().Component{constructor(e){super(e),this.state={panX:0,panY:0,originX:0,originY:0,zoom:1,minZoom:.001,maxZoom:8},this.overlay=n().createRef(),this.cutout=n().createRef(),this.preview=n().createRef(),this.boundingBox=n().createRef(),this.imageWidth=0,this.imageHeight=0,this.mouseX=0,this.mouseY=0,this.prevDistance=0,this.cutoutRect={},this.bBoxRect={},this.originX=0,this.originY=0,this.initScaling=this.initScaling.bind(this),this.onZoom=this.onZoom.bind(this),this.handleZoom=this.handleZoom.bind(this),this.mouseDown=this.mouseDown.bind(this),this.mouseUp=this.mouseUp.bind(this),this.mouseMove=this.mouseMove.bind(this),this.mouseTouch=this.mouseTouch.bind(this),this.positionAll=this.positionAll.bind(this),this.translate=this.translate.bind(this)}componentDidMount(){this.overlay.current.addEventListener("mousedown",this.mouseDown,{passive:!0}),this.overlay.current.addEventListener("touchstart",this.mouseDown,{passive:!0}),this.bBoxRect=this.boundingBox.current.getBoundingClientRect(),this.originX=this.bBoxRect.width/2,this.originY=this.bBoxRect.height/2,this.cutoutRect=this.cutout.current.getBoundingClientRect()}componentWillUnmount(){this.overlay.current&&(this.overlay.current.removeEventListener("mousedown",this.mouseDown),this.overlay.current.removeEventListener("touchstart",this.mouseDown))}positionAll(e,t,s){this.setState({panX:e,panY:t,zoom:s,originX:this.originX-e,originY:this.originY-t});const a=(this.originX-e)*s-this.originX,n=(this.originY-t)*s-this.originY;this.props.onChange((a+this.cutoutRect.left-this.bBoxRect.left)/s,(n+this.cutoutRect.top-this.bBoxRect.top)/s,this.cutoutRect.width/s,this.cutoutRect.height/s,s)}static checkBound(e,t,s,a){let n=Math.min(0,s[0]-t[0]-a,t[1]-s[1]+a);return(0==n||Math.min(0,s[0]-t[0],t[1]-s[1])<n)&&(e+=a),e}initScaling(){const e=this.preview.current.getBoundingClientRect();this.imageWidth=e.width,this.imageHeight=e.height;const t=Math.max(this.cutoutRect.width/e.width,this.cutoutRect.height/e.height);this.setState({minZoom:t,maxZoom:8*t});const s=Math.max(this.bBoxRect.width/e.width,this.bBoxRect.height/e.height),a=this.cutoutRect.left-this.bBoxRect.left-(e.width-this.cutoutRect.width)/2,n=this.cutoutRect.top-this.bBoxRect.top-(e.height-this.cutoutRect.height)/2;this.positionAll(a,n,s)}onZoom(e){this.handleZoom(e.target.value)}handleZoom(e){let t=this.state.panX,s=this.state.panY;const a=this.originX-(this.originX-t)*e,n=a+this.imageWidth*e,i=this.originY-(this.originY-s)*e,r=i+this.imageHeight*e,o=this.cutoutRect.left-this.bBoxRect.left,l=o+this.cutoutRect.width,c=this.cutoutRect.top-this.bBoxRect.top,d=c+this.cutoutRect.height;o<a?t-=(a-o)/e:l>n&&(t+=(l-n)/e),c<i?s-=(i-c)/e:d>r&&(s+=(d-r)/e),this.positionAll(t,s,e)}mouseDown(e){e.touches?(this.mouseX=e.touches[0].pageX,this.mouseY=e.touches[0].pageY):(this.mouseX=e.pageX,this.mouseY=e.pageY),window.addEventListener("mousemove",this.mouseMove,{passive:!1}),window.addEventListener("touchmove",this.mouseTouch,{passive:!1}),window.addEventListener("mouseup",this.mouseUp,{passive:!0}),window.addEventListener("touchend",this.mouseUp,{passive:!0}),document.body.style.userSelect="none"}translate(e,t){const s=(e-this.mouseX)/this.state.zoom,a=(t-this.mouseY)/this.state.zoom;this.mouseX=e,this.mouseY=t;const n=this.preview.current.getBoundingClientRect(),i=r.checkBound(this.state.panX,[n.left,n.right],[this.cutoutRect.left,this.cutoutRect.right],s),o=r.checkBound(this.state.panY,[n.top,n.bottom],[this.cutoutRect.top,this.cutoutRect.bottom],a);this.positionAll(i,o,this.state.zoom)}mouseMove(e){e.preventDefault(),this.translate(e.pageX,e.pageY)}mouseTouch(e){if(e.preventDefault(),1==e.touches.length)return void this.translate(e.touches[0].pageX,e.touches[0].pageY);const[t,s]=e.touches,a=Math.sqrt((t.pageX-s.pageX)*(t.pageX-s.pageX)+(t.pageY-s.pageY)*(t.pageY-s.pageY));this.prevDistance||(this.prevDistance=a/this.state.zoom);let n=a/this.prevDistance;this.handleZoom(Math.max(this.minZoom,Math.min(this.maxZoom,n)))}mouseUp(e){window.removeEventListener("mousemove",this.mouseMove),window.removeEventListener("touchmove",this.mouseTouch),window.removeEventListener("mouseup",this.mouseUp),window.removeEventListener("touchend",this.mouseUp),document.body.style.userSelect="",this.positionAll(this.state.panX,this.state.panY,this.state.zoom)}render(){const e=`translate3d(${this.state.panX}px, ${this.state.panY}px, 0) scale(${this.state.zoom})`,t=`${this.state.originX}px ${this.state.originY}px`,s={top:this.originY-this.state.originY*this.state.zoom+"px",left:this.originX-this.state.originX*this.state.zoom+"px",width:this.imageWidth*this.state.zoom+"px",height:this.imageHeight*this.state.zoom+"px"};return n().createElement("div",{className:"cropper"},n().createElement("div",{className:"bounding-box",ref:this.boundingBox},n().createElement("img",{src:this.props.source,className:"preview",alt:"",style:{transform:e,transformOrigin:t},ref:this.preview,onLoad:this.initScaling}),n().createElement("div",{className:"cutout circle",ref:this.cutout}),n().createElement("div",{className:"overlay",style:s,ref:this.overlay})),n().createElement("div",{className:"zoom-wrapper"},n().createElement("input",{type:"range",className:"zoomer",step:"0.001",min:this.state.minZoom,max:this.state.maxZoom,value:this.state.zoom,onChange:this.onZoom})))}}var o=s(6110);class l extends n().PureComponent{constructor(e){super(e),this.state={top:0,left:0,width:0,height:0,scale:1},this.handleSubmit=this.handleSubmit.bind(this),this.handleChange=this.handleChange.bind(this)}handleChange(e,t,s,a,n){this.setState({left:e,top:t,width:s,height:a,scale:n})}handleSubmit(){(0,o.CO)(this.props.mime,this.props.avatar,this.state.left,this.state.top,this.state.width,this.state.height,this.state.scale).then(e=>{this.props.onSubmit(e.mime,e.blob,e.width,e.height)}).catch(e=>{this.props.onError(e)})}render(){return n().createElement("div",{className:"panel-form"},n().createElement("div",{className:"panel-form-row"},n().createElement(r,{source:this.props.avatar,onChange:this.handleChange})),n().createElement("div",{className:"dialog-buttons"},this.props.onCancel?n().createElement("button",{className:"secondary",onClick:this.props.onCancel},n().createElement(i.FormattedMessage,{id:"button_cancel",defaultMessage:[{type:0,value:"Cancel"}]})):null,n().createElement("button",{className:"primary",onClick:this.handleSubmit},n().createElement(i.FormattedMessage,{id:"button_ok",defaultMessage:[{type:0,value:"OK"}]}))))}}},257:function(e,t,s){s.d(t,{i:function(){return a}});const a="0.25.2"},504:function(e,t,s){s.d(t,{A:function(){return r}});var a=s(1594),n=s.n(a);const i={muted:"notifications_off",banned:"block",staff:"verified_user"};class r extends n().PureComponent{render(){let e=null;return this.props.badges&&this.props.badges.length>0?(e=[],this.props.badges.forEach(t=>{const s=t.color?" "+t.color:"";t.icon?e.push(n().createElement("i",{className:"material-icons as-badge"+s,key:t.key||t.icon},i[t.icon]||t.icon)):e.push(n().createElement("span",{className:"badge"+s,key:t.key||t.name},t.name))}),n().createElement(n().Fragment,null,e)):null}}},635:function(e,t,s){var a=s(1594),n=s.n(a),i=s(8181);const r={staff:"verified_user"},o=(0,i.defineMessages)({badge_verified:{id:"badge_verified",defaultMessage:[{type:0,value:"Verified/official"}]},badge_staff:{id:"badge_staff",defaultMessage:[{type:0,value:"Staff-managed"}]},badge_danger:{id:"badge_danger",defaultMessage:[{type:0,value:"Untrustworthy"}]}});class l extends n().PureComponent{render(){const{formatMessage:e}=this.props.intl;let t=null;return this.props.trustedBadges&&this.props.trustedBadges.length>0?(t=[],this.props.trustedBadges.forEach(s=>{const a=this.props.short?null:e(o["badge_"+s]),i="material-icons "+s+"-color";t.push(n().createElement("div",{className:"trusted-badge",key:s},n().createElement("i",{className:i},r[s]||s)," ",a))}),n().createElement(n().Fragment,null,t)):null}}t.A=(0,i.injectIntl)(l)},1013:function(e,t,s){s.d(t,{A:function(){return i}});var a=s(1594),n=s.n(a);class i extends n().PureComponent{render(){const e="load-spinner-box"+(this.props.large?" large":"")+(this.props.clear?" clear":"")+(this.props.centered?" centered":"");return this.props.show?n().createElement("div",{className:e},n().createElement("div",{className:"loader-spinner"})):null}}},1166:function(e,t,s){s.d(t,{A:function(){return i}});var a=s(1594),n=s.n(a);class i extends n().PureComponent{constructor(e){super(e),this.handleChange=this.handleChange.bind(this)}handleChange(){this.props.onChange(this.props.name,!this.props.checked)}render(){let e,t=["material-icons"];Array.isArray(this.props.className)?t.push(...this.props.className):this.props.className&&t.push(this.props.className),this.props.onChange?this.props.checked?(t.push("blue","clickable"),e="check_box"):!1===this.props.checked?(t.push("blue","clickable"),e="check_box_outline_blank"):(t.push("lt-blue"),e="indeterminate_check_box"):e=this.props.checked?"check_box":"check_box_outline_blank";let s={className:t.join(" "),id:this.props.id};return this.props.onChange&&(s.onClick=this.handleChange),n().createElement("i",s,e)}}},1334:function(e,t,s){s.d(t,{A:function(){return r}});var a=s(1594),n=s.n(a),i=s(3913);class r extends n().PureComponent{constructor(e){super(e),this.state={show:!1},this.hide=this.hide.bind(this)}componentDidUpdate(e){e.level!==this.props.level&&this.setState({show:!!this.props.level})}hide(){this.setState({show:!1}),this.props.onClearError&&this.props.onClearError()}render(){const e={err:"error",warn:"warning",info:"info"}[this.props.level]||"",t="info-box "+e;return n().createElement("div",{className:t},n().createElement("div",{className:"icon"},n().createElement("i",{className:"material-icons"},e)),n().createElement("span",null,this.props.text,this.props.action?n().createElement(n().Fragment,null," ",n().createElement("a",{href:"#",style:{whiteSpace:"nowrap"},onClick:e=>{e.preventDefault(),this.props.action()}},this.props.actionText)):null),n().createElement("div",{className:"cancel"},n().createElement(i.A,{onCancel:this.hide})))}}},1485:function(e,t,s){s.d(t,{A:function(){return r}});var a=s(1594),n=s.n(a),i=s(6789);class r extends n().Component{constructor(e){super(e),this.selfRef=n().createRef(),this.state={active:e.active,initialValue:e.value||"",value:e.value||"",valid:!0},this.handeTextChange=this.handeTextChange.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleStartEditing=this.handleStartEditing.bind(this),this.handleEditingFinished=this.handleEditingFinished.bind(this),this.handlePasswordFinished=this.handlePasswordFinished.bind(this)}componentDidUpdate(e,t){const s=this.props.value||"";t.initialValue==s||t.active||this.setState({initialValue:s,value:s})}handeTextChange(e){this.setState({value:e.target.value||""}),this.props.validator&&Promise.resolve(this.props.validator(e.target.value)).then(e=>{this.setState({valid:e})}).catch(e=>{e&&this.setState({valid:!1})})}handleKeyDown(e){27===e.keyCode?this.setState({value:this.props.value,active:!1}):13===e.keyCode&&this.handleEditingFinished(e)}handleStartEditing(){this.props.readOnly||this.setState({active:!0},e=>{this.selfRef.current&&this.selfRef.current.focus()})}handleEditingFinished(e){const t=this.state.value.trim();!this.props.required||e.target.checkValidity()&&t?(this.setState({active:!1}),(t||this.props.value)&&t!==this.props.value&&this.state.valid&&this.props.onFinished(t)):this.setState({value:this.props.value,active:!1})}handlePasswordFinished(e){this.setState({active:!1}),e&&e!==this.props.value&&this.props.onFinished(e)}render(){if(!this.state.active){let e="password"==this.props.type?"••••••••":this.state.value,t="in-place-edit"+(this.props.readOnly?" disabled":"");return e||(e=this.props.placeholder,t+=" placeholder"),this.props.multiline&&1!=this.props.multiline||(t+=" short"),n().createElement("span",{className:t,onClick:this.handleStartEditing},this.props.iconLeft&&n().createElement("i",{className:"material-icons light-gray"},this.props.iconLeft),n().createElement("span",null,e),this.props.iconRight&&n().createElement("i",{className:"material-icons light-gray"},this.props.iconRight))}let e;const t={};return"password"==this.props.type?(e=i.A,t.onFinished=this.handlePasswordFinished):(this.props.multiline>1?(e="textarea",t.rows=this.props.multiline,t.className="in-place-edit"):(e="input",t.type=this.props.type||"text",t.className="in-place-edit"+(this.props.iconLeft?" with-icon-left":this.props.iconRight?" with-icon-right":""),this.props.maxLength&&(t.maxLength=this.props.maxLength)),t.value=this.state.value,t.className+=this.state.valid?"":" invalid",t.ref=this.selfRef,t.onChange=this.handeTextChange,t.onKeyDown=this.handleKeyDown,t.onBlur=this.handleEditingFinished),t.placeholder=this.props.placeholder,t.required=this.props.required?"required":"",t.autoComplete=this.props.autoComplete,t.autoFocus=!0,void 0!==this.props.spellCheck&&(t.spellCheck=this.props.spellCheck?"true":"false"),this.props.iconLeft||this.props.iconRight?n().createElement(n().Fragment,null,this.props.iconLeft&&n().createElement("i",{className:"material-icons light-gray"},this.props.iconLeft),n().createElement(e,t,null),this.props.iconRight&&n().createElement("i",{className:"material-icons light-gray"},this.props.iconRight)):n().createElement(e,t,null)}}},1594:function(e){e.exports=React},1781:function(e){e.exports=JSON.parse('{"patt":[{"name":"a00.png","size":200},{"name":"a01.jpg","size":384},{"name":"a02.jpg","size":384},{"name":"a03.jpg","size":384},{"name":"a04.png","size":400},{"name":"a05.jpg","size":400},{"name":"a06.jpg","size":256},{"name":"a07.jpg","size":384},{"name":"a08.jpg","size":384},{"name":"a09.jpg","size":400},{"name":"a10.jpg","size":256},{"name":"a11.png","size":200}],"img":[{"name":"w01.jpg","pr":"p01.jpg"},{"name":"w02.jpg","pr":"p02.jpg"},{"name":"w03.jpg","pr":"p03.jpg"},{"name":"w04.jpg","pr":"p04.jpg"},{"name":"w05.jpg","pr":"p05.jpg"},{"name":"w06.jpg","pr":"p06.jpg"},{"name":"w07.jpg","pr":"p07.jpg"},{"name":"w08.jpg","pr":"p08.jpg"},{"name":"w09.jpg","pr":"p09.jpg"},{"name":"w10.jpg","pr":"p10.jpg"},{"name":"w11.jpg","pr":"p11.jpg"},{"name":"w12.jpg","pr":"p12.jpg"},{"name":"w13.jpg","pr":"p13.jpg"},{"name":"w14.jpg","pr":"p14.jpg"},{"name":"w15.jpg","pr":"p15.jpg"},{"name":"w16.jpg","pr":"p16.jpg"},{"name":"w17.jpg","pr":"p17.jpg"},{"name":"w18.jpg","pr":"p18.jpg"},{"name":"w19.jpg","pr":"p19.jpg"},{"name":"w20.jpg","pr":"p20.jpg"},{"name":"w21.jpg","pr":"p21.jpg"},{"name":"w22.jpg","pr":"p22.jpg"},{"name":"w23.jpg","pr":"p23.jpg"},{"name":"w24.jpg","pr":"p24.jpg"}]}')},3307:function(e,t,s){s.d(t,{A:function(){return d}});var a=s(1594),n=s.n(a),i=s(8181),r=s(5874),o=s(4532),l=s(9027),c=s(3540);class d extends n().Component{constructor(e){super(e),this.state={tags:this.props.tags||[],alias:o.Tinode.tagByPrefix(this.props.tags,o.Tinode.TAG_ALIAS)||"",tagInput:"",activated:this.props.activated},this.handleTagInput=this.handleTagInput.bind(this),this.handleAddTag=this.handleAddTag.bind(this),this.handleRemoveTag=this.handleRemoveTag.bind(this),this.handleSubmit=this.handleSubmit.bind(this),this.handleCancel=this.handleCancel.bind(this)}static getDerivedStateFromProps(e,t){const s=e.tags||[];return(0,c.af)(s,t.tags)||t.activated?null:{tags:s||[],alias:o.Tinode.tagByPrefix(s,o.Tinode.TAG_ALIAS)||""}}handleTagInput(e){if(this.setState({tagInput:e}),e.length>0){const t=e[e.length-1];'"'==e[0]?e.length>1&&'"'==t&&this.handleAddTag(e.substring(1,e.length-1)):","!=t&&" "!=t&&";"!=t&&'"'!=t||this.handleAddTag(e.substring(0,e.length-1).trim())}}handleAddTag(e){const t=this.props.tinode.getServerParam(o.Tinode.MAX_TAG_COUNT,l.GB);if(e.length>0&&this.state.tags.length<t){const t=this.state.tags.slice(0);return t.push(e),this.setState({tags:t,tagInput:""}),this.props.onTagsChanged&&this.props.onTagsChanged(t),t}return this.state.tags}handleRemoveTag(e,t){const s=this.state.tags.slice(0);s.splice(t,1),this.setState({tags:s}),this.props.onTagsChanged&&this.props.onTagsChanged(s)}handleSubmit(){let e=this.handleAddTag(this.state.tagInput.trim());e=o.Tinode.setUniqueTag(e,this.state.alias),this.props.onSubmit(e),this.setState({activated:!1,tags:this.props.tags||[]})}handleCancel(){this.setState({activated:!1,tagInput:"",tags:this.props.tags||[]}),this.props.onCancel&&this.props.onCancel()}render(){const e=this.props.tinode.getServerParam(o.Tinode.MIN_TAG_LENGTH,l.rn),t=this.props.tinode.getServerParam(o.Tinode.MAX_TAG_LENGTH,l.Ti);let s=[];return this.state.activated?this.state.tags.forEach(a=>{a!=this.state.alias&&s.push({user:a,invalid:a.length<e||a.length>t})}):(this.state.tags.forEach(e=>{e!=this.state.alias&&s.push(n().createElement("span",{className:"badge",key:s.length},e))}),0==s.length&&(s=n().createElement("i",null,n().createElement(i.FormattedMessage,{id:"tags_not_found",defaultMessage:[{type:0,value:"No tags defined. Add some."}]})))),n().createElement("div",{className:"panel-form-column"},n().createElement("div",{className:"panel-form-row"},n().createElement("label",{className:"small"},this.props.title)),this.state.activated?n().createElement("div",null,n().createElement(i.FormattedMessage,{id:"tags_editor_no_tags",defaultMessage:[{type:0,value:"Add some tags"}]},e=>n().createElement(r.A,{tinode:this.props.tinode,chips:s,avatarDisabled:!0,prompt:e,tabIndex:this.props.tabIndex,onEnter:this.handleAddTag,onFocusLost:this.handleAddTag,onCancel:this.handleCancel,onChipRemoved:this.handleRemoveTag,filterFunc:this.handleTagInput})),this.props.onSubmit||this.props.onCancel?n().createElement("div",{id:"tag-manager-buttons",className:"dialog-buttons panel-form-row"},n().createElement("button",{className:"outline",onClick:this.handleCancel},n().createElement(i.FormattedMessage,{id:"button_cancel",defaultMessage:[{type:0,value:"Cancel"}]})),n().createElement("button",{className:"primary",onClick:this.handleSubmit},n().createElement(i.FormattedMessage,{id:"button_ok",defaultMessage:[{type:0,value:"OK"}]}))):null):n().createElement("div",{className:"quoted"},n().createElement("a",{href:"#",className:"flat-button",onClick:e=>{e.preventDefault(),this.setState({activated:!0})}},n().createElement("i",{className:"material-icons"},"edit")," ",n().createElement(i.FormattedMessage,{id:"title_manage_tags",defaultMessage:[{type:0,value:"Manage"}]})),n().createElement(n().Fragment,null,s)))}}},3540:function(e,t,s){s.d(t,{FH:function(){return u},Jf:function(){return h},Jt:function(){return l},KY:function(){return f},LO:function(){return m},MC:function(){return b},OM:function(){return i},YO:function(){return d},af:function(){return o},iE:function(){return g},k6:function(){return r},t7:function(){return v},wk:function(){return p},xH:function(){return c}});var a=s(4532),n=s(9027);function i(e){const t=document.getElementById("shortcut-icon"),s=document.head||document.getElementsByTagName("head")[0],a=document.createElement("link");a.type="image/png",a.id="shortcut-icon",a.rel="shortcut icon",a.href="img/logo32x32"+(e>0?"a":"")+".png",t&&s.removeChild(t),s.appendChild(a),document.title=(e>0?"("+e+") ":"")+"Tinode"}function r(e,t,s,n){let i=null;if((e=e&&e.trim())&&(i={fn:e}),"string"==typeof(n=n&&n.trim())&&(i=i||{},i.note=n||a.Tinode.DEL_CHAR),t){i=i||{};let e=s;const n=/^data:(image\/[-a-z0-9+.]+)?(;base64)?,/i.exec(t);n?(e=n[1],i.photo={data:t.substring(t.indexOf(",")+1),ref:a.Tinode.DEL_CHAR}):i.photo={data:a.Tinode.DEL_CHAR,ref:t},i.photo.type=(e||"image/jpeg").substring(6)}return i}function o(e,t){if(e===t)return!0;if(!Array.isArray(e)||!Array.isArray(t))return!1;if(e.length!=t.length)return!1;e.sort(),t.sort();for(let s=0,a=e.length;s<a;s++)if(e[s]!==t[s])return!1;return!0}function l(e){return e=e.trim(),/^(?:\+?(\d{1,3}))?[- (.]*(\d{3})[- ).]*(\d{3})[- .]*(\d{2})[- .]*(\d{2})?$/.test(e)?e.replaceAll(/[- ().]*/g,""):null}function c(e){return e=e.trim(),/^[a-z0-9_.+-]+@[a-z0-9-]+(\.[a-z0-9-]+)+$/i.test(e)?e:null}function d(e){return e&&!/^\s*([a-z][a-z0-9+.-]*:|\/\/)/im.test(e.replace(/\\/g,"/"))}function h(e,t){if("string"!=typeof e)return e;if(e=(e=e.replace(/[^\x21-\x7E]/gim,"").trim()).replace(/\\/g,"/"),!/^([a-z][a-z0-9+.-]*:|\/\/)/i.test(e))return e;if(/^blob:http/.test(e))return e;const s=Array.isArray(t)?t.join("|"):"http|https";return new RegExp("^(("+s+"):|//)","i").test(e)?e:null}function p(e,t){if(!e)return null;const s=h(e);if(s)return s;return new RegExp(`data:${t}/[-+.a-z0-9]+;base64,`,"i").test(e.trim())?e:null}function u(e){if(e.startsWith("data:")||e.startsWith("blob:"))return e;let t="",s="";const a=e.indexOf("#");a>0&&(s=e.substring(a+1),e=e.substring(0,a));const n=e.indexOf("?");n>0&&(t=e.substring(n+1),e=e.substring(0,n));const i=new URLSearchParams(t);return i.append("asatt","1"),`${e}?${i.toString()}`+(s?`#${s}`:"")}function m(e){switch(e){case a.Tinode.MESSAGE_STATUS_SENDING:return{name:"access_time"};case a.Tinode.MESSAGE_STATUS_FAILED:case a.Tinode.MESSAGE_STATUS_FATAL:return{name:"warning",color:"danger-color"};case a.Tinode.MESSAGE_STATUS_SENT:return{name:"done"};case a.Tinode.MESSAGE_STATUS_RECEIVED:return{name:"done_all"};case a.Tinode.MESSAGE_STATUS_READ:return{name:"done_all",color:"blue"}}return null}function g(e){let t=!1;return{promise:e instanceof Error?Promise.reject(e):new Promise((s,a)=>{e.then(e=>t?a({isCanceled:!0}):s(e),e=>a(t?{isCanceled:!0}:e))}),cancel(){t=!0}}}function f(){const e=s(1781)[n.S.type][n.S.index];return{name:`../${n.S.path}${e.name}`,size:e.size}}function v(e){const t=e.split("/");return t[t.length-1]}function b(e){const t=v(e),a=s(1781);for(const e in a)for(let s=0;s<a[e].length;s++)if(a[e][s].name==t)return e;return null}},3832:function(e,t,s){s.d(t,{Gv:function(){return a},No:function(){return n},O5:function(){return o},d1:function(){return r},ww:function(){return i}});const a=0,n=1,i=2,r=3,o="started"},3913:function(e,t,s){s.d(t,{A:function(){return i}});var a=s(1594),n=s.n(a);class i extends n().PureComponent{render(){return n().createElement("a",{href:"#",onClick:e=>{e.preventDefault(),this.props.onCancel()}},n().createElement("i",{className:"material-icons"},"close"))}}},4152:function(e,t,s){s.d(t,{A:function(){return m}});var a=s(1594),n=s.n(a),i=s(8181),r=s(4532),o=s(6005);class l extends n().PureComponent{constructor(e){super(e),this.handleClick=this.handleClick.bind(this)}handleClick(e){e.preventDefault(),e.stopPropagation(),this.props.onAction(this.props.action)}render(){const{formatMessage:e}=this.props.intl;return n().createElement("li",{onClick:this.handleClick,className:"action"},n().createElement("div",{className:"action-text"},e(this.props.title,this.props.values)))}}var c=(0,i.injectIntl)(l),d=s(6110),h=s(9027);const p=(0,i.defineMessages)({badge_you:{id:"badge_you",defaultMessage:[{type:0,value:"you"}]},badge_owner:{id:"badge_owner",defaultMessage:[{type:0,value:"owner"}]}});class u extends n().PureComponent{render(){const{formatMessage:e}=this.props.intl,t=Array.isArray(this.props.topicSelected),s=[];let a=0;if(this.props.showSelfTopic){const e=t?this.props.topicSelected.indexOf("slf")>-1:"slf"===this.props.topicSelected;s.push(n().createElement(o.A,{tinode:this.props.tinode,avatar:!0,showMode:this.props.showMode,selected:e,showCheckmark:t,onSelected:this.props.onTopicSelected,showContextMenu:this.props.showContextMenu,index:s.length,item:"slf",key:"slf"})),a++}if(this.props.contacts&&this.props.contacts.length>0){const i={};this.props.contacts.forEach(l=>{if(l.action)s.push(n().createElement(c,{title:l.title,action:l.action,values:l.values,key:l.action,onAction:this.props.onAction}));else{const c=this.props.showMode?l.user:l.topic||l.user;if(i[c])return;if(i[c]=!0,this.props.filterFunc&&this.props.filter){const e=[c];if(l.private&&l.private.comment&&e.push((""+l.private.comment).toLowerCase()),l.public&&l.public.fn&&e.push((""+l.public.fn).toLowerCase()),!this.props.filterFunc(this.props.filter,e))return}const u=r.Tinode.isChannelTopicName(c),m=!u&&r.Tinode.isGroupTopicName(c),g=t?this.props.topicSelected.indexOf(c)>-1:this.props.topicSelected===c,f=[];this.props.showMode&&(c==this.props.myUserId&&f.push({name:e(p.badge_you),color:"green"}),l.acs&&l.acs.isOwner()&&f.push({name:e(p.badge_owner),color:"blue"}));const v=Array.isArray(l.private)?l.private.join(","):l.private?l.private.comment:null;let b,w,y,E;if(!this.props.showMode&&l.latestMessage){const e=l.latestMessage();e&&(w=e.head?e.head.forwarded:null,E=e._status||l.msgStatus(e,!0),y=e.from!=this.props.myUserId,e.content&&(b="string"==typeof e.content?e.content.substr(0,h.sT):r.Drafty.preview(e.content,h.sT)))}s.push(n().createElement(o.A,{tinode:this.props.tinode,title:l.public?l.public.fn:null,avatar:(0,d.to)(l.public?l.public.photo:null),comment:v,preview:b,previewIsResponse:y,forwarded:w,received:E,unread:this.props.showUnread?l.unread:0,now:l.online&&this.props.connected,acs:l.acs,showMode:this.props.showMode,badges:f,showCheckmark:t,selected:g,pinned:l.pinned,showOnline:this.props.showOnline&&!u,isChannel:u,isGroup:m,showContextMenu:this.props.showContextMenu,isVerified:l.trusted&&l.trusted.verified,isStaff:l.trusted&&l.trusted.staff,isDangerous:l.trusted&&l.trusted.danger,deleted:l._deleted,onSelected:this.props.onTopicSelected,item:c,index:s.length,key:c})),a++}},this)}return n().createElement("div",{className:this.props.noScroll?null:"scrollable-panel"},0==a?n().createElement("div",{className:"center-medium-text",style:{whiteSpace:"pre-line"}},this.props.emptyListMessage):null,s.length>0?n().createElement("ul",{className:"contact-box"},s):null)}}var m=(0,i.injectIntl)(u)},4532:function(e){e.exports=tinode},5053:function(e,t,s){var a=s(1594),n=s.n(a),i=s(8181),r=s(8589),o=s(6110);const l="#666C",c=(0,i.defineMessages)({icon_title_play:{id:"icon_title_play",defaultMessage:[{type:0,value:"Play recording"}]}});class d extends n().PureComponent{constructor(e){super(e);let t=(0,o.F8)(this.props.preview);(!Array.isArray(t)||t.length<16)&&(t=null),this.state={canPlay:!1,playing:!1,currentTime:"0:00",duration:this.props.duration>0?(0,r.Ye)(this.props.duration/1e3):"-:--",longMin:this.props.duration>=6e5,preview:t},this.initAudio=this.initAudio.bind(this),this.initCanvas=this.initCanvas.bind(this),this.resampleBars=this.resampleBars.bind(this),this.visualize=this.visualize.bind(this),this.handlePlay=this.handlePlay.bind(this),this.handleSeek=this.handleSeek.bind(this),this.handleError=this.handleError.bind(this),this.audioPlayer=null,this.viewBuffer=[],this.canvasRef=n().createRef()}componentDidMount(){this.props.src&&this.initAudio(),this.initCanvas()}componentWillUnmount(){this.audioPlayer&&(this.audioPlayer.onloadedmetadata=null,this.audioPlayer.ontimeupdate=null,this.audioPlayer.onended=null,this.audioPlayer.pause(),this.audioPlayer=null)}componentDidUpdate(e){if(this.props.src!=e.src&&this.initAudio(),this.props.preview!=e.preview){let e=(0,o.F8)(this.props.preview);(!Array.isArray(e)||e.length<16)&&(e=null),this.setState({preview:e},this.initCanvas)}}initAudio(){this.audioPlayer=new Audio(this.props.src),this.audioPlayer.onloadedmetadata=e=>this.setState({canPlay:!0}),this.audioPlayer.ontimeupdate=e=>this.setState({currentTime:(0,r.Ye)(this.audioPlayer.currentTime,this.state.longMin)}),this.audioPlayer.onended=e=>{this.audioPlayer.currentTime=0,this.setState({playing:!1,currentTime:(0,r.Ye)(0,this.state.longMin)})}}initCanvas(){this.canvasRef.current.width=2*this.canvasRef.current.offsetWidth,this.canvasRef.current.height=2*this.canvasRef.current.offsetHeight,this.canvasContext=this.canvasRef.current.getContext("2d"),this.canvasContext.lineCap="round",this.viewBuffer=this.resampleBars(this.state.preview),this.visualize()}visualize(){if(!this.canvasRef.current)return;const e=this.effectiveWidth,t=this.canvasRef.current.height;this.canvasContext.lineWidth=6;const s=a=>{if(this.canvasRef.current&&this.audioPlayer&&(this.canvasContext.clearRect(0,0,this.canvasRef.current.width,t),this.viewBuffer)){this.state.playing&&window.requestAnimationFrame(s);const a=this.props.duration?Math.max(0,Math.min(1e3*this.audioPlayer.currentTime/this.props.duration,1))*(e-12):-1;this.canvasContext.beginPath(),this.canvasContext.strokeStyle=l;for(let e=0;e<this.viewBuffer.length;e++){let s=1+10*e+3,n=Math.max(this.viewBuffer[e]*t*.9,1);const i=s<a?l:"#888A";this.canvasContext.strokeStyle!=i&&(this.canvasContext.stroke(),this.canvasContext.beginPath(),this.canvasContext.strokeStyle=i),this.canvasContext.moveTo(s,.5*(t-n)),this.canvasContext.lineTo(s,.5*(t+n))}this.canvasContext.stroke(),this.props.duration&&(this.canvasContext.beginPath(),this.canvasContext.arc(a+12,.5*t,12,0,2*Math.PI),this.canvasContext.fillStyle="#1781d7",this.canvasContext.fill())}};s()}resampleBars(e){const t=(this.canvasRef.current.width-4)/10|0;if(this.effectiveWidth=10*t+4,!Array.isArray(e)||0==e.length)return Array.apply(null,Array(t)).map(e=>.01);const s=e.length/t;let a=[],n=-1;for(let i=0;i<t;i++){let t=i*s|0,r=(i+1)*s|0;if(r==t)a[i]=e[t];else{let s=0;for(let a=t;a<r;a++)s+=e[a];a[i]=Math.max(0,s/(r-t))}n=Math.max(a[i],n)}return n>0?a.map(e=>e/n):Array.apply(null,Array(t)).map(e=>.01)}handlePlay(e){e.preventDefault(),this.state.canPlay&&(this.state.playing?(this.audioPlayer.pause(),this.setState({playing:!1})):this.audioPlayer.readyState>=2&&(this.audioPlayer.play(),this.setState({playing:!0},this.visualize)))}handleError(e){console.error(e)}handleSeek(e){if(e.preventDefault(),e.target&&this.props.duration){const t=e.target.getBoundingClientRect(),s=(e.clientX-t.left)/this.effectiveWidth*2;this.audioPlayer.currentTime=this.props.duration*s/1e3,this.setState({currentTime:(0,r.Ye)(this.audioPlayer.currentTime,this.state.longMin)}),this.state.playing||this.visualize()}}render(){const e="material-icons"+(this.props.short?"":" large")+(this.state.canPlay?"":" disabled"),t=n().createElement("a",{href:"#",onClick:this.handlePlay,title:this.props.intl.formatMessage(c.icon_title_play)},n().createElement("i",{className:e},this.state.playing?"pause_circle":this.state.canPlay?"play_circle":"not_interested"));return n().createElement("div",{className:"audio-player"},this.props.short?n().createElement(n().Fragment,null,n().createElement("canvas",{className:"playback",ref:this.canvasRef,onClick:this.handleSeek}),t):n().createElement(n().Fragment,null,t,n().createElement("div",null,n().createElement("canvas",{className:"playback",ref:this.canvasRef,onClick:this.handleSeek}),n().createElement("div",{className:"timer"},this.state.currentTime,"/",this.state.duration))))}}t.A=(0,i.injectIntl)(d)},5206:function(e){e.exports=ReactDOM},5338:function(e,t,s){var a=s(5206);t.H=a.createRoot,a.hydrateRoot},5791:function(e,t,s){s.d(t,{e3:function(){return C},TU:function(){return T},NV:function(){return D}});var a=s(1594),n=s.n(a),i=s(8181),r=s(4532),o=s(5053),l=s(8589);class c extends n().PureComponent{render(){const e=["busy","declined","disconnected","missed"].includes(this.props.callState),t="material-icons medium "+(e?"red":"green"),s=this.props.incoming?e?"call_missed":"call_received":e?"call_missed_outgoing":"call_made",a=this.props.incoming?n().createElement(i.FormattedMessage,{id:"calls_incoming",defaultMessage:[{type:0,value:"Incoming call"}]}):n().createElement(i.FormattedMessage,{id:"calls_outgoing",defaultMessage:[{type:0,value:"Outgoing call"}]});let r;if(e)switch(this.props.callState){case"busy":r=n().createElement(i.FormattedMessage,{id:"call_busy",defaultMessage:[{type:0,value:"busy"}]});break;case"declined":r=n().createElement(i.FormattedMessage,{id:"call_declined",defaultMessage:[{type:0,value:"declined"}]});break;case"missed":r=this.props.incoming?n().createElement(i.FormattedMessage,{id:"call_missed",defaultMessage:[{type:0,value:"missed"}]}):n().createElement(i.FormattedMessage,{id:"call_cancelled",defaultMessage:[{type:0,value:"cancelled"}]});break;default:r=n().createElement(i.FormattedMessage,{id:"call_disconnected",defaultMessage:[{type:0,value:"disconnected"}]})}else r=n().createElement("span",null,(0,l.Ye)(this.props.duration/1e3));return n().createElement("div",{className:"call-message"},n().createElement("div",null,n().createElement("i",{className:"material-icons big gray"},"call")),n().createElement("div",{className:"flex-column narrow"},n().createElement("div",null,a),n().createElement("div",{className:"duration"},n().createElement("i",{className:t},s)," ",r)))}}class d extends n().PureComponent{render(){const e=["busy","declined","disconnected","missed"].includes(this.props.callState),t=this.props.incoming?e?"call_missed":"call_received":e?"call_missed_outgoing":"call_made";let s;if(e)switch(this.props.callState){case"busy":s=n().createElement(i.FormattedMessage,{id:"call_busy",defaultMessage:[{type:0,value:"busy"}]});break;case"declined":s=n().createElement(i.FormattedMessage,{id:"call_declined",defaultMessage:[{type:0,value:"declined"}]});break;case"missed":s=this.props.incoming?n().createElement(i.FormattedMessage,{id:"call_missed",defaultMessage:[{type:0,value:"missed"}]}):n().createElement(i.FormattedMessage,{id:"call_cancelled",defaultMessage:[{type:0,value:"cancelled"}]});break;default:s=n().createElement(i.FormattedMessage,{id:"call_disconnected",defaultMessage:[{type:0,value:"disconnected"}]})}else s=["accepted","started"].includes(this.props.callState)&&!this.props.duration?n().createElement(i.FormattedMessage,{id:"call_in_progress",defaultMessage:[{type:0,value:"in progress"}]}):n().createElement("span",null,(0,l.Ye)(this.props.duration/1e3));return n().createElement(n().Fragment,null,n().createElement("div",{className:"composed-material"},n().createElement("i",{className:"material-icons"},"call"),n().createElement("i",{className:"material-icons second"},t))," ",s)}}class h extends n().PureComponent{constructor(e){super(e),this.videoRef=n().createRef(),this.handleClick=this.handleClick.bind(this)}handleClick(e){this.props.onClick&&this.props.onClick(e)}render(){const e=(0,l.Ye)(this.props["data-duration"]/1e3),t="inline-video"+(this.props.onClick?" image-clickable":"");return n().createElement("div",{className:t},n().createElement("img",this.props),n().createElement("div",{className:"play-control"},this.props.onClick?n().createElement("i",{className:"material-icons white x-big"},"play_arrow"):n().createElement("img",{src:"img/broken_video.png",style:{filter:"invert(100%)"},width:"36",height:"36"})),e?n().createElement("div",{className:"duration"},e):null)}}class p extends n().PureComponent{constructor(e){super(e),this.state={src:this.props.isvideo?"img/blankvid.png":"img/blankimg.png",style:Object.assign({padding:"4px"},this.props.style),className:this.props.className,alt:this.props.alt,onClick:this.props.onClick}}componentDidMount(){this.props.whenDone.promise.then(e=>this.setState({src:e.src,style:{...this.state.style,padding:0}})).catch(e=>this.setState({src:this.props.isvideo?"img/broken_video.png":"img/broken_image.png"}))}componentWillUnmount(){this.props.whenDone.cancel()}componentDidUpdate(e){e.whenDone!=this.props.whenDone&&(this.setState({src:this.props.isvideo?"img/blankvid.png":"img/blankimg.png",style:{...this.state.style,padding:"4px"}}),this.props.whenDone.promise.then(e=>this.setState({src:e.src,style:{...this.state.style,padding:0}})).catch(e=>this.setState({src:this.props.isvideo?"img/broken_video.png":"img/broken_image.png"})))}render(){return n().createElement("img",this.state)}}var u=s(6904);const m=(0,i.defineMessages)({unknown_name:{id:"unknown_name",defaultMessage:[{type:0,value:"Unknown"}]}});class g extends n().PureComponent{constructor(e){super(e),this.handleDownload=this.handleDownload.bind(this),this.handleMessage=this.handleMessage.bind(this)}handleDownload(e){e.preventDefault();try{const e=r.TheCard.exportVCard(this.props.content),t=new Blob([e],{type:"text/vcard"}),s=URL.createObjectURL(t),a=document.createElement("a");a.style.display="none",a.href=s,a.download=(this.props.content.fn||"contact")+".vcf",document.body.appendChild(a),a.click(),window.URL.revokeObjectURL(s),document.body.removeChild(a)}catch(e){console.error("Failed to download vcard",e),this.props.onError&&this.props.onError("Failed to download vcard","err")}}handleMessage(e){}render(){const e=this.props.content;if(!e)return null;const t=r.TheCard.getFirstTinodeID(e),s=r.TheCard.getEmails(e).concat(r.TheCard.getPhones(e)),a=r.TheCard.getOrg(e);return n().createElement("div",{className:"contact-card"},n().createElement("div",{className:"contact-body"},n().createElement("div",{className:"avatar-box"},n().createElement(u.A,{authorizeURL:this.props.authorizeURL,topic:t||"usr123XXX",avatar:r.TheCard.getPhotoUrl(e)||!0,title:e.fn})),n().createElement("div",{className:"name-box"},n().createElement("div",{className:"name"},e.fn||n().createElement(i.FormattedMessage,m.unknown_name)),a&&n().createElement("div",{className:"org"},a))),n().createElement("div",{className:"contact-actions"},t?n().createElement(n().Fragment,null,n().createElement("a",{className:"flat-button","data-val":t,onClick:this.props.onChatClick},n().createElement(i.FormattedMessage,{id:"chat_now",defaultMessage:[{type:0,value:"Chat"}]})),n().createElement("div",{className:"divider"})):s.length>0?n().createElement(n().Fragment,null,n().createElement("a",{className:"flat-button","data-val":s.join(","),onClick:this.props.onFindClick},n().createElement(i.FormattedMessage,{id:"find_user",defaultMessage:[{type:0,value:"Find"}]})),n().createElement("div",{className:"divider"})):null,n().createElement("a",{className:"flat-button",onClick:this.handleDownload},n().createElement(i.FormattedMessage,{id:"save_action",defaultMessage:[{type:0,value:"Save"}]}))))}}var f=(0,i.injectIntl)(g),v=s(9895);class b extends n().PureComponent{constructor(e){super(e)}render(){return n().createElement("div",{className:"inline-image"},n().createElement("img",this.props),n().createElement("div",{className:"rounded-container"},n().createElement(v.A,{progress:this.props.progress,onCancel:this.props.onCancelUpload})))}}var w=s(9027),y=s(6110),E=s(3540);const S=(0,i.defineMessages)({drafty_form:{id:"drafty_form",defaultMessage:[{type:0,value:"Form:"}]},drafty_attachment:{id:"drafty_attachment",defaultMessage:[{type:0,value:"Attachment"}]},drafty_image:{id:"drafty_image",defaultMessage:[{type:0,value:"Picture"}]},drafty_video:{id:"drafty_video",defaultMessage:[{type:0,value:"Video recording"}]},drafty_unknown:{id:"drafty_unknown",defaultMessage:[{type:0,value:"Unsupported"}]}});function C(e,t,s,a,i){if(i.includes("QQ"))return N.call(this,e,t,s,a);if(!e)return s;let d=r.Drafty.tagName(e),h=r.Drafty.attrValue(e,t)||{};switch(h.key=a,e){case"AU":h.src&&(h.src=this.authorizeURL((0,E.wk)(h.src,"audio")),h.duration=t.duration>0?0|t.duration:void 0,h.preview=t.preview,h.loading="lazy"),d=o.A,s=null;break;case"BR":s=null;break;case"EX":case"RW":break;case"HL":h.className="highlight";break;case"HD":d=null,s=null;break;case"IM":d=_.call(this,d,t,h),s=null;break;case"BN":h.onClick=e=>this.onHandleClick(e,"form_button");let e=n().Children.map(s,e=>"string"==typeof e?e:void 0);e&&0!=e.length||(e=[h.name]),h["data-title"]=e.join("");break;case"LN":h&&(h.href="string"==typeof h.href?(0,E.Jf)(h.href,w.kA):"");break;case"MN":h.className="mention",t&&(h.className+=" "+(0,l.kJ)(t.val,!1,!0));break;case"FM":h.className="bot-form";break;case"QQ":h.className="reply-quote",h.onClick=e=>this.onHandleClick(e,"quote");break;case"TC":d=f,h.content=t,h.authorizeURL=this.authorizeURL,h.onChatClick=e=>this.onHandleClick(e,"contact_chat"),h.onFindClick=e=>this.onHandleClick(e,"contact_find"),s=null;break;case"VC":d=c,s=null,t&&(h.callState=t.state,h.incoming=t.incoming,h.duration=t.duration);break;case"VD":d=M.call(this,d,t,h),s=null;break;default:if(!d){d=n().Fragment,h={key:a};let e=s;Array.isArray(s)&&s.join("").trim()||(e=[n().createElement("span",{key:"x1",className:"gray"},this.formatMessage(S.drafty_unknown))]),s=[n().createElement("i",{key:"x0",className:"material-icons gray"},"extension")," "].concat(e)}}return d?n().createElement(d,h,s):s}function _(e,t,s){if(!t)return s.src="img/broken_image.png",s.style={width:w._g+"px",height:w._g+"px"},e;s.className="inline-image";const a=(0,y.ae)(t.width,t.height,this.viewportWidth>0?Math.min(this.viewportWidth-6.5*w.JS,34.5*w.JS):34.5*w.JS,24*w.JS,!1)||{dstWidth:w._j,dstHeight:w._j};return s.style={width:a.dstWidth+"px",height:a.dstHeight+"px",minWidth:a.dstWidth+"px",minHeight:a.dstHeight+"px"},r.Drafty.isProcessing(t)?e=b:(s.src=this.authorizeURL((0,E.wk)(s.src,"image")),s.alt=t.name,s.src?(Math.max(t.width||0,t.height||0)>w._g&&(s.onClick=e=>this.onHandleClick(e,"image"),s.className+=" image-clickable"),s.loading="lazy"):s.src=null),e}function M(e,t,s){if(!t)return s.src="img/broken_video.png",s.style={width:w._g+"px",height:w._g+"px"},e;s.className="inline-image";const a=(0,y.ae)(t.width,t.height,this.viewportWidth>0?Math.min(this.viewportWidth-6.5*w.JS,34.5*w.JS):34.5*w.JS,24*w.JS,!1)||{dstWidth:w.qV,dstHeight:w.qV};return s.style={width:a.dstWidth+"px",height:a.dstHeight+"px",minWidth:a.dstWidth+"px",minHeight:a.dstHeight+"px"},r.Drafty.isProcessing(t)?e=b:(s.src=this.authorizeURL((0,E.wk)(s.src,"image")),s.alt=t.name,(t.ref||t.val)&&(s.onClick=e=>this.onHandleClick(e,"video"),s.loading="lazy"),e=h),e}function T(e,t,s,a){if(!e)return s;let i=r.Drafty.tagName(e);const o={key:a};switch(e){case"AU":i=n().Fragment,s=[n().createElement("i",{key:"au",className:"material-icons"},"mic")," ",(0,l.Ye)(t.duration/1e3)];break;case"BR":i=n().Fragment,s=[" "];break;case"HL":o.className="highlight preview";break;case"LN":case"MN":i="span";break;case"IM":i=n().Fragment,s=[n().createElement("i",{key:"im",className:"material-icons"},"photo")," ",this.formatMessage(S.drafty_image)];break;case"BN":i="span",o.className="flat-button faux";break;case"FM":i=n().Fragment,s=[n().createElement("i",{key:"fm",className:"material-icons"},"dashboard"),this.formatMessage(S.drafty_form)].concat(" ",s||[]);break;case"RW":i=n().Fragment;break;case"EX":if(t){if(r.Drafty.isFormResponseType(t.mime))return null;delete t.val,delete t.ref}i=n().Fragment,s=[n().createElement("i",{key:"ex",className:"material-icons"},"attachment")," ",this.formatMessage(S.drafty_attachment)];break;case"VC":i=d,t&&(o.callState=t.state,o.incoming=t.incoming,o.duration=t.duration),s=null;break;case"QQ":case"HD":i=null,s=null;break;case"TC":i=n().Fragment,s=[n().createElement("i",{key:"tc",className:"material-icons"},"contact_mail")," ",r.TheCard.getFn(t)||this.formatMessage(S.drafty_unknown)];break;case"VD":i=n().Fragment,s=[n().createElement("i",{key:"im",className:"material-icons"},"play_circle_outline")," ",this.formatMessage(S.drafty_video)];break;default:i||(i=n().Fragment,s=[n().createElement("i",{key:"x0",className:"material-icons gray"},"extension")," ",this.formatMessage(S.drafty_unknown)])}return i?n().createElement(i,o,s):s}function k(e,t){return e.style={width:w._g+"px",height:w._g+"px",maxWidth:w._g+"px",maxHeight:w._g+"px"},e.className="inline-image",e.alt=this.formatMessage(S.drafty_image),e.src=t&&e.src||"img/broken_image.png",e.title=e.alt,e}function A(e,t){const s=(0,y.ae)(t.width,t.height,w.iq,w._g);return e.style={width:s.width+"px",height:s.height+"px",maxWidth:w.iq+"px",maxHeight:w._g+"px"},e.className="inline-image",e.alt=this.formatMessage(S.drafty_video),e.title=e.alt,e.src=t&&e.src||"img/broken_video.png",e}function N(e,t,s,a){if(["BR","EX","IM","MN","VD"].includes(e)){let i=r.Drafty.tagName(e),o=r.Drafty.attrValue(e,t)||{};switch(o.key=a,e){case"BR":s=null;break;case"IM":o=k.call(this,o,t),s=[n().createElement("img",o,null)," ",o.alt],i=n().Fragment,o={key:a};break;case"VD":o=A.call(this,o,t),s=[n().createElement("img",o,null)," ",o.alt],i=n().Fragment,o={key:a};break;case"MN":i="span",o.className="mention",t&&(o.className+=" "+(0,l.kJ)(t.val,!1,!0));break;case"EX":let e;if(t){if(r.Drafty.isFormResponseType(t.mime))return null;e=t.name,delete t.val,delete t.ref}i=n().Fragment,s=[n().createElement("i",{key:"ex",className:"material-icons"},"attachment"),(0,l.Tu)(e,16)||this.formatMessage(S.drafty_attachment)]}return n().createElement(i,o,s)}return T.call(this,e,t,s,a)}function I(e,t){let s,a,n,i;if(t?(a=e.preview,i=e.premime||"image/jpeg",n=e.preref):(a=e.val,i=e.mime,n=e.ref),a){const e=(0,y.i)(a,i);if(!e)throw new Error("Invalid image");s=Promise.resolve(e)}else{if(!n)throw new Error("Missing image data");s=fetch(this.authorizeURL((0,E.wk)(n,"image"))).then(e=>{if(e.ok)return e.blob();throw new Error(`Image fetch unsuccessful: ${e.status} ${e.statusText}`)})}return s.then(e=>(0,y.ag)(e,t?w.iq:w._g,w._g,-1,!t)).then(s=>(t?e.premime=s.mime:e.mime=s.mime,e.size=s.blob.size,e.width=s.width,e.height=s.height,delete e.ref,delete e.preref,e.src=URL.createObjectURL(s.blob),(0,y.Sk)(s.blob))).then(s=>(t?e.preview=s.bits:e.val=s.bits,e)).catch(t=>{throw delete e.val,delete e.preview,delete e.src,e.width=w._g,e.height=w._g,t})}function D(e,t,s,a,i){if("IM"==e||"VD"==e){const i="IM"==e?k.call(this,{key:a},t):A.call(this,{key:a},t);let r;try{r=(0,E.iE)(I.call(this,t,"VD"==e))}catch(e){console.warn("Failed to quote image:",e.message),r=(0,E.iE)(e)}return i.whenDone=r,s=[n().createElement(p,i,null)," ",i.alt],n().createElement(n().Fragment,{key:a},s)}if("QQ"==e){if(i.includes("QQ"))return n().createElement("span",{key:a},[n().createElement("i",{key:"qq",className:"material-icons"},"format_quote")," "]);const e=r.Drafty.attrValue("QQ",t)||{};return e.key=a,e.className="reply-quote",n().createElement(r.Drafty.tagName("QQ"),e,s)}return N.call(this,e,t,s,a)}},5874:function(e,t,s){s.d(t,{A:function(){return l}});var a=s(1594),n=s.n(a),i=s(6904);class r extends n().PureComponent{constructor(e){super(e),this.handleCancel=this.handleCancel.bind(this)}handleCancel(e){e.preventDefault(),this.props.onCancel(this.props.topic,this.props.index)}render(){const e=this.props.title||this.props.topic,t=this.props.invalid?"chip invalid":"chip";return n().createElement("div",{className:t},this.props.noAvatar?n().createElement("span",{className:"spacer"}):n().createElement("div",{className:"avatar-box"},n().createElement(i.A,{authorizeURL:this.props.tinode.authorizeURL,avatar:this.props.avatar||!0,topic:this.props.topic,title:this.props.title})),n().createElement("span",null,e),this.props.onCancel&&!this.props.required?n().createElement("a",{href:"#",onClick:this.handleCancel},"×"):n().createElement("span",{className:"spacer"}))}}var o=s(6110);class l extends n().Component{constructor(e){super(e),this.state=l.deriveStateFromProps(e),this.state.input="",this.state.focused=!1,this.handleTextInput=this.handleTextInput.bind(this),this.removeChipAt=this.removeChipAt.bind(this),this.handleChipCancel=this.handleChipCancel.bind(this),this.handleFocusGained=this.handleFocusGained.bind(this),this.handleFocusLost=this.handleFocusLost.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this)}static deriveStateFromProps(e){return{sortedChips:l.sortChips(e.chips,e.staticMembers),chipIndex:l.indexChips(e.chips)}}componentDidUpdate(e,t){e.chips==this.props.chips&&e.staticMembers==this.props.staticMembers&&e.prompt==this.props.prompt||this.setState(l.deriveStateFromProps(this.props)),(!t||this.props.chips.length>t.sortedChips.length)&&this.setState({input:""})}static indexChips(e){const t={};let s=0;return e.forEach(e=>{t[e.user]=s,s++}),t}static sortChips(e,t){const s=[],a=[];return e.forEach(e=>{t&&t.includes(e.user)?s.push(e):a.push(e)}),s.concat(a)}handleTextInput(e){this.setState({input:e.target.value}),this.props.filterFunc&&this.props.filterFunc(e.target.value)}removeChipAt(e){const t=this.state.sortedChips[e];this.props.onChipRemoved(t.user,this.state.chipIndex[t.user])}handleChipCancel(e,t){this.removeChipAt(t)}handleFocusGained(){this.setState({focused:!0})}handleFocusLost(){this.setState({focused:!1}),this.props.onFocusLost&&this.props.onFocusLost(this.state.input)}handleKeyDown(e){if("Backspace"===e.key){if(0==this.state.input.length&&this.state.sortedChips.length>0){const e=this.state.sortedChips.length-1;this.state.sortedChips[e].user!==this.props.staticMembers&&this.removeChipAt(e)}}else"Enter"===e.key?this.props.onEnter&&this.props.onEnter(this.state.input):"Escape"===e.key&&this.props.onCancel&&this.props.onCancel()}render(){const e=[];let t=0;const s=this.props.staticMembers||[];this.state.sortedChips.forEach(a=>{e.push(n().createElement(r,{tinode:this.props.tinode,onCancel:this.handleChipCancel,avatar:(0,o.to)(a.public?a.public.photo:null),title:a.public?a.public.fn:void 0,noAvatar:this.props.avatarDisabled,topic:a.user,required:s.includes(a.user),invalid:a.invalid,index:t,key:a.user})),t++});const a="chip-input"+(this.state.focused?" focused":""),i=!(this.props.tabIndex>0);return n().createElement("div",{className:a},e,n().createElement("input",{type:"text",placeholder:this.props.prompt,onChange:this.handleTextInput,onFocus:this.handleFocusGained,onBlur:this.handleFocusLost,onKeyDown:this.handleKeyDown,value:this.state.input,tabIndex:this.props.tabIndex,autoFocus:i}))}}},6005:function(e,t,s){s.d(t,{A:function(){return g}});var a=s(1594),n=s.n(a),i=s(8181),r=s(4532),o=s(504),l=s(6904);class c extends n().PureComponent{render(){return this.props.count>0?n().createElement("span",{className:"unread"},this.props.count>9?"9+":this.props.count):null}}var d=s(5791),h=s(3540),p=s(8589);const u=(0,i.defineMessages)({self_topic_name:{id:"self_topic_name",defaultMessage:[{type:0,value:"Saved messages"}]},self_topic_comment:{id:"self_topic_comment",defaultMessage:[{type:0,value:"Notes, messages, links, files saved for posterity"}]}});class m extends n().Component{constructor(e){super(e),this.handleClick=this.handleClick.bind(this),this.handleContextClick=this.handleContextClick.bind(this)}handleClick(e){e.preventDefault(),e.stopPropagation(),this.props.onSelected&&this.props.onSelected(this.props.item,this.props.index)}handleContextClick(e){e.preventDefault(),e.stopPropagation(),this.props.showContextMenu({topicName:this.props.item,topicTitle:this.props.title,y:e.pageY,x:e.pageX})}render(){let e=this.props.title;const t=r.Tinode.isSelfTopicName(this.props.item);e?e.length>30&&(e=(0,p.W5)(e,30)):e=t?this.props.intl.formatMessage(u.self_topic_name):n().createElement("i",null,n().createElement(i.FormattedMessage,{id:"unnamed_topic",defaultMessage:[{type:0,value:"Unnamed"}]}));const s=this.props.now?"online":"offline",a=!this.props.avatar||this.props.avatar,m=this.props.badges?this.props.badges.slice():[],g=[];let f;this.props.isVerified&&g.push({icon:"verified",color:"verified-color"}),this.props.isStaff&&g.push({icon:"staff",color:"staff-color"}),this.props.isDangerous&&g.push({icon:"dangerous",color:"danger-color"}),this.props.acs&&(this.props.showMode&&m.push({name:this.props.acs.getMode(),key:"mode"}),this.props.acs.isMuted()&&g.push({icon:"muted"}),this.props.acs.isJoiner()||g.push({icon:"banned"})),"string"==typeof this.props.preview?f=this.props.preview:r.Drafty.isValid(this.props.preview)?f=n().createElement(n().Fragment,null,r.Drafty.format(this.props.preview,d.TU,{formatMessage:this.props.intl.formatMessage,previewIsResponse:this.props.previewIsResponse})):this.props.preview&&(f=n().createElement(n().Fragment,null,n().createElement("i",{className:"material-icons gray"},"warning_amber")," ",n().createElement("i",{className:"gray"},n().createElement(i.FormattedMessage,{id:"invalid_content",defaultMessage:[{type:0,value:"invalid content"}]}))));const v=(0,h.LO)(this.props.received),b=v?n().createElement("i",{className:"material-icons small space-right"+(v.color?" "+v.color:"")},v.name):null,w="contact-title"+(this.props.deleted?" deleted":""),y=f||this.props.comment||(t?this.props.intl.formatMessage(u.self_topic_comment):" "),E=this.props.showCheckmark?null:this.props.selected?"selected":this.props.pinned?"tpinned":null;return n().createElement("li",{className:E,onClick:this.handleClick},n().createElement("div",{className:"avatar-box"},n().createElement(l.A,{authorizeURL:this.props.tinode.authorizeURL,avatar:a,title:this.props.title,topic:this.props.item,deleted:this.props.deleted}),this.props.deleted?n().createElement("i",{className:"deleted material-icons"},"cancel"):!t&&this.props.showOnline?n().createElement("span",{className:s}):this.props.showCheckmark&&this.props.selected?n().createElement("i",{className:"checkmark material-icons"},"check_circle"):null),n().createElement("div",{className:"text-box"},n().createElement("div",null,n().createElement("span",{className:w},e),this.props.isGroup?n().createElement("i",{className:"material-icons as-badge"},"group"):null,this.props.isChannel?n().createElement("i",{className:"material-icons as-badge"},"podcasts"):null,t?null:n().createElement(o.A,{badges:g}),this.props.deleted?null:n().createElement(c,{count:this.props.unread})),this.props.showMode?n().createElement("span",null,n().createElement(o.A,{badges:m})):this.props.small?null:n().createElement("div",{className:"contact-comment"},b,n().createElement("span",null,y))),this.props.showContextMenu?n().createElement("span",{className:"menuTrigger"},n().createElement("a",{href:"#",onClick:this.handleContextClick},n().createElement("i",{className:"material-icons"},"expand_more"))):null)}}var g=(0,i.injectIntl)(m)},6110:function(e,t,s){s.d(t,{$Z:function(){return m},CO:function(){return d},F8:function(){return v},Pv:function(){return f},QJ:function(){return b},Sk:function(){return p},ae:function(){return o},ag:function(){return c},bB:function(){return h},i:function(){return g},iJ:function(){return u},to:function(){return r}});var a=s(4532);const n=["image/jpeg","image/gif","image/png","image/svg","image/svg+xml"],i=["jpg","gif","png","svg","svg"];function r(e){if(e&&"object"==typeof e){if(e.ref)return e.ref;if(e.data&&e.type){return"data:"+(e.type.startsWith("image/")?e.type:"image/"+e.type)+";base64,"+e.data}}return null}function o(e,t,s,a,n){if(t|=0,s|=0,a|=0,(e|=0)<=0||t<=0||s<=0||a<=0)return null;n&&(s=a=Math.min(s,a));const i=Math.min(Math.min(e,s)/e,Math.min(t,a)/t),r={dstWidth:e*i|0,dstHeight:t*i|0};return n?(r.dstWidth=r.dstHeight=Math.min(r.dstWidth,r.dstHeight),r.srcWidth=r.srcHeight=Math.min(e,t),r.xoffset=(e-r.srcWidth)/2|0,r.yoffset=(t-r.srcWidth)/2|0):(r.xoffset=r.yoffset=0,r.srcWidth=e,r.srcHeight=t),r}function l(e,t){const s=n.indexOf(t);if(s<0||!e)return e;const a=i[s],r=e.lastIndexOf(".");return r>=0&&(e=e.substring(0,r)),e+"."+a}function c(e,t,s,a,i){return new Promise((r,c)=>{const d=new Image;d.crossOrigin="Anonymous",d.onerror=function(e){c(new Error("Image format unrecognized"))},d.onload=async function(){URL.revokeObjectURL(d.src);const h=o(d.width,d.height,t,s,i);if(!h)return void c(new Error("Invalid image"));let p=document.createElement("canvas");p.width=h.dstWidth,p.height=h.dstHeight;let u=p.getContext("2d");u.imageSmoothingEnabled=!0,u.drawImage(d,h.xoffset,h.yoffset,h.srcWidth,h.srcHeight,0,0,h.dstWidth,h.dstHeight);const m=n.includes(e.type)?e.type:"image/jpeg";let g=await new Promise(e=>p.toBlob(e,m));if(g){for(;a>0&&g.length>a;)h.dstWidth=.70710678118*h.dstWidth|0,h.dstHeight=.70710678118*h.dstHeight|0,p.width=h.dstWidth,p.height=h.dstHeight,u=p.getContext("2d"),u.clearRect(0,0,p.width,p.height),u.drawImage(d,h.xoffset,h.yoffset,h.srcWidth,h.srcHeight,0,0,h.dstWidth,h.dstHeight),g=await new Promise(e=>p.toBlob(e,m));p=null,r({mime:m,blob:g,width:h.dstWidth,height:h.dstHeight,name:l(e.name,m)})}else c(new Error("Unsupported image format"))},d.src=URL.createObjectURL(e)})}function d(e,t,s,a,i,r,o){return new Promise((l,c)=>{const d=new Image;d.crossOrigin="Anonymous",d.onerror=e=>{c(new Error("Image format unrecognized"))},d.onload=t=>{URL.revokeObjectURL(d.src);let h=document.createElement("canvas");h.width=i*o,h.height=r*o;let p=h.getContext("2d");p.imageSmoothingEnabled=!0,p.drawImage(d,s,a,i,r,0,0,h.width,h.height),e=n.includes(e)?e:"image/jpeg",h.toBlob(t=>{h=null,t?l({mime:e,blob:t,width:i,height:r}):c(new Error("Unsupported image format"))},e)},d.src=t})}function h(e){return new Promise((t,s)=>{const a=new FileReader;a.onerror=e=>{s(a.error)},a.onload=s=>{t({mime:e.type,bits:a.result.split(",")[1],name:e.name})},a.readAsDataURL(e)})}function p(e){return new Promise((t,s)=>{const a=new FileReader;a.onerror=e=>{s(a.error)},a.onload=s=>{t({mime:e.type,bits:a.result.split(",")[1]})},a.readAsDataURL(e)})}function u(e,t,s,a){const n=(e.clipboardData||e.originalEvent.clipboardData||{}).items;if(!n||!n.length)return!1;for(let e in n){const i=n[e];if("file"===i.kind){const e=i.getAsFile();if(!e){console.error("Failed to get file object from pasted file item",i.kind,i.type),a("Failed to get file object from pasted file item");continue}return e.type&&"image"==e.type.split("/")[0]?t(e):s(e),!0}}return!1}function m(e){if(e){e=e.replace(/-/g,"+").replace(/_/g,"/");try{e=btoa(atob(e))}catch(t){console.error("Failed to base64 re-encode string.",t),e=null}}return e}function g(e,t){if(!e)return null;try{const s=atob(e),a=s.length,n=new ArrayBuffer(a),i=new Uint8Array(n);for(let e=0;e<a;e++)i[e]=s.charCodeAt(e);return new Blob([n],{type:t})}catch(e){console.error("Failed to convert base64 to blob: ",e)}return null}function f(e){if(!Array.isArray(e))return null;try{let t="";return new Uint8Array(e).forEach(e=>t+=String.fromCharCode(e)),window.btoa(t)}catch(e){}return null}function v(e){const t=[];try{return[...window.atob(e)].forEach(e=>{t.push(e.charCodeAt(0))}),t}catch(e){}return null}function b(e){return new Promise((t,s)=>{const n=new FileReader;n.onerror=e=>{s(n.error)},n.onload=e=>{const i=a.TheCard.importVCard(n.result);i?t(i):s(new Error("Failed to parse vCard"))},n.readAsText(e)})}},6789:function(e,t,s){s.d(t,{A:function(){return i}});var a=s(1594),n=s.n(a);class i extends n().PureComponent{constructor(e){super(e),this.inputRef=n().createRef(),this.state={value:this.props.value||"",visible:!1},this.handleVisibility=this.handleVisibility.bind(this),this.handeTextChange=this.handeTextChange.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleEditingFinished=this.handleEditingFinished.bind(this)}componentDidMount(){this.props.autoFocus&&this.inputRef.current.focus()}handeTextChange(e){this.setState({value:e.target.value}),this.props.onChange&&this.props.onChange(e)}handleVisibility(e){e.preventDefault(),this.setState({visible:!this.state.visible})}handleKeyDown(e){27==e.keyCode?(this.setState({value:this.props.value||"",visible:!1}),this.props.onFinished&&this.props.onFinished()):13==e.keyCode&&this.handleEditingFinished()}handleEditingFinished(e){if(e){let t=e.currentTarget;setTimeout(e=>{t.contains(document.activeElement)||this.props.onFinished&&this.props.onFinished(this.state.value)},0)}else this.props.onFinished&&this.props.onFinished(this.state.value.trim())}render(){return n().createElement("div",{tabIndex:"-1",className:"group-focus",onBlur:this.handleEditingFinished},n().createElement("input",{className:"with-icon-right",type:this.state.visible?"text":"password",value:this.state.value,placeholder:this.props.placeholder,maxLength:32,required:this.props.required?"required":"",autoFocus:this.props.autoFocus?"autoFocus":"",autoComplete:this.props.autoComplete,onChange:this.handeTextChange,onKeyDown:this.handleKeyDown,ref:this.inputRef}),n().createElement("span",{onClick:this.handleVisibility},n().createElement("i",{className:"material-icons clickable light-gray"},this.state.visible?"visibility":"visibility_off")))}}},6904:function(e,t,s){s.d(t,{A:function(){return c}});var a=s(1594),n=s.n(a),i=s(4532),r=s(8589),o=s(3540),l=s(9027);class c extends n().PureComponent{render(){let e;if(!0===this.props.avatar)if(i.Tinode.isSelfTopicName(this.props.topic))e=n().createElement("img",{className:"avatar self",alt:"avatar",src:l.Yd});else{const t=i.Tinode.isGroupTopicName(this.props.topic),s=(0,r.kJ)(this.props.topic,t);if(this.props.topic&&this.props.title&&this.props.title.trim()){const t=this.props.title.trim().charAt(0),a="lettertile "+s+(this.props.deleted?" disabled":"");e=n().createElement("div",{className:a},n().createElement("div",null,t))}else{const a="material-icons "+s+(this.props.deleted?" disabled":"");e=t?n().createElement("i",{className:a},"group"):n().createElement("i",{className:a},"person")}}else if(this.props.avatar){const t=this.props.authorizeURL((0,o.wk)(this.props.avatar,"image")),s="avatar"+(this.props.deleted?" deleted":"");e=n().createElement("img",{className:s,alt:"avatar",src:t,onError:e=>{e.target.onerror=null,e.target.src="img/broken_image.png"}})}else e=null;return e}}},7151:function(e,t,s){s.d(t,{A:function(){return a}});class a{static parseUrlHash(e){const t=e.split("?",2),s={};let a=[];return t[0]&&(a=t[0].replace("#","").split("/")),t[1]&&t[1].split("&").forEach(e=>{const t=e.indexOf("=");t>0&&(s[e.slice(0,t)]=decodeURIComponent(e.slice(t+1)))}),{path:a,params:s}}static navigateTo(e){window.location.hash=e}static composeUrlHash(e,t){let s=e.join("/");const a=[];for(const e in t)t.hasOwnProperty(e)&&void 0!==t[e]&&a.push(e+"="+encodeURIComponent(t[e]));return a.length>0&&(s+="?"+a.join("&")),s}static addUrlParam(e,t,s){const n=a.parseUrlHash(e);return n.params[t]=s,a.composeUrlHash(n.path,n.params)}static removeUrlParam(e,t){const s=a.parseUrlHash(e);return delete s.params[t],a.composeUrlHash(s.path,s.params)}static removeUrlParams(e,t){Array.isArray(t)||(t=[t]);const s=a.parseUrlHash(e);for(const e of t)delete s.params[e];return a.composeUrlHash(s.path,s.params)}static setUrlSidePanel(e,t){const s=a.parseUrlHash(e);return s.path[0]=t,a.composeUrlHash(s.path,s.params)}static setUrlInfoPanel(e,t){const s=a.parseUrlHash(e);return t?s.params.info=t:delete s.params.info,a.composeUrlHash(s.path,s.params)}static setUrlTopic(e,t){const s=a.parseUrlHash(e);return s.path[1]=t,delete s.params.info,a.composeUrlHash(s.path,s.params)}}},8089:function(e,t,s){s.d(t,{A:function(){return b}});var a=s(1594),n=s.n(a),i=s(8181),r=s(4532),o=s(221),l=s(9418),c=s(1485),d=s(3307),h=s(9027),p=s(6110),u=s(8589),m=s(3540);const g=(0,i.defineMessages)({alias_invalid:{id:"alias_invalid",defaultMessage:[{type:0,value:"(invalid)"}]},alias_already_taken:{id:"alias_already_taken",defaultMessage:[{type:0,value:"(already taken)"}]},self_topic_name:{id:"self_topic_name",defaultMessage:[{type:0,value:"Saved messages"}]},self_topic_comment:{id:"self_topic_comment",defaultMessage:[{type:0,value:"Notes, messages, links, files saved for posterity"}]}});class f extends n().Component{constructor(e){super(e);const t=this.props.tinode.getTopic(this.props.topic),s=t.getAccessMode(),a=r.Tinode.isSelfTopicName(this.props.topic);this.state={isMe:r.Tinode.isMeTopicName(this.props.topic),isSelf:a,owner:s&&s.isOwner(),fullName:t.public?t.public.fn:a?this.props.intl.formatMessage(g.self_topic_name):null,private:t.private?t.private.comment:null,description:t.public?t.public.note:a?this.props.intl.formatMessage(g.self_topic_comment):null,avatar:(0,p.to)(t.public?t.public.photo:null),tags:t.tags()||[],newAvatar:null,newAvatarMime:null,aliasError:""},this.previousOnTags=null,this.aliasCheckTimer=null,this.aliasCheckPromise=null,this.tnNewTags=this.tnNewTags.bind(this),this.handleFullNameUpdate=this.handleFullNameUpdate.bind(this),this.handleImageUpdated=this.handleImageUpdated.bind(this),this.handleAvatarCropped=this.handleAvatarCropped.bind(this),this.handleAvatarCropCancel=this.handleAvatarCropCancel.bind(this),this.uploadAvatar=this.uploadAvatar.bind(this),this.handlePrivateUpdate=this.handlePrivateUpdate.bind(this),this.handleAliasUpdate=this.handleAliasUpdate.bind(this),this.handleDescriptionUpdate=this.handleDescriptionUpdate.bind(this),this.handleTagsUpdated=this.handleTagsUpdated.bind(this),this.validateAlias=this.validateAlias.bind(this),this.cancelValidator=this.cancelValidator.bind(this)}componentDidMount(){const e=this.props.tinode.getTopic(this.props.topic);this.previousOnTags=e.onTagsUpdated,e.onTagsUpdated=this.tnNewTags}componentWillUnmount(){this.props.tinode.getTopic(this.props.topic).onTagsUpdated=this.previousOnTags,this.cancelValidator()}tnNewTags(e){this.setState({tags:e})}handleFullNameUpdate(e){(e=(0,u.W5)(e.trim(),h.tS))&&this.state.fullName!==e&&(this.setState({fullName:e}),this.props.onUpdateTopicDesc(this.props.topic,(0,m.k6)(e,null)))}handlePrivateUpdate(e){e=e.trim().substring(0,h.tS),this.state.private!==e&&(this.setState({private:e}),this.props.onUpdateTopicDesc(this.props.topic,null,e||r.Tinode.DEL_CHAR))}handleDescriptionUpdate(e){(e=e.trim().substring(0,h.lQ))&&(this.setState({description:e}),this.props.onUpdateTopicDesc(this.props.topic,(0,m.k6)(null,null,null,e)))}handleImageUpdated(e,t){this.setState({newAvatar:t,newAvatarMime:e}),t||(this.setState({avatar:null}),this.props.onUpdateTopicDesc(this.props.topic,(0,m.k6)(null,r.Tinode.DEL_CHAR)))}handleAvatarCropped(e,t,s,a){const n=t?URL.createObjectURL(t):null;this.setState({avatar:n,newAvatar:null,newAvatarMime:null}),t&&this.uploadAvatar(e,t,s,a)}uploadAvatar(e,t,s,a){const n=e=>{let{mime:t,blob:s}=e;if(s.size>h.Z7){this.props.tinode.getLargeFileHelper().upload(s).then(e=>this.props.onUpdateTopicDesc(this.props.topic,(0,m.k6)(null,e))).catch(e=>this.props.onError(e.message,"err"))}else(0,p.Sk)(s).then(e=>{const s=(0,p.to)({data:e.bits,type:t});this.setState({source:s}),this.props.onUpdateTopicDesc(this.props.topic,(0,m.k6)(null,s))})};s>h.eQ||a>h.eQ||s!=a?(0,p.ag)(t,h.eQ,h.eQ,h.qy,!0).then(e=>n(e)).catch(e=>this.props.onError(e.message,"err")):n({mime:e,blob:t,width:s,height:a})}handleAvatarCropCancel(){this.setState({newAvatar:null,newAvatarMime:null})}handleAliasUpdate(e){const t=(e=(e||"").trim())?r.Tinode.setUniqueTag(this.state.tags,r.Tinode.TAG_ALIAS+e.toLowerCase()):r.Tinode.clearTagPrefix(this.state.tags,r.Tinode.TAG_ALIAS);this.handleTagsUpdated(t)}validateAlias(e){if(this.cancelValidator(),!(e=e.trim()))return this.setState({aliasError:""}),!0;if(!r.Tinode.isValidTagValue(e))return this.setState({aliasError:this.props.intl.formatMessage(g.alias_invalid)}),!1;this.setState({aliasError:""});const t=this.props.tinode.getFndTopic();if(!t)return this.setState({aliasError:""}),!0;this.aliasCheckPromise={};const s=new Promise((e,t)=>{this.aliasCheckPromise.resolve=e,this.aliasCheckPromise.reject=t});return this.aliasCheckTimer=setTimeout(s=>{this.aliasCheckTimer=null,t.checkTagUniqueness(`${r.Tinode.TAG_ALIAS}${e}`,this.props.topic).then(e=>{this.aliasCheckPromise.resolve(e),this.setState({aliasError:e?"":this.props.intl.formatMessage(g.alias_already_taken)})}).catch(e=>{this.aliasCheckPromise.reject(e),this.setState({aliasError:e.message})})},1e3),s}cancelValidator(){this.aliasCheckTimer&&(clearTimeout(this.aliasCheckTimer),this.aliasCheckTimer=null,this.aliasCheckPromise.reject(null))}handleTagsUpdated(e){(0,m.af)(this.state.tags.slice(0),e.slice(0))||this.props.onUpdateTags(e)}render(){if(this.state.newAvatar)return n().createElement(o.A,{avatar:this.state.newAvatar,mime:this.state.newAvatarMime,onSubmit:this.handleAvatarCropped,onCancel:this.handleAvatarCropCancel,onError:this.props.onError});const e=this.state.isMe||this.state.owner&&!this.state.isSelf;let t=this.state.tags&&this.state.tags.find(e=>e.startsWith("alias:"));return t&&(t=t.substring(6)),n().createElement(n().Fragment,null,n().createElement("div",{className:"panel-form-column"},n().createElement("center",null,n().createElement(l.A,{tinode:this.props.tinode,avatar:this.state.avatar,readOnly:!e,uid:this.props.topic,title:this.state.fullName,onImageUpdated:this.handleImageUpdated,onError:this.props.onError})),this.state.isMe?n().createElement("div",{className:"group"},n().createElement("label",{className:"small"},n().createElement(i.FormattedMessage,{id:"label_your_name",defaultMessage:[{type:0,value:"Your name"}]})),n().createElement("div",null,n().createElement(i.FormattedMessage,{id:"full_name_prompt",defaultMessage:[{type:0,value:"Full name, e.g. John Doe"}]},e=>n().createElement(c.A,{placeholder:e,value:this.state.fullName,required:!0,onFinished:this.handleFullNameUpdate})))):n().createElement(n().Fragment,null,n().createElement("div",{className:"group"},n().createElement("div",null,n().createElement("label",{className:"small"},n().createElement(i.FormattedMessage,{id:"label_topic_name",defaultMessage:[{type:0,value:"Name"}]}))),n().createElement("div",null,n().createElement(i.FormattedMessage,{id:"topic_name_editing_placeholder",defaultMessage:[{type:0,value:"Freeform name of the group"}]},t=>n().createElement(c.A,{placeholder:t,readOnly:!e,value:this.state.fullName,required:!0,maxLength:32,onFinished:this.handleFullNameUpdate})))),n().createElement("div",{className:"group"},n().createElement("div",null,n().createElement("label",{className:"small"},n().createElement(i.FormattedMessage,{id:"label_private",defaultMessage:[{type:0,value:"Private comment"}]}))),n().createElement("div",null,n().createElement(i.FormattedMessage,{id:"private_editing_placeholder",defaultMessage:[{type:0,value:"Visible to you only"}]},e=>n().createElement(c.A,{placeholder:e,value:this.state.private,onFinished:this.handlePrivateUpdate}))))),e||t?n().createElement("div",{className:"group"},n().createElement("div",null,n().createElement("label",{className:"small "+(this.state.aliasError?"invalid":"")},n().createElement(i.FormattedMessage,{id:"label_alias_edit",defaultMessage:[{type:0,value:"Alias"}]})," ",this.state.aliasError)),n().createElement("div",null,n().createElement(i.FormattedMessage,{id:"alias_editing_placeholder",defaultMessage:[{type:0,value:"Alias (optional)"}]},s=>n().createElement(c.A,{placeholder:s,readOnly:!e,value:t,validator:this.validateAlias,iconLeft:"alternate_email",maxLength:24,spellCheck:!1,onFinished:this.handleAliasUpdate})))):null,e||this.state.description?n().createElement("div",{className:"group"},n().createElement("div",null,n().createElement("label",{className:"small"},n().createElement(i.FormattedMessage,{id:"label_description",defaultMessage:[{type:0,value:"Description"}]}))),n().createElement("div",null,n().createElement(i.FormattedMessage,{id:"description_editing_placeholder",defaultMessage:[{type:0,value:"Description (optional)"}]},t=>n().createElement(c.A,{placeholder:t,readOnly:!e,value:this.state.description,multiline:2,onFinished:this.handleDescriptionUpdate})))):null),e&&!this.state.isMe?n().createElement(n().Fragment,null,n().createElement("div",{className:"hr"}),n().createElement(i.FormattedMessage,{id:"title_tag_manager",defaultMessage:[{type:0,value:"Tags (search & discovery)"}]},e=>n().createElement(d.A,{tinode:this.props.tinode,title:e,activated:!1,tags:this.state.tags,onSubmit:this.handleTagsUpdated}))):null)}}var v=(0,i.injectIntl)(f);class b extends n().Component{constructor(e){super(e);this.props.tinode.getTopic(this.props.topic).getAccessMode();this.state={tags:[]},this.previousTagsUpdated=void 0,this.onTagsUpdated=this.onTagsUpdated.bind(this),this.handleTagsUpdated=this.handleTagsUpdated.bind(this)}componentDidUpdate(e){const t=this.props.tinode.getTopic(e.topic);t&&(t.onTagsUpdated!=this.onTagsUpdated&&("grp"==t.getType()?(this.previousTagsUpdated=t.onTagsUpdated,t.onTagsUpdated=this.onTagsUpdated):this.previousTagsUpdated=void 0),this.state.topic!=e.topic&&this.setState({topic:e.topic}))}componentWillUnmount(){this.props.tinode.getTopic(this.props.topic).onTagsUpdated=this.previousTagsUpdated}onTagsUpdated(e){this.setState({tags:e}),this.previousTagsUpdated&&this.previousTagsUpdated!=this.onTagsUpdated&&this.previousTagsUpdated(e)}handleTagsUpdated(e){(0,m.af)(this.state.tags.slice(0),e.slice(0))||this.props.onUpdateTagsRequest(this.props.topic,e)}render(){return n().createElement("div",{className:"scrollable-panel"},n().createElement(v,{tinode:this.props.tinode,topic:this.props.topic,onUpdateTopicDesc:this.props.onUpdateTopicDesc,onUpdateTags:this.handleTagsUpdated,onError:this.props.onError}))}}},8181:function(e){e.exports=ReactIntl},8262:function(e,t,s){s.d(t,{A:function(){return a}});class a{static setObject(e,t){localStorage.setItem(e,JSON.stringify(t))}static getObject(e){const t=localStorage.getItem(e);return t&&JSON.parse(t)}static updateObject(e,t){const s=this.getObject(e);this.setObject(e,Object.assign(s||{},t))}static removeItem(e){localStorage.removeItem(e)}}},8589:function(e,t,s){function a(e,t){t=t||window.navigator.userLanguage||window.navigator.language;const s=new Date;return e.getFullYear()==s.getFullYear()?e.getMonth()==s.getMonth()&&e.getDate()==s.getDate()?e.toLocaleTimeString(t,{hour12:!1,hour:"2-digit",minute:"2-digit"}):e.toLocaleDateString(t,{hour12:!1,month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):e.toLocaleDateString(t,{year:"numeric",month:"short",day:"numeric"})}function n(e,t){t=t||window.navigator.userLanguage||window.navigator.language;const s=new Date,a=Math.floor((e.getTime()-6e4*e.getTimezoneOffset())/864e5)-Math.floor((s.getTime()-6e4*s.getTimezoneOffset())/864e5);return Math.abs(a)<2?new Intl.RelativeTimeFormat(t,{numeric:"auto"}).format(a,"day"):new Intl.DateTimeFormat(t).format(e)}function i(e,t){if("number"!=typeof e)return"";let s=(0|Math.floor(e/60))%60,a=0|Math.floor(e/3600);(t||a>0)&&(s=s<10?`0${s}`:s);let n=(0|e)%60;return n=n<10?`0${n}`:n,0==a?`${s}:${n}`:`${a}:${s}:${n}`}function r(e){if(!e||0==e)return"0 Bytes";const t=["Bytes","KB","MB","GB","TB","PB"],s=Math.min(0|Math.floor(Math.log2(e)/10),t.length-1),a=e/Math.pow(1024,s),n=s>0?a<3?2:a<30?1:0:0;return a.toFixed(n)+" "+t[s]}function o(e,t){return"string"!=typeof e?e:e.length>t?e.slice(0,t/2-1)+"…"+e.slice(1-t/2):e}function l(e,t,s){return(t?"lt-":"dk-")+(s?"fg-":"bg-")+(a=e,Math.abs(function(e){let t=0;e=""+e;for(let s=0;s<e.length;s++)t=(t<<5)-t+e.charCodeAt(s),t&=t;return t}(a))%16);var a}function c(e){const t=e.toUpperCase().split("").map(e=>127397+e.charCodeAt());return String.fromCodePoint(...t)}function d(e,t){if("string"!=typeof e)return e;if(e.length<=t)return e;return/[\u0590-\u05FF\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF]/.test(e)?"…"+e.slice(0,t-1):e.slice(0,t-1)+"…"}s.d(t,{Tu:function(){return o},W5:function(){return d},Ye:function(){return i},cq:function(){return a},kJ:function(){return l},lX:function(){return r},lb:function(){return c},mf:function(){return n}})},9027:function(e,t,s){s.d(t,{C3:function(){return a},Cx:function(){return T},D3:function(){return m},DT:function(){return N},GB:function(){return p},H1:function(){return E},HX:function(){return r},J:function(){return c},JS:function(){return f},Lq:function(){return n},NR:function(){return l},QG:function(){return _},RS:function(){return B},Rz:function(){return R},S:function(){return Z},SE:function(){return i},TR:function(){return F},Ti:function(){return h},Tn:function(){return V},U3:function(){return o},Uv:function(){return Q},V9:function(){return q},VJ:function(){return g},Yd:function(){return G},Z7:function(){return b},ZW:function(){return $},_g:function(){return k},_j:function(){return w},bn:function(){return Y},cL:function(){return X},cZ:function(){return u},eQ:function(){return v},fi:function(){return j},gb:function(){return J},hB:function(){return U},hT:function(){return W},iB:function(){return O},iq:function(){return A},kA:function(){return z},lQ:function(){return D},mp:function(){return S},mu:function(){return x},qV:function(){return y},qy:function(){return C},rl:function(){return H},rn:function(){return d},sT:function(){return P},tS:function(){return I},wj:function(){return M},wl:function(){return L},yS:function(){return K}});const a="TinodeWeb/"+(s(257).i||"0.24"),n="AQEAAAABAAD_rAp4DJh05a1HAwFT3A6K",i={hosted:"web.tinode.co",local:"localhost:6060"},r=i.hosted,o=!0,l=3e3,c=1500,d=2,h=96,p=16,u="JRWPS",m="N",g=640,f=13,v=384,b=4096,w=32,y=128,E=24,S=262144,C=1<<23,_=1024,M=64,T=96,k=36,A=48,N=4,I=60,D=360,x=24,P=80,R=30,F=84,U=48,L=2e3,O=6e5,j="mailto:support@tinode.co",B="https://tinode.co/privacy.html",q="https://tinode.co/terms.html",H=!1,z=["http","https","ftp","ftps"],V=128,W=8e4,$=1e3,K=3*f,G="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZpZXdCb3g9IjAgMCAxNyAxNyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMy41NjIgMXYxNS40NTlsNC42ODYtMy4yNyA0Ljc1MiAzLjI2di0xNS40NDloLTkuNDM4ek0xMiAxNC41NTFsLTMuNzU2LTIuNTc4LTMuNjgxIDIuNTY4di0xMi41NDFoNy40Mzd2MTIuNTUxeiIgZmlsbD0iIzU1NTU1NSIgLz48L3N2Zz4=",Y=3e3,J="auto",X=10,Q="application/json",Z={type:"patt",index:0,path:"img/bkg/"}},9418:function(e,t,s){s.d(t,{A:function(){return c}});var a=s(1594),n=s.n(a),i=s(6904),r=s(1013),o=s(3540),l=s(9027);class c extends n().Component{constructor(e){super(e),this.state={source:e.avatar},this.handleFileReceived=this.handleFileReceived.bind(this)}componentDidUpdate(e){this.props.avatar!=e.avatar&&this.setState({source:this.props.avatar})}handleFileReceived(e){const t=e.target.files[0];this.props.onImageUpdated(t.type,URL.createObjectURL(t),t.name),e.target.value=""}render(){const e="file-input-avatar-"+(""+Math.random()).substring(0,4),t="avatar-upload"+(this.props.readOnly?" read-only":"");return n().createElement("div",{className:t},this.props.readOnly||!this.state.source?null:n().createElement("a",{href:"#",className:"clear-avatar",onClick:e=>{e.preventDefault(),this.props.onImageUpdated()}},n().createElement("i",{className:"material-icons"},"clear")),this.state.source?n().createElement("img",{src:this.props.tinode.authorizeURL((0,o.wk)(this.state.source,"image")),className:"preview"}):this.props.readOnly&&this.props.uid?n().createElement("div",{className:"avatar-box"},n().createElement(i.A,{authorizeURL:this.props.tinode.authorizeURL,avatar:!0,topic:this.props.uid,title:this.props.title})):n().createElement("div",{className:"blank"},l.eQ,"×",l.eQ),this.props.readOnly?null:n().createElement("input",{type:"file",id:e,className:"inputfile hidden",accept:"image/*",onChange:this.handleFileReceived}),this.props.readOnly?null:n().createElement("label",{htmlFor:e,className:"round"},n().createElement("i",{className:"material-icons"},"file_upload")),n().createElement(r.A,{show:this.props.uploading,large:!0,clear:!0,centered:!0}))}}},9593:function(e){e.exports=QRCode},9895:function(e,t,s){s.d(t,{A:function(){return r}});var a=s(1594),n=s.n(a),i=s(8181);class r extends n().PureComponent{render(){return n().createElement("div",{className:"uploader"},n().createElement("div",null,n().createElement("span",{style:{width:100*this.props.progress+"%"}})),this.props.progress<.999?n().createElement("a",{href:"#",onClick:e=>{e.preventDefault(),this.props.onCancel()}},n().createElement("i",{className:"material-icons"},"close")," ",n().createElement(i.FormattedMessage,{id:"action_cancel",defaultMessage:[{type:0,value:"cancel"}]})):n().createElement(i.FormattedMessage,{id:"upload_finishing",defaultMessage:[{type:0,value:"finishing..."}]}))}}}},i={};function r(e){var t=i[e];if(void 0!==t)return t.exports;var s=i[e]={exports:{}};return n[e].call(s.exports,s,s.exports,r),s.exports}r.m=n,r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},t=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},r.t=function(s,a){if(1&a&&(s=this(s)),8&a)return s;if("object"==typeof s&&s){if(4&a&&s.__esModule)return s;if(16&a&&"function"==typeof s.then)return s}var n=Object.create(null);r.r(n);var i={};e=e||[null,t({}),t([]),t(t)];for(var o=2&a&&s;("object"==typeof o||"function"==typeof o)&&!~e.indexOf(o);o=t(o))Object.getOwnPropertyNames(o).forEach(function(e){i[e]=function(){return s[e]}});return i.default=function(){return s},r.d(n,i),n},r.d=function(e,t){for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.f={},r.e=function(e){return Promise.all(Object.keys(r.f).reduce(function(t,s){return r.f[s](e,t),t},[]))},r.u=function(e){return e+".prod.js"},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s={},a="tinode-webapp:",r.l=function(e,t,n,i){if(s[e])s[e].push(t);else{var o,l;if(void 0!==n)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var h=c[d];if(h.getAttribute("src")==e||h.getAttribute("data-webpack")==a+n){o=h;break}}o||(l=!0,(o=document.createElement("script")).charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",a+n),o.src=e),s[e]=[t];var p=function(t,a){o.onerror=o.onload=null,clearTimeout(u);var n=s[e];if(delete s[e],o.parentNode&&o.parentNode.removeChild(o),n&&n.forEach(function(e){return e(a)}),t)return t(a)},u=setTimeout(p.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=p.bind(null,o.onerror),o.onload=p.bind(null,o.onload),l&&document.head.appendChild(o)}},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/umd/",function(){var e={57:0};r.f.j=function(t,s){var a=r.o(e,t)?e[t]:void 0;if(0!==a)if(a)s.push(a[2]);else{var n=new Promise(function(s,n){a=e[t]=[s,n]});s.push(a[2]=n);var i=r.p+r.u(t),o=new Error;r.l(i,function(s){if(r.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var n=s&&("load"===s.type?"missing":s.type),i=s&&s.target&&s.target.src;o.message="Loading chunk "+t+" failed.\n("+n+": "+i+")",o.name="ChunkLoadError",o.type=n,o.request=i,a[1](o)}},"chunk-"+t,t)}};var t=function(t,s){var a,n,i=s[0],o=s[1],l=s[2],c=0;if(i.some(function(t){return 0!==e[t]})){for(a in o)r.o(o,a)&&(r.m[a]=o[a]);if(l)l(r)}for(t&&t(s);c<i.length;c++)n=i[c],r.o(e,n)&&e[n]&&e[n][0](),e[n]=0},s=self.webpackChunktinode_webapp=self.webpackChunktinode_webapp||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))}();var o=r(1594),l=r.n(o),c=r(5338),d=r(8181);const h=function(e){const t=[];let s=0;for(let a=0;a<e.length;a++){let n=e.charCodeAt(a);n<128?t[s++]=n:n<2048?(t[s++]=n>>6|192,t[s++]=63&n|128):55296==(64512&n)&&a+1<e.length&&56320==(64512&e.charCodeAt(a+1))?(n=65536+((1023&n)<<10)+(1023&e.charCodeAt(++a)),t[s++]=n>>18|240,t[s++]=n>>12&63|128,t[s++]=n>>6&63|128,t[s++]=63&n|128):(t[s++]=n>>12|224,t[s++]=n>>6&63|128,t[s++]=63&n|128)}return t},p={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:"function"==typeof atob,encodeByteArray(e,t){if(!Array.isArray(e))throw Error("encodeByteArray takes an array as a parameter");this.init_();const s=t?this.byteToCharMapWebSafe_:this.byteToCharMap_,a=[];for(let t=0;t<e.length;t+=3){const n=e[t],i=t+1<e.length,r=i?e[t+1]:0,o=t+2<e.length,l=o?e[t+2]:0,c=n>>2,d=(3&n)<<4|r>>4;let h=(15&r)<<2|l>>6,p=63&l;o||(p=64,i||(h=64)),a.push(s[c],s[d],s[h],s[p])}return a.join("")},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(h(e),t)},decodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):function(e){const t=[];let s=0,a=0;for(;s<e.length;){const n=e[s++];if(n<128)t[a++]=String.fromCharCode(n);else if(n>191&&n<224){const i=e[s++];t[a++]=String.fromCharCode((31&n)<<6|63&i)}else if(n>239&&n<365){const i=((7&n)<<18|(63&e[s++])<<12|(63&e[s++])<<6|63&e[s++])-65536;t[a++]=String.fromCharCode(55296+(i>>10)),t[a++]=String.fromCharCode(56320+(1023&i))}else{const i=e[s++],r=e[s++];t[a++]=String.fromCharCode((15&n)<<12|(63&i)<<6|63&r)}}return t.join("")}(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_();const s=t?this.charToByteMapWebSafe_:this.charToByteMap_,a=[];for(let t=0;t<e.length;){const n=s[e.charAt(t++)],i=t<e.length?s[e.charAt(t)]:0;++t;const r=t<e.length?s[e.charAt(t)]:64;++t;const o=t<e.length?s[e.charAt(t)]:64;if(++t,null==n||null==i||null==r||null==o)throw new u;const l=n<<2|i>>4;if(a.push(l),64!==r){const e=i<<4&240|r>>2;if(a.push(e),64!==o){const e=r<<6&192|o;a.push(e)}}}return a},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let e=0;e<this.ENCODED_VALS.length;e++)this.byteToCharMap_[e]=this.ENCODED_VALS.charAt(e),this.charToByteMap_[this.byteToCharMap_[e]]=e,this.byteToCharMapWebSafe_[e]=this.ENCODED_VALS_WEBSAFE.charAt(e),this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[e]]=e,e>=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e)}}};class u extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}const m=function(e){return function(e){const t=h(e);return p.encodeByteArray(t,!0)}(e).replace(/\./g,"")},g=function(e){try{return p.decodeString(e,!0)}catch(e){console.error("base64Decode failed: ",e)}return null};const f=()=>function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==r.g)return r.g;throw new Error("Unable to locate global object.")}().__FIREBASE_DEFAULTS__,v=()=>{try{return f()||(()=>{if("undefined"==typeof process||void 0===process.env)return;const e=process.env.__FIREBASE_DEFAULTS__;return e?JSON.parse(e):void 0})()||(()=>{if("undefined"==typeof document)return;let e;try{e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch(e){return}const t=e&&g(e[1]);return t&&JSON.parse(t)})()}catch(e){return void console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`)}},b=()=>{var e;return null===(e=v())||void 0===e?void 0:e.config};class w{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}wrapCallback(e){return(t,s)=>{t?this.reject(t):this.resolve(s),"function"==typeof e&&(this.promise.catch(()=>{}),1===e.length?e(t):e(t,s))}}}function y(){try{return"object"==typeof indexedDB}catch(e){return!1}}function E(){return new Promise((e,t)=>{try{let s=!0;const a="validate-browser-context-for-indexeddb-analytics-module",n=self.indexedDB.open(a);n.onsuccess=()=>{n.result.close(),s||self.indexedDB.deleteDatabase(a),e(!0)},n.onupgradeneeded=()=>{s=!1},n.onerror=()=>{var e;t((null===(e=n.error)||void 0===e?void 0:e.message)||"")}}catch(e){t(e)}})}class S extends Error{constructor(e,t,s){super(t),this.code=e,this.customData=s,this.name="FirebaseError",Object.setPrototypeOf(this,S.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,C.prototype.create)}}class C{constructor(e,t,s){this.service=e,this.serviceName=t,this.errors=s}create(e,...t){const s=t[0]||{},a=`${this.service}/${e}`,n=this.errors[e],i=n?function(e,t){return e.replace(_,(e,s)=>{const a=t[s];return null!=a?String(a):`<${s}?>`})}(n,s):"Error",r=`${this.serviceName}: ${i} (${a}).`;return new S(a,r,s)}}const _=/\{\$([^}]+)}/g;function M(e,t){if(e===t)return!0;const s=Object.keys(e),a=Object.keys(t);for(const n of s){if(!a.includes(n))return!1;const s=e[n],i=t[n];if(T(s)&&T(i)){if(!M(s,i))return!1}else if(s!==i)return!1}for(const e of a)if(!s.includes(e))return!1;return!0}function T(e){return null!==e&&"object"==typeof e}function k(e){return e&&e._delegate?e._delegate:e}class A{constructor(e,t,s){this.name=e,this.instanceFactory=t,this.type=s,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}}const N="[DEFAULT]";class I{constructor(e,t){this.name=e,this.container=t,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(e){const t=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(t)){const e=new w;if(this.instancesDeferred.set(t,e),this.isInitialized(t)||this.shouldAutoInitialize())try{const s=this.getOrInitializeService({instanceIdentifier:t});s&&e.resolve(s)}catch(e){}}return this.instancesDeferred.get(t).promise}getImmediate(e){var t;const s=this.normalizeInstanceIdentifier(null==e?void 0:e.identifier),a=null!==(t=null==e?void 0:e.optional)&&void 0!==t&&t;if(!this.isInitialized(s)&&!this.shouldAutoInitialize()){if(a)return null;throw Error(`Service ${this.name} is not available`)}try{return this.getOrInitializeService({instanceIdentifier:s})}catch(e){if(a)return null;throw e}}getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=e,this.shouldAutoInitialize()){if(function(e){return"EAGER"===e.instantiationMode}(e))try{this.getOrInitializeService({instanceIdentifier:N})}catch(e){}for(const[e,t]of this.instancesDeferred.entries()){const s=this.normalizeInstanceIdentifier(e);try{const e=this.getOrInitializeService({instanceIdentifier:s});t.resolve(e)}catch(e){}}}}clearInstance(e=N){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){const e=Array.from(this.instances.values());await Promise.all([...e.filter(e=>"INTERNAL"in e).map(e=>e.INTERNAL.delete()),...e.filter(e=>"_delete"in e).map(e=>e._delete())])}isComponentSet(){return null!=this.component}isInitialized(e=N){return this.instances.has(e)}getOptions(e=N){return this.instancesOptions.get(e)||{}}initialize(e={}){const{options:t={}}=e,s=this.normalizeInstanceIdentifier(e.instanceIdentifier);if(this.isInitialized(s))throw Error(`${this.name}(${s}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const a=this.getOrInitializeService({instanceIdentifier:s,options:t});for(const[e,t]of this.instancesDeferred.entries()){s===this.normalizeInstanceIdentifier(e)&&t.resolve(a)}return a}onInit(e,t){var s;const a=this.normalizeInstanceIdentifier(t),n=null!==(s=this.onInitCallbacks.get(a))&&void 0!==s?s:new Set;n.add(e),this.onInitCallbacks.set(a,n);const i=this.instances.get(a);return i&&e(i,a),()=>{n.delete(e)}}invokeOnInitCallbacks(e,t){const s=this.onInitCallbacks.get(t);if(s)for(const a of s)try{a(e,t)}catch(e){}}getOrInitializeService({instanceIdentifier:e,options:t={}}){let s=this.instances.get(e);if(!s&&this.component&&(s=this.component.instanceFactory(this.container,{instanceIdentifier:(a=e,a===N?void 0:a),options:t}),this.instances.set(e,s),this.instancesOptions.set(e,t),this.invokeOnInitCallbacks(s,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,s)}catch(e){}var a;return s||null}normalizeInstanceIdentifier(e=N){return this.component?this.component.multipleInstances?e:N:e}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}class D{constructor(e){this.name=e,this.providers=new Map}addComponent(e){const t=this.getProvider(e.name);if(t.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);t.setComponent(e)}addOrOverwriteComponent(e){this.getProvider(e.name).isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);const t=new I(e,this);return this.providers.set(e,t),t}getProviders(){return Array.from(this.providers.values())}}const x=[];var P;!function(e){e[e.DEBUG=0]="DEBUG",e[e.VERBOSE=1]="VERBOSE",e[e.INFO=2]="INFO",e[e.WARN=3]="WARN",e[e.ERROR=4]="ERROR",e[e.SILENT=5]="SILENT"}(P||(P={}));const R={debug:P.DEBUG,verbose:P.VERBOSE,info:P.INFO,warn:P.WARN,error:P.ERROR,silent:P.SILENT},F=P.INFO,U={[P.DEBUG]:"log",[P.VERBOSE]:"log",[P.INFO]:"info",[P.WARN]:"warn",[P.ERROR]:"error"},L=(e,t,...s)=>{if(t<e.logLevel)return;const a=(new Date).toISOString(),n=U[t];if(!n)throw new Error(`Attempted to log a message with an invalid logType (value: ${t})`);console[n](`[${a}] ${e.name}:`,...s)};let O,j;const B=new WeakMap,q=new WeakMap,H=new WeakMap,z=new WeakMap,V=new WeakMap;let W={get(e,t,s){if(e instanceof IDBTransaction){if("done"===t)return q.get(e);if("objectStoreNames"===t)return e.objectStoreNames||H.get(e);if("store"===t)return s.objectStoreNames[1]?void 0:s.objectStore(s.objectStoreNames[0])}return G(e[t])},set(e,t,s){return e[t]=s,!0},has(e,t){return e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e}};function $(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(j||(j=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(Y(this),t),G(B.get(this))}:function(...t){return G(e.apply(Y(this),t))}:function(t,...s){const a=e.call(Y(this),t,...s);return H.set(a,t.sort?t.sort():[t]),G(a)}}function K(e){return"function"==typeof e?$(e):(e instanceof IDBTransaction&&function(e){if(q.has(e))return;const t=new Promise((t,s)=>{const a=()=>{e.removeEventListener("complete",n),e.removeEventListener("error",i),e.removeEventListener("abort",i)},n=()=>{t(),a()},i=()=>{s(e.error||new DOMException("AbortError","AbortError")),a()};e.addEventListener("complete",n),e.addEventListener("error",i),e.addEventListener("abort",i)});q.set(e,t)}(e),t=e,(O||(O=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])).some(e=>t instanceof e)?new Proxy(e,W):e);var t}function G(e){if(e instanceof IDBRequest)return function(e){const t=new Promise((t,s)=>{const a=()=>{e.removeEventListener("success",n),e.removeEventListener("error",i)},n=()=>{t(G(e.result)),a()},i=()=>{s(e.error),a()};e.addEventListener("success",n),e.addEventListener("error",i)});return t.then(t=>{t instanceof IDBCursor&&B.set(t,e)}).catch(()=>{}),V.set(t,e),t}(e);if(z.has(e))return z.get(e);const t=K(e);return t!==e&&(z.set(e,t),V.set(t,e)),t}const Y=e=>V.get(e);function J(e,t,{blocked:s,upgrade:a,blocking:n,terminated:i}={}){const r=indexedDB.open(e,t),o=G(r);return a&&r.addEventListener("upgradeneeded",e=>{a(G(r.result),e.oldVersion,e.newVersion,G(r.transaction),e)}),s&&r.addEventListener("blocked",e=>s(e.oldVersion,e.newVersion,e)),o.then(e=>{i&&e.addEventListener("close",()=>i()),n&&e.addEventListener("versionchange",e=>n(e.oldVersion,e.newVersion,e))}).catch(()=>{}),o}function X(e,{blocked:t}={}){const s=indexedDB.deleteDatabase(e);return t&&s.addEventListener("blocked",e=>t(e.oldVersion,e)),G(s).then(()=>{})}const Q=["get","getKey","getAll","getAllKeys","count"],Z=["put","add","delete","clear"],ee=new Map;function te(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(ee.get(t))return ee.get(t);const s=t.replace(/FromIndex$/,""),a=t!==s,n=Z.includes(s);if(!(s in(a?IDBIndex:IDBObjectStore).prototype)||!n&&!Q.includes(s))return;const i=async function(e,...t){const i=this.transaction(e,n?"readwrite":"readonly");let r=i.store;return a&&(r=r.index(t.shift())),(await Promise.all([r[s](...t),n&&i.done]))[0]};return ee.set(t,i),i}W=(e=>({...e,get:(t,s,a)=>te(t,s)||e.get(t,s,a),has:(t,s)=>!!te(t,s)||e.has(t,s)}))(W);class se{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map(e=>{if(function(e){const t=e.getComponent();return"VERSION"===(null==t?void 0:t.type)}(e)){const t=e.getImmediate();return`${t.library}/${t.version}`}return null}).filter(e=>e).join(" ")}}const ae="@firebase/app",ne="0.13.2",ie=new class{constructor(e){this.name=e,this._logLevel=F,this._logHandler=L,this._userLogHandler=null,x.push(this)}get logLevel(){return this._logLevel}set logLevel(e){if(!(e in P))throw new TypeError(`Invalid value "${e}" assigned to \`logLevel\``);this._logLevel=e}setLogLevel(e){this._logLevel="string"==typeof e?R[e]:e}get logHandler(){return this._logHandler}set logHandler(e){if("function"!=typeof e)throw new TypeError("Value assigned to `logHandler` must be a function");this._logHandler=e}get userLogHandler(){return this._userLogHandler}set userLogHandler(e){this._userLogHandler=e}debug(...e){this._userLogHandler&&this._userLogHandler(this,P.DEBUG,...e),this._logHandler(this,P.DEBUG,...e)}log(...e){this._userLogHandler&&this._userLogHandler(this,P.VERBOSE,...e),this._logHandler(this,P.VERBOSE,...e)}info(...e){this._userLogHandler&&this._userLogHandler(this,P.INFO,...e),this._logHandler(this,P.INFO,...e)}warn(...e){this._userLogHandler&&this._userLogHandler(this,P.WARN,...e),this._logHandler(this,P.WARN,...e)}error(...e){this._userLogHandler&&this._userLogHandler(this,P.ERROR,...e),this._logHandler(this,P.ERROR,...e)}}("@firebase/app"),re="@firebase/app-compat",oe="@firebase/analytics-compat",le="@firebase/analytics",ce="@firebase/app-check-compat",de="@firebase/app-check",he="@firebase/auth",pe="@firebase/auth-compat",ue="@firebase/database",me="@firebase/data-connect",ge="@firebase/database-compat",fe="@firebase/functions",ve="@firebase/functions-compat",be="@firebase/installations",we="@firebase/installations-compat",ye="@firebase/messaging",Ee="@firebase/messaging-compat",Se="@firebase/performance",Ce="@firebase/performance-compat",_e="@firebase/remote-config",Me="@firebase/remote-config-compat",Te="@firebase/storage",ke="@firebase/storage-compat",Ae="@firebase/firestore",Ne="@firebase/ai",Ie="@firebase/firestore-compat",De="firebase",xe="[DEFAULT]",Pe={[ae]:"fire-core",[re]:"fire-core-compat",[le]:"fire-analytics",[oe]:"fire-analytics-compat",[de]:"fire-app-check",[ce]:"fire-app-check-compat",[he]:"fire-auth",[pe]:"fire-auth-compat",[ue]:"fire-rtdb",[me]:"fire-data-connect",[ge]:"fire-rtdb-compat",[fe]:"fire-fn",[ve]:"fire-fn-compat",[be]:"fire-iid",[we]:"fire-iid-compat",[ye]:"fire-fcm",[Ee]:"fire-fcm-compat",[Se]:"fire-perf",[Ce]:"fire-perf-compat",[_e]:"fire-rc",[Me]:"fire-rc-compat",[Te]:"fire-gcs",[ke]:"fire-gcs-compat",[Ae]:"fire-fst",[Ie]:"fire-fst-compat",[Ne]:"fire-vertex","fire-js":"fire-js",[De]:"fire-js-all"},Re=new Map,Fe=new Map,Ue=new Map;function Le(e,t){try{e.container.addComponent(t)}catch(s){ie.debug(`Component ${t.name} failed to register with FirebaseApp ${e.name}`,s)}}function Oe(e){const t=e.name;if(Ue.has(t))return ie.debug(`There were multiple attempts to register component ${t}.`),!1;Ue.set(t,e);for(const t of Re.values())Le(t,e);for(const t of Fe.values())Le(t,e);return!0}function je(e,t){const s=e.container.getProvider("heartbeat").getImmediate({optional:!0});return s&&s.triggerHeartbeat(),e.container.getProvider(t)}const Be=new C("app","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call initializeApp() first","bad-app-name":"Illegal App name: '{$appName}'","duplicate-app":"Firebase App named '{$appName}' already exists with different options or config","app-deleted":"Firebase App named '{$appName}' already deleted","server-app-deleted":"Firebase Server App has been deleted","no-options":"Need to provide options, when not being deployed to hosting via source.","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.","invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.","idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.","idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.","idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.","finalization-registry-not-supported":"FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.","invalid-server-app-environment":"FirebaseServerApp is not for use in browser environments."});class qe{constructor(e,t,s){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},t),this._name=t.name,this._automaticDataCollectionEnabled=t.automaticDataCollectionEnabled,this._container=s,this.container.addComponent(new A("app",()=>this,"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw Be.create("app-deleted",{appName:this._name})}}function He(e,t={}){let s=e;if("object"!=typeof t){t={name:t}}const a=Object.assign({name:xe,automaticDataCollectionEnabled:!0},t),n=a.name;if("string"!=typeof n||!n)throw Be.create("bad-app-name",{appName:String(n)});if(s||(s=b()),!s)throw Be.create("no-options");const i=Re.get(n);if(i){if(M(s,i.options)&&M(a,i.config))return i;throw Be.create("duplicate-app",{appName:n})}const r=new D(n);for(const e of Ue.values())r.addComponent(e);const o=new qe(s,a,r);return Re.set(n,o),o}function ze(e,t,s){var a;let n=null!==(a=Pe[e])&&void 0!==a?a:e;s&&(n+=`-${s}`);const i=n.match(/\s|\//),r=t.match(/\s|\//);if(i||r){const e=[`Unable to register library "${n}" with version "${t}":`];return i&&e.push(`library name "${n}" contains illegal characters (whitespace or "/")`),i&&r&&e.push("and"),r&&e.push(`version name "${t}" contains illegal characters (whitespace or "/")`),void ie.warn(e.join(" "))}Oe(new A(`${n}-version`,()=>({library:n,version:t}),"VERSION"))}const Ve="firebase-heartbeat-store";let We=null;function $e(){return We||(We=J("firebase-heartbeat-database",1,{upgrade:(e,t)=>{if(0===t)try{e.createObjectStore(Ve)}catch(e){console.warn(e)}}}).catch(e=>{throw Be.create("idb-open",{originalErrorMessage:e.message})})),We}async function Ke(e,t){try{const s=(await $e()).transaction(Ve,"readwrite"),a=s.objectStore(Ve);await a.put(t,Ge(e)),await s.done}catch(e){if(e instanceof S)ie.warn(e.message);else{const t=Be.create("idb-set",{originalErrorMessage:null==e?void 0:e.message});ie.warn(t.message)}}}function Ge(e){return`${e.name}!${e.options.appId}`}class Ye{constructor(e){this.container=e,this._heartbeatsCache=null;const t=this.container.getProvider("app").getImmediate();this._storage=new Xe(t),this._heartbeatsCachePromise=this._storage.read().then(e=>(this._heartbeatsCache=e,e))}async triggerHeartbeat(){var e,t;try{const s=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),a=Je();if(null==(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)&&(this._heartbeatsCache=await this._heartbeatsCachePromise,null==(null===(t=this._heartbeatsCache)||void 0===t?void 0:t.heartbeats)))return;if(this._heartbeatsCache.lastSentHeartbeatDate===a||this._heartbeatsCache.heartbeats.some(e=>e.date===a))return;if(this._heartbeatsCache.heartbeats.push({date:a,agent:s}),this._heartbeatsCache.heartbeats.length>30){const e=function(e){if(0===e.length)return-1;let t=0,s=e[0].date;for(let a=1;a<e.length;a++)e[a].date<s&&(s=e[a].date,t=a);return t}(this._heartbeatsCache.heartbeats);this._heartbeatsCache.heartbeats.splice(e,1)}return this._storage.overwrite(this._heartbeatsCache)}catch(e){ie.warn(e)}}async getHeartbeatsHeader(){var e;try{if(null===this._heartbeatsCache&&await this._heartbeatsCachePromise,null==(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)||0===this._heartbeatsCache.heartbeats.length)return"";const t=Je(),{heartbeatsToSend:s,unsentEntries:a}=function(e,t=1024){const s=[];let a=e.slice();for(const n of e){const e=s.find(e=>e.agent===n.agent);if(e){if(e.dates.push(n.date),Qe(s)>t){e.dates.pop();break}}else if(s.push({agent:n.agent,dates:[n.date]}),Qe(s)>t){s.pop();break}a=a.slice(1)}return{heartbeatsToSend:s,unsentEntries:a}}(this._heartbeatsCache.heartbeats),n=m(JSON.stringify({version:2,heartbeats:s}));return this._heartbeatsCache.lastSentHeartbeatDate=t,a.length>0?(this._heartbeatsCache.heartbeats=a,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),n}catch(e){return ie.warn(e),""}}}function Je(){return(new Date).toISOString().substring(0,10)}class Xe{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return!!y()&&E().then(()=>!0).catch(()=>!1)}async read(){if(await this._canUseIndexedDBPromise){const e=await async function(e){try{const t=(await $e()).transaction(Ve),s=await t.objectStore(Ve).get(Ge(e));return await t.done,s}catch(e){if(e instanceof S)ie.warn(e.message);else{const t=Be.create("idb-get",{originalErrorMessage:null==e?void 0:e.message});ie.warn(t.message)}}}(this.app);return(null==e?void 0:e.heartbeats)?e:{heartbeats:[]}}return{heartbeats:[]}}async overwrite(e){var t;if(await this._canUseIndexedDBPromise){const s=await this.read();return Ke(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:s.lastSentHeartbeatDate,heartbeats:e.heartbeats})}}async add(e){var t;if(await this._canUseIndexedDBPromise){const s=await this.read();return Ke(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:s.lastSentHeartbeatDate,heartbeats:[...s.heartbeats,...e.heartbeats]})}}}function Qe(e){return m(JSON.stringify({version:2,heartbeats:e})).length}var Ze;Ze="",Oe(new A("platform-logger",e=>new se(e),"PRIVATE")),Oe(new A("heartbeat",e=>new Ye(e),"PRIVATE")),ze(ae,ne,Ze),ze(ae,ne,"esm2017"),ze("fire-js","");ze("firebase","11.10.0","app");const et="@firebase/installations",tt="0.6.18",st=1e4,at=`w:${tt}`,nt="FIS_v2",it=36e5,rt=new C("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function ot(e){return e instanceof S&&e.code.includes("request-failed")}function lt({projectId:e}){return`https://firebaseinstallations.googleapis.com/v1/projects/${e}/installations`}function ct(e){return{token:e.token,requestStatus:2,expiresIn:(t=e.expiresIn,Number(t.replace("s","000"))),creationTime:Date.now()};var t}async function dt(e,t){const s=(await t.json()).error;return rt.create("request-failed",{requestName:e,serverCode:s.code,serverMessage:s.message,serverStatus:s.status})}function ht({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function pt(e,{refreshToken:t}){const s=ht(e);return s.append("Authorization",function(e){return`${nt} ${e}`}(t)),s}async function ut(e){const t=await e();return t.status>=500&&t.status<600?e():t}function mt(e){return new Promise(t=>{setTimeout(t,e)})}const gt=/^[cdef][\w-]{21}$/;function ft(){try{const e=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(e),e[0]=112+e[0]%16;const t=function(e){const t=(s=e,btoa(String.fromCharCode(...s)).replace(/\+/g,"-").replace(/\//g,"_"));var s;return t.substr(0,22)}(e);return gt.test(t)?t:""}catch(e){return""}}function vt(e){return`${e.appName}!${e.appId}`}const bt=new Map;function wt(e,t){const s=vt(e);yt(s,t),function(e,t){const s=St();s&&s.postMessage({key:e,fid:t});Ct()}(s,t)}function yt(e,t){const s=bt.get(e);if(s)for(const e of s)e(t)}let Et=null;function St(){return!Et&&"BroadcastChannel"in self&&(Et=new BroadcastChannel("[Firebase] FID Change"),Et.onmessage=e=>{yt(e.data.key,e.data.fid)}),Et}function Ct(){0===bt.size&&Et&&(Et.close(),Et=null)}const _t="firebase-installations-store";let Mt=null;function Tt(){return Mt||(Mt=J("firebase-installations-database",1,{upgrade:(e,t)=>{if(0===t)e.createObjectStore(_t)}})),Mt}async function kt(e,t){const s=vt(e),a=(await Tt()).transaction(_t,"readwrite"),n=a.objectStore(_t),i=await n.get(s);return await n.put(t,s),await a.done,i&&i.fid===t.fid||wt(e,t.fid),t}async function At(e){const t=vt(e),s=(await Tt()).transaction(_t,"readwrite");await s.objectStore(_t).delete(t),await s.done}async function Nt(e,t){const s=vt(e),a=(await Tt()).transaction(_t,"readwrite"),n=a.objectStore(_t),i=await n.get(s),r=t(i);return void 0===r?await n.delete(s):await n.put(r,s),await a.done,!r||i&&i.fid===r.fid||wt(e,r.fid),r}async function It(e){let t;const s=await Nt(e.appConfig,s=>{const a=function(e){const t=e||{fid:ft(),registrationStatus:0};return Pt(t)}(s),n=function(e,t){if(0===t.registrationStatus){if(!navigator.onLine){return{installationEntry:t,registrationPromise:Promise.reject(rt.create("app-offline"))}}const s={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},a=async function(e,t){try{const s=await async function({appConfig:e,heartbeatServiceProvider:t},{fid:s}){const a=lt(e),n=ht(e),i=t.getImmediate({optional:!0});if(i){const e=await i.getHeartbeatsHeader();e&&n.append("x-firebase-client",e)}const r={fid:s,authVersion:nt,appId:e.appId,sdkVersion:at},o={method:"POST",headers:n,body:JSON.stringify(r)},l=await ut(()=>fetch(a,o));if(l.ok){const e=await l.json();return{fid:e.fid||s,registrationStatus:2,refreshToken:e.refreshToken,authToken:ct(e.authToken)}}throw await dt("Create Installation",l)}(e,t);return kt(e.appConfig,s)}catch(s){throw ot(s)&&409===s.customData.serverCode?await At(e.appConfig):await kt(e.appConfig,{fid:t.fid,registrationStatus:0}),s}}(e,s);return{installationEntry:s,registrationPromise:a}}return 1===t.registrationStatus?{installationEntry:t,registrationPromise:Dt(e)}:{installationEntry:t}}(e,a);return t=n.registrationPromise,n.installationEntry});return""===s.fid?{installationEntry:await t}:{installationEntry:s,registrationPromise:t}}async function Dt(e){let t=await xt(e.appConfig);for(;1===t.registrationStatus;)await mt(100),t=await xt(e.appConfig);if(0===t.registrationStatus){const{installationEntry:t,registrationPromise:s}=await It(e);return s||t}return t}function xt(e){return Nt(e,e=>{if(!e)throw rt.create("installation-not-found");return Pt(e)})}function Pt(e){return 1===(t=e).registrationStatus&&t.registrationTime+st<Date.now()?{fid:e.fid,registrationStatus:0}:e;var t}async function Rt({appConfig:e,heartbeatServiceProvider:t},s){const a=function(e,{fid:t}){return`${lt(e)}/${t}/authTokens:generate`}(e,s),n=pt(e,s),i=t.getImmediate({optional:!0});if(i){const e=await i.getHeartbeatsHeader();e&&n.append("x-firebase-client",e)}const r={installation:{sdkVersion:at,appId:e.appId}},o={method:"POST",headers:n,body:JSON.stringify(r)},l=await ut(()=>fetch(a,o));if(l.ok){return ct(await l.json())}throw await dt("Generate Auth Token",l)}async function Ft(e,t=!1){let s;const a=await Nt(e.appConfig,a=>{if(!Lt(a))throw rt.create("not-registered");const n=a.authToken;if(!t&&function(e){return 2===e.requestStatus&&!function(e){const t=Date.now();return t<e.creationTime||e.creationTime+e.expiresIn<t+it}(e)}(n))return a;if(1===n.requestStatus)return s=async function(e,t){let s=await Ut(e.appConfig);for(;1===s.authToken.requestStatus;)await mt(100),s=await Ut(e.appConfig);const a=s.authToken;return 0===a.requestStatus?Ft(e,t):a}(e,t),a;{if(!navigator.onLine)throw rt.create("app-offline");const t=function(e){const t={requestStatus:1,requestTime:Date.now()};return Object.assign(Object.assign({},e),{authToken:t})}(a);return s=async function(e,t){try{const s=await Rt(e,t),a=Object.assign(Object.assign({},t),{authToken:s});return await kt(e.appConfig,a),s}catch(s){if(!ot(s)||401!==s.customData.serverCode&&404!==s.customData.serverCode){const s=Object.assign(Object.assign({},t),{authToken:{requestStatus:0}});await kt(e.appConfig,s)}else await At(e.appConfig);throw s}}(e,t),t}});return s?await s:a.authToken}function Ut(e){return Nt(e,e=>{if(!Lt(e))throw rt.create("not-registered");const t=e.authToken;return 1===(s=t).requestStatus&&s.requestTime+st<Date.now()?Object.assign(Object.assign({},e),{authToken:{requestStatus:0}}):e;var s})}function Lt(e){return void 0!==e&&2===e.registrationStatus}async function Ot(e,t=!1){const s=e;await async function(e){const{registrationPromise:t}=await It(e);t&&await t}(s);return(await Ft(s,t)).token}function jt(e){return rt.create("missing-app-config-values",{valueName:e})}const Bt="installations",qt=e=>{const t=je(e.getProvider("app").getImmediate(),Bt).getImmediate();return{getId:()=>async function(e){const t=e,{installationEntry:s,registrationPromise:a}=await It(t);return a?a.catch(console.error):Ft(t).catch(console.error),s.fid}(t),getToken:e=>Ot(t,e)}};Oe(new A(Bt,e=>{const t=e.getProvider("app").getImmediate(),s=function(e){if(!e||!e.options)throw jt("App Configuration");if(!e.name)throw jt("App Name");const t=["projectId","apiKey","appId"];for(const s of t)if(!e.options[s])throw jt(s);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t);return{app:t,appConfig:s,heartbeatServiceProvider:je(t,"heartbeat"),_delete:()=>Promise.resolve()}},"PUBLIC")),Oe(new A("installations-internal",qt,"PRIVATE")),ze(et,tt),ze(et,tt,"esm2017");const Ht="BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4",zt="google.c.a.c_id",Vt=1e4;var Wt,$t;function Kt(e){const t=new Uint8Array(e);return btoa(String.fromCharCode(...t)).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function Gt(e){const t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),s=atob(t),a=new Uint8Array(s.length);for(let e=0;e<s.length;++e)a[e]=s.charCodeAt(e);return a}!function(e){e[e.DATA_MESSAGE=1]="DATA_MESSAGE",e[e.DISPLAY_NOTIFICATION=3]="DISPLAY_NOTIFICATION"}(Wt||(Wt={})),function(e){e.PUSH_RECEIVED="push-received",e.NOTIFICATION_CLICKED="notification-clicked"}($t||($t={}));const Yt="fcm_token_details_db",Jt="fcm_token_object_Store";const Xt="firebase-messaging-store";let Qt=null;function Zt(){return Qt||(Qt=J("firebase-messaging-database",1,{upgrade:(e,t)=>{if(0===t)e.createObjectStore(Xt)}})),Qt}async function es(e){const t=ss(e),s=await Zt(),a=await s.transaction(Xt).objectStore(Xt).get(t);if(a)return a;{const t=await async function(e){if("databases"in indexedDB){const e=(await indexedDB.databases()).map(e=>e.name);if(!e.includes(Yt))return null}let t=null;return(await J(Yt,5,{upgrade:async(s,a,n,i)=>{var r;if(a<2)return;if(!s.objectStoreNames.contains(Jt))return;const o=i.objectStore(Jt),l=await o.index("fcmSenderId").get(e);if(await o.clear(),l)if(2===a){const e=l;if(!e.auth||!e.p256dh||!e.endpoint)return;t={token:e.fcmToken,createTime:null!==(r=e.createTime)&&void 0!==r?r:Date.now(),subscriptionOptions:{auth:e.auth,p256dh:e.p256dh,endpoint:e.endpoint,swScope:e.swScope,vapidKey:"string"==typeof e.vapidKey?e.vapidKey:Kt(e.vapidKey)}}}else if(3===a){const e=l;t={token:e.fcmToken,createTime:e.createTime,subscriptionOptions:{auth:Kt(e.auth),p256dh:Kt(e.p256dh),endpoint:e.endpoint,swScope:e.swScope,vapidKey:Kt(e.vapidKey)}}}else if(4===a){const e=l;t={token:e.fcmToken,createTime:e.createTime,subscriptionOptions:{auth:Kt(e.auth),p256dh:Kt(e.p256dh),endpoint:e.endpoint,swScope:e.swScope,vapidKey:Kt(e.vapidKey)}}}}})).close(),await X(Yt),await X("fcm_vapid_details_db"),await X("undefined"),function(e){if(!e||!e.subscriptionOptions)return!1;const{subscriptionOptions:t}=e;return"number"==typeof e.createTime&&e.createTime>0&&"string"==typeof e.token&&e.token.length>0&&"string"==typeof t.auth&&t.auth.length>0&&"string"==typeof t.p256dh&&t.p256dh.length>0&&"string"==typeof t.endpoint&&t.endpoint.length>0&&"string"==typeof t.swScope&&t.swScope.length>0&&"string"==typeof t.vapidKey&&t.vapidKey.length>0}(t)?t:null}(e.appConfig.senderId);if(t)return await ts(e,t),t}}async function ts(e,t){const s=ss(e),a=(await Zt()).transaction(Xt,"readwrite");return await a.objectStore(Xt).put(t,s),await a.done,t}function ss({appConfig:e}){return e.appId}const as=new C("messaging","Messaging",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"only-available-in-window":"This method is available in a Window context.","only-available-in-sw":"This method is available in a service worker context.","permission-default":"The notification permission was not granted and dismissed instead.","permission-blocked":"The notification permission was not granted and blocked instead.","unsupported-browser":"This browser doesn't support the API's required to use the Firebase SDK.","indexed-db-unsupported":"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)","failed-service-worker-registration":"We are unable to register the default service worker. {$browserErrorMessage}","token-subscribe-failed":"A problem occurred while subscribing the user to FCM: {$errorInfo}","token-subscribe-no-token":"FCM returned no token when subscribing the user to push.","token-unsubscribe-failed":"A problem occurred while unsubscribing the user from FCM: {$errorInfo}","token-update-failed":"A problem occurred while updating the user from FCM: {$errorInfo}","token-update-no-token":"FCM returned no token when updating the user to push.","use-sw-after-get-token":"The useServiceWorker() method may only be called once and must be called before calling getToken() to ensure your service worker is used.","invalid-sw-registration":"The input to useServiceWorker() must be a ServiceWorkerRegistration.","invalid-bg-handler":"The input to setBackgroundMessageHandler() must be a function.","invalid-vapid-key":"The public VAPID key must be a string.","use-vapid-key-after-get-token":"The usePublicVapidKey() method may only be called once and must be called before calling getToken() to ensure your VAPID key is used."});async function ns(e,t){const s={method:"DELETE",headers:await rs(e)};try{const a=await fetch(`${is(e.appConfig)}/${t}`,s),n=await a.json();if(n.error){const e=n.error.message;throw as.create("token-unsubscribe-failed",{errorInfo:e})}}catch(e){throw as.create("token-unsubscribe-failed",{errorInfo:null==e?void 0:e.toString()})}}function is({projectId:e}){return`https://fcmregistrations.googleapis.com/v1/projects/${e}/registrations`}async function rs({appConfig:e,installations:t}){const s=await t.getToken();return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e.apiKey,"x-goog-firebase-installations-auth":`FIS ${s}`})}function os({p256dh:e,auth:t,endpoint:s,vapidKey:a}){const n={web:{endpoint:s,auth:t,p256dh:e}};return a!==Ht&&(n.web.applicationPubKey=a),n}async function ls(e){const t=await async function(e,t){const s=await e.pushManager.getSubscription();if(s)return s;return e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:Gt(t)})}(e.swRegistration,e.vapidKey),s={vapidKey:e.vapidKey,swScope:e.swRegistration.scope,endpoint:t.endpoint,auth:Kt(t.getKey("auth")),p256dh:Kt(t.getKey("p256dh"))},a=await es(e.firebaseDependencies);if(a){if(function(e,t){const s=t.vapidKey===e.vapidKey,a=t.endpoint===e.endpoint,n=t.auth===e.auth,i=t.p256dh===e.p256dh;return s&&a&&n&&i}(a.subscriptionOptions,s))return Date.now()>=a.createTime+6048e5?async function(e,t){try{const s=await async function(e,t){const s=await rs(e),a=os(t.subscriptionOptions),n={method:"PATCH",headers:s,body:JSON.stringify(a)};let i;try{const s=await fetch(`${is(e.appConfig)}/${t.token}`,n);i=await s.json()}catch(e){throw as.create("token-update-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){const e=i.error.message;throw as.create("token-update-failed",{errorInfo:e})}if(!i.token)throw as.create("token-update-no-token");return i.token}(e.firebaseDependencies,t),a=Object.assign(Object.assign({},t),{token:s,createTime:Date.now()});return await ts(e.firebaseDependencies,a),s}catch(e){throw e}}(e,{token:a.token,createTime:Date.now(),subscriptionOptions:s}):a.token;try{await ns(e.firebaseDependencies,a.token)}catch(e){console.warn(e)}return ds(e.firebaseDependencies,s)}return ds(e.firebaseDependencies,s)}async function cs(e){const t=await es(e.firebaseDependencies);t&&(await ns(e.firebaseDependencies,t.token),await async function(e){const t=ss(e),s=(await Zt()).transaction(Xt,"readwrite");await s.objectStore(Xt).delete(t),await s.done}(e.firebaseDependencies));const s=await e.swRegistration.pushManager.getSubscription();return!s||s.unsubscribe()}async function ds(e,t){const s=await async function(e,t){const s=await rs(e),a=os(t),n={method:"POST",headers:s,body:JSON.stringify(a)};let i;try{const t=await fetch(is(e.appConfig),n);i=await t.json()}catch(e){throw as.create("token-subscribe-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){const e=i.error.message;throw as.create("token-subscribe-failed",{errorInfo:e})}if(!i.token)throw as.create("token-subscribe-no-token");return i.token}(e,t),a={token:s,createTime:Date.now(),subscriptionOptions:t};return await ts(e,a),a.token}function hs(e){const t={from:e.from,collapseKey:e.collapse_key,messageId:e.fcmMessageId};return function(e,t){if(!t.notification)return;e.notification={};const s=t.notification.title;s&&(e.notification.title=s);const a=t.notification.body;a&&(e.notification.body=a);const n=t.notification.image;n&&(e.notification.image=n);const i=t.notification.icon;i&&(e.notification.icon=i)}(t,e),function(e,t){if(!t.data)return;e.data=t.data}(t,e),function(e,t){var s,a,n,i,r;if(!t.fcmOptions&&!(null===(s=t.notification)||void 0===s?void 0:s.click_action))return;e.fcmOptions={};const o=null!==(n=null===(a=t.fcmOptions)||void 0===a?void 0:a.link)&&void 0!==n?n:null===(i=t.notification)||void 0===i?void 0:i.click_action;o&&(e.fcmOptions.link=o);const l=null===(r=t.fcmOptions)||void 0===r?void 0:r.analytics_label;l&&(e.fcmOptions.analyticsLabel=l)}(t,e),t}function ps(e){return as.create("missing-app-config-values",{valueName:e})}!function(e,t){const s=[];for(let a=0;a<e.length;a++)s.push(e.charAt(a)),a<t.length&&s.push(t.charAt(a));s.join("")}("AzSCbw63g1R0nCw85jG8","Iaya3yLKwmgvh7cF0q4");class us{constructor(e,t,s){this.deliveryMetricsExportedToBigQueryEnabled=!1,this.onBackgroundMessageHandler=null,this.onMessageHandler=null,this.logEvents=[],this.isLogServiceStarted=!1;const a=function(e){if(!e||!e.options)throw ps("App Configuration Object");if(!e.name)throw ps("App Name");const t=["projectId","apiKey","appId","messagingSenderId"],{options:s}=e;for(const e of t)if(!s[e])throw ps(e);return{appName:e.name,projectId:s.projectId,apiKey:s.apiKey,appId:s.appId,senderId:s.messagingSenderId}}(e);this.firebaseDependencies={app:e,appConfig:a,installations:t,analyticsProvider:s}}_delete(){return Promise.resolve()}}async function ms(e){try{e.swRegistration=await navigator.serviceWorker.register("/firebase-messaging-sw.js",{scope:"/firebase-cloud-messaging-push-scope"}),e.swRegistration.update().catch(()=>{}),await async function(e){return new Promise((t,s)=>{const a=setTimeout(()=>s(new Error("Service worker not registered after 10000 ms")),Vt),n=e.installing||e.waiting;e.active?(clearTimeout(a),t()):n?n.onstatechange=e=>{var s;"activated"===(null===(s=e.target)||void 0===s?void 0:s.state)&&(n.onstatechange=null,clearTimeout(a),t())}:(clearTimeout(a),s(new Error("No incoming service worker found.")))})}(e.swRegistration)}catch(e){throw as.create("failed-service-worker-registration",{browserErrorMessage:null==e?void 0:e.message})}}async function gs(e,t){if(!navigator)throw as.create("only-available-in-window");if("default"===Notification.permission&&await Notification.requestPermission(),"granted"!==Notification.permission)throw as.create("permission-blocked");return await async function(e,t){t?e.vapidKey=t:e.vapidKey||(e.vapidKey=Ht)}(e,null==t?void 0:t.vapidKey),await async function(e,t){if(t||e.swRegistration||await ms(e),t||!e.swRegistration){if(!(t instanceof ServiceWorkerRegistration))throw as.create("invalid-sw-registration");e.swRegistration=t}}(e,null==t?void 0:t.serviceWorkerRegistration),ls(e)}async function fs(e,t,s){const a=function(e){switch(e){case $t.NOTIFICATION_CLICKED:return"notification_open";case $t.PUSH_RECEIVED:return"notification_foreground";default:throw new Error}}(t);(await e.firebaseDependencies.analyticsProvider.get()).logEvent(a,{message_id:s[zt],message_name:s["google.c.a.c_l"],message_time:s["google.c.a.ts"],message_device_time:Math.floor(Date.now()/1e3)})}async function vs(e,t){const s=t.data;if(!s.isFirebaseMessaging)return;e.onMessageHandler&&s.messageType===$t.PUSH_RECEIVED&&("function"==typeof e.onMessageHandler?e.onMessageHandler(hs(s)):e.onMessageHandler.next(hs(s)));const a=s.data;var n;"object"==typeof(n=a)&&n&&zt in n&&"1"===a["google.c.a.e"]&&await fs(e,s.messageType,a)}const bs="@firebase/messaging",ws="0.12.22",ys=e=>{const t=e.getProvider("messaging").getImmediate();return{getToken:e=>gs(t,e)}};async function Es(){try{await E()}catch(e){return!1}return"undefined"!=typeof window&&y()&&!("undefined"==typeof navigator||!navigator.cookieEnabled)&&"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window&&"fetch"in window&&ServiceWorkerRegistration.prototype.hasOwnProperty("showNotification")&&PushSubscription.prototype.hasOwnProperty("getKey")}function Ss(e=function(e=xe){const t=Re.get(e);if(!t&&e===xe&&b())return He();if(!t)throw Be.create("no-app",{appName:e});return t}()){return Es().then(e=>{if(!e)throw as.create("unsupported-browser")},e=>{throw as.create("indexed-db-unsupported")}),je(k(e),"messaging").getImmediate()}async function Cs(e,t){return gs(e=k(e),t)}function _s(e){return async function(e){if(!navigator)throw as.create("only-available-in-window");return e.swRegistration||await ms(e),cs(e)}(e=k(e))}function Ms(e,t){return function(e,t){if(!navigator)throw as.create("only-available-in-window");return e.onMessageHandler=t,()=>{e.onMessageHandler=null}}(e=k(e),t)}Oe(new A("messaging",e=>{const t=new us(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),e.getProvider("analytics-internal"));return navigator.serviceWorker.addEventListener("message",e=>vs(t,e)),t},"PUBLIC")),Oe(new A("messaging-internal",ys,"PRIVATE")),ze(bs,ws),ze(bs,ws,"esm2017");var Ts=r(4532);class ks extends l().PureComponent{render(){return l().createElement("div",{className:"alert-container"},l().createElement("div",{className:"alert"},l().createElement("div",{className:"title"},this.props.title),l().createElement("div",{className:"content"},this.props.content),l().createElement("div",{className:"dialog-buttons"},this.props.onReject?l().createElement("button",{className:"outline",onClick:this.props.onReject},this.props.reject||l().createElement(d.FormattedMessage,{id:"button_cancel",defaultMessage:[{type:0,value:"Cancel"}]})):null,this.props.onConfirm?l().createElement("button",{className:"primary",onClick:this.props.onConfirm},this.props.confirm||l().createElement(d.FormattedMessage,{id:"button_ok",defaultMessage:[{type:0,value:"OK"}]})):null)))}}var As=r(9027);const Ns=(0,d.defineMessages)({info:{id:"menu_item_info",defaultMessage:[{type:0,value:"Info"}]},clear_messages:{id:"menu_item_clear_messages",defaultMessage:[{type:0,value:"Clear messages"}]},clear_for_all:{id:"menu_item_clear_messages_for_all",defaultMessage:[{type:0,value:"Clear for All"}]},delete:{id:"menu_item_delete",defaultMessage:[{type:0,value:"Delete"}]},delete_for_all:{id:"menu_item_delete_for_all",defaultMessage:[{type:0,value:"Delete for All"}]},send_retry:{id:"menu_item_send_retry",defaultMessage:[{type:0,value:"Retry"}]},mute:{id:"menu_item_mute",defaultMessage:[{type:0,value:"Mute"}]},unmute:{id:"menu_item_unmute",defaultMessage:[{type:0,value:"Unmute"}]},reply:{id:"menu_item_reply",defaultMessage:[{type:0,value:"Reply"}]},forward:{id:"menu_item_forward",defaultMessage:[{type:0,value:"Forward"}]},edit:{id:"menu_item_edit",defaultMessage:[{type:0,value:"Edit"}]},topic_delete:{id:"menu_item_delete_topic",defaultMessage:[{type:0,value:"Delete"}]},topic_delete_warning:{id:"topic_delete_warning",defaultMessage:[{type:0,value:"Are you sure you want to delete this conversation? It cannot be undone."}]},delete_messages_warning:{id:"delete_messages_warning",defaultMessage:[{type:0,value:"Are you sure you want to delete all messages for everyone? It cannot be undone."}]},unblock:{id:"menu_item_unblock",defaultMessage:[{type:0,value:"Unblock"}]},block:{id:"menu_item_block",defaultMessage:[{type:0,value:"Block"}]},topic_block_warning:{id:"topic_block_warning",defaultMessage:[{type:0,value:"Are you sure you want to block this conversation?"}]},member_delete:{id:"menu_item_member_delete",defaultMessage:[{type:0,value:"Remove"}]},archive:{id:"menu_item_archive_topic",defaultMessage:[{type:0,value:"Archive"}]},unarchive:{id:"menu_item_restore_topic",defaultMessage:[{type:0,value:"Restore"}]},edit_permissions:{id:"menu_item_edit_permissions",defaultMessage:[{type:0,value:"Edit permissions"}]},clear_messages_warning:{id:"clear_messages_warning",defaultMessage:[{type:0,value:"Are you sure you want to clear all messages? It cannot be undone."}]},pin_message:{id:"pin_message",defaultMessage:[{type:0,value:"Pin"}]},unpin_message:{id:"unpin_message",defaultMessage:[{type:0,value:"Unpin"}]},pin_chat:{id:"pin_chat",defaultMessage:[{type:0,value:"Pin"}]},unpin_chat:{id:"unpin_chat",defaultMessage:[{type:0,value:"Unpin"}]}});class Is extends l().Component{constructor(e){super(e),this.selfRef=l().createRef();const{formatMessage:t}=e.intl;this.handlePageClick=this.handlePageClick.bind(this),this.handleEscapeKey=this.handleEscapeKey.bind(this),this.handleClick=this.handleClick.bind(this),this.MenuItems={topic_info:{id:"topic_info",title:t(Ns.info),handler:null},messages_clear:{id:"messages_clear",title:t(Ns.clear_messages),handler:(s,a)=>e.onShowAlert(s.topicTitle||t(Ns.clear_messages),t(Ns.clear_messages_warning),e=>{this.deleteMessages(!0,!1,s,a)},null,!0,null)},messages_clear_hard:{id:"messages_clear_hard",title:t(Ns.clear_for_all),handler:(s,a)=>e.onShowAlert(s.topicTitle||t(Ns.clear_for_all),t(Ns.delete_messages_warning),e=>this.deleteMessages(!0,!0,s,a),null,!0,null)},message_delete:{id:"message_delete",title:t(Ns.delete),handler:(e,t)=>this.deleteMessages(!1,!1,e,t)},message_delete_hard:{id:"message_delete_hard",title:t(Ns.delete_for_all),handler:(e,t)=>this.deleteMessages(!1,!0,e,t)},message_delete_generic:{id:"message_delete_generic",title:t(Ns.delete),handler:(e,t)=>this.deleteMessages(!1,!0,e,t)},menu_item_send_retry:{id:"menu_item_send_retry",title:t(Ns.send_retry),handler:(e,t)=>this.retryMessage(e,t)},menu_item_reply:{id:"menu_item_reply",title:t(Ns.reply),handler:(e,t)=>this.replyToMessage(e,t)},menu_item_forward:{id:"menu_item_forward",title:t(Ns.forward),handler:e=>{}},menu_item_edit:{id:"menu_item_edit",title:t(Ns.edit),handler:(e,t)=>this.editMessage(e,t)},menu_item_pin:{id:"menu_item_pin",title:t(Ns.pin_message),handler:(e,t)=>this.pinMessage(!0,e,t)},menu_item_unpin:{id:"menu_item_unpin",title:t(Ns.unpin_message),handler:(e,t)=>this.pinMessage(!1,e,t)},topic_unmute:{id:"topic_unmute",title:t(Ns.unmute),handler:this.topicPermissionSetter.bind(this,"+P")},topic_mute:{id:"topic_mute",title:t(Ns.mute),handler:this.topicPermissionSetter.bind(this,"-P")},topic_unblock:{id:"topic_unblock",title:t(Ns.unblock),handler:this.topicPermissionSetter.bind(this,"+JP")},topic_block:{id:"topic_block",title:t(Ns.block),handler:(s,a)=>e.onShowAlert(s.topicTitle||t(Ns.block),t(Ns.topic_block_warning),e=>this.topicPermissionSetter("-JP",s,a).then(e=>(this.props.onTopicRemoved(s.topicName),e)),null,!0,null)},topic_delete:{id:"topic_delete",title:t(Ns.topic_delete),handler:(s,a)=>e.onShowAlert(s.topicTitle||t(Ns.topic_delete),t(Ns.topic_delete_warning),e=>{const t=this.props.tinode.getTopic(s.topicName);if(t)return t.delTopic(!0).catch(e=>{a&&a(e.message,"err")});console.warn("Topic not found: ",s.topicName)},null,!0,null)},topic_archive:{id:"topic_archive",title:t(Ns.archive),handler:(e,t)=>{const s=this.props.tinode.getTopic(e.topicName);if(s)return s.archive(!0).catch(e=>{t&&t(e.message,"err")});console.warn("Topic not found: ",e.topicName)}},topic_restore:{id:"topic_restore",title:t(Ns.unarchive),handler:(e,t)=>{const s=this.props.tinode.getTopic(e.topicName);if(s)return s.archive(!1).catch(e=>{t&&t(e.message,"err")});console.warn("Topic not found: ",e.topicName)}},topic_pin:{id:"topic_pin",title:t(Ns.pin_chat),handler:(e,t)=>{const s=this.props.tinode.getMeTopic();if(s)return s.pinTopic(e.topicName,!0).catch(e=>{t&&t(e.message,"err")});console.warn("'me' topic not found")}},topic_unpin:{id:"topic_unpin",title:t(Ns.unpin_chat),handler:(e,t)=>{const s=this.props.tinode.getMeTopic();if(s)return s.pinTopic(e.topicName,!1).catch(e=>{t&&t(e.message,"err")});console.warn("'me' topic not found")}},permissions:{id:"permissions",title:t(Ns.edit_permissions),handler:null},member_delete:{id:"member_delete",title:t(Ns.member_delete),handler:(e,t)=>{const s=this.props.tinode.getTopic(e.topicName);if(s&&e.user)return s.delSubscription(e.user).catch(e=>{t&&t(e.message,"err")});console.warn("Topic or user not found: '"+e.topicName+"', '"+e.user+"'")}},member_mute:{id:"member_mute",title:t(Ns.mute),handler:this.topicPermissionSetter.bind(this,"-P")},member_unmute:{id:"member_unmute",title:t(Ns.unmute),handler:this.topicPermissionSetter.bind(this,"+P")},member_block:{id:"member_block",title:t(Ns.block),handler:this.topicPermissionSetter.bind(this,"-JP")},member_unblock:{id:"member_unblock",title:t(Ns.unblock),handler:this.topicPermissionSetter.bind(this,"+JP")}}}componentDidMount(){document.addEventListener("mousedown",this.handlePageClick,!1),document.addEventListener("keyup",this.handleEscapeKey,!1)}componentWillUnmount(){document.removeEventListener("mousedown",this.handlePageClick,!1),document.removeEventListener("keyup",this.handleEscapeKey,!1)}handlePageClick(e){this.selfRef.current.contains(e.target)||(e.preventDefault(),e.stopPropagation(),this.props.hide())}handleEscapeKey(e){27===e.keyCode&&this.props.hide()}handleClick(e){e.preventDefault(),e.stopPropagation(),this.props.hide();let t=this.props.items[e.currentTarget.dataset.id];"string"==typeof t&&(t=this.MenuItems[t]),t?this.props.onAction(t.id,t.handler(this.props.params,this.props.onError),this.props.params):console.error("Invalid menu item ID",e.currentTarget.dataset.id)}deleteMessages(e,t,s,a){const n=this.props.tinode.getTopic(s.topicName);if(!n)return void console.warn("Topic not found: ",s.topicName);if(!e&&n.cancelSend(s.seq))return;return(e?n.delMessagesAll(t):s.replace>0?n.delMessagesEdits(s.replace,t):n.delMessagesList([s.seq],t)).catch(e=>{a&&a(e.message,"err")})}retryMessage(e,t){const s=this.props.tinode.getTopic(e.topicName);if(!s||!s.flushMessage(e.seq))return;const a=s.createMessage(e.content,!1);return s.publishDraft(a).catch(e=>{t&&t(e.message,"err")})}pinMessage(e,t,s){const a=this.props.tinode.getTopic(t.topicName);a&&a.pinMessage(t.seq,e).catch(e=>s?s(e.message,"err"):null)}topicPermissionSetter(e,t,s){const a=this.props.tinode.getTopic(t.topicName);if(!a)return void console.warn("Topic not found",t.topicName);let n=a.updateMode(t.user,e);return s&&(n=n.catch(e=>s(e.message,"err"))),n}replyToMessage(e,t){e.pickReply(e.seq,e.content,e.userFrom,e.userName,t)}editMessage(e,t){e.editMessage(e.replace||e.seq,e.content,t)}render(){const e=[];let t=0;this.props.items.forEach(s=>{if("string"==typeof s&&(s=this.MenuItems[s]),s&&s.title){const a=s.disabled?"disabled":void 0;e.push("-"==s.title?l().createElement("li",{className:"separator",key:t}):l().createElement("li",{className:a,onClick:this.handleClick,"data-id":t,key:t},s.title))}t++});const s=12*As.JS,a=As.JS*(.7+2.5*e.length),n={left:(this.props.bounds.right-this.props.clickAt.x<s?this.props.clickAt.x-this.props.bounds.left-s:this.props.clickAt.x-this.props.bounds.left)+"px",top:(this.props.bounds.bottom-this.props.clickAt.y<a?this.props.clickAt.y-this.props.bounds.top-a:this.props.clickAt.y-this.props.bounds.top)+"px"};return l().createElement("ul",{className:"menu",style:n,ref:this.selfRef},e)}}var Ds=(0,d.injectIntl)(Is),xs=r(4152);class Ps extends l().PureComponent{constructor(e){super(e),this.state={edited:!1,search:this.props.initialQuery||""},this.handleSearchChange=this.handleSearchChange.bind(this),this.handleSearch=this.handleSearch.bind(this),this.handleClear=this.handleClear.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this)}componentWillUnmount(){this.state.edited&&(this.setState({search:"",edited:!1}),this.props.onSearchContacts(Ts.Tinode.DEL_CHAR))}handleSearchChange(e){this.setState({search:e.target.value})}handleSearch(e){e.preventDefault();const t=this.state.search.trim();this.setState({edited:t.length>0}),this.props.onSearchContacts(t.length>0?t:Ts.Tinode.DEL_CHAR)}handleClear(e){e.preventDefault(),this.state.edited&&this.props.onSearchContacts(Ts.Tinode.DEL_CHAR),this.setState({search:"",edited:!1})}handleKeyDown(e){"Enter"===e.key?this.handleSearch(e):"Escape"===e.key&&(e.stopPropagation(),this.handleClear(e))}render(){return l().createElement("div",{className:"panel-form"},l().createElement("div",{className:"panel-form-row"},l().createElement("i",{className:"material-icons search"},"search"),l().createElement("input",{className:"search",type:"text",placeholder:this.props.placeholder,value:this.state.search,onChange:this.handleSearchChange,onKeyDown:this.handleKeyDown,required:!0,autoFocus:!0}),this.state.search?l().createElement("a",{href:"#",onClick:this.handleClear},l().createElement("i",{className:"material-icons"},"highlight_off")):l().createElement("span",null,l().createElement("i",{className:"material-icons"}," "))))}}class Rs extends l().Component{constructor(e){super(e),this.state={query:null},this.handleEscapeKey=this.handleEscapeKey.bind(this),this.handleClose=this.handleClose.bind(this),this.handleSearchContacts=this.handleSearchContacts.bind(this),this.handleContactSelected=this.handleContactSelected.bind(this)}componentDidMount(){this.props.onInitFind()}handleEscapeKey(e){27===e.keyCode&&this.props.hide(!1)}handleClose(e){e.preventDefault(),this.props.hide(!1)}handleSearchContacts(e){this.setState({query:Ts.Tinode.isNullValue(e)?null:e}),this.props.onSearchContacts(e)}handleContactSelected(e){this.props.onTopicSelected(e),this.props.hide(!0)}render(){let e=null!=this.state.query?this.props.searchResults:this.props.contacts;return e=e.filter(e=>e.name!=this.props.topicSelected&&e.acs.isJoiner()&&e.acs.isWriter()),l().createElement("div",{className:"alert-container"},l().createElement("div",{className:"forward-dialog"},l().createElement("div",{className:"title with-control"},l().createElement("div",null,l().createElement(d.FormattedMessage,{id:"forward_to",defaultMessage:[{type:0,value:"Forward to"}],desription:"Title of the contact selector dialog when forwarding a message"})),l().createElement("div",null,l().createElement("a",{href:"#",onClick:this.handleClose},l().createElement("i",{className:"material-icons"},"close")))),l().createElement(d.FormattedMessage,{id:"forward_to_search_placeholder",defaultMessage:[{type:0,value:"Search contacts"}]},e=>l().createElement(Ps,{placeholder:e,onSearchContacts:this.handleSearchContacts})),l().createElement(d.FormattedMessage,{id:"search_no_results",defaultMessage:[{type:0,value:"Search returned no results"}]},t=>l().createElement(xs.A,{tinode:this.props.tinode,contacts:e,myUserId:this.props.myUserId,emptyListMessage:t,showOnline:!1,showUnread:!1,showContextMenu:!1,onTopicSelected:this.handleContactSelected}))))}}var Fs=r(635),Us=r(6904),Ls=r(3832),Os=r(6110),js=r(8589);const Bs=new Audio("audio/call-in.m4a");class qs extends l().Component{constructor(e){super(e),this.state={topic:null,fullName:void 0,avatar:null,trustedBadges:[],previousMetaDesc:void 0},this.resetDesc=this.resetDesc.bind(this),this.onMetaDesc=this.onMetaDesc.bind(this),this.handleRejectCall=this.handleRejectCall.bind(this),this.handleAcceptCall=this.handleAcceptCall.bind(this),this.ringTimer=null}componentDidMount(){const e=this.props.tinode.getTopic(this.props.topic);e&&(this.resetDesc(e),this.props.callState==Ls.ww&&(Bs.play().catch(e=>{}),this.ringTimer=setInterval(e=>{Bs.play().catch(e=>{})},2e3),this.props.onRinging(this.props.topic,this.props.seq)))}componentDidUpdate(e){const t=this.props.tinode.getTopic(e.topic);t&&(this.onMetaDesc!=t.onMetaDesc&&(this.previousMetaDesc=t.onMetaDesc,t.onMetaDesc=this.onMetaDesc),this.state.topic!=e.topic&&(this.setState({topic:e.topic}),this.resetDesc(t,e)))}componentWillUnmount(){null!=this.ringTimer&&(clearInterval(this.ringTimer),Bs.pause());const e=this.props.tinode.getTopic(this.props.topic);e&&(this.setState({topic:null}),e.onMetaDesc=this.previousMetaDesc)}resetDesc(e){const t=[];if(e.trusted)for(const[s,a]of Object.entries(e.trusted))a&&t.push(s);this.setState({fullName:(0,js.W5)(e.public?e.public.fn:void 0,As.tS),avatar:(0,Os.to)(e.public?e.public.photo:null),trustedBadges:t})}onMetaDesc(e){const t=this.props.tinode.getTopic(this.props.topic);t&&(this.resetDesc(t),this.previousMetaDesc&&this.previousMetaDesc!=this.onMetaDesc&&this.previousMetaDesc(e))}handleAcceptCall(){this.props.onAcceptCall(this.props.topic)}handleRejectCall(){this.props.onReject(this.props.topic,this.props.seq),this.props.onClose()}render(){return l().createElement("div",{className:"alert-container"},l().createElement("div",{className:"incoming-call"},l().createElement("div",{className:"caller-card incoming pulse"},l().createElement("div",{className:"avatar-box"},l().createElement(Us.A,{authorizeURL:this.props.tinode.authorizeURL,avatar:this.state.avatar||!0,topic:this.props.topic,title:this.state.fullName})),l().createElement("div",{className:"caller-name"},(0,js.W5)(this.state.fullName,As.mu),l().createElement(Fs.A,{short:!0,trustedBadges:this.state.trustedBadges}))),l().createElement("div",{id:"controls"},this.props.callState==Ls.ww?l().createElement(l().Fragment,null,l().createElement("button",{className:"danger",onClick:this.handleRejectCall},l().createElement("i",{className:"material-icons"},"call_end")),l().createElement("button",{className:"positive",onClick:this.handleAcceptCall},l().createElement("i",{className:"material-icons"},"call"))):null)))}}var Hs=r(1334),zs=r(1013);class Vs extends l().PureComponent{render(){return l().createElement("a",{href:"#",onClick:e=>{e.preventDefault(),this.props.onBack()}},l().createElement("i",{className:"material-icons"},"arrow_back"))}}var Ws=r(504);class $s extends l().PureComponent{render(){return l().createElement("div",null,l().createElement("a",{href:"#",onClick:e=>{e.preventDefault(),this.props.onNewTopic()}},l().createElement("i",{className:"material-icons"},"chat"))," ",l().createElement("a",{href:"#",onClick:e=>{e.preventDefault(),this.props.onSettings()}},l().createElement("i",{className:"material-icons"},"settings")))}}class Ks extends l().PureComponent{render(){return l().createElement("div",null,l().createElement("a",{href:"#",onClick:e=>{e.preventDefault(),this.props.onSignUp()}},l().createElement("i",{className:"material-icons"},"person_add"))," ",l().createElement("a",{href:"#",onClick:e=>{e.preventDefault(),this.props.onSettings()}},l().createElement("i",{className:"material-icons"},"settings")))}}var Gs=r(3540);class Ys extends l().PureComponent{render(){const e=[];this.props.trustedBadges&&this.props.trustedBadges.forEach(t=>{e.push({icon:t,color:"badge-inv"})});let t=null;return this.props.tinode&&(t=this.props.tinode.authorizeURL((0,Gs.wk)(this.props.avatar,"image"))),l().createElement("div",{id:"side-caption-panel",className:"caption-panel"},this.props.onCancel?l().createElement(Vs,{onBack:this.props.onCancel}):null,t?l().createElement("div",{id:"self-avatar",className:"avatar-box"},l().createElement(Us.A,{authorizeURL:this.props.tinode.authorizeURL,avatar:t,topic:this.props.myUserId,title:this.props.title})):null,l().createElement("div",{id:"sidepanel-title",className:"panel-title"},this.props.title,l().createElement(Ws.A,{badges:e})),"login"===this.props.state?l().createElement(Ks,{onSignUp:this.props.onSignUp,onSettings:this.props.onSettings}):"contacts"===this.props.state?l().createElement($s,{onNewTopic:this.props.onNewTopic,onSettings:this.props.onSettings}):null)}}var Js=r(8089);const Xs=(0,d.defineMessages)({archived_contacts_title:{id:"archived_contacts",defaultMessage:[{type:0,value:"Archived contacts ("},{type:1,value:"count"},{type:0,value:")"}]}});class Qs extends l().Component{constructor(e){super(e),this.handleAction=this.handleAction.bind(this),this.state=Qs.deriveStateFromProps(e)}static deriveStateFromProps(e){const t=[];let s=0,a=0;const n=e.tinode.getMeTopic();return e.chatList.forEach(i=>{const r=i.acs&&!i.acs.isJoiner();i.pinned=n.pinnedTopicRank(i.topic),r&&e.blocked&&t.push(i),r||e.blocked||(i.private&&i.private.arch?e.archive?t.push(i):a++:e.archive||(t.push(i),s+=i.unread>0?1:0))}),t.sort((e,t)=>{const s=t.pinned-e.pinned;return 0!=s?s:(t.touched||0)-(e.touched||0)}),a>0&&t.push({action:"archive",title:Xs.archived_contacts_title,values:{count:a}}),{contactList:t,unreadThreads:s}}componentDidUpdate(e,t){if(e.chatList!=this.props.chatList||e.archive!=this.props.archive||e.blocked!=this.props.blocked){const e=Qs.deriveStateFromProps(this.props);this.setState(e),e.unreadThreads!=t.unreadThreads&&(0,Gs.OM)(e.unreadThreads)}}handleAction(e){this.props.onShowArchive()}render(){return l().createElement(d.FormattedMessage,{id:"contacts_not_found",defaultMessage:[{type:0,value:"You have no chats\\n¯∖_(ツ)_/¯"}]},e=>l().createElement(xs.A,{tinode:this.props.tinode,connected:this.props.connected,contacts:this.state.contactList,emptyListMessage:e,topicSelected:this.props.topicSelected,myUserId:this.props.myUserId,showOnline:!0,showUnread:!0,onTopicSelected:this.props.onTopicSelected,showContextMenu:this.props.showContextMenu,onAction:this.handleAction}))}}class Zs extends l().PureComponent{constructor(e){super(e),this.state={colorSchema:e.colorSchema||"auto",textSize:10*e.textSize||"100",sendOnEnter:e.sendOnEnter||"plain"},this.isMac=(navigator.userAgentData&&navigator.userAgentData.platform||navigator.platform).toLowerCase().startsWith("mac"),this.handleColorSchemaSelected=this.handleColorSchemaSelected.bind(this),this.handleTextSizeChanged=this.handleTextSizeChanged.bind(this),this.handleSendOnEnterSelected=this.handleSendOnEnterSelected.bind(this)}handleColorSchemaSelected(e){this.setState({colorSchema:e.currentTarget.value}),this.props.onChangeColorSchema(e.currentTarget.value)}handleTextSizeChanged(e){this.setState({textSize:e.currentTarget.value}),this.props.onTextSizeChanged(e.currentTarget.value/10|0)}handleSendOnEnterSelected(e){this.setState({sendOnEnter:e.currentTarget.value}),this.props.onSendOnEnterChanged(e.currentTarget.value)}render(){return l().createElement("div",{id:"settings-form",className:"scrollable-panel"},l().createElement("div",{className:"panel-form-column"},l().createElement("div",{className:"panel-form-row"},l().createElement("label",{className:"small"},l().createElement(d.FormattedMessage,{id:"label_color_schema",defaultMessage:[{type:0,value:"Theme:"}]}))),l().createElement("div",{className:"panel-form-row"},l().createElement("ul",{className:"quoted"},l().createElement("li",{key:"system"},l().createElement("input",{type:"radio",id:"system",name:"color-scheme-select",value:"auto",checked:"auto"==this.state.colorSchema,onChange:this.handleColorSchemaSelected})," ",l().createElement("label",{htmlFor:"system"},l().createElement(d.FormattedMessage,{id:"color_schema_system",defaultMessage:[{type:0,value:"System default"}]})," ",l().createElement("img",{src:"img/routine.svg",style:{verticalAlign:"top",width:"1.6rem",height:"1.6rem"}}))),l().createElement("li",{key:"light"},l().createElement("input",{type:"radio",id:"light",name:"color-scheme-select",value:"light",checked:"light"==this.state.colorSchema,onChange:this.handleColorSchemaSelected})," ",l().createElement("label",{htmlFor:"light"},l().createElement(d.FormattedMessage,{id:"color_schema_light",defaultMessage:[{type:0,value:"Light"}]})," ",l().createElement("i",{className:"material-icons orange large"},"light_mode"))),l().createElement("li",{key:"dark"},l().createElement("input",{type:"radio",id:"dark",name:"color-scheme-select",value:"dark",checked:"dark"==this.state.colorSchema,onChange:this.handleColorSchemaSelected})," ",l().createElement("label",{htmlFor:"dark"},l().createElement(d.FormattedMessage,{id:"color_schema_dark",defaultMessage:[{type:0,value:"Dark"}]})," ",l().createElement("i",{className:"material-icons blue large"},"dark_mode")))))),l().createElement("div",{className:"hr"}),l().createElement("div",{className:"panel-form-row clean-clickable"},l().createElement("a",{onClick:this.props.onSelectWallpapers,className:"flat-button"},l().createElement("i",{className:"material-icons"},"wallpaper")," ",l().createElement(d.FormattedMessage,{id:"wallpapers",defaultMessage:[{type:0,value:"Wallpapers"}]}))),l().createElement("div",{className:"hr"}),l().createElement("div",{className:"panel-form-column"},l().createElement("div",{className:"panel-form-row"},l().createElement("label",{className:"small"},l().createElement(d.FormattedMessage,{id:"label_text_size",defaultMessage:[{type:0,value:"Text size:"}]}))),l().createElement("div",{className:"panel-form-row"},l().createElement("input",{type:"range",id:"text_size",name:"text_size",min:"80",max:"120",step:"10",list:"text_size_options",value:this.state.textSize,onChange:this.handleTextSizeChanged})),l().createElement("div",{className:"panel-form-row"},l().createElement("datalist",{id:"text_size_options"},l().createElement("option",{value:"80",label:"80%"}),l().createElement("option",{value:"90",label:"90%"}),l().createElement("option",{value:"100",label:"100%"}),l().createElement("option",{value:"110",label:"110%"}),l().createElement("option",{value:"120",label:"120%"})))),l().createElement("div",{className:"hr"}),l().createElement("div",{className:"panel-form-row"},l().createElement("label",{className:"small"},l().createElement(d.FormattedMessage,{id:"label_keyboard",defaultMessage:[{type:0,value:"Keyboard:"}]}))),l().createElement("div",{className:"panel-form-row"},l().createElement("ul",{className:"quoted"},l().createElement("li",{key:"plain"},l().createElement("input",{type:"radio",id:"plain",name:"send-select",value:"plain",checked:"plain"==this.state.sendOnEnter,onChange:this.handleSendOnEnterSelected})," ",l().createElement("label",{htmlFor:"send_plain"},l().createElement(d.FormattedMessage,{id:"send_plain",defaultMessage:[{type:0,value:"Send on Enter"}]})," "),l().createElement("div",{className:"panel-form-row"},l().createElement("span",{className:"small gray"},l().createElement(d.FormattedMessage,{id:"send_plain_explained",defaultMessage:[{type:0,value:"Press Shift + Enter for new line"}]})))),l().createElement("li",{key:"command"},l().createElement("input",{type:"radio",id:"command",name:"send-select",value:"command",checked:"command"==this.state.sendOnEnter,onChange:this.handleSendOnEnterSelected})," ",l().createElement("label",{htmlFor:"send_command"},l().createElement(d.FormattedMessage,{id:"send_command",defaultMessage:[{type:0,value:"Send on "},{type:1,value:"key"}],values:{key:this.isMac?"⌘ + Enter":"Ctrl + Enter"}})," "),l().createElement("div",{className:"panel-form-row"},l().createElement("span",{className:"small gray"},l().createElement(d.FormattedMessage,{id:"send_command_explained",defaultMessage:[{type:0,value:"Press Enter for new line"}]})))))))}}var ea=r(1166);class ta extends l().PureComponent{constructor(e){super(e),this.handleCheckboxClick=this.handleCheckboxClick.bind(this)}handleCheckboxClick(e,t){"sound"==e?this.props.onToggleMessageSounds(t):"alert"==e&&this.props.onTogglePushNotifications(t)}render(){return l().createElement("div",{className:"scrollable-panel"},l().createElement("div",{className:"panel-form-row"},l().createElement("label",{htmlFor:"message-sound"},l().createElement(d.FormattedMessage,{id:"label_message_sound",defaultMessage:[{type:0,value:"Message sound:"}]})),l().createElement(ea.A,{name:"sound",id:"message-sound",checked:this.props.messageSounds,onChange:this.handleCheckboxClick})),l().createElement("div",{className:"panel-form-row"},l().createElement("label",{htmlFor:"desktop-alerts"},this.props.desktopAlertsEnabled?l().createElement(d.FormattedMessage,{id:"label_push_notifications",defaultMessage:[{type:0,value:"Notification alerts:"}]}):l().createElement(d.FormattedMessage,{id:"label_push_notifications_disabled",defaultMessage:[{type:0,value:"Notification alerts (requires HTTPS):"}]})),l().createElement(ea.A,{name:"alert",id:"desktop-alerts",checked:this.props.desktopAlerts,onChange:this.props.desktopAlertsEnabled?this.handleCheckboxClick:null})))}}class sa extends l().PureComponent{render(){return l().createElement("div",{className:"scrollable-panel"},l().createElement("div",{className:"panel-form-column"},l().createElement("a",{href:As.fi,className:"flat-button",target:"_blank"},l().createElement("i",{className:"material-icons"},"email")," ",l().createElement(d.FormattedMessage,{id:"link_contact_us",defaultMessage:[{type:0,value:"Contact Us"}]})),l().createElement("a",{href:As.V9,className:"flat-button",target:"_blank"},l().createElement("i",{className:"material-icons"},"description")," ",l().createElement(d.FormattedMessage,{id:"link_terms_of_service",defaultMessage:[{type:0,value:"Terms of Service"}]})),l().createElement("a",{href:As.RS,className:"flat-button",target:"_blank"},l().createElement("i",{className:"material-icons"},"policy")," ",l().createElement(d.FormattedMessage,{id:"link_privacy_policy",defaultMessage:[{type:0,value:"Privacy Policy"}]}))),l().createElement("div",{className:"hr"}),l().createElement("div",{className:"panel-form-column"},l().createElement("div",{className:"panel-form-row"},l().createElement("label",{className:"small"},l().createElement(d.FormattedMessage,{id:"label_client",defaultMessage:[{type:0,value:"Client:"}]})),As.C3),l().createElement("div",{className:"panel-form-row"},l().createElement("label",{className:"small"},l().createElement(d.FormattedMessage,{id:"label_sdk",defaultMessage:[{type:0,value:"SDK:"}]})),Ts.Tinode.getLibrary()),l().createElement("div",{className:"panel-form-row"},l().createElement("label",{className:"small"},l().createElement(d.FormattedMessage,{id:"label_server",defaultMessage:[{type:0,value:"Server:"}]})),this.props.serverVersion),l().createElement("div",{className:"panel-form-row"},l().createElement("label",{className:"small"},l().createElement(d.FormattedMessage,{id:"label_server_address",defaultMessage:[{type:0,value:"Server address:"}]})),this.props.serverAddress)))}}var aa=r(6789);class na extends l().Component{constructor(e){super(e),this.state={login:e.login,password:"",hostName:e.serverAddress,saveToken:e.persist},this.handleLoginChange=this.handleLoginChange.bind(this),this.handlePasswordChange=this.handlePasswordChange.bind(this),this.handleToggleSaveToken=this.handleToggleSaveToken.bind(this),this.handleSubmit=this.handleSubmit.bind(this)}handleLoginChange(e){this.setState({login:e.target.value})}handlePasswordChange(e){this.setState({password:e.target.value})}handleToggleSaveToken(){this.props.onPersistenceChange(!this.state.saveToken),this.setState({saveToken:!this.state.saveToken})}handleSubmit(e){e.preventDefault(),this.props.onLogin(this.state.login.trim(),this.state.password.trim())}render(){let e="primary";return this.props.disabled&&(e+=" disabled"),l().createElement("form",{id:"login-form",onSubmit:this.handleSubmit},l().createElement(d.FormattedMessage,{id:"login_prompt",defaultMessage:[{type:0,value:"Login"}]},e=>l().createElement("input",{type:"text",id:"inputLogin",placeholder:e,autoComplete:"username",autoCorrect:"off",autoCapitalize:"none",value:this.state.login,onChange:this.handleLoginChange,required:!0,autoFocus:!0})),l().createElement(d.FormattedMessage,{id:"password_prompt",defaultMessage:[{type:0,value:"Password"}]},e=>l().createElement(aa.A,{type:"password",id:"inputPassword",placeholder:e,autoComplete:"current-password",value:this.state.password,onChange:this.handlePasswordChange,required:!0})),l().createElement("div",{className:"panel-form-row"},l().createElement(ea.A,{id:"save-token",name:"save-token",checked:this.state.saveToken,onChange:this.handleToggleSaveToken}),l().createElement("label",{htmlFor:"save-token"}," ",l().createElement(d.FormattedMessage,{id:"stay_logged_in",defaultMessage:[{type:0,value:"Stay logged in"}]})),l().createElement("a",{href:"#reset"},l().createElement(d.FormattedMessage,{id:"forgot_password_link",defaultMessage:[{type:0,value:"Forgot password?"}]}))),l().createElement("div",{className:"dialog-buttons"},l().createElement("button",{className:e,type:"submit"},l().createElement(d.FormattedMessage,{id:"button_sign_in",defaultMessage:[{type:0,value:"Sign in"}]}))))}}var ia=r(9593),ra=r.n(ia);const oa=(0,d.defineMessages)({invalid_id:{id:"error_invalid_id",defaultMessage:[{type:0,value:"Invalid ID"}]}});class la extends l().PureComponent{constructor(e){super(e),this.qrCodeRef=l().createRef(),this.state={groupId:""},this.handleChange=this.handleChange.bind(this),this.handleKeyPress=this.handleKeyPress.bind(this),this.handleSubmit=this.handleSubmit.bind(this)}componentDidMount(){new(ra())(this.qrCodeRef.current,{text:this.props.myURI,width:As.Tn,height:As.Tn})}handleChange(e){this.setState({groupId:e.target.value})}handleKeyPress(e){"Enter"===e.key&&this.handleSubmit(e)}handleSubmit(e){if(e.preventDefault(),this.state.groupId){const e=this.state.groupId.trim(),t=e.substring(0,3);e.length>3&&["usr","grp","chn"].includes(t)?this.props.onSubmit(e):this.props.onError(this.props.intl.formatMessage(oa.invalid_id),"err")}}render(){return l().createElement("div",{className:"panel-form"},l().createElement("div",{className:"panel-form-row"},l().createElement(d.FormattedMessage,{id:"group_user_id_prompt",defaultMessage:[{type:0,value:"Group or User ID"}]},e=>l().createElement("input",{type:"text",placeholder:e,value:this.state.groupId,onChange:this.handleChange,onKeyDown:this.handleKeyPress,required:!0,autoFocus:!0}))),l().createElement("div",{className:"dialog-buttons"},l().createElement("button",{className:"primary",onClick:this.handleSubmit},l().createElement(d.FormattedMessage,{id:"button_subscribe",defaultMessage:[{type:0,value:"Subscribe"}]}))),l().createElement("br",null),l().createElement("div",{className:"panel-form-column"},l().createElement("label",{className:"small"},l().createElement(d.FormattedMessage,{id:"label_scan_id",defaultMessage:[{type:0,value:"Scan my ID:"}]})),l().createElement("div",{className:"qr-code",ref:this.qrCodeRef})))}}var ca=(0,d.injectIntl)(la),da=r(221),ha=r(9418),pa=r(3307);class ua extends l().PureComponent{constructor(e){super(e),this.fullName=l().createRef(),this.state={fullName:"",private:"",description:"",imageUrl:null,tags:[],isChannel:!1,newAvatar:null,newAvatarMime:null},this.handleFieldEdit=this.handleFieldEdit.bind(this),this.handleImageChanged=this.handleImageChanged.bind(this),this.handleAvatarCropped=this.handleAvatarCropped.bind(this),this.handleAvatarCropCancel=this.handleAvatarCropCancel.bind(this),this.uploadAvatar=this.uploadAvatar.bind(this),this.handleTagsChanged=this.handleTagsChanged.bind(this),this.handleChannelToggle=this.handleChannelToggle.bind(this),this.handleSubmit=this.handleSubmit.bind(this)}componentDidMount(){}handleFieldEdit(e,t){this.setState({[e]:t.target.value||""})}handleImageChanged(e,t){this.setState({newAvatar:t,newAvatarMime:e})}handleAvatarCropped(e,t,s,a){const n=t?URL.createObjectURL(t):null;this.setState({imageUrl:n,newAvatar:null,newAvatarMime:null}),t&&this.uploadAvatar(e,t,s,a)}handleAvatarCropCancel(){this.setState({newAvatar:null,newAvatarMime:null})}uploadAvatar(e,t,s,a){const n=e=>{let{mime:t,blob:s}=e;if(s.size>As.Z7){this.props.tinode.getLargeFileHelper().upload(s).then(e=>this.setState({imageUrl:e})).catch(e=>this.props.onError(e.message,"err"))}else(0,Os.Sk)(s).then(e=>this.setState({imageUrl:(0,Os.to)({data:e.bits,type:t})}))};s>As.eQ||a>As.eQ||s!=a?(0,Os.ag)(t,As.eQ,As.eQ,As.qy,!0).then(e=>n(e)).catch(e=>this.props.onError(e.message,"err")):n({mime:e,blob:t,width:s,height:a})}handleTagsChanged(e){this.setState({tags:e})}handleChannelToggle(){this.setState({isChannel:!this.state.isChannel})}handleSubmit(e){e.preventDefault();const t=(0,js.W5)(this.state.fullName.trim(),As.tS),s=(0,js.W5)(this.state.private.trim(),As.tS),a=(0,js.W5)(this.state.description.trim(),As.lQ);t&&this.props.onSubmit(t,a,this.state.imageUrl,s,this.state.tags,this.state.isChannel)}render(){if(this.state.newAvatar)return l().createElement(da.A,{avatar:this.state.newAvatar,mime:this.state.newAvatarMime,onSubmit:this.handleAvatarCropped,onCancel:this.handleAvatarCropCancel,onError:this.props.onError});let e="primary";return this.props.disabled&&(e+=" disabled"),l().createElement("form",{className:"panel-form",onSubmit:this.handleSubmit},l().createElement("div",{className:"panel-form-column"},l().createElement("center",null,l().createElement(ha.A,{tinode:this.props.tinode,avatar:this.state.imageUrl,onError:this.props.onError,onImageUpdated:this.handleImageChanged})),l().createElement("div",{className:"group"},l().createElement("label",{className:"small",htmlFor:"new-topic-fn"},l().createElement(d.FormattedMessage,{id:"label_topic_name",defaultMessage:[{type:0,value:"Name"}]})),l().createElement(d.FormattedMessage,{id:"topic_name_editing_placeholder",defaultMessage:[{type:0,value:"Freeform name of the group"}]},e=>l().createElement("input",{type:"text",id:"new-topic-fn",placeholder:e,ref:this.fullName,value:this.state.fullName,onChange:this.handleFieldEdit.bind(this,"fullName"),autoFocus:!0,required:!0,tabIndex:0}))),l().createElement("div",{className:"group"},l().createElement("label",{className:"small",htmlFor:"new-topic-priv"},l().createElement(d.FormattedMessage,{id:"label_private",defaultMessage:[{type:0,value:"Private comment"}]})),l().createElement(d.FormattedMessage,{id:"private_editing_placeholder",defaultMessage:[{type:0,value:"Visible to you only"}]},e=>l().createElement("input",{type:"text",id:"new-topic-priv",placeholder:e,value:this.state.private,onChange:this.handleFieldEdit.bind(this,"private"),tabIndex:1}))),l().createElement("div",{className:"group"},l().createElement("label",{className:"small",htmlFor:"new-topic-desc"},l().createElement(d.FormattedMessage,{id:"label_description",defaultMessage:[{type:0,value:"Description"}]})),l().createElement(d.FormattedMessage,{id:"description_editing_placeholder",defaultMessage:[{type:0,value:"Description (optional)"}]},e=>l().createElement("input",{type:"text",id:"new-topic-desc",placeholder:e,value:this.state.description,onChange:this.handleFieldEdit.bind(this,"description"),tabIndex:2})))),l().createElement("div",{className:"panel-form-row"},l().createElement(ea.A,{checked:this.state.isChannel,tabIndex:3,onChange:this.handleChannelToggle})," ",l().createElement("label",{onClick:this.handleChannelToggle},l().createElement(d.FormattedMessage,{id:"channel_prompt",defaultMessage:[{type:0,value:"This is a channel"}]}))),l().createElement(d.FormattedMessage,{id:"title_tag_manager",defaultMessage:[{type:0,value:"Tags (search & discovery)"}]},e=>l().createElement(pa.A,{tinode:this.props.tinode,tags:this.state.tags,activated:!0,onTagsChanged:this.handleTagsChanged,tabIndex:4,title:e})),l().createElement("div",{className:"dialog-buttons"},l().createElement("button",{className:e},l().createElement(d.FormattedMessage,{id:"button_create",defaultMessage:[{type:0,value:"Create"}]}))))}}var ma=r(7151);const ga=(0,d.defineMessages)({search_for_contacts:{id:"search_for_contacts",defaultMessage:[{type:0,value:"Use search to find contacts"}]},search_no_results:{id:"search_no_results",defaultMessage:[{type:0,value:"Search returned no results"}]},search_placeholder:{id:"search_placeholder",defaultMessage:[{type:0,value:"List like alice@example.com, +17025550003..."}]}});class fa extends l().Component{constructor(e){super(e);const t=ma.A.parseUrlHash(window.location.hash).params,s=t.tab||"find",a="find"==s&&t.q||null;this.state={tabSelected:s,searchQuery:a},this.handleTabClick=this.handleTabClick.bind(this),this.handleSearchContacts=this.handleSearchContacts.bind(this),this.handleSearchResultSelected=this.handleSearchResultSelected.bind(this),this.handleNewGroupSubmit=this.handleNewGroupSubmit.bind(this),this.handleGroupByID=this.handleGroupByID.bind(this)}componentDidMount(){this.props.onInitFind()}handleTabClick(e){e.preventDefault(),ma.A.navigateTo(ma.A.addUrlParam(window.location.hash,"tab",e.currentTarget.dataset.id)),this.setState({tabSelected:e.currentTarget.dataset.id})}handleSearchContacts(e){if(e=e.trim()||Ts.Tinode.DEL_CHAR,!/[\s,:]/.test(e)&&e!=Ts.Tinode.DEL_CHAR){const t=(0,Gs.xH)(e);if(t)e=`${Ts.Tinode.TAG_EMAIL}${t}`;else{const t=(0,Gs.Jt)(e);t?e=`${Ts.Tinode.TAG_PHONE}${t}`:("@"==e[0]&&(e=e.substring(1)),e=`${Ts.Tinode.TAG_ALIAS}${e},${e}`)}}this.props.onSearchContacts(e),this.setState({searchQuery:Ts.Tinode.isNullValue(e)?null:e})}handleSearchResultSelected(e){"find"==this.state.tabSelected&&(ma.A.navigateTo(ma.A.removeUrlParams(window.location.hash,["tab","q"])),this.props.onCreateTopic(e))}handleNewGroupSubmit(e,t,s,a,n,i){ma.A.navigateTo(ma.A.removeUrlParams(window.location.hash,["tab","q"])),this.props.onCreateTopic(void 0,{public:(0,Gs.k6)(e,s,null,t),private:a,tags:n},i)}handleGroupByID(e){ma.A.navigateTo(ma.A.removeUrlParams(window.location.hash,["tab","q"])),this.props.onCreateTopic(e)}render(){const{formatMessage:e}=this.props.intl,t=e(this.state.searchQuery?ga.search_no_results:ga.search_for_contacts),s=e(ga.search_placeholder);return l().createElement("div",{className:"flex-column"},l().createElement("ul",{className:"tabbar"},l().createElement("li",{className:"find"===this.state.tabSelected?"active":null},l().createElement("a",{href:"#","data-id":"find",onClick:this.handleTabClick},l().createElement(d.FormattedMessage,{id:"tabtitle_find_user",defaultMessage:[{type:0,value:"find"}]}))),l().createElement("li",{className:"grp"===this.state.tabSelected?"active":null},l().createElement("a",{href:"#","data-id":"grp",onClick:this.handleTabClick},l().createElement(d.FormattedMessage,{id:"tabtitle_new_group",defaultMessage:[{type:0,value:"new group"}]}))),l().createElement("li",{className:"byid"===this.state.tabSelected?"active":null},l().createElement("a",{href:"#","data-id":"byid",onClick:this.handleTabClick},l().createElement(d.FormattedMessage,{id:"tabtitle_group_by_id",defaultMessage:[{type:0,value:"by id"}]})))),"grp"===this.state.tabSelected?l().createElement(ua,{tinode:this.props.tinode,onSubmit:this.handleNewGroupSubmit,onError:this.props.onError}):"byid"===this.state.tabSelected?l().createElement(ca,{myURI:Ts.Tinode.URI_TOPIC_ID_PREFIX+this.props.tinode.getCurrentUserID(),onSubmit:this.handleGroupByID,onError:this.props.onError}):l().createElement("div",{className:"flex-column"},l().createElement(Ps,{placeholder:s,initialQuery:this.state.searchQuery||"",onSearchContacts:this.handleSearchContacts}),l().createElement(xs.A,{tinode:this.props.tinode,contacts:this.props.searchResults,myUserId:this.props.myUserId,emptyListMessage:t,showSelfTopic:!this.state.searchQuery,showOnline:!1,showUnread:!1,showContextMenu:!1,onTopicSelected:this.handleSearchResultSelected})))}}var va=(0,d.injectIntl)(fa);class ba extends l().PureComponent{constructor(e){super(e),this.state={hostName:e.serverAddress,changed:!1},this.handleHostNameChange=this.handleHostNameChange.bind(this),this.handleEditingFinished=this.handleEditingFinished.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this)}handleHostNameChange(e){this.setState({hostName:e.target.value,changed:!0})}handleEditingFinished(){this.state.changed&&(this.setState({changed:!1}),this.props.onServerAddressChange(this.state.hostName.trim()))}handleKeyDown(e){"Enter"==e.key&&this.handleEditingFinished()}render(){const e=[];for(let t in As.SE){let s=As.SE[t];e.push(l().createElement("option",{key:s,value:s}))}return l().createElement("div",{className:"panel-form-row"},l().createElement("input",{type:"search",id:"host-name",placeholder:this.props.hostName,list:"known-hosts",className:"quoted",value:this.state.hostName,onChange:this.handleHostNameChange,onBlur:this.handleEditingFinished,onKeyDown:this.handleKeyDown,required:!0}),l().createElement("datalist",{id:"known-hosts"},e))}}class wa extends l().PureComponent{constructor(e){super(e),this.state={transport:e.transport||"def",serverAddress:e.serverAddress,secureConnection:e.secureConnection},this.handleSubmit=this.handleSubmit.bind(this),this.handleTransportSelected=this.handleTransportSelected.bind(this),this.handleServerAddressChange=this.handleServerAddressChange.bind(this),this.handleToggleSecure=this.handleToggleSecure.bind(this)}handleSubmit(e){e.preventDefault(),this.props.onUpdate({transport:this.state.transport,serverAddress:this.state.serverAddress,secureConnection:this.state.secureConnection})}handleTransportSelected(e){this.setState({transport:e.currentTarget.value})}handleServerAddressChange(e){this.setState({serverAddress:e})}handleToggleSecure(e){this.setState({secureConnection:!this.state.secureConnection})}render(){const e={def:"default",ws:"websocket",lp:"long polling"},t=[];return["def","ws","lp"].forEach(s=>{const a="transport-"+s,n=e[s];t.push(l().createElement("li",{key:s},l().createElement("input",{type:"radio",id:a,name:"transport-select",value:s,checked:this.state.transport===s,onChange:this.handleTransportSelected}),l().createElement("label",{htmlFor:a},n)))}),l().createElement("form",{id:"settings-form",className:"panel-form",onSubmit:this.handleSubmit},l().createElement("div",{className:"panel-form-row"},l().createElement("label",{className:"small"},l().createElement(d.FormattedMessage,{id:"label_server_to_use",defaultMessage:[{type:0,value:"Server to use:"}]}))),l().createElement(ba,{serverAddress:this.state.serverAddress,onServerAddressChange:this.handleServerAddressChange}),l().createElement("div",{className:"panel-form-row"},l().createElement(ea.A,{id:"secure-connection",name:"secure-connection",checked:this.state.secureConnection,className:"quoted",onChange:this.handleToggleSecure}),l().createElement("label",{htmlFor:"secure-connection"},l().createElement(d.FormattedMessage,{id:"label_use_secure_connection",defaultMessage:[{type:0,value:"Use secure connection"}]}))),l().createElement("div",{className:"panel-form-row"},l().createElement("label",{className:"small"},l().createElement(d.FormattedMessage,{id:"label_wire_transport",defaultMessage:[{type:0,value:"Wire transport:"}]}))),l().createElement("div",{className:"panel-form-row"},l().createElement("ul",{className:"quoted"},t)),l().createElement("div",{className:"dialog-buttons"},l().createElement("button",{type:"submit",className:"primary"},l().createElement(d.FormattedMessage,{id:"button_update",defaultMessage:[{type:0,value:"Update"}]}))))}}const ya=(0,d.defineMessages)({phone:{id:"phone_dative",defaultMessage:[{type:0,value:"phone"}]},email:{id:"email_dative",defaultMessage:[{type:0,value:"email"}]}});class Ea extends l().PureComponent{constructor(e){super(e),this.state={code:e.credCode||"",codeReceived:e.credCode},this.handleCodeChange=this.handleCodeChange.bind(this),this.handleKeyPress=this.handleKeyPress.bind(this),this.handleSubmit=this.handleSubmit.bind(this),this.handleCancel=this.handleCancel.bind(this)}static getDerivedStateFromProps(e,t){return e.credCode!=t.codeReceived?{code:e.credCode||"",codeReceived:e.credCode}:t}componentDidMount(){this.props.credCode&&this.props.onSubmit(this.props.credMethod,this.props.credCode,this.props.credToken)}componentDidUpdate(e,t){this.state.codeReceived&&this.state.code&&this.state.code!=t.code&&this.props.onSubmit(this.props.credMethod,this.state.code,this.props.credToken)}handleCodeChange(e){this.setState({code:e.target.value.replace(/[^\d]/g,"")})}handleKeyPress(e){"Enter"===e.key?this.handleSubmit(e):"Escape"==e.key&&this.handleCancel(e)}handleSubmit(e){e.preventDefault(),this.state.code&&this.state.code.trim()&&this.props.onSubmit(this.props.credMethod,this.state.code.trim(),this.props.credToken)}handleCancel(e){e.preventDefault(),this.props.onCancel()}render(){const{formatMessage:e}=this.props.intl,t={email:e(ya.email),tel:e(ya.phone)}[this.props.credMethod]||this.props.credMethod;return l().createElement("div",{className:"panel-form"},l().createElement("div",{className:"panel-form-row"},l().createElement("label",{className:"small gray",htmlFor:"enter-confirmation-code"},l().createElement(d.FormattedMessage,{id:"enter_confirmation_code_prompt",defaultMessage:[{type:0,value:"Confirmation code"}],values:{method:t}}))),l().createElement("div",{className:"panel-form-row"},l().createElement(d.FormattedMessage,{id:"numeric_confirmation_code_prompt",defaultMessage:[{type:0,value:"Numbers only"}]},e=>l().createElement("input",{type:"text",id:"enter-confirmation-code",placeholder:e,value:this.state.code,onChange:this.handleCodeChange,onKeyDown:this.handleKeyPress,required:!0}))),l().createElement("div",{className:"dialog-buttons"},l().createElement("button",{className:"secondary",onClick:this.handleCancel},l().createElement(d.FormattedMessage,{id:"button_cancel",defaultMessage:[{type:0,value:"Cancel"}]})),l().createElement("button",{className:"primary",onClick:this.handleSubmit},l().createElement(d.FormattedMessage,{id:"button_confirm",defaultMessage:[{type:0,value:"Confirm"}]}))))}}var Sa=(0,d.injectIntl)(Ea);const Ca=l().lazy(e=>Promise.all([r.e(892),r.e(330),r.e(271)]).then(r.bind(r,4271))),_a=l().lazy(e=>Promise.all([r.e(892),r.e(330),r.e(996)]).then(r.bind(r,3996))),Ma=l().lazy(e=>r.e(352).then(r.bind(r,2352))),Ta=l().lazy(e=>Promise.all([r.e(892),r.e(330),r.e(993)]).then(r.bind(r,3993))),ka=l().lazy(e=>r.e(827).then(r.bind(r,3827))),Aa=(0,d.defineMessages)({login:{id:"sidepanel_title_login",defaultMessage:[{type:0,value:"Sign In"}]},register:{id:"sidepanel_title_register",defaultMessage:[{type:0,value:"Create Account"}]},settings:{id:"sidepanel_title_settings",defaultMessage:[{type:0,value:"Settings"}]},edit:{id:"sidepanel_title_account_settings",defaultMessage:[{type:0,value:"Account Settings"}]},general:{id:"panel_title_general",defaultMessage:[{type:0,value:"General"}]},security:{id:"panel_title_security",defaultMessage:[{type:0,value:"Security"}]},crop:{id:"panel_title_crop",defaultMessage:[{type:0,value:"Drag to Adjust"}]},notif:{id:"sidepanel_title_acc_notifications",defaultMessage:[{type:0,value:"Notifications"}]},acc_general:{id:"sidepanel_title_acc_general",defaultMessage:[{type:0,value:"General"}]},support:{id:"sidepanel_title_acc_support",defaultMessage:[{type:0,value:"Support"}]},newtpk:{id:"sidepanel_title_newtpk",defaultMessage:[{type:0,value:"Start New Chat"}]},cred:{id:"sidepanel_title_cred",defaultMessage:[{type:0,value:"Confirm Credentials"}]},reset:{id:"sidepanel_title_reset",defaultMessage:[{type:0,value:"Reset Password"}]},archive:{id:"sidepanel_title_archive",defaultMessage:[{type:0,value:"Archived Chats"}]},blocked:{id:"sidepanel_title_blocked",defaultMessage:[{type:0,value:"Blocked Chats"}]},wallpapers:{id:"wallpapers",defaultMessage:[{type:0,value:"Wallpapers"}]}});class Na extends l().PureComponent{constructor(e){super(e),this.handleNewTopic=this.handleNewTopic.bind(this)}handleNewTopic(){this.props.onNavigate("newtpk")}render(){const{formatMessage:e}=this.props.intl,t=this.props.state||(this.props.myUserId?"contacts":"login");let s,a,n,i;return"contacts"==t?(s=this.props.title,a=!this.props.avatar||this.props.avatar,n=this.props.trustedBadges):(s=e(Aa[t]),a=!1,n=null),-1==["login","contacts"].indexOf(t)&&(i=this.props.onCancel),l().createElement("div",{id:"sidepanel"},l().createElement(Ys,{state:t,title:s,avatar:a,tinode:this.props.tinode,trustedBadges:n,myUserId:this.props.myUserId,onSignUp:this.props.onSignUp,onSettings:this.props.onSettings,onNewTopic:this.handleNewTopic,onCancel:i}),l().createElement(Hs.A,{level:this.props.errorLevel,text:this.props.errorText,action:this.props.errorAction,actionText:this.props.errorActionText,onClearError:this.props.onError}),l().createElement(zs.A,{show:this.props.loadSpinnerVisible}),"login"===t?l().createElement(na,{login:this.props.login,disabled:this.props.loginDisabled,persist:this.props.persist,onLogin:this.props.onLoginRequest,onPersistenceChange:this.props.onPersistenceChange}):"register"===t?l().createElement(o.Suspense,{fallback:l().createElement("div",{className:"panel-form-row"},l().createElement(d.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},l().createElement(_a,{tinode:this.props.tinode,reqCredMethod:this.props.reqCredMethod,onShowCountrySelector:this.props.onShowCountrySelector,onCreateAccount:this.props.onCreateAccount,onCancel:this.props.onCancel,onError:this.props.onError})):"settings"===t?l().createElement(wa,{transport:this.props.transport,serverAddress:this.props.serverAddress,secureConnection:this.props.secureConnection,onCancel:this.props.onCancel,onUpdate:this.props.onGlobalSettings}):"edit"===t?l().createElement(o.Suspense,{fallback:l().createElement("div",{className:"panel-form-row"},l().createElement(d.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},l().createElement(Ca,{tinode:this.props.tinode,myUserId:this.props.myUserId,trustedBadges:this.props.trustedBadges,reqCredMethod:this.props.reqCredMethod,onShowCountrySelector:this.props.onShowCountrySelector,onNavigate:this.props.onNavigate,onCredAdd:this.props.onCredAdd,onCredDelete:this.props.onCredDelete,onCredConfirm:this.props.onCredConfirm,onError:this.props.onError})):"general"===t||"crop"===t?l().createElement(Js.A,{topic:"me",tinode:this.props.tinode,myUserId:this.props.myUserId,reqCredMethod:this.props.reqCredMethod,onUpdateTopicDesc:this.props.onUpdateAccountDesc,onUpdateTagsRequest:this.props.onUpdateAccountTags,onError:this.props.onError}):"acc_general"===t?l().createElement(Zs,{colorSchema:this.props.colorSchema,onSelectWallpapers:this.props.onSelectWallpapers,textSize:this.props.textSize,sendOnEnter:this.props.sendOnEnter,onChangeColorSchema:this.props.onChangeColorSchema,onTextSizeChanged:this.props.onTextSizeChanged,onSendOnEnterChanged:this.props.onSendOnEnterChanged}):"notif"===t?l().createElement(ta,{messageSounds:this.props.messageSounds,desktopAlerts:this.props.desktopAlerts,desktopAlertsEnabled:this.props.desktopAlertsEnabled,onTogglePushNotifications:this.props.onTogglePushNotifications,onToggleMessageSounds:this.props.onToggleMessageSounds}):"security"===t?l().createElement(o.Suspense,{fallback:l().createElement("div",{className:"panel-form-row"},l().createElement(d.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},l().createElement(Ma,{tinode:this.props.tinode,incognitoMode:this.props.incognitoMode,onUpdateAccountDesc:this.props.onUpdateAccountDesc,onUpdatePassword:this.props.onUpdatePassword,onLogout:this.props.onLogout,onDeleteAccount:this.props.onDeleteAccount,onShowAlert:this.props.onShowAlert,onShowBlocked:this.props.onShowBlocked,onToggleIncognitoMode:this.props.onToggleIncognitoMode})):"support"===t?l().createElement(sa,{serverAddress:this.props.serverAddress,serverVersion:this.props.serverVersion}):"wallpapers"===t?l().createElement(o.Suspense,{fallback:l().createElement("div",{className:"panel-form-row"},l().createElement(d.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},l().createElement(ka,{wallpaper:this.props.wallpaper,wallpaperSize:this.props.wallpaperSize,wallpaperBlur:this.props.wallpaperBlur,colorSchema:"auto"!==this.props.colorSchema?this.props.colorSchema:this.props.systemColorSchema,onWallpaperSelected:this.props.onWallpaperSelected})):"contacts"===t||"archive"==t||"blocked"==t?l().createElement(Qs,{tinode:this.props.tinode,myUserId:this.props.myUserId,connected:this.props.connected,topicSelected:this.props.topicSelected,archive:"archive"==t,blocked:"blocked"==t,chatList:this.props.chatList,showContextMenu:this.props.showContextMenu,onTopicSelected:this.props.onTopicSelected,onShowArchive:this.props.onShowArchive}):"newtpk"===t?l().createElement(va,{tinode:this.props.tinode,searchResults:this.props.searchResults,onInitFind:this.props.onInitFind,onSearchContacts:this.props.onSearchContacts,onCreateTopic:this.props.onCreateTopic,onError:this.props.onError}):"cred"===t?l().createElement(Sa,{credCode:this.props.credCode,credMethod:this.props.credMethod,credToken:this.props.credToken,onSubmit:this.props.onValidateCredentials,onCancel:this.props.onCancel}):"reset"===t?l().createElement(o.Suspense,{fallback:l().createElement("div",{className:"panel-form-row"},l().createElement(d.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},l().createElement(Ta,{tinode:this.props.tinode,reqCredMethod:this.props.reqCredMethod,onShowCountrySelector:this.props.onShowCountrySelector,onRequest:this.props.onPasswordResetRequest,onReset:this.props.onResetPassword,onCancel:this.props.onCancel,onError:this.props.onError})):null)}}var Ia=(0,d.injectIntl)(Na),Da=r(257);function xa(){let e=As.HX;return"object"==typeof window.location&&("file:"==window.location.protocol||"localhost"==window.location.hostname?e=As.SE.local:window.location.hostname&&(e=window.location.hostname+(window.location.port?":"+window.location.port:""))),e}function Pa(){return"object"==typeof window.location&&"https:"==window.location.protocol}var Ra=r(8262);const Fa=l().lazy(e=>r.e(316).then(r.bind(r,4316))),Ua=l().lazy(e=>r.e(747).then(r.bind(r,7747))),La=l().lazy(e=>r.e(429).then(r.bind(r,6429))),Oa=new Audio("audio/msg.m4a"),ja=(0,d.defineMessages)({reconnect_countdown:{id:"reconnect_countdown",defaultMessage:[{type:0,value:"Disconnected. Reconnecting in "},{type:1,value:"seconds"},{type:0,value:"…"}]},reconnect_now:{id:"reconnect_now",defaultMessage:[{type:0,value:"Try now"}]},push_init_failed:{id:"push_init_failed",defaultMessage:[{type:0,value:"Failed to initialize push notifications"}]},invalid_security_token:{id:"invalid_security_token",defaultMessage:[{type:0,value:"Invalid security token"}]},no_connection:{id:"no_connection",defaultMessage:[{type:0,value:"No connection"}]},code_doesnot_match:{id:"code_doesnot_match",defaultMessage:[{type:0,value:"Code does not match"}]},menu_item_info:{id:"menu_item_info",defaultMessage:[{type:0,value:"Info"}]},menu_item_audio_call:{id:"menu_item_audio_call",defaultMessage:[{type:0,value:"Call"}]},menu_item_video_call:{id:"menu_item_video_call",defaultMessage:[{type:0,value:"Video call"}]},cred_confirmed_successfully:{id:"cred_confirmed_successfully",defaultMessage:[{type:0,value:"Confirmed successfully"}]},password_reset_success:{id:"password_reset_success",defaultMessage:[{type:0,value:"Password reset successfully"}]},select_country:{id:"select_country",defaultMessage:[{type:0,value:"Select country"}]}});class Ba extends l().Component{constructor(e){super(e),this.selfRef=l().createRef(),this.state=this.getBlankState(),this.handleResize=this.handleResize.bind(this),this.handleHashRoute=this.handleHashRoute.bind(this),this.handleOnline=this.handleOnline.bind(this),this.handleEscapeKey=this.handleEscapeKey.bind(this),this.handleColorSchemeChange=this.handleColorSchemeChange.bind(this),this.checkForAppUpdate=this.checkForAppUpdate.bind(this),this.handleVisibilityEvent=this.handleVisibilityEvent.bind(this),this.handleError=this.handleError.bind(this),this.handleLoginRequest=this.handleLoginRequest.bind(this),this.handlePersistenceChange=this.handlePersistenceChange.bind(this),this.handleConnected=this.handleConnected.bind(this),this.handleAutoreconnectIteration=this.handleAutoreconnectIteration.bind(this),this.doLogin=this.doLogin.bind(this),this.handleLoginSuccessful=this.handleLoginSuccessful.bind(this),this.handleDisconnect=this.handleDisconnect.bind(this),this.tnMeMetaDesc=this.tnMeMetaDesc.bind(this),this.tnMeContactUpdate=this.tnMeContactUpdate.bind(this),this.tnMeSubsUpdated=this.tnMeSubsUpdated.bind(this),this.resetContactList=this.resetContactList.bind(this),this.tnInitFind=this.tnInitFind.bind(this),this.tnFndSubsUpdated=this.tnFndSubsUpdated.bind(this),this.handleSearchContacts=this.handleSearchContacts.bind(this),this.handleTopicSelected=this.handleTopicSelected.bind(this),this.handleHideMessagesView=this.handleHideMessagesView.bind(this),this.handleSendMessage=this.handleSendMessage.bind(this),this.handleNewChatInvitation=this.handleNewChatInvitation.bind(this),this.handleNewAccount=this.handleNewAccount.bind(this),this.handleNewAccountRequest=this.handleNewAccountRequest.bind(this),this.handleUpdatePasswordRequest=this.handleUpdatePasswordRequest.bind(this),this.handleUpdateAccountTagsRequest=this.handleUpdateAccountTagsRequest.bind(this),this.handleToggleIncognitoMode=this.handleToggleIncognitoMode.bind(this),this.handleChangeColorSchema=this.handleChangeColorSchema.bind(this),this.handleChangeTextSize=this.handleChangeTextSize.bind(this),this.handleSendOnEnter=this.handleSendOnEnter.bind(this),this.handleSelectWallpapers=this.handleSelectWallpapers.bind(this),this.handleWallpaperSelected=this.handleWallpaperSelected.bind(this),this.handleSettings=this.handleSettings.bind(this),this.handleGlobalSettings=this.handleGlobalSettings.bind(this),this.handleShowArchive=this.handleShowArchive.bind(this),this.handleShowBlocked=this.handleShowBlocked.bind(this),this.handleToggleMessageSounds=this.handleToggleMessageSounds.bind(this),this.handleCredAdd=this.handleCredAdd.bind(this),this.handleCredDelete=this.handleCredDelete.bind(this),this.handleCredConfirm=this.handleCredConfirm.bind(this),this.initFCMessaging=this.initFCMessaging.bind(this),this.toggleFCMToken=this.toggleFCMToken.bind(this),this.handlePushMessage=this.handlePushMessage.bind(this),this.handleSidepanelCancel=this.handleSidepanelCancel.bind(this),this.handleStartTopicRequest=this.handleStartTopicRequest.bind(this),this.handleNewTopicCreated=this.handleNewTopicCreated.bind(this),this.handleTopicUpdateRequest=this.handleTopicUpdateRequest.bind(this),this.handleUnarchive=this.handleUnarchive.bind(this),this.handleChangePermissions=this.handleChangePermissions.bind(this),this.handleTagsUpdateRequest=this.handleTagsUpdateRequest.bind(this),this.handleLogout=this.handleLogout.bind(this),this.handleDeleteAccount=this.handleDeleteAccount.bind(this),this.handleDeleteTopicRequest=this.handleDeleteTopicRequest.bind(this),this.handleDeleteMessagesRequest=this.handleDeleteMessagesRequest.bind(this),this.handleLeaveUnsubRequest=this.handleLeaveUnsubRequest.bind(this),this.handleBlockTopicRequest=this.handleBlockTopicRequest.bind(this),this.handleReportTopic=this.handleReportTopic.bind(this),this.handleShareTheCard=this.handleShareTheCard.bind(this),this.handleShowContextMenu=this.handleShowContextMenu.bind(this),this.defaultTopicContextMenu=this.defaultTopicContextMenu.bind(this),this.handleHideContextMenu=this.handleHideContextMenu.bind(this),this.handleShowAlert=this.handleShowAlert.bind(this),this.handleShowInfoView=this.handleShowInfoView.bind(this),this.handleMemberUpdateRequest=this.handleMemberUpdateRequest.bind(this),this.handleValidateCredentialsRequest=this.handleValidateCredentialsRequest.bind(this),this.handlePasswordResetRequest=this.handlePasswordResetRequest.bind(this),this.handleResetPassword=this.handleResetPassword.bind(this),this.handleContextMenuAction=this.handleContextMenuAction.bind(this),this.handleShowCountrySelector=this.handleShowCountrySelector.bind(this),this.handleShowForwardDialog=this.handleShowForwardDialog.bind(this),this.handleHideForwardDialog=this.handleHideForwardDialog.bind(this),this.handleStartVideoCall=this.handleStartVideoCall.bind(this),this.handleStartAudioCall=this.handleStartAudioCall.bind(this),this.handleInfoMessage=this.handleInfoMessage.bind(this),this.handleDataMessage=this.handleDataMessage.bind(this),this.handleCallClose=this.handleCallClose.bind(this),this.handleCallInvite=this.handleCallInvite.bind(this),this.handleCallRinging=this.handleCallRinging.bind(this),this.handleCallHangup=this.handleCallHangup.bind(this),this.handleCallSendOffer=this.handleCallSendOffer.bind(this),this.handleCallIceCandidate=this.handleCallIceCandidate.bind(this),this.handleCallSendAnswer=this.handleCallSendAnswer.bind(this),this.handleCallAccept=this.handleCallAccept.bind(this),this.sendMessageToTopic=this.sendMessageToTopic.bind(this),this.callTimeoutTimer=null}getBlankState(){const e=Ra.A.getObject("settings")||{},t=!!Ra.A.getObject("keep-logged-in");if(!e.wallpaper){const t=(0,Gs.KY)();e.wallpaper=t.name||"",e.wallpaperSize=t.size||0,e.wallpaperBlur=0}return{connected:!1,ready:!1,autoLogin:!1,transport:e.transport||null,serverAddress:e.serverAddress||xa(),secureConnection:void 0===e.secureConnection?Pa():e.secureConnection,serverVersion:"no connection",messageSounds:!e.messageSoundsOff,incognitoMode:!1,colorSchema:e.colorSchema||As.gb,systemColorSchema:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",wallpaper:e.wallpaper,wallpaperSize:e.wallpaperSize,wallpaperBlur:0,textSize:e.textSize||As.cL,sendOnEnter:e.sendOnEnter||"plain",desktopAlerts:t&&!!e.desktopAlerts,desktopAlertsEnabled:(Pa()||"object"==typeof window.location&&"localhost"==window.location.hostname)&&void 0!==He&&"undefined"!=typeof navigator&&"undefined"!=typeof FIREBASE_INIT,firebaseToken:t?Ra.A.getObject("firebase-token"):null,applicationVisible:!document.hidden,errorText:"",errorLevel:null,errorAction:void 0,errorActionText:null,sidePanelSelected:"login",sidePanelTitle:null,sidePanelAvatar:null,myTrustedBadges:[],loadSpinnerVisible:!1,login:"",password:"",persist:t,myUserId:null,liveConnection:navigator.onLine,topicSelected:"",topicSelectedOnline:!1,topicSelectedAcs:null,newTopicParams:null,loginDisabled:!1,displayMobile:window.innerWidth<=As.VJ,infoPanel:void 0,mobilePanel:"sidepanel",callTopic:void 0,callState:Ls.Gv,callAudioOnly:void 0,callShouldStart:!1,contextMenuVisible:!1,contextMenuBounds:null,contextMenuClickAt:null,contextMenuParams:null,contextMenuItems:[],forwardDialogVisible:!1,forwardMessage:null,alertVisible:!1,alertParams:{},chatList:[],searchResults:[],searchableContacts:[],reqCredMethod:void 0,credMethod:void 0,credCode:void 0,credToken:void 0,requestedTopic:void 0}}componentDidMount(){if(window.addEventListener("resize",this.handleResize),this.handleOnlineOn=e=>{this.handleOnline(!0)},window.addEventListener("online",this.handleOnlineOn),this.handleOnlineOff=e=>{this.handleOnline(!1)},window.addEventListener("offline",this.handleOnlineOff),window.addEventListener("hashchange",this.handleHashRoute),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",this.handleColorSchemeChange),document.addEventListener("visibilitychange",this.handleVisibilityEvent),document.addEventListener("keydown",this.handleEscapeKey),document.documentElement.style.colorScheme="auto"==this.state.colorSchema?"light dark":this.state.colorSchema,document.documentElement.style.setProperty("--message-text-size",`${this.state.textSize}pt`),this.applyWallpaperSettings(this.state.wallpaper,this.state.wallpaperSize,this.state.wallpaperBlur,"auto"==this.state.colorSchema?this.state.systemColorSchema:this.state.colorSchema),"function"==typeof BroadcastChannel){new BroadcastChannel("tinode-sw").addEventListener("message",this.handlePushMessage)}else console.warn("Your browser does not support BroadcastChannel. Some features will not be available");this.lastWakeUpCheck=(new Date).getTime(),this.wakeUpTicker=setInterval(e=>{const t=(new Date).getTime();t-this.lastWakeUpCheck>As.hT&&this.handleOnlineOn(),this.lastWakeUpCheck=t},As.ZW),this.setState({viewportWidth:document.documentElement.clientWidth,viewportHeight:document.documentElement.clientHeight}),new Promise((e,t)=>{this.tinode=Ba.tnSetup(this.state.serverAddress,Pa(),this.state.transport,this.props.intl.locale,this.state.persist,e),this.tinode.onConnect=this.handleConnected,this.tinode.onDisconnect=this.handleDisconnect,this.tinode.onAutoreconnectIteration=this.handleAutoreconnectIteration,this.tinode.onInfoMessage=this.handleInfoMessage,this.tinode.onDataMessage=this.handleDataMessage}).then(e=>{this.state.desktopAlertsEnabled&&this.initFCMessaging().catch(e=>{}),this.resetContactList();const t=this.state.persist?Ra.A.getObject("auth-token"):void 0;t&&(this.setState({autoLogin:!0}),t.expires=new Date(t.expires),this.tinode.setAuthToken(t),this.tinode.connect().catch(e=>{this.handleError(e.message,"err")}));const s=ma.A.parseUrlHash(window.location.hash);if(["cred","reset","register"].includes(s.path[0]))this.handleHashRoute();else{this.setState({requestedTopic:s.path[1]});const e=s.params&&s.params.cred_done?ma.A.addUrlParam("","cred_done",s.params.cred_done):"";ma.A.navigateTo(e)}})}componentWillUnmount(){window.removeEventListener("resize",this.handleResize),window.removeEventListener("hashchange",this.handleHashRoute),window.removeEventListener("online",this.handleOnlineOn),window.removeEventListener("offline",this.handleOnlineOff),window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",this.handleColorSchemeChange),document.removeEventListener("visibilitychange",this.handleVisibilityEvent),document.removeEventListener("keydown",this.handleEscapeKey),clearInterval(this.wakeUpTicker)}static tnSetup(e,t,s,a,n,i){const r=new Ts.Tinode({appName:As.C3,host:e,apiKey:As.Lq,transport:s,secure:t,persist:n},i);return r.setHumanLanguage(a),r.enableLogging(As.U3,!0),r}handlePushMessage(e){this.tinode.oobNotification(e.data||{})}initFCMessaging(){const{formatMessage:e,locale:t}=this.props.intl,s=(t,s)=>{console.error(t,s),this.handleError(e(ja.push_init_failed),"err"),this.setState({firebaseToken:null}),Ra.A.updateObject("settings",{desktopAlerts:!1})};try{return this.fcm=Ss(He(FIREBASE_INIT,As.C3)),navigator.serviceWorker.getRegistration("/service-worker.js").then(e=>e||navigator.serviceWorker.register("/service-worker.js").then(e=>(this.checkForAppUpdate(e),e))).then(e=>((e.active||e.installing).postMessage(JSON.stringify({locale:t,version:Da.i})),Ba.requestFCMToken(this.fcm,e))).then(e=>{const t=Ra.A.getObject("keep-logged-in");e!=this.state.firebaseToken&&(this.tinode.setDeviceToken(e),t&&Ra.A.setObject("firebase-token",e)),this.setState({firebaseToken:e,desktopAlerts:!0}),t&&Ra.A.updateObject("settings",{desktopAlerts:!0}),Ms(this.fcm,e=>{this.handlePushMessage(e)})}).catch(e=>{throw s(e),e})}catch(e){return s(e),Promise.reject(e)}}static requestFCMToken(e,t){return Cs(e,{serviceWorkerRegistration:t,vapidKey:FIREBASE_INIT.messagingVapidKey}).then(t=>{if(t)return t;if("undefined"!=typeof Notification)return Notification.requestPermission().then(t=>{if("granted"===t)return Cs(e,{serviceWorkerRegistration:reg,vapidKey:FIREBASE_INIT.messagingVapidKey}).then(e=>{if(e)return e;throw new Error("Failed to initialize notifications")});throw new Error("No permission to send notifications: "+t)});throw new Error("Notifications are not supported")})}handleResize(){const e=document.documentElement.clientWidth<=As.VJ;this.setState({viewportWidth:document.documentElement.clientWidth,viewportHeight:document.documentElement.clientHeight}),this.state.displayMobile!=e&&this.setState({displayMobile:e})}handleEscapeKey(e){"Escape"!==e.key&&27!==e.keyCode||(this.setState({topicSelected:null,errorText:"",errorLevel:null,mobilePanel:"sidepanel",topicSelectedOnline:!1,topicSelectedAcs:null,infoPanel:void 0,forwardMessage:null,contextMenuVisible:!1,forwardDialogVisible:!1,alertVisible:!1}),ma.A.navigateTo(ma.A.setUrlTopic("",null)))}checkForAppUpdate(e){e.onupdatefound=t=>{const s=e.installing;s.onstatechange=e=>{if("installed"==s.state&&navigator.serviceWorker.controller){const e=l().createElement(l().Fragment,null,l().createElement(d.FormattedMessage,{id:"update_available",defaultMessage:[{type:0,value:"Update available."}]})," ",l().createElement("a",{href:""},l().createElement(d.FormattedMessage,{id:"reload_update",defaultMessage:[{type:0,value:"Reload"}]})),".");this.handleError(e,"info")}}}}handleHashRoute(){const e=ma.A.parseUrlHash(window.location.hash),t={infoPanel:e.params.info,newTopicTabSelected:e.params.tab};if(e.path&&e.path.length>0){["acc_general","archive","blocked","contacts","cred","crop","edit","general","newtpk","notif","register","reset","security","settings","support","wallpapers",""].includes(e.path[0])?t.sidePanelSelected=e.path[0]:console.warn("Unknown sidepanel view",e.path[0]);let s=e.path[1]||null;s!=this.state.topicSelected&&(Ts.Tinode.topicType(s)?t.mobilePanel="topic-view":(s=null,t.mobilePanel="sidepanel"),Object.assign(t,{topicSelected:s,topicSelectedAcs:this.tinode.getTopicAccessMode(s)}))}else Object.assign(t,{sidePanelSelected:"",topicSelected:null});e.params.method&&(t.credMethod=e.params.method),e.params.code&&(t.credCode=e.params.code),e.params.token&&(t.credToken=e.params.token),e.params.cred_done&&Object.assign(t,Ba.stateForError(this.props.intl.formatMessage(ja.cred_confirmed_successfully),"info")),this.setState(t)}handleOnline(e){e?(this.handleError(),clearInterval(this.reconnectCountdown),this.tinode.reconnect()):this.handleError(this.props.intl.formatMessage(ja.no_connection),"warn"),this.setState({liveConnection:e})}handleVisibilityEvent(){this.setState({applicationVisible:!document.hidden})}static stateForError(e,t,s,a){return{errorText:e,errorLevel:t,errorAction:s,errorActionText:a,callShouldStart:!1}}handleError(e,t,s,a){this.setState(Ba.stateForError(e,t,s,a))}handleLoginRequest(e,t){this.setState({loginDisabled:!0,login:e,password:t,loadSpinnerVisible:!0,autoLogin:!0}),this.handleError("",null),this.tinode.isConnected()?this.doLogin(e,t,null,{meth:this.state.credMethod,resp:this.state.credCode}):this.tinode.connect().catch(e=>{this.setState({loginDisabled:!1,autoLogin:!1,loadSpinnerVisible:!1}),this.handleError(e.message,"err")}),this.state.desktopAlertsEnabled&&!this.state.firebaseToken&&this.initFCMessaging()}handlePersistenceChange(e){e?this.tinode.initStorage().then(e=>{Ra.A.setObject("keep-logged-in",!0),this.setState({persist:!0})}):this.tinode.clearStorage().then(e=>{Ra.A.setObject("keep-logged-in",!1),this.setState({persist:!1})})}handleConnected(){clearInterval(this.reconnectCountdown),this.handleError();const e=this.tinode.getServerInfo();this.setState({serverVersion:e.ver+" "+(e.build?e.build:"none"),reqCredMethod:((e.reqCred||{}).auth||[])[0]||"email"}),this.state.autoLogin&&this.doLogin(this.state.login,this.state.password,null,{meth:this.state.credMethod,resp:this.state.credCode})}handleAutoreconnectIteration(e,t){if(clearInterval(this.reconnectCountdown),e<0)return void this.handleError();if(t)return void t.then(e=>{this.handleError()}).catch(e=>{this.handleError(e.message,"err")});const{formatMessage:s}=this.props.intl;let a=e/1e3;a|=a,this.reconnectCountdown=setInterval(e=>{if(a<-10)return clearInterval(this.reconnectCountdown),void this.tinode.reconnect();const t=a>99?(0,js.Ye)(a):a;this.handleError(s(ja.reconnect_countdown,{seconds:t}),"warn",e=>{clearInterval(this.reconnectCountdown),this.tinode.reconnect()},s(ja.reconnect_now)),a-=1},1e3)}handleDisconnect(e){this.setState({connected:!1,ready:!1,topicSelectedOnline:!1,errorText:e&&e.message?e.message:"Disconnected",errorLevel:e&&e.message?"err":"warn",loginDisabled:!1,contextMenuVisible:!1,forwardDialogVisible:!1,serverVersion:"no connection"})}doLogin(e,t,s,a){if(this.tinode.isAuthenticated())return void ma.A.navigateTo("");let n=s||(this.tinode.getAuthToken()||{}).token;if(!(e&&t||n))return ma.A.navigateTo(""),void this.setState({loginDisabled:!1});a=Ts.Tinode.credential(a);let i,r=this.tinode.isConnected()?Promise.resolve():this.tinode.connect();e&&t?(n=null,this.setState({password:null}),i=r.then(s=>this.tinode.loginBasic(e,t,a))):i=r.then(e=>this.tinode.loginToken(n,a)),i.then(e=>{e.code>=300&&"validate credentials"===e.text?(this.setState({loadSpinnerVisible:!1}),a&&this.handleError(this.props.intl.formatMessage(ja.code_doesnot_match),"warn"),Ba.navigateToCredentialsView(e.params)):this.handleLoginSuccessful()}).catch(e=>{const t=e.code>=500;this.setState({loginDisabled:!1,credMethod:void 0,credCode:void 0,loadSpinnerVisible:!1,autoLogin:t}),this.handleError(e.message,"err"),console.warn("Login failed",e),t||(n&&this.handleLogout(),ma.A.navigateTo(""))})}static navigateToCredentialsView(e){const t=ma.A.parseUrlHash(window.location.hash);t.path[0]="cred",t.params.method=e.cred[0],t.params.token=e.token,t.params.code=e.code,ma.A.navigateTo(ma.A.composeUrlHash(t.path,t.params))}handleLoginSuccessful(){this.handleError(),Ra.A.getObject("keep-logged-in")&&Ra.A.setObject("auth-token",this.tinode.getAuthToken());const e=this.state.requestedTopic,t=this.tinode.getMeTopic();t.onMetaDesc=this.tnMeMetaDesc,t.onContactUpdate=this.tnMeContactUpdate,t.onSubsUpdated=this.tnMeSubsUpdated,this.setState({connected:!0,credMethod:void 0,credCode:void 0,credToken:void 0,myUserId:this.tinode.getCurrentUserID(),autoLogin:!0,requestedTopic:void 0}),t.subscribe(t.startMetaQuery().withLaterSub().withDesc().withTags().withCred().build()).catch(e=>{this.tinode.disconnect(),localStorage.removeItem("auth-token"),this.handleError(e.message,"err"),ma.A.navigateTo("")}).finally(e=>{this.setState({loadSpinnerVisible:!1})});let s=ma.A.setUrlSidePanel(window.location.hash,"contacts");e&&(s=ma.A.setUrlTopic(s,e)),ma.A.navigateTo(s)}tnMeMetaDesc(e){if(e){if(e.public&&this.setState({sidePanelTitle:e.public.fn,sidePanelAvatar:(0,Os.to)(e.public.photo)}),e.trusted){const t=[];for(const[s,a]of Object.entries(e.trusted))a&&t.push(s);this.setState({myTrustedBadges:t})}e.acs&&this.setState({incognitoMode:!e.acs.isPresencer()}),Ba.checkIfPinsUpdated(e,this.state.chatList)&&this.resetContactList()}}tnMeContactUpdate(e,t){if("on"==e||"off"==e)this.resetContactList(),this.state.topicSelected==t.topic&&this.setState({topicSelectedOnline:"on"==e});else if("read"==e)this.resetContactList();else if("msg"==e&&t){const e=this.tinode.getTopic(t.topic),s=e&&e.isArchived();t.unread>0&&this.state.messageSounds&&!s&&(document.hidden||this.state.topicSelected!=t.topic)&&Oa.play().catch(e=>{}),this.resetContactList()}else"recv"==e||("gone"==e||"unsub"==e?(this.state.topicSelected==t.topic&&this.handleTopicSelected(null),this.resetContactList()):"acs"==e?this.state.topicSelected==t.topic&&this.setState({topicSelectedAcs:t.acs}):"del"==e||"upd"==e||"call"==e||console.info("Unsupported (yet) presence update:",e,"in",(t||{}).topic))}tnMeSubsUpdated(e){this.resetContactList()}static prepareSearchableContacts(e,t){const s={};for(const t of e)Ts.Tinode.isP2PTopicName(t.topic)&&(s[t.topic]={user:t.topic,updated:t.updated,public:t.public,private:t.private,acs:t.acs});for(const e of t)s[e.user]||(s[e.user]=e);return Object.values(s)}resetContactList(){const e={chatList:[]};this.state.ready||(e.ready=!0);const t=this.tinode.getMeTopic();t.contacts(t=>{t.topic||t.user||(t.topic=t.name),e.chatList.push(t),this.state.topicSelected==t.topic&&(e.topicSelectedOnline=t.online,e.topicSelectedAcs=t.acs)});const s=new Date(0);e.chatList.sort((e,a)=>{const n=t.pinnedTopicRank(a.topic)-t.pinnedTopicRank(e.topic);return 0!=n?n:(a.touched||s).getTime()-(e.touched||s).getTime()}),e.searchableContacts=Ba.prepareSearchableContacts(e.chatList,this.state.searchResults),this.setState(e)}static checkIfPinsUpdated(e,t){for(let s=0;s<t.length;s++){const a=t[s];if(!!e.pinnedTopicRank(a.topic)!=a.pinned)return!0}return!1}tnInitFind(){const e=this.tinode.getFndTopic();e.onSubsUpdated=this.tnFndSubsUpdated,e.isSubscribed()?this.tnFndSubsUpdated():e.subscribe(e.startMetaQuery().withSub().build()).catch(e=>{this.handleError(e.message,"err")})}tnFndSubsUpdated(){const e=[];this.tinode.getFndTopic().contacts(t=>{e.push(t)}),this.setState({searchResults:e,searchableContacts:Ba.prepareSearchableContacts(this.state.chatList,e)})}handleSearchContacts(e){const t=this.tinode.getFndTopic();t.setMeta({desc:{public:e}}).then(e=>t.getMeta(t.startMetaQuery().withSub().build())).catch(e=>this.handleError(e.message,"err"))}handleTopicSelected(e){this.state.newTopicParams&&this.state.newTopicParams._topicName!=e&&this.setState({newTopicParams:null}),e?(this.setState({errorText:"",errorLevel:null,mobilePanel:"topic-view",infoPanel:void 0}),this.state.topicSelected!=e&&(this.setState({topicSelectedOnline:this.tinode.isTopicOnline(e),topicSelectedAcs:this.tinode.getTopicAccessMode(e),forwardMessage:null}),ma.A.navigateTo(ma.A.setUrlTopic("",e)))):(this.setState({topicSelected:null,errorText:"",errorLevel:null,mobilePanel:"sidepanel",topicSelectedOnline:!1,topicSelectedAcs:null,infoPanel:void 0,forwardMessage:null}),ma.A.navigateTo(ma.A.setUrlTopic("",null)))}handleHideMessagesView(){this.setState({mobilePanel:"sidepanel"}),ma.A.navigateTo(ma.A.setUrlTopic(window.location.hash,null))}handleSendMessage(e,t,s,a){const n=this.tinode.getTopic(this.state.topicSelected);return this.sendMessageToTopic(n,e,t,s,a)}sendMessageToTopic(e,t,s,a,n){(t=e.createMessage(t,!1))._uploader=a,n&&(t.head=Object.assign(t.head||{},n));const i=[];if(s&&i.push(s),!e.isSubscribed()){const s=e.subscribe().then(s=>{let a=[];e.queuedMessages(s=>{s._sending||s.seq==t.seq||(s.head&&s.head.webrtc?a.push(s.seq):e.isSubscribed()&&e.publishMessage(s))}),a.length>0&&e.delMessagesList(a,!0)});i.push(s)}return e.publishDraft(t,Promise.all(i)).then(t=>(e.isArchived()&&e.archive(!1),t)).catch(e=>this.handleError(e.message,"err"))}handleNewChatInvitation(e,t){const s=this.tinode.getTopic(e);let a=null;switch(t){case"accept":const n=s.getAccessMode().getGiven();a=s.setMeta({sub:{mode:n}}),s.isP2PType()&&(a=a.then(t=>s.setMeta({sub:{user:e,mode:n}})));break;case"delete":a=s.delTopic(!0);break;case"block":const i=s.getAccessMode().updateWant("-JP").getWant();a=s.setMeta({sub:{mode:i}}).then(e=>this.handleTopicSelected(null));break;default:console.warn("Unknown invitation action",'"'+t+'""')}null!=a&&a.catch(e=>this.handleError(e.message,"err"))}handleNewAccount(){this.handleError(),ma.A.navigateTo(ma.A.setUrlSidePanel(window.location.hash,"register"))}handleNewAccountRequest(e,t,s,a,n){this.handleError(),this.tinode.connect(this.state.serverAddress).then(i=>{let r;return s&&s.photo&&s.photo.ref&&(r=[s.photo.ref]),this.tinode.createAccountBasic(e,t,{public:s,tags:n,cred:Ts.Tinode.credential(a),attachments:r})}).then(e=>{e.code>=300&&"validate credentials"==e.text?Ba.navigateToCredentialsView(e.params):this.handleLoginSuccessful(this)}).catch(e=>{this.handleError(e.message,"err")})}handleToggleIncognitoMode(e){this.setState({incognitoMode:null});const t=this.tinode.getMeTopic(),s=t.getAccessMode().updateWant(e?"-P":"+P").getWant();t.setMeta({sub:{mode:s}}).catch(t=>{this.setState({incognitoMode:!e}),this.handleError(t.message,"err")})}handleChangeColorSchema(e){this.setState({colorSchema:e}),Ra.A.updateObject("settings",{colorSchema:e}),document.documentElement.style.colorScheme="auto"==e?"light dark":e,this.applyColorSchema(e,this.state.systemColorSchema,this.state.wallpaperSize)}handleColorSchemeChange(e){const t=e.matches?"dark":"light";this.setState({systemColorSchema:t}),this.applyColorSchema(this.state.colorSchema,t,this.state.wallpaperSize)}applyColorSchema(e,t,s){const a="auto"==e?t:e;document.documentElement.style.setProperty("--wallpaper-invert","dark"==a&&s?"1":"0"),document.documentElement.style.setProperty("--wallpaper-brightness","dark"!=a||s?"1":"0.5")}handleSelectWallpapers(){this.handleError(),ma.A.navigateTo(ma.A.setUrlSidePanel(window.location.hash,"wallpapers"))}applyWallpaperSettings(e,t,s,a){document.documentElement.style.setProperty("--wallpaper-url",`url('${e}')`),document.documentElement.style.setProperty("--wallpaper-repeat",t?"repeat":"no-repeat"),document.documentElement.style.setProperty("--wallpaper-blur",t?"0px":`${s}px`),document.documentElement.style.setProperty("--wallpaper-size",t?`${t}px`:"cover"),document.documentElement.style.setProperty("--wallpaper-position",t?"unset":"center"),document.documentElement.style.setProperty("--wallpaper-invert","dark"==a&&t?"1":"0"),document.documentElement.style.setProperty("--wallpaper-brightness","dark"!=a||t?"1":"0.5")}handleWallpaperSelected(e,t,s){this.handleError(),Ra.A.updateObject("settings",{wallpaper:e,wallpaperSize:t,wallpaperBlur:s}),this.setState({wallpaper:e,wallpaperSize:t,wallpaperBlur:s}),this.applyWallpaperSettings(e,t,s,"auto"==this.state.colorSchema?this.state.systemColorSchema:this.state.colorSchema)}handleChangeTextSize(e){this.setState({textSize:0|e}),Ra.A.updateObject("settings",{textSize:e}),document.documentElement.style.setProperty("--message-text-size",`${e}pt`)}handleSendOnEnter(e){this.setState({sendOnEnter:e}),Ra.A.updateObject("settings",{sendOnEnter:e})}handleUpdateAccountTagsRequest(e,t){this.tinode.getMeTopic().setMeta({tags:t}).catch(e=>this.handleError(e.message,"err"))}handleSettings(){this.handleError(),ma.A.navigateTo(ma.A.setUrlSidePanel(window.location.hash,this.state.myUserId?"edit":"settings"))}handleGlobalSettings(e){const t=e.serverAddress||this.state.serverAddress,s=e.transport||this.state.transport,a=void 0===e.secureConnection?this.state.secureConnection:e.secureConnection;this.tinode&&(this.tinode.clearStorage(),this.tinode.onDisconnect=void 0,this.tinode.disconnect()),this.tinode=Ba.tnSetup(t,a,s,this.props.intl.locale,Ra.A.getObject("keep-logged-in")),this.tinode.onConnect=this.handleConnected,this.tinode.onDisconnect=this.handleDisconnect,this.tinode.onAutoreconnectIteration=this.handleAutoreconnectIteration,this.tinode.onInfoMessage=this.handleInfoMessage,this.tinode.onDataMessage=this.handleDataMessage,this.setState({serverAddress:t,transport:s,secureConnection:a}),Ra.A.setObject("settings",{serverAddress:t,transport:s,secureConnection:a}),ma.A.navigateTo(ma.A.setUrlSidePanel(window.location.hash,""))}handleShowArchive(){ma.A.navigateTo(ma.A.setUrlSidePanel(window.location.hash,this.state.myUserId?"archive":""))}handleShowBlocked(){ma.A.navigateTo(ma.A.setUrlSidePanel(window.location.hash,this.state.myUserId?"blocked":""))}toggleFCMToken(e){e?(this.setState({desktopAlerts:null}),this.state.firebaseToken?(this.setState({desktopAlerts:!0}),Ra.A.getObject("keep-logged-in")&&Ra.A.updateObject("settings",{desktopAlerts:!0})):this.initFCMessaging()):this.state.firebaseToken&&this.fcm?_s(this.fcm).catch(e=>{console.error("Unable to delete token.",e)}).finally(e=>{Ra.A.updateObject("settings",{desktopAlerts:!1}),localStorage.removeItem("firebase-token"),this.setState({desktopAlerts:!1,firebaseToken:null}),this.tinode.setDeviceToken(null)}):(this.setState({desktopAlerts:!1,firebaseToken:null}),Ra.A.updateObject("settings",{desktopAlerts:!1}))}handleToggleMessageSounds(e){this.setState({messageSounds:e}),Ra.A.updateObject("settings",{messageSoundsOff:!e})}handleCredAdd(e,t){this.tinode.getMeTopic().setMeta({cred:{meth:e,val:t}}).catch(e=>this.handleError(e.message,"err"))}handleCredDelete(e,t){this.tinode.getMeTopic().delCredential(e,t).catch(e=>this.handleError(e.message,"err"))}handleCredConfirm(e,t){Ba.navigateToCredentialsView({cred:[e],code:t})}handleSidepanelCancel(){const e=ma.A.parseUrlHash(window.location.hash);let t="";["security","support","general","notif","acc_general"].includes(e.path[0])?t="edit":"crop"==e.path[0]?t="general":"blocked"==e.path[0]?t="security":"wallpapers"==e.path[0]?t="acc_general":this.state.myUserId&&(t="contacts"),e.path[0]=t,e.params&&(delete e.params.code,delete e.params.method,delete e.params.tab,delete e.params.scheme,delete e.params.token),ma.A.navigateTo(ma.A.composeUrlHash(e.path,e.params)),this.setState({errorText:"",errorLevel:null})}basicNavigator(e){ma.A.navigateTo(ma.A.setUrlSidePanel(window.location.hash,e))}infoNavigator(e){ma.A.navigateTo(ma.A.setUrlInfoPanel(window.location.hash,e))}handleStartTopicRequest(e,t,s){if(e&&this.tinode.isTopicCached(e))return void this.handleTopicSelected(e);const a={};Ts.Tinode.isP2PTopicName(e)?(a.sub={mode:As.cZ},a.desc={defacs:{auth:As.cZ}}):(e=e||this.tinode.newGroupTopicName(s),t&&(a.desc={public:t.public,private:{comment:t.private}},a.tags=t.tags)),a._topicName=e,this.setState({newTopicParams:a},t=>{this.handleTopicSelected(e)})}handleNewTopicCreated(e,t){let s={};this.state.callShouldStart&&(s={callState:Ls.d1,callShouldStart:!1}),this.state.topicSelected==e&&e!=t&&(s.topicSelected=t),this.setState(s,e=>{ma.A.navigateTo(ma.A.setUrlTopic("",t))})}handleTopicUpdateRequest(e,t,s,a){this.handleError();const n=this.tinode.getTopic(e);if(n){const e={};let i;t&&(t.photo&&(t.photo.ref&&t.photo.ref!=Ts.Tinode.DEL_CHAR?i=[t.photo.ref]:t.photo.data&&t.photo.data!=Ts.Tinode.DEL_CHAR||(t.photo=Ts.Tinode.DEL_CHAR)),e.public=t),"string"==typeof s&&(e.private=s===Ts.Tinode.DEL_CHAR?Ts.Tinode.DEL_CHAR:{comment:s}),a&&(e.defacs=a),n.setMeta({desc:e,attachments:i}).catch(e=>this.handleError(e.message,"err"))}}handleUnarchive(e){const t=this.tinode.getTopic(e);t&&t.archive(!1).catch(e=>this.handleError(e.message,"err"))}handleUpdatePasswordRequest(e){this.handleError(),e&&this.tinode.updateAccountBasic(null,this.tinode.getCurrentLogin(),e).catch(e=>this.handleError(e.message,"err"))}handleChangePermissions(e,t,s){const a=this.tinode.getTopic(e);if(a){const e=a.getAccessMode();s?(e.updateGiven(t),t=e.getGiven()):(e.updateWant(t),t=e.getWant()),a.setMeta({sub:{user:s,mode:t}}).catch(e=>this.handleError(e.message,"err"))}}handleTagsUpdateRequest(e,t){const s=this.tinode.getTopic(e);s&&s.setMeta({tags:t}).catch(e=>this.handleError(e.message,"err"))}handleLogout(){let e;(0,Gs.OM)(0),localStorage.removeItem("auth-token"),localStorage.removeItem("firebase-token"),localStorage.removeItem("settings"),this.state.firebaseToken&&_s(this.fcm),document.documentElement.style.colorScheme="auto"==As.gb?"light dark":As.gb,document.documentElement.style.setProperty("--message-text-size",`${As.cL}pt`),clearInterval(this.reconnectCountdown),this.tinode?(e=this.tinode.clearStorage(),this.tinode.onDisconnect=void 0,this.tinode.disconnect()):e=Promose.resolve(),this.setState(this.getBlankState()),e.then(e=>{this.tinode=Ba.tnSetup(this.state.serverAddress,Pa(),this.state.transport,this.props.intl.locale,Ra.A.getObject("keep-logged-in"),e=>{this.tinode.onConnect=this.handleConnected,this.tinode.onDisconnect=this.handleDisconnect,this.tinode.onAutoreconnectIteration=this.handleAutoreconnectIteration,this.tinode.onInfoMessage=this.handleInfoMessage,this.tinode.onDataMessage=this.handleDataMessage,ma.A.navigateTo("")})})}handleDeleteAccount(){this.tinode.delCurrentUser(!0).then(e=>{this.handleLogout()})}handleDeleteTopicRequest(e){const t=this.tinode.getTopic(e);t&&t.delTopic(!0).then(e=>{ma.A.navigateTo(ma.A.setUrlTopic(window.location.hash,""))}).catch(e=>{this.handleError(e.message,"err")})}handleDeleteMessagesRequest(e){const t=this.tinode.getTopic(e);t&&t.delMessagesAll(!0).catch(e=>this.handleError(e.message,"err"))}handleLeaveUnsubRequest(e){const t=this.tinode.getTopic(e);t&&t.leave(!0).then(e=>{ma.A.navigateTo(ma.A.setUrlTopic(window.location.hash,""))}).catch(e=>{this.handleError(e.message,"err")})}handleBlockTopicRequest(e){const t=this.tinode.getTopic(e);t&&t.updateMode(null,"-JP").then(e=>{ma.A.navigateTo(ma.A.setUrlTopic(window.location.hash,""))}).catch(e=>this.handleError(e.message,"err"))}handleReportTopic(e){const t=this.tinode.getTopic(e);t&&(this.tinode.report("report",e),t.updateMode(null,"-JP").then(e=>{ma.A.navigateTo(ma.A.setUrlTopic(window.location.hash,""))}).catch(e=>this.handleError(e.message,"err")))}handleShowContextMenu(e,t){this.setState({contextMenuVisible:!0,contextMenuClickAt:{x:e.x,y:e.y},contextMenuParams:e,contextMenuItems:t||this.defaultTopicContextMenu(e.topicName),contextMenuBounds:this.selfRef.current.getBoundingClientRect()})}handleShowForwardDialog(e){"newtpk"==this.state.sidePanelSelected&&this.handleSidepanelCancel();const t=e.userName?"➦ "+e.userName:"",s="string"==typeof e.content?Ts.Drafty.init(e.content):Ts.Drafty.forwardedContent(e.content),a=Ts.Drafty.preview(s,As.TR,!0),n=Ts.Drafty.append(Ts.Drafty.appendLineBreak(Ts.Drafty.mention(t,e.userFrom)),s),i=Ts.Drafty.quote(t,e.userFrom,a),r={forwarded:e.topicName+":"+e.seq};this.setState({forwardDialogVisible:!0,forwardMessage:{head:r,msg:n,preview:i}})}handleShareTheCard(e){this.setState({forwardDialogVisible:!0,forwardMessage:{content:e,type:e.contentType}})}defaultTopicContextMenu(e){const t=this.tinode.getTopic(e);if(t._deleted)return["topic_delete"];const s=this.tinode.getMeTopic();let a=!1,n=!1,i=!1,r=!1,o=!1,l=!1,c=!1,d=!1,h=!1,p=!1,u=!1;if(t){r=t.isSubscribed(),l=t.isArchived(),c=s.pinnedTopicRank(e)>0;const d=t.getAccessMode();d&&(a=d.isMuted(),n=!d.isJoiner(),i=!d.isJoiner("want"),o=d.isDeleter(),h=d.isWriter())}return d=h&&!!this.tinode.getServerParam("iceServers"),p=Ts.Tinode.isP2PTopicName(e),u=Ts.Tinode.isSelfTopicName(e),[r?{title:this.props.intl.formatMessage(ja.menu_item_info),handler:this.handleShowInfoView}:null,r&&p&&d?{title:this.props.intl.formatMessage(ja.menu_item_audio_call),handler:this.handleStartAudioCall}:null,r&&p&&d?{title:this.props.intl.formatMessage(ja.menu_item_video_call),handler:this.handleStartVideoCall}:null,r?"messages_clear":null,r&&o&&!u?"messages_clear_hard":null,u?null:a?n?null:"topic_unmute":"topic_mute",u?null:i?"topic_unblock":"topic_block",c?"topic_unpin":"topic_pin",l?"topic_restore":"topic_archive","topic_delete"]}handleHideContextMenu(){this.setState({contextMenuVisible:!1,contextMenuClickAt:null,contextMenuParams:null,contextMenuBounds:null})}handleHideForwardDialog(e){this.setState({forwardDialogVisible:!1,forwardMessage:e?this.state.forwardMessage:null})}handleContextMenuAction(e,t,s){"topic_archive"==e?t&&s.topicName&&s.topicName==this.state.topicSelected&&t.then(e=>{this.handleTopicSelected(null)}):"menu_item_forward"==e&&this.handleShowForwardDialog(s)}handleShowAlert(e,t,s,a,n,i){this.setState({alertVisible:!0,alertParams:{title:e,content:t,onConfirm:s,confirm:a,onReject:n,reject:i}})}handleShowInfoView(){ma.A.navigateTo(ma.A.addUrlParam(window.location.hash,"info","info")),this.setState({infoPanel:"info"})}handleMemberUpdateRequest(e,t,s){if(!e)return;const a=this.tinode.getTopic(e);a&&(t&&t.length>0&&t.forEach(e=>{a.invite(e,null).catch(e=>this.handleError(e.message,"err"))}),s&&s.length>0&&s.forEach(e=>{a.delSubscription(e).catch(e=>this.handleError(e.message,"err"))}))}handleValidateCredentialsRequest(e,t,s){this.tinode.isAuthenticated()?this.tinode.getMeTopic().setMeta({cred:{meth:e,resp:t}}).then(e=>ma.A.navigateTo(ma.A.setUrlSidePanel(window.location.hash,"contacts"))).catch(e=>this.handleError(e.message,"err")):(this.setState({credMethod:e,credCode:t,credToken:s}),this.doLogin(null,null,s,{meth:e,resp:t}))}handlePasswordResetRequest(e,t){return this.tinode.connect().then(s=>this.tinode.requestResetAuthSecret("basic",e,t)).catch(e=>{this.handleError(e.message,"err")})}handleResetPassword(e,t){const s=(0,Os.$Z)(t.secret);s&&t.scheme?this.tinode.connect().then(a=>this.tinode.updateAccountBasic(null,null,e,{scheme:t.scheme,secret:s})).then(e=>{this.handleError(this.props.intl.formatMessage(ja.password_reset_success),"info"),ma.A.navigateTo("")}).catch(e=>{this.handleError(e.message,"err")}):this.handleError(this.props.intl.formatMessage(ja.invalid_security_token),"err")}handleShowCountrySelector(e,t,s){this.handleShowAlert(this.props.intl.formatMessage(ja.select_country),l().createElement(o.Suspense,{fallback:l().createElement("div",null,l().createElement(d.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},l().createElement(Fa,{selected:e,onSubmit:(e,t)=>{this.setState({alertVisible:!1}),s(e,t)}})),null,null,e=>{},null)}handleStartVideoCall(){this.setState({callTopic:this.state.topicSelected,callState:Ls.No,callAudioOnly:!1})}handleStartAudioCall(){this.setState({callTopic:this.state.topicSelected,callState:Ls.No,callAudioOnly:!0})}handleCallInvite(e,t,s,a){switch(s){case Ls.No:const s={webrtc:Ls.O5,aonly:!!a};return this.handleSendMessage(Ts.Drafty.videoCall(a),void 0,void 0,s).then(e=>e.code<200||e.code>=300||!e.params||!e.params.seq?(this.handleCallClose(),e):(this.setState({callSeq:e.params.seq}),e));case Ls.d1:const n=this.tinode.getTopic(e);if(!n)return;n.videoCall("accept",t)}}handleCallRinging(e,t){const s=this.tinode.getTopic(e);s&&s.videoCall("ringing",t)}handleCallHangup(e,t){const s=this.tinode.getTopic(e);s&&s.videoCall("hang-up",t)}handleCallSendOffer(e,t,s){const a=this.tinode.getTopic(e);a&&a.videoCall("offer",t,s)}handleCallIceCandidate(e,t,s){const a=this.tinode.getTopic(e);a&&a.videoCall("ice-candidate",t,s)}handleCallSendAnswer(e,t,s){const a=this.tinode.getTopic(e);a&&a.videoCall("answer",t,s)}handleCallClose(){this.callTimeoutTimer&&clearTimeout(this.callTimeoutTimer),this.setState({callTopic:void 0,callState:Ls.Gv,callAudioOnly:void 0})}handleCallAccept(e,t,s){const a=this.tinode.getTopic(e);if(a)if(a.isSubscribed()){this.handleTopicSelected(t?e:this.state.callTopic);const a={callState:Ls.d1};t&&(a.callTopic=e,a.callSeq=s),this.setState(a)}else this.setState({callShouldStart:!0},e=>this.handleTopicSelected(this.state.callTopic))}handleInfoMessage(e){if("call"==e.what)switch(e.event){case"accept":if(Ts.Tinode.isMeTopicName(e.topic)&&this.tinode.isMe(e.from))return void this.setState({callTopic:null,callState:Ls.Gv,callSeq:null,callAudioOnly:void 0});e.topic==this.state.callTopic&&this.setState({callState:Ls.d1});break;case"hang-up":this.handleCallClose()}}handleDataMessage(e){if(e.head&&e.head.webrtc&&e.head.webrtc==Ls.O5&&Ts.Tinode.isP2PTopicName(e.topic)){const t=this.tinode.getTopic(e.topic);if(t){const s=t.latestMsgVersion(e.seq)||e;s.head&&s.head.webrtc&&s.head.webrtc==Ls.O5&&e.from!=this.state.myUserId&&(this.state.callState==Ls.Gv?this.setState({callTopic:e.topic,callState:Ls.ww,callSeq:e.seq,callAudioOnly:!!s.head.aonly}):this.handleCallHangup(e.topic,e.seq))}else console.warn("Received vc data message from unknown topic",e.topic)}}render(){const e="auto"!==this.state.colorSchema?this.state.colorSchema:this.state.systemColorSchema;return l().createElement("div",{id:"app-container",ref:this.selfRef},this.state.contextMenuVisible?l().createElement(Ds,{tinode:this.tinode,bounds:this.state.contextMenuBounds,clickAt:this.state.contextMenuClickAt,params:this.state.contextMenuParams,items:this.state.contextMenuItems,hide:this.handleHideContextMenu,onShowAlert:this.handleShowAlert,onAction:this.handleContextMenuAction,onTopicRemoved:e=>{e==this.state.topicSelected&&this.handleTopicSelected(null)},onError:this.handleError}):null,this.state.forwardDialogVisible?l().createElement(Rs,{tinode:this.tinode,contacts:this.state.chatList,topicSelected:this.state.topicSelected,myUserId:this.state.myUserId,hide:this.handleHideForwardDialog,onInitFind:this.tnInitFind,searchResults:this.state.searchResults,onSearchContacts:this.handleSearchContacts,onTopicSelected:this.handleStartTopicRequest}):null,this.state.callTopic&&this.state.callState==Ls.ww?l().createElement(qs,{tinode:this.tinode,topic:this.state.callTopic,seq:this.state.callSeq,callState:this.state.callState,audioOnly:this.state.callAudioOnly,onClose:this.handleCallClose,onRinging:this.handleCallRinging,onAcceptCall:this.handleCallAccept,onReject:this.handleCallHangup}):null,this.state.alertVisible?l().createElement(ks,{title:this.state.alertParams.title,content:this.state.alertParams.content,onReject:this.state.alertParams.onReject?e=>this.setState({alertVisible:!1}):null,reject:this.state.alertParams.reject,onConfirm:this.state.alertParams.onConfirm?e=>{this.setState({alertVisible:!1}),this.state.alertParams.onConfirm()}:null,confirm:this.state.alertParams.confirm}):null,this.state.displayMobile&&"sidepanel"!=this.state.mobilePanel?null:l().createElement(Ia,{tinode:this.tinode,connected:this.state.connected,displayMobile:this.state.displayMobile,state:this.state.sidePanelSelected,title:this.state.sidePanelTitle,avatar:this.state.sidePanelAvatar,trustedBadges:this.state.myTrustedBadges,login:this.state.login,persist:this.state.persist,myUserId:this.state.myUserId,loginDisabled:this.state.loginDisabled,loadSpinnerVisible:this.state.loadSpinnerVisible,errorText:this.state.errorText,errorLevel:this.state.errorLevel,errorAction:this.state.errorAction,errorActionText:this.state.errorActionText,topicSelected:this.state.topicSelected,chatList:this.state.chatList,credMethod:this.state.credMethod,credCode:this.state.credCode,credToken:this.state.credToken,transport:this.state.transport,messageSounds:this.state.messageSounds,desktopAlerts:this.state.desktopAlerts,desktopAlertsEnabled:this.state.desktopAlertsEnabled,incognitoMode:this.state.incognitoMode,serverAddress:this.state.serverAddress,secureConnection:this.state.secureConnection,serverVersion:this.state.serverVersion,reqCredMethod:this.state.reqCredMethod,textSize:this.state.textSize,colorSchema:this.state.colorSchema,wallpaper:this.state.wallpaper,wallpaperSize:this.state.wallpaperSize,wallpaperBlur:this.state.wallpaperBlur,systemColorSchema:this.state.systemColorSchema,sendOnEnter:this.state.sendOnEnter,onGlobalSettings:this.handleGlobalSettings,onSignUp:this.handleNewAccount,onSettings:this.handleSettings,onNavigate:this.basicNavigator,onLoginRequest:this.handleLoginRequest,onPersistenceChange:this.handlePersistenceChange,onCreateAccount:this.handleNewAccountRequest,onUpdateAccountDesc:this.handleTopicUpdateRequest,onUpdatePassword:this.handleUpdatePasswordRequest,onUpdateAccountTags:this.handleUpdateAccountTagsRequest,onTogglePushNotifications:this.toggleFCMToken,onToggleMessageSounds:this.handleToggleMessageSounds,onToggleIncognitoMode:this.handleToggleIncognitoMode,onChangeColorSchema:this.handleChangeColorSchema,onTextSizeChanged:this.handleChangeTextSize,onSendOnEnterChanged:this.handleSendOnEnter,onSelectWallpapers:this.handleSelectWallpapers,onWallpaperSelected:this.handleWallpaperSelected,onCredAdd:this.handleCredAdd,onCredDelete:this.handleCredDelete,onCredConfirm:this.handleCredConfirm,onTopicSelected:this.handleTopicSelected,onCreateTopic:this.handleStartTopicRequest,onLogout:this.handleLogout,onDeleteAccount:this.handleDeleteAccount,onShowAlert:this.handleShowAlert,onCancel:this.handleSidepanelCancel,onError:this.handleError,onValidateCredentials:this.handleValidateCredentialsRequest,onPasswordResetRequest:this.handlePasswordResetRequest,onResetPassword:this.handleResetPassword,onShowArchive:this.handleShowArchive,onShowBlocked:this.handleShowBlocked,onShowCountrySelector:this.handleShowCountrySelector,onInitFind:this.tnInitFind,searchResults:this.state.searchResults,onSearchContacts:this.handleSearchContacts,showContextMenu:this.handleShowContextMenu}),!this.state.displayMobile||"topic-view"==this.state.mobilePanel&&!this.state.infoPanel?l().createElement(o.Suspense,{fallback:l().createElement("div",null,l().createElement(d.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},l().createElement(La,{tinode:this.tinode,connected:this.state.connected,ready:this.state.ready,online:this.state.topicSelectedOnline,acs:this.state.topicSelectedAcs,displayMobile:this.state.displayMobile,viewportWidth:this.state.viewportWidth,viewportHeight:this.state.viewportHeight,topic:this.state.topicSelected,myUserId:this.state.myUserId,myUserName:this.state.sidePanelTitle,serverVersion:this.state.serverVersion,serverAddress:this.state.serverAddress,applicationVisible:this.state.applicationVisible,colorSchema:e,sendOnEnter:this.state.sendOnEnter,wallpaper:this.state.wallpaper,forwardMessage:this.state.forwardMessage,onCancelForwardMessage:this.handleHideForwardDialog,callTopic:this.state.callTopic,callSeq:this.state.callSeq,callState:this.state.callState,callAudioOnly:this.state.callAudioOnly,onCallHangup:this.handleCallHangup,onAcceptCall:this.handleCallAccept,onCallInvite:this.handleCallInvite,onCallSendOffer:this.handleCallSendOffer,onCallIceCandidate:this.handleCallIceCandidate,onCallSendAnswer:this.handleCallSendAnswer,errorText:this.state.errorText,errorLevel:this.state.errorLevel,errorAction:this.state.errorAction,errorActionText:this.state.errorActionText,newTopicParams:this.state.newTopicParams,onHideMessagesView:this.handleHideMessagesView,onError:this.handleError,onNewTopicCreated:this.handleNewTopicCreated,showContextMenu:this.handleShowContextMenu,onChangePermissions:this.handleChangePermissions,onNewChat:this.handleNewChatInvitation,sendMessage:this.handleSendMessage,onVideoCallClosed:this.handleCallClose})):null,this.state.infoPanel?l().createElement(o.Suspense,{fallback:l().createElement("div",null,l().createElement(d.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},l().createElement(Ua,{tinode:this.tinode,connected:this.state.connected,displayMobile:this.state.displayMobile,topic:this.state.topicSelected,searchableContacts:this.state.searchableContacts,myUserId:this.state.myUserId,panel:this.state.infoPanel,errorText:this.state.errorText,errorLevel:this.state.errorLevel,errorAction:this.state.errorAction,errorActionText:this.state.errorActionText,onNavigate:this.infoNavigator,onTopicDescUpdateRequest:this.handleTopicUpdateRequest,onShowAlert:this.handleShowAlert,onChangePermissions:this.handleChangePermissions,onMemberUpdateRequest:this.handleMemberUpdateRequest,onDeleteTopic:this.handleDeleteTopicRequest,onDeleteMessages:this.handleDeleteMessagesRequest,onLeaveTopic:this.handleLeaveUnsubRequest,onBlockTopic:this.handleBlockTopicRequest,onReportTopic:this.handleReportTopic,onShareTheCard:this.handleShareTheCard,onTopicTagsUpdateRequest:this.handleTagsUpdateRequest,onTopicUnArchive:this.handleUnarchive,onInitFind:this.tnInitFind,onError:this.handleError,showContextMenu:this.handleShowContextMenu})):null)}}var qa=(0,d.injectIntl)(Ba);if("undefined"!=typeof FIREBASE_INIT&&FIREBASE_INIT&&FIREBASE_INIT.measurementId){const Ja=document.getElementsByTagName("head")[0];let Xa=document.createElement("script");function Qa(){dataLayer.push(arguments)}Xa.src="https://www.googletagmanager.com/gtag/js?id="+FIREBASE_INIT.measurementId,Xa.async=!0,Ja.prepend(Xa),window.dataLayer=window.dataLayer||[],Qa("js",new Date),Qa("config",FIREBASE_INIT.measurementId)}const Ha={ar:e=>r.e(143).then(r.t.bind(r,7143,19)),de:e=>r.e(175).then(r.t.bind(r,2175,19)),en:e=>r.e(399).then(r.t.bind(r,3399,19)),es:e=>r.e(64).then(r.t.bind(r,6064,19)),fr:e=>r.e(500).then(r.t.bind(r,2500,19)),it:e=>r.e(197).then(r.t.bind(r,7197,19)),ko:e=>r.e(186).then(r.t.bind(r,1186,19)),ro:e=>r.e(780).then(r.t.bind(r,8399,19)),ru:e=>r.e(553).then(r.t.bind(r,5553,19)),th:e=>r.e(536).then(r.t.bind(r,2536,19)),uk:e=>r.e(552).then(r.t.bind(r,4552,19)),zh:e=>r.e(570).then(r.t.bind(r,570,19)),"zh-TW":e=>r.e(744).then(r.t.bind(r,5744,19))},{params:za}=ma.A.parseUrlHash(window.location.hash),Va=za&&za.hl||navigator.languages&&navigator.languages[0]||navigator.language||navigator.userLanguage||"en",Wa=Va.replace("_","-"),$a=Wa.split("-")[0].toLowerCase(),Ka=Ha[Wa]?Va:Ha[$a]?$a:"en",Ga=document.getElementsByTagName("html")[0];Ga.setAttribute("lang",Ka),["ar","fa","he","ur"].includes($a)&&Ga.setAttribute("dir","rtl");const Ya=(0,c.H)(document.getElementById("mountPoint"));Ha[Ka]().then(e=>Ya.render(l().createElement(d.IntlProvider,{locale:Va,messages:e,textComponent:l().Fragment},l().createElement(qa,null))))}();
|
||
//# sourceMappingURL=index.prod.js.map
|