!function(n){var a={};function o(e){if(a[e])return a[e].exports;var t=a[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.m=n,o.c=a,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var a in t)o.d(n,a,function(e){return t[e]}.bind(null,a));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=7)}([function(e,t){e.exports=React},function(e,t){e.exports=ReactIntl},function(t,e,n){(function(e){t.exports=function(){var v={exports:{}},p=[{name:"ST",start:/(?:^|\W)(\*)[^\s*]/,end:/[^\s*](\*)(?=$|\W)/},{name:"EM",start:/(?:^|[\W_])(_)[^\s_]/,end:/[^\s_](_)(?=$|[\W_])/},{name:"DL",start:/(?:^|\W)(~)[^\s~]/,end:/[^\s~](~)(?=$|\W)/},{name:"CO",start:/(?:^|\W)(`)[^`]/,end:/[^`](`)(?=$|\W)/}],h=[{name:"LN",dataName:"url",pack:function(e){return/^[a-z]+:\/\//i.test(e)||(e="http://"+e),{url:e}},re:/(?:(?:https?|ftp):\/\/|www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/gi},{name:"MN",dataName:"val",pack:function(e){return{val:e.slice(1)}},re:/\B@(\w\w+)/g},{name:"HT",dataName:"val",pack:function(e){return{val:e.slice(1)}},re:/\B#(\w\w+)/g}],f={ST:{name:"b",isVoid:!1},EM:{name:"i",isVoid:!1},DL:{name:"del",isVoid:!1},CO:{name:"tt",isVoid:!1},BR:{name:"br",isVoid:!0},LN:{name:"a",isVoid:!1},MN:{name:"a",isVoid:!1},HT:{name:"a",isVoid:!1},IM:{name:"img",isVoid:!0},FM:{name:"div",isVoid:!1},RW:{name:"div",isVoid:!1},BN:{name:"button",isVoid:!1},HD:{name:"",isVoid:!1}};function a(e,t){var n;try{for(var a=(n=atob(e)).length,o=new ArrayBuffer(a),r=new Uint8Array(o),i=0;i"},close:function(){return""}},EM:{open:function(){return""},close:function(){return""}},DL:{open:function(){return""},close:function(){return""}},CO:{open:function(){return""},close:function(){return""}},BR:{open:function(){return"
"},close:function(){return""}},HD:{open:function(){return""},close:function(){return""}},LN:{open:function(e){return''},close:function(e){return""},props:function(e){return e?{href:e.url,target:"_blank"}:null}},MN:{open:function(e){return''},close:function(e){return""},props:function(e){return e?{name:e.val}:null}},HT:{open:function(e){return''},close:function(e){return""},props:function(e){return e?{name:e.val}:null}},BN:{open:function(e){return""},props:function(e){return e?{"data-act":e.act,"data-val":e.val,"data-name":e.name,"data-ref":e.ref}:null}},IM:{open:function(e){var t=a(e.val,e.mime),n=e.ref?e.ref:t;return(e.name?'':"")+'
'},close:function(e){return e.name?"":""},props:function(e){return e?{src:a(e.val,e.mime),title:e.name,"data-width":e.width,"data-height":e.height,"data-name":e.name,"data-size":e.val?.75*e.val.length|0:0,"data-mime":e.mime}:null}},FM:{open:function(e){return"
"},close:function(e){return"
"}},RW:{open:function(e){return""},close:function(e){return"
"}}},l=function(){};l.parse=function(e){if("string"!=typeof e)return null;var t=e.split(/\r?\n/),c=[],u={},d=[];t.map(function(t){var e,n,a=[];if(p.map(function(e){a=a.concat(function(e,t,n,a){for(var o=[],r=0,i=e.slice(0);0a.end?(n.push(t[o]),a=t[o]):t[o].endn&&r.push({text:t.slice(n,s.start)});var l={type:s.type},c=e(t,s.start+1,s.end-1,s.children);0o;return o=e.offset+e.len,t})}(n.txt)).length){var r=[];for(var i in e){var s=e[i],l=u[s.unique];l||(l=c.length,u[s.unique]=l,c.push({tp:s.type,data:s.data})),r.push({at:s.offset,len:s.len,key:l})}n.ent=r}d.push(n)});var n={txt:""};if(0>8-o%1*8)){if(255<(e=t.charCodeAt(o+=.75)))throw new Error("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");a=a<<8|e}return n}),"undefined"==typeof atob&&(e.atob=function(){var e=(0>(-2*a&6)):0)n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(n);return t}),"undefined"==typeof window&&(e.window={WebSocket:S,URL:{createObjectURL:function(){throw new Error("Unable to use window.URL in a non browser application")}}});var l="0",h=t||"0.15",f="tinodejs/"+h,E="Connection failed",k="Disconnected by client";function o(e){return btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,function(e,t){return String.fromCharCode("0x"+t)}))}function m(e,t,n){if("object"!=w(t)){if(t===c.DEL_CHAR)return;return t}if(null===t)return t;if(t instanceof Date)return t;if(t instanceof u)return new u(t);if(t instanceof Array)return t;for(var a in e&&e!==c.DEL_CHAR||(e=t.constructor()),t)!t.hasOwnProperty(a)||n&&n[a]||"_noForwarding"==a||(e[a]=m(e[a],t[a]));return e}function s(e,t,n,a){return e[t]=m(e[t],n,a),e[t]}function C(){var e=null;if("withCredentials"in new XMLHttpRequest)e=new XMLHttpRequest;else{if("undefined"==typeof XDomainRequest)throw new Error("Browser not supported");e=new XDomainRequest}return e}function M(e,t){if("ts"===e&&"string"==typeof t&&20<=t.length&&t.length<=24){var n=new Date(t);if(n)return n}else if("acs"===e&&"object"===w(t))return new u(t);return t}function g(e,t){return"string"==typeof t&&128":function(e,t){if(t instanceof Date)t=function(e){if(e&&0!=e.getTime()){var t=e.getUTCMilliseconds();return e.getUTCFullYear()+"-"+n(e.getUTCMonth()+1)+"-"+n(e.getUTCDate())+"T"+n(e.getUTCHours())+":"+n(e.getUTCMinutes())+":"+n(e.getUTCSeconds())+(t?"."+n(t,3):"")+"Z"}function n(e,t){return"0".repeat((t=t||2)-(""+e).length)+e}}(t);else if(null==t||!1===t||Array.isArray(t)&&0==t.length||"object"==w(t)&&0==Object.keys(t).length)return;return t}(0,t)}function T(e,t,n){var a=null;return"http"!==t&&"https"!==t&&"ws"!==t&&"wss"!==t||(a=t+"://","/"!==(a+=e).charAt(a.length-1)&&(a+="/"),a+="v"+l+"/channels","http"!==t&&"https"!==t||(a+="/lp"),a+="?apikey="+n),a}var b=function(e,t,n,a,o){var r=this,i=e,s=a,l=t,p=o,c=2e3,u=10,d=.3,h=null,f=0,m=!1,g=function(e){r.logger&&r.logger(e)};function b(){var t=this;clearTimeout(h);var n=c*(Math.pow(2,f)*(1+d*Math.random()));f=u<=f?f:f+1,this.onAutoreconnectIteration&&this.onAutoreconnectIteration(n),h=setTimeout(function(){if(g("Reconnecting, iter="+f+", timeout="+n),m)t.onAutoreconnectIteration&&t.onAutoreconnectIteration(-1);else{var e=t.connect();t.onAutoreconnectIteration?t.onAutoreconnectIteration(0,e):e.catch(function(){})}},n)}function v(){clearTimeout(h),h=null,f=0}function y(o){var r=null;o.connect=function(e){return m=!1,r&&r.readyState==r.OPEN?Promise.resolve():(e&&(i=e),new Promise(function(t,n){var e=T(i,s?"wss":"ws",l);g("Connecting to: "+e);var a=new S(e);a.onopen=function(e){o.onOpen&&o.onOpen(),t(),p&&v()},a.onclose=function(e){if(r=null,o.onDisconnect){var t=m?418:503;o.onDisconnect(new Error(m?k:E+" ("+t+")"),t)}!m&&p&&b.call(o)},a.onerror=function(e){n(e)},a.onmessage=function(e){o.onMessage&&o.onMessage(e.data)},r=a}))},o.reconnect=function(){v(),o.connect()},o.disconnect=function(){m=!0,r&&(v(),r.close(),r=null)},o.sendText=function(e){if(!r||r.readyState!=r.OPEN)throw new Error("Websocket is not connected");r.send(e)},o.isConnected=function(){return r&&r.readyState==r.OPEN},o.transport=function(){return"ws"},o.probe=function(){o.sendText("1")}}function _(u){var d=null,a=null,o=null;u.connect=function(e){return m=!1,a?Promise.resolve():(e&&(i=e),new Promise(function(e,t){var n=T(i,s?"https":"http",l);g("Connecting to: "+n),(a=function o(r,i,s){var l=C(),c=!1;return l.onreadystatechange=function(e){if(4==l.readyState)if(201==l.status){var t=JSON.parse(l.responseText,M);d=r+"&sid="+t.ctrl.params.sid,(l=o(d)).send(null),u.onOpen&&u.onOpen(),i&&(c=!0,i()),p&&v()}else if(l.status<400)u.onMessage&&u.onMessage(l.responseText),(l=o(d)).send(null);else{if(s&&!c&&(c=!0,s(l.responseText)),u.onMessage&&l.responseText&&u.onMessage(l.responseText),u.onDisconnect){var n=l.status||(m?418:503),a=l.responseText||(m?k:E);u.onDisconnect(new Error(a+" ("+n+")"),n)}l=null,!m&&p&&b.call(u)}},l.open("GET",r,!0),l}(n,e,t)).send(null)}).catch(function(){}))},u.reconnect=function(){v(),u.connect()},u.disconnect=function(){m=!0,v(),o&&(o.onreadystatechange=void 0,o.abort(),o=null),a&&(a.onreadystatechange=void 0,a.abort(),a=null),u.onDisconnect&&u.onDisconnect(new Error(k+" (418)"),418),d=null},u.sendText=function(e){var t,n;if(t=d,(n=C()).onreadystatechange=function(e){if(4==n.readyState&&400<=n.status)throw new Error("LP sender failed, "+n.status)},n.open("POST",t,!0),!(o=n)||1!=o.readyState)throw new Error("Long poller failed to connect");o.send(e)},u.isConnected=function(){return a&&!0},u.transport=function(){return"lp"},u.probe=function(){u.sendText("1")}}"lp"===n?_(this):"ws"===n?y(this):"object"==("undefined"==typeof window?"undefined":w(window))&&window.WebSocket?y(this):_(this),this.onMessage=void 0,this.onDisconnect=void 0,this.onOpen=void 0,this.onAutoreconnectIteration=void 0,this.logger=void 0},c=function(e,t,n,a,o,r){var l=this;this._appName=e||"Undefined",this._apiKey=n,this._browser="",this._platform=r,this._hwos="undefined",this._humanLanguage="xx","undefined"!=typeof navigator&&(this._browser=function(e,t){e=e||"";var n="";/reactnative/i.test(t)&&(n="ReactNative; ");var a,o=(e=e.replace(" (KHTML, like Gecko)","")).match(/(AppleWebKit\/[.\d]+)/i);if(o){for(var r=["chrome","safari","mobile","version"],i=e.substr(o.index+o[0].length).split(" "),s=[],l=function(e){var t=/([\w.]+)[\/]([\.\d]+)/.exec(i[e]);t&&s.push([t[1],t[2],r.findIndex(function(e){return e==t[1].toLowerCase()})])},c=0;cDate.now()?this._authToken:this._authToken=null},setAuthToken:function(e){this._authToken=e},subscribe:function(e,t,n){var a=this.initPacket("sub",e);return e||(e="new"),a.sub.get=t,n&&(n.sub&&(a.sub.set.sub=n.sub),c.isNewGroupTopicName(e)&&n.desc&&(a.sub.set.desc=n.desc),n.tags&&(a.sub.set.tags=n.tags)),this.send(a,a.sub.id)},leave:function(e,t){var n=this.initPacket("leave",e);return n.leave.unsub=t,this.send(n,n.leave.id)},createMessage:function(e,t,n){var a=this.initPacket("pub",e),o="string"==typeof t?v.parse(t):t;return o&&!v.isPlainText(o)&&(a.pub.head={mime:v.getContentType()},t=o),a.pub.noecho=n,a.pub.content=t,a.pub},publish:function(e,t,n){return this.publishMessage(this.createMessage(e,t,n))},publishMessage:function(e){return(e=Object.assign({},e)).seq=void 0,e.from=void 0,e.ts=void 0,this.send({pub:e},e.id)},getMeta:function(e,t){var n=this.initPacket("get",e);return n.get=m(n.get,t),this.send(n,n.get.id)},setMeta:function(e,t){var n=this.initPacket("set",e),a=[];return t&&["desc","sub","tags"].map(function(e){t.hasOwnProperty(e)&&(a.push(e),n.set[e]=t[e])}),0==a.length?Promise.reject(new Error("Invalid {set} parameters")):this.send(n,n.set.id)},delMessages:function(e,t,n){var a=this.initPacket("del",e);return a.del.what="msg",a.del.delseq=t,a.del.hard=n,this.send(a,a.del.id)},delTopic:function(t){var n=this,e=this.initPacket("del",t);return e.del.what="topic",this.send(e,e.del.id).then(function(e){return n.cacheDel("topic",t),n.ctrl})},delSubscription:function(e,t){var n=this.initPacket("del",e);return n.del.what="sub",n.del.user=t,this.send(n,n.del.id)},note:function(e,t,n){if(n<=0||268435455<=n)throw new Error("Invalid message id "+n);var a=this.initPacket("note",e);a.note.what=t,a.note.seq=n,this.send(a)},noteKeyPress:function(e){var t=this.initPacket("note",e);t.note.what="kp",this.send(t)},getTopic:function(e){var t=this.cacheGet("topic",e);return!t&&e&&(t="me"==e?new r:"fnd"==e?new i:new a(e),this.cachePut("topic",e,t),this.attachCacheToTopic(t)),t},newTopic:function(e){var t=new a("new",e);return this.attachCacheToTopic(t),t},newGroupTopicName:function(){return"new"+this.getNextUniqueId()},newTopicWith:function(e,t){var n=new a(e,t);return this.attachCacheToTopic(n),n},getMeTopic:function(){return this.getTopic("me")},getFndTopic:function(){return this.getTopic("fnd")},getLargeFileHelper:function(){return new d(this)},getCurrentUserID:function(){return this._myUID},getCurrentLogin:function(){return this._login},getServerInfo:function(){return this._serverInfo},enableLogging:function(e,t){this._loggingEnabled=e,this._trimLongStrings=e&&t},isTopicOnline:function(e){var t=this.getMeTopic(),n=t&&t.getContact(e);return n&&n.online},wantAkn:function(e){this._messageId=e?Math.floor(16777215*Math.random()+16777215):0},onWebsocketOpen:void 0,onConnect:void 0,onDisconnect:void 0,onLogin:void 0,onCtrlMessage:void 0,onDataMessage:void 0,onPresMessage:void 0,onMessage:void 0,onRawMessage:void 0,onNetworkProbe:void 0,onAutoreconnectIteration:void 0};var n=function(e){var t=(this.topic=e)._tinode.getMeTopic();this.contact=t&&t.getContact(e.name),this.what={}};n.prototype={_get_ims:function(){var e=this.contact&&this.contact.updated,t=this.topic._lastDescUpdate||0;return t=t.hi)});var a=t.reduce(function(e,t){return t.low<268435455&&(!t.hi||t.hi<268435455?e.push(t):e.push({low:t.low,hi:n._maxSeq+1})),e},[]);return(0n._maxDel&&(n._maxDel=e.params.del),t.map(function(e){e.hi?n.flushMessageRange(e.low,e.hi):n.flushMessage(e.low)}),n.onData&&n.onData(),e})},delMessagesAll:function(e){return this.delMessages([{low:1,hi:this._maxSeq+1,_all:!0}],e)},delMessagesList:function(e,t){e.sort(function(e,t){return e-t});var n=e.reduce(function(e,t){if(0==e.length)e.push({low:t});else{var n=e[e.length-1];!n.hi&&t!=n.low+1||t>n.hi?e.push({low:t}):n.hi=n.hi?Math.max(n.hi,t+1):t+1}return e},[]);return this.delMessages(n,t)},delTopic:function(){var t=this;return this._tinode.delTopic(this.name).then(function(e){return t._resetSub(),t._gone(),e})},delSubscription:function(t){var n=this;return this._subscribed?this._tinode.delSubscription(this.name,t).then(function(e){return delete n._users[t],n.onSubsUpdated&&n.onSubsUpdated(Object.keys(n._users)),e}):Promise.reject(new Error("Cannot delete subscription in inactive topic"))},note:function(e,t){var n=this._users[this._tinode.getCurrentUserID()];n?((!n[e]||n[e]=t&&n++}}return n},msgReadCount:function(e){return this.msgReceiptCount("read",e)},msgRecvCount:function(e){return this.msgReceiptCount("recv",e)},msgHasMoreMessages:function(e){return e?this.seq>this._maxSeq:1this._maxSeq&&(this._maxSeq=e.seq),(e.seq¯∖_(ツ)_/¯",full_name_prompt:"Full name, e.g. John Doe",email_prompt:"Email, e.g. jdoe@example.com",button_sign_up:"Sign up",label_your_name:"Your name",label_password:"Password",password_unchanged_prompt:"Unchanged",label_user_id:"Address:",label_default_access_mode:"Default access mode:",label_message_sound:"Message sound:",label_push_notifications:"Notification alerts:",label_push_notifications_disabled:"Notification alerts (requires HTTPS):",title_tag_manager:"Tags (user discovery)",button_logout:"Logout",requested_permissions:"Requested",granted_permissions:"Granted",menu_item_edit_permissions:"Edit permissions",label_other_user:"Other",title_info:"Info",label_topic_name:"Name",label_private:"Private comment",private_editing_placeholder:"Visible to you only",label_muting_topic:"Muted:",action_more:"More",label_your_permissions:"Your permissions:",label_permissions:"Permissions:",label_you:"You:",label_default_access:"Default access mode:",label_group_members:"Group members:",button_add_members:"Add members",button_leave:"Leave",group_has_no_members:"No members",action_leave_chat:"Leave",login_prompt:"Login",password_prompt:"Password",stay_logged_in:"Stay logged in",forgot_password_link:"Forgot password?",button_sign_in:"Sign in",label_client:"Client:",label_server:"Server:",online_now:"online now",last_seen_timestamp:"Last seen",title_not_found:"Not found",unnamed_topic:"Unnamed",messages_not_readable:"no access to messages",tabtitle_find_user:"find",tabtitle_new_group:"new group",tabtitle_group_by_id:"by id",search_for_contacts:"Use search to find contacts",new_password_placeholder:"Enter new password",label_reset_password:"Send a password reset email:",credential_email_prompt:"Your registration email",button_reset:"Reset",button_send_request:"Send request",label_server_to_use:"Server to use:",label_wire_transport:"Wire transport:",button_update:"Update",sidepanel_title_login:"Sign In",sidepanel_title_register:"Create Account",sidepanel_title_settings:"Settings",sidepanel_title_edit_account:"Edit Account",sidepanel_title_newtpk:"Start New Chat",sidepanel_title_cred:"Confirm Credentials",sidepanel_title_reset:"Reset Password",sidepanel_title_archive:"Archived Chats",update_available:'Update available. Reload.',reconnect_countdown:"Disconnected. Reconnecting in {seconds}s…",reconnect_now:"Try now",phone_dative:"phone",email_dative:"email",enter_confirmation_code_prompt:"Enter confirmation code sent to you by {method}:",numeric_confirmation_code_prompt:"Numbers only",button_confirm:"Confirm",save_attachment:"save",invalid_content:"invalid content",user_not_found:"Not found",badge_you:"you",badge_owner:"owner",menu_item_info:"Info",menu_item_clear_messages:"Clear messages",menu_item_clear_messages_for_all:"Clear for All",menu_item_delete:"Delete",menu_item_delete_for_all:"Delete for All",menu_item_mute:"Mute",menu_item_unmute:"Unmute",menu_item_delete_topic:"Delete",menu_item_unblock:"Unblock",menu_item_block:"Block",menu_item_member_delete:"Remove",menu_item_archive_topic:"Archive",action_cancel:"cancel",upload_finishing:"finishing...",no_contacts:"You have no contacts :-(",contacts_not_found_short:"No contacts match '{query}'",title_group_members:"Group Members",title_all_contacts:"All Contacts",button_ok:"OK",button_cancel:"Cancel",download_action:"download",label_file_name:"File name:",label_content_type:"Content type:",label_size:"Size:",chat_invitation:"You are invited to start a new chat. What would you like to do?",chat_invitation_accept:"Accept",chat_invitation_ignore:"Ignore",chat_invitation_block:"Block",error_invalid_id:"Invalid ID",group_user_id_prompt:"Group or User ID",button_subscribe:"Subscribe",topic_name_editing_placeholder:"Freeform name of the group",button_create:"Create",permission_join:"Join ({val})",permission_read:"Read ({val})",permission_write:"Write ({val})",permission_pres:"Get notified ({val})",permission_admin:"Approve ({val})",permission_share:"Share ({val})",permission_delete:"Delete ({val})",permission_owner:"Owner ({val})",title_permissions:"Permissions",message_sending:"sending...",message_sending_failed:"failed",search_placeholder:"List like email:alice@example.com, tel:17025550003...",messaging_disabled_prompt:"Messaging disabled",new_message_prompt:"New message",file_attachment_too_large:"The file size {size} exceeds the {limit} limit.",cannot_initiate_file_upload:"Cannot initiate file upload.",tags_not_found:"No tags defined. Add some.",tags_editor_no_tags:"Add some tags",title_manage_tags:"Manage tags"},ru:{contacts_not_found:"Чатов нет
¯∖_(ツ)_/¯",full_name_prompt:"Полное имя, напр. Иван Петров",email_prompt:"Email, напр. ivan@example.com",button_sign_up:"Создать счет",label_your_name:"Ваше имя",label_password:"Пароль",password_unchanged_prompt:"Не изменен",label_user_id:"Адрес:",label_default_access_mode:"Доступ по умолчанию:",label_message_sound:"Звук нового сообщения:",label_push_notifications:"Уведомления:",label_push_notifications_disabled:"Уведомления (требуют HTTPS):",title_tag_manager:"Таги для поиска",button_logout:"Выйти",login_prompt:"Логин",password_prompt:"Пароль",stay_logged_in:"Запомнить",forgot_password_link:"Напомнить пароль",button_sign_in:"Войти",label_client:"Клиент:",label_server:"Сервер:",online_now:"онлайн",last_seen_timestamp:"Был активен",title_not_found:"Не найден",unnamed_topic:"Без названия",messages_not_readable:"нет доступа к сообщениям",tabtitle_find_user:"найти",tabtitle_new_group:"создать",tabtitle_group_by_id:"по id",label_server_to_use:"Использовать сервер:",label_wire_transport:"Соединение:",button_update:"Применить",sidepanel_title_login:"Авторизация",sidepanel_title_register:"Зарегистрироваться",sidepanel_title_settings:"Настройки",sidepanel_title_edit_account:"Редактировать счет",sidepanel_title_newtpk:"Новый чат",sidepanel_title_cred:"Подтвердить",sidepanel_title_reset:"Сменить пароль",tags_not_found:"Тагов нет. Добавьте",tags_editor_no_tags:"Добавьте таги",title_manage_tags:"Редактор тагов",message_sending:"в пути...",message_sending_failed:"ошибка",search_placeholder:"Список, напр. email:alice@example.com, tel:17025550003...",messaging_disabled_prompt:"Отправка недоступна",new_message_prompt:"Новое сообщение",file_attachment_too_large:"Размер файла {size} превышает {limit} лимит.",cannot_initiate_file_upload:"Ошибка загрузки файла.",search_for_contacts:"Поиск контактов",enter_confirmation_code_prompt:"Код подтверждения, полученный по {method}:",numeric_confirmation_code_prompt:"Только цифры",button_confirm:"Подтвердить",button_ok:"OK",button_cancel:"Отменить",invalid_content:"сообщение не читается",label_file_name:"Имя файла:",label_content_type:"Тип:",label_size:"Размер:",phone_dative:"телефону",email_dative:"емейлу",title_group_members:"Участники",download_action:"скачать",permission_join:"Подписываться ({val})",permission_read:"Читать ({val})",permission_write:"Писать ({val})",permission_pres:"Уведомлять ({val})",permission_admin:"Подтверждать ({val})",permission_share:"Приглашать ({val})",permission_delete:"Удалять ({val})",permission_owner:"Владелец ({val})",title_permissions:"Права доступа",requested_permissions:"Требуются",granted_permissions:"Получены",menu_item_edit_permissions:"Права доступа",label_other_user:"Второй",label_topic_name:"Название",label_private:"Комментарий",private_editing_placeholder:"Виден только вам",label_muting_topic:"Без уведомлений",action_more:"Ещё",label_your_permissions:"Ваши права доступа:",label_permissions:"Права доступа:",label_you:"Вы:",label_default_access:"Права по умолчанию:",label_group_members:"Участники чата:",button_add_members:"Добавить",button_leave:"Отписаться",group_has_no_members:"Нет участников",action_leave_chat:"Уйти из чата",menu_item_info:"Информация",menu_item_clear_messages:"Удалить сообщения",menu_item_clear_messages_for_all:"Удалить для всех",menu_item_delete:"Удалить",menu_item_delete_for_all:"Удалить для всех",menu_item_mute:"Не уведомлять",menu_item_unmute:"Уведомлять",menu_item_delete_topic:"Удалить чат",menu_item_unblock:"Разблокировать",menu_item_block:"Заблокировать",menu_item_member_delete:"Отписать",title_info:"Подробности",new_password_placeholder:"Введите новый пароль",label_reset_password:"Отправить емейл для смены пароля:",credential_email_prompt:"Регистрационный емейл",button_reset:"Изменить",button_send_request:"Отправить",action_cancel:"отменить",upload_finishing:"завершение...",no_contacts:"Ничего нет :-(",contacts_not_found_short:"Нет контактов для запроса '{query}'",title_all_contacts:"Все контакты",error_invalid_id:"Неверный ID",group_user_id_prompt:"ID чата или пользователя",button_subscribe:"Подписаться",topic_name_editing_placeholder:"Название чата",button_create:"Создать",badge_you:"вы",badge_owner:"влад.",update_available:'Есть новая версия приложения. Обновить.',user_not_found:"Не найден",reconnect_countdown:"Нет связи. Подключение через {seconds}с…",reconnect_now:"Подключить сейчас.",save_attachment:"сохранить",menu_item_archive_topic:"В архив",archived_contacts:"Чаты в архиве ({count})",sidepanel_title_archive:"Архив чатов",chat_invitation:"Вас пригласили начать новый чат. Как вы хотите поступить?",chat_invitation_accept:"Принять",chat_invitation_ignore:"Игнорировать",chat_invitation_block:"Заблокировать"}}},function(e,t){e.exports=firebase},function(e,t,n){e.exports=function(){"use strict";return[{locale:"ru",pluralRuleFunction:function(e,t){var n=String(e).split("."),a=n[0],o=!n[1],r=a.slice(-1),i=a.slice(-2);return t?"other":o&&1==r&&11!=i?"one":o&&2<=r&&r<=4&&(i<12||14f&&(a="image/jpeg"),"image/jpeg"==a)for(;G(o.length)>f&&.45f?d("The image size "+bytesToHumanSize(G(o.length))+" exceeds the "+bytesToHumanSize(f)+" limit.","err"):(t=null,u(o.split(",")[1],a,e.dstWidth,e.dstHeight,I(i.name,a)))}else d("Unsupported image format")}else d("Invalid image")},e.src=URL.createObjectURL(i)}function q(a,o,r){var i=new FileReader;i.addEventListener("load",function(){var e=i.result.split(","),t=W(e[0]);if(t){var n=new Image;n.crossOrigin="Anonymous",n.onload=function(){o(e[1],t,this.width,this.height,I(a.name,t))},n.onerror=function(e){r("Image format not recognized")},n.src=URL.createObjectURL(a)}else r("Failed to process image file")},!1),i.readAsDataURL(a)}function H(e,t,n){var a=new FileReader;a.addEventListener("load",function(){t(e.type,a.result.split(",")[1],e.name)}),a.readAsDataURL(e)}function W(e){var t=/^data:(image\/[-+a-z0-9.]+);base64/.exec(e);return t&&1t.sortedChips.length)&&(n.input=""),n}},{key:"indexChips",value:function(e){var t={},n=0;return e.map(function(e){t[e.user]=n,n++}),t}},{key:"sortChips",value:function(e,t){var n=[],a=[];return e.map(function(e){e.user===t?n.push(e):a.push(e)}),n.concat(a)}}],(n=[{key:"handleTextInput",value:function(e){this.setState({input:e.target.value}),this.props.filterFunc&&this.props.filterFunc(e.target.value)}},{key:"removeChipAt",value:function(e){var t=this.state.sortedChips[e];this.props.onChipRemoved(t.user,this.state.chipIndex[t.user])}},{key:"handleChipCancel",value:function(e,t){this.removeChipAt(t)}},{key:"handleFocusGained",value:function(){this.setState({focused:!0})}},{key:"handleFocusLost",value:function(){this.setState({focused:!1}),this.props.onFocusLost&&this.props.onFocusLost(this.state.input)}},{key:"handleKeyDown",value:function(e){if("Backspace"===e.key){if(0==this.state.input.length&&0this.props.content.height?{width:"100%"}:{height:"100%"};n.maxWidth="100%",n.maxHeight="100%";var a=this.props.content.filename,o=this.props.content.width/13|0;a.length>o&&(a=a.slice(0,o-2)+"..."+a.slice(2-o));var r=this.props.content.width||"-",i=this.props.content.height||"-";return w.a.createElement("div",{id:"image-preview",onClick:this.props.onClose},w.a.createElement("div",{id:"image-preview-caption-panel"},w.a.createElement("a",{href:this.props.content.url,download:this.props.content.filename},w.a.createElement("i",{className:"material-icons"},"file_download")," ",w.a.createElement(S.FormattedMessage,{id:"download_action",defaultMessage:"download"})),w.a.createElement("a",{href:"javascript:;",onClick:this.props.onClose},w.a.createElement("i",{className:"material-icons gray"},"close"))),w.a.createElement("div",{id:"image-preview-container",ref:function(e){t.container=e}},w.a.createElement("img",{src:this.props.content.url,style:n})),w.a.createElement("div",{id:"image-preview-footer"},w.a.createElement("div",null,w.a.createElement("div",null,w.a.createElement("b",null,w.a.createElement(S.FormattedMessage,{id:"label_file_name",defaultMessage:"File name:"}))),w.a.createElement("div",null,w.a.createElement("span",{title:this.props.content.filename},a||"-"))),w.a.createElement("div",null,w.a.createElement("div",null,w.a.createElement("b",null,w.a.createElement(S.FormattedMessage,{id:"label_content_type",defaultMessage:"Content type:"}))),w.a.createElement("div",null,this.props.content.type)),w.a.createElement("div",null,w.a.createElement("div",null,w.a.createElement("b",null,w.a.createElement(S.FormattedMessage,{id:"label_size",defaultMessage:"Size:"}))),w.a.createElement("div",null,r," × ",i," px; ",T(this.props.content.size)))))}}])&&Rn(t.prototype,a),o&&Rn(t,o),n}();function Hn(e){return(Hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Wn(e,t){for(var n=0;nf||U.indexOf(s.type)<0?L(s,768,768,!1,t,a):q(s,t,a):H(s,n),!0;console.log("Failed to get file object from pasted file item",i.kind,i.type)}}return!1}(e,function(e,t,n,a,o){r.props.sendMessage(u.Drafty.insertImage(null,0,t,e,n,a,o))},function(e,t,n){r.props.sendMessage(u.Drafty.attachFile(null,e,t,n))},this.props.onError)&&e.preventDefault()}},{key:"handleAttachImage",value:function(e){var r=this;if(e.target.files&&0f||U.indexOf(t.type)<0?L(t,768,768,!1,function(e,t,n,a,o){r.props.sendMessage(u.Drafty.insertImage(null,0,t,e,n,a,o))},function(e){r.props.onError(e,"err")}):q(t,function(e,t,n,a,o){r.props.sendMessage(u.Drafty.insertImage(null,0,t,e,n,a,o))},function(e){r.props.onError(e,"err")})}e.target.value=""}},{key:"handleAttachFile",value:function(e){var a=this,t=this.props.intl.formatMessage;if(e.target.files&&01<<23)this.props.onError(t(ua.file_attachment_too_large,{size:T(n.size),limit:T(1<<23)}),"err");else if(n.size>f){var o=this.props.tinode.getLargeFileHelper();if(!o)return void this.props.onError(t(ua.cannot_initiate_upload));var r=o.upload(n),i=u.Drafty.attachFile(null,n.type,null,n.name,n.size,r);this.props.sendMessage(i,r,o)}else H(n,function(e,t,n){a.props.sendMessage(u.Drafty.attachFile(null,e,t,n))},this.props.onError)}e.target.value=""}},{key:"handleSend",value:function(){this.state.message.trim()&&(this.props.sendMessage(this.state.message.trim()),this.setState({message:""}))}},{key:"handleKeyPress",value:function(e){"Enter"===e.key&&(e.shiftKey||(e.preventDefault(),e.stopPropagation(),this.handleSend()))}},{key:"handleMessageTyping",value:function(e){var t={message:e.target.value},n=(new Date).getTime();if(3e3this.props.viewportHeight&&(this.messagesScroller.scrollTop+=e.viewportHeight-this.props.viewportHeight));var a=this.props.tinode.getTopic(this.state.topic);if(this.state.topic!=t.topic&&(t.topic&&(this.leave(t.topic),this.props.readTimerHandler(null)),a&&(a.onData=this.handleNewMessage,a.onAllMessagesReceived=this.handleAllMessagesReceived,a.onInfo=this.handleInfoReceipt,a.onMetaDesc=this.handleDescChange,a.onSubsUpdated=this.handleSubsUpdated,a.onPres=this.handleSubsUpdated)),a&&!a.isSubscribed()&&this.props.tinode.isAuthenticated()&&(!e.connected&&this.props.connected||this.state.topic!=t.topic)){var o=a.startMetaQuery().withLaterDesc().withLaterSub();this.state.isReader&&(o=o.withLaterData(24).withLaterDel());var r=E.a.isNewGroupTopicName(this.props.topic)?this.props.newGroupTopicParams:void 0;this.setState({fetchingMessages:!0}),a.subscribe(o.build(),r).then(function(e){n.state.topic!=e.topic&&n.setState({topic:e.topic}),n.props.onNewTopicCreated(n.props.topic,e.topic),a.queuedMessages(function(e){!e._sending&&a.isSubscribed()&&a.publishMessage(e)})}).catch(function(e){console.log("Failed subscription to",n.state.topic),n.props.onError(e.message,"err");var t=i.getDerivedStateFromProps({},{});t.title=n.props.intl.formatMessage(ya.not_found),n.setState(t)})}}},{key:"leave",value:function(e){var t=this;if(e){var n=this.props.tinode.getTopic(e);n&&n.isSubscribed()&&n.leave(!1).catch(function(){}).finally(function(){t.setState({fetchingMessages:!1}),n.onData=void 0,n.onAllMessagesReceived=void 0,n.onInfo=void 0,n.onMetaDesc=void 0,n.onSubsUpdated=void 0,n.onPres=void 0})}}},{key:"handleScrollReference",value:function(e){e&&(e.addEventListener("scroll",this.handleScrollEvent),this.messagesScroller=e)}},{key:"handleScrollEvent",value:function(e){var o=this;this.setState({scrollPosition:e.target.scrollHeight-e.target.scrollTop}),e.target.scrollTop<=0&&this.setState(function(e,t){var n={};if(!e.fetchingMessages){var a=o.props.tinode.getTopic(o.state.topic);a&&a.isSubscribed()&&a.msgHasMoreMessages()&&(n.fetchingMessages=!0,a.getMessagesPage(24).catch(function(e){o.setState({fetchingMessages:!1}),o.props.onError(e.message,"err")}))}return n})}},{key:"handleDescChange",value:function(e){e.public?this.setState({title:e.public.fn,avatar:R(e.public.photo)}):this.setState({title:"",avatar:null}),e.acs&&this.setState({isWriter:e.acs.isWriter(),isReader:e.acs.isReader(),unconfirmed:_a(e.acs)})}},{key:"handleSubsUpdated",value:function(){var t=this;if(this.state.topic){var n=[];this.props.tinode.getTopic(this.state.topic).subscribers(function(e){e.online&&e.user!=t.props.myUserId&&n.push(e)}),this.setState({onlineSubs:n})}}},{key:"handleNewMessage",value:function(e){var t=this.props.tinode.getTopic(this.state.topic),n={messages:[]};(t.messages(function(e){e.deleted||(n.messages=n.messages.concat(e))}),e&&!e.deleted)&&(t.isNewMessage(e.seq)&&(n.scrollPosition=0),t.msgStatus(e)>=E.a.MESSAGE_STATUS_SENT&&this.props.readTimerHandler(function(){t.noteRead(e.seq)}),this.props.onData(e));this.setState(n)}},{key:"handleAllMessagesReceived",value:function(e){this.setState({fetchingMessages:!1})}},{key:"handleInfoReceipt",value:function(e){switch(e.what){case"kp":clearTimeout(this.keyPressTimer);var t=this;this.keyPressTimer=setTimeout(function(){t.setState({typingIndicator:!1})},4e3),this.state.typingIndicator||this.setState({typingIndicator:!0});break;case"read":case"recv":this.forceUpdate();break;default:console.log("Other change in topic: ",e.what)}}},{key:"handleImagePreview",value:function(e){this.setState({imagePreview:e})}},{key:"handleCloseImagePreview",value:function(){this.setState({imagePreview:null})}},{key:"handleFormResponse",value:function(e,t,n){if("pub"==e)this.props.sendMessage(va.attachJSON(va.parse(t),n));else if("url"==e){var a=new URL(n.ref),o=a.searchParams;for(var r in n.resp)n.resp.hasOwnProperty(r)&&o.set(r,n.resp[r]);["name","seq"].map(function(e){n[e]&&o.set(e,n[e])}),o.set("uid",this.props.myUserId),a.search=o,window.open(a,"_blank")}else console.log("Unknown action in form",e)}},{key:"handleContextClick",value:function(e){e.preventDefault(),e.stopPropagation(),this.props.showContextMenu({topicName:this.state.topic,y:e.pageY,x:e.pageX})}},{key:"handleShowContextMenuMessage",value:function(e){e.topicName=this.state.topic;var t=["message_delete"],n=this.props.tinode.getTopic(e.topicName);if(n){var a=n.getAccessMode();a&&a.isDeleter()&&t.push("message_delete_hard")}this.props.showContextMenu(e,t)}},{key:"handleBackNavigation",value:function(){this.props.onHideMessagesView()}},{key:"handleNewChatAcceptance",value:function(e){this.props.onNewChat(this.state.topic,e)}},{key:"render",value:function(){var e,t=this.props.intl.formatMessage;if(this.state.topic){for(var n=this.props.tinode.getTopic(this.state.topic),a="grp"==n.getType(),o=[],r=null,i=null,s=0;s¯∖_(ツ)_/¯"},function(e){return w.a.createElement(Ue,{connected:t.props.connected,contacts:t.state.contactList,emptyListMessage:e,topicSelected:t.props.topicSelected,myUserId:t.props.myUserId,showOnline:!0,showUnread:!0,onTopicSelected:t.props.onTopicSelected,showContextMenu:t.props.showContextMenu,onAction:t.handleAction})})}}])&&Wa(t.prototype,n),a&&Wa(t,a),o}();function Ja(e,t){for(var n=0;nReload.'},reconnect_countdown:{id:"reconnect_countdown",defaultMessage:"Disconnected. Reconnecting in {seconds}s…"},reconnect_now:{id:"reconnect_now",defaultMessage:"Try now"}}),xr=function(e){function o(e){var t,n,a;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,o),n=this,(t=!(a=Or(o).call(this,e))||"object"!==Cr(a)&&"function"!=typeof a?jr(n):a).state=t.getBlankState(),t.handleResize=t.handleResize.bind(jr(jr(t))),t.handleHashRoute=t.handleHashRoute.bind(jr(jr(t))),t.handleOnline=t.handleOnline.bind(jr(jr(t))),t.checkForAppUpdate=t.checkForAppUpdate.bind(jr(jr(t))),t.handleAppVisibility=t.handleAppVisibility.bind(jr(jr(t))),t.handleReadTimer=t.handleReadTimer.bind(jr(jr(t))),t.handleVisibilityEvent=t.handleVisibilityEvent.bind(jr(jr(t))),t.handleError=t.handleError.bind(jr(jr(t))),t.handleLoginRequest=t.handleLoginRequest.bind(jr(jr(t))),t.handleConnected=t.handleConnected.bind(jr(jr(t))),t.handleAutoreconnectIteration=t.handleAutoreconnectIteration.bind(jr(jr(t))),t.doLogin=t.doLogin.bind(jr(jr(t))),t.handleCredentialsRequest=t.handleCredentialsRequest.bind(jr(jr(t))),t.handleLoginSuccessful=t.handleLoginSuccessful.bind(jr(jr(t))),t.handleDisconnect=t.handleDisconnect.bind(jr(jr(t))),t.tnMeMetaDesc=t.tnMeMetaDesc.bind(jr(jr(t))),t.tnMeContactUpdate=t.tnMeContactUpdate.bind(jr(jr(t))),t.tnMeSubsUpdated=t.tnMeSubsUpdated.bind(jr(jr(t))),t.resetContactList=t.resetContactList.bind(jr(jr(t))),t.tnData=t.tnData.bind(jr(jr(t))),t.tnInitFind=t.tnInitFind.bind(jr(jr(t))),t.tnFndSubsUpdated=t.tnFndSubsUpdated.bind(jr(jr(t))),t.handleSearchContacts=t.handleSearchContacts.bind(jr(jr(t))),t.handleTopicSelected=t.handleTopicSelected.bind(jr(jr(t))),t.handleHideMessagesView=t.handleHideMessagesView.bind(jr(jr(t))),t.handleSendMessage=t.handleSendMessage.bind(jr(jr(t))),t.handleNewChatInvitation=t.handleNewChatInvitation.bind(jr(jr(t))),t.handleNewAccount=t.handleNewAccount.bind(jr(jr(t))),t.handleNewAccountRequest=t.handleNewAccountRequest.bind(jr(jr(t))),t.handleUpdateAccountRequest=t.handleUpdateAccountRequest.bind(jr(jr(t))),t.handleUpdateAccountTagsRequest=t.handleUpdateAccountTagsRequest.bind(jr(jr(t))),t.handleSettings=t.handleSettings.bind(jr(jr(t))),t.handleGlobalSettings=t.handleGlobalSettings.bind(jr(jr(t))),t.handleShowArchive=t.handleShowArchive.bind(jr(jr(t))),t.handleToggleMessageSounds=t.handleToggleMessageSounds.bind(jr(jr(t))),t.initDesktopAlerts=t.initDesktopAlerts.bind(jr(jr(t))),t.togglePushToken=t.togglePushToken.bind(jr(jr(t))),t.requestPushToken=t.requestPushToken.bind(jr(jr(t))),t.handleSidepanelCancel=t.handleSidepanelCancel.bind(jr(jr(t))),t.handleNewTopic=t.handleNewTopic.bind(jr(jr(t))),t.handleNewTopicRequest=t.handleNewTopicRequest.bind(jr(jr(t))),t.handleNewTopicCreated=t.handleNewTopicCreated.bind(jr(jr(t))),t.handleTopicUpdateRequest=t.handleTopicUpdateRequest.bind(jr(jr(t))),t.handleChangePermissions=t.handleChangePermissions.bind(jr(jr(t))),t.handleTagsUpdated=t.handleTagsUpdated.bind(jr(jr(t))),t.handleLogout=t.handleLogout.bind(jr(jr(t))),t.handleLeaveUnsubRequest=t.handleLeaveUnsubRequest.bind(jr(jr(t))),t.handleDialogCancel=t.handleDialogCancel.bind(jr(jr(t))),t.handleShowContextMenu=t.handleShowContextMenu.bind(jr(jr(t))),t.defaultTopicContextMenu=t.defaultTopicContextMenu.bind(jr(jr(t))),t.handleHideContextMenu=t.handleHideContextMenu.bind(jr(jr(t))),t.handleShowInfoView=t.handleShowInfoView.bind(jr(jr(t))),t.handleHideInfoView=t.handleHideInfoView.bind(jr(jr(t))),t.handleMemberUpdateRequest=t.handleMemberUpdateRequest.bind(jr(jr(t))),t.handleValidateCredentialsRequest=t.handleValidateCredentialsRequest.bind(jr(jr(t))),t.handlePasswordResetRequest=t.handlePasswordResetRequest.bind(jr(jr(t))),t.handleResetPassword=t.handleResetPassword.bind(jr(jr(t))),t.handleContextMenuAction=t.handleContextMenuAction.bind(jr(jr(t))),t}var t,n,a;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Pr(e,t)}(o,w.a.Component),t=o,a=[{key:"tnSetup",value:function(e,t){var n=new E.a(d,e,"AQEAAAABAAD_rAp4DJh05a1HAwFT3A6K",t,kr());return n.enableLogging(!0,!0),n}},{key:"prepareSearchableContacts",value:function(e,t){var n={},a=!0,o=!1,r=void 0;try{for(var i,s=e[Symbol.iterator]();!(a=(i=s.next()).done);a=!0){var l=i.value;"p2p"==E.a.topicType(l.topic)&&(n[l.topic]={user:l.topic,updated:l.updated,public:l.public,private:l.private,acs:l.acs})}}catch(e){o=!0,r=e}finally{try{a||null==s.return||s.return()}finally{if(o)throw r}}var c=!0,u=!1,d=void 0;try{for(var p,h=t[Symbol.iterator]();!(c=(p=h.next()).done);c=!0){var f=p.value;n[f.user]||(n[f.user]=f)}}catch(e){u=!0,d=e}finally{try{c||null==h.return||h.return()}finally{if(u)throw d}}return Object.values(n)}}],(n=[{key:"getBlankState",value:function(){var e,t,n=Ya.getObject("settings")||{};return Mr(e={connected:!1,transport:n.transport||null,serverAddress:n.serverAddress||(t=h,"object"==Er(window.location)&&("file:"==window.location.protocol||"localhost"==window.location.hostname?t=p.local:window.location.hostname&&(t=window.location.hostname+(window.location.port?":"+window.location.port:""))),t),serverVersion:"no connection",messageSounds:!n.messageSoundsOff,desktopAlerts:n.desktopAlerts,desktopAlertsEnabled:(kr()||"object"==Er(window.location)&&"localhost"==window.location.hostname)&&void 0!==c&&"undefined"!=typeof navigator&&"undefined"!=typeof FIREBASE_INIT,firebaseToken:Ya.getObject("firebase-token"),errorText:"",errorLevel:null,errorAction:void 0,errorActionText:null,sidePanelSelected:"login",sidePanelTitle:null,sidePanelAvatar:null,dialogSelected:null,contextMenuVisible:!1,login:"",password:"",myUserId:null,liveConnection:navigator.onLine,topicSelected:"",topicSelectedOnline:!1,topicSelectedAcs:null,newGroupTopicParams:null,loginDisabled:!1,displayMobile:window.innerWidth<=640,showInfoPanel:!1,mobilePanel:"sidepanel"},"contextMenuVisible",!1),Mr(e,"contextMenuBounds",null),Mr(e,"contextMenuClickAt",null),Mr(e,"contextMenuParams",null),Mr(e,"contextMenuItems",[]),Mr(e,"chatList",[]),Mr(e,"searchResults",[]),Mr(e,"searchableContacts",[]),Mr(e,"credMethod",void 0),Mr(e,"credCode",void 0),e}},{key:"componentDidMount",value:function(){var t=this;if(window.addEventListener("resize",this.handleResize),window.addEventListener("online",function(e){t.handleOnline(!0)}),window.addEventListener("offline",function(e){t.handleOnline(!1)}),window.addEventListener("hashchange",this.handleHashRoute),document.addEventListener("visibilitychange",this.handleVisibilityEvent),this.setState({viewportWidth:document.documentElement.clientWidth,viewportHeight:document.documentElement.clientHeight}),this.tinode=o.tnSetup(this.state.serverAddress,this.state.transport),this.tinode.onConnect=this.handleConnected,this.tinode.onDisconnect=this.handleDisconnect,this.tinode.onAutoreconnectIteration=this.handleAutoreconnectIteration,this.state.desktopAlertsEnabled)try{this.fbPush=c.initializeApp(FIREBASE_INIT,d).messaging(),this.fbPush.usePublicVapidKey(FIREBASE_INIT.messagingVapidKey),navigator.serviceWorker.register("/service-worker.js").then(function(e){t.checkForAppUpdate(e),t.fbPush.useServiceWorker(e),t.initDesktopAlerts(),t.state.desktopAlerts&&(t.state.firebaseToken?t.tinode.setDeviceToken(t.state.firebaseToken,!0):t.togglePushToken(!0))}).catch(function(e){console.log("Failed to register service worker:",e)})}catch(e){this.handleError("Failed to initialize push notifications","err"),console.log("Failed to initialize push notifications",e),this.setState({desktopAlertsEnabled:!1})}var e=Ya.getObject("keep-logged-in")?Ya.getObject("auth-token"):void 0,n=Ro.parseUrlHash(window.location.hash);e?(e.expires=new Date(e.expires),this.tinode.setAuthToken(e),this.tinode.connect().catch(function(e){t.handleError(e.message,"err")}),delete n.params.info,delete n.params.tab,n.path[0]="",Ro.navigateTo(Ro.composeUrlHash(n.path,n.params))):n.params.token||Ro.navigateTo(""),this.readTimer=null,this.readTimerCallback=null,this.handleHashRoute()}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.handleResize),window.removeEventListener("hashchange",this.handleHashRoute),document.removeEventListener("visibilitychange",this.handleVisibilityEvent)}},{key:"handleResize",value:function(){var e=document.documentElement.clientWidth<=640;this.setState({viewportWidth:document.documentElement.clientWidth,viewportHeight:document.documentElement.clientHeight}),this.state.displayMobile!=e&&this.setState({displayMobile:e})}},{key:"checkForAppUpdate",value:function(t){var n=this,a=this.props.intl.formatHTMLMessage;t.onupdatefound=function(){var e=t.installing;e.onstatechange=function(){"installed"==e.state&&navigator.serviceWorker.controller&&n.handleError(a(Ar.update_available),"info")}}}},{key:"handleHashRoute",value:function(){var e=Ro.parseUrlHash(window.location.hash);e.path&&0=E.a.MESSAGE_STATUS_SENT&&(clearTimeout(this.receivedTimer),this.receivedTimer=setTimeout(function(){t.receivedTimer=void 0,n.noteRecv(e.seq)},500))}},{key:"tnInitFind",value:function(){var t=this,e=this.tinode.getFndTopic();e.onSubsUpdated=this.tnFndSubsUpdated,e.isSubscribed()?this.tnFndSubsUpdated():e.subscribe(e.startMetaQuery().withSub().withTags().build()).catch(function(e){t.handleError(e.message,"err")})}},{key:"tnFndSubsUpdated",value:function(){var t=[];this.tinode.getFndTopic().contacts(function(e){t.push(e)}),this.setState({searchResults:t,searchableContacts:o.prepareSearchableContacts(this.state.chatList,t)})}},{key:"handleSearchContacts",value:function(e){var t=this,n=this.tinode.getFndTopic();n.setMeta({desc:{public:e}}).then(function(e){return n.getMeta(n.startMetaQuery().withSub().build())}).catch(function(e){t.handleError(e.message,"err")})}},{key:"handleTopicSelected",value:function(e,t,n,a){e?(this.setState({errorText:"",errorLevel:null,mobilePanel:"topic-view",showInfoPanel:!1}),this.state.topicSelected!=e&&(this.setState({topicSelectedOnline:n,topicSelectedAcs:a}),Ro.navigateTo(Ro.setUrlTopic("",e)))):(this.setState({errorText:"",errorLevel:null,mobilePanel:"sidepanel",topicSelectedOnline:!1,topicSelectedAcs:null,showInfoPanel:!1}),this.state.topicSelected&&Ro.navigateTo(Ro.setUrlTopic("",null)))}},{key:"handleHideMessagesView",value:function(){this.setState({mobilePanel:"sidepanel"}),Ro.navigateTo(Ro.setUrlTopic(window.location.hash,null))}},{key:"handleSendMessage",value:function(e,t,n){var a=this,o=this.tinode.getTopic(this.state.topicSelected);(e=o.createMessage(e,!1))._uploader=n,o.isSubscribed()||(t||(t=Promise.resolve()),t=t.then(function(){return o.subscribe()})),t&&(t=t.catch(function(e){a.handleError(e.message,"err")})),o.publishDraft(e,t).then(function(e){if(o.isArchived())return o.archive(!1)}).catch(function(e){a.handleError(e.message,"err")})}},{key:"handleNewChatInvitation",value:function(t,e){var n=this,a=this.tinode.getTopic(t),o=null;switch(e){case"accept":var r=a.getAccessMode().getGiven();o=a.setMeta({sub:{mode:r}}),"p2p"==a.getType()&&(o=o.then(function(e){a.setMeta({sub:{user:t,mode:r}})}));break;case"delete":o=a.delTopic();break;case"block":o=a.setMeta({sub:{mode:"N"}}),"p2p"==a.getType()&&(o=o.then(function(e){a.setMeta({sub:{user:t,mode:"N"}})}));break;default:console.log("Unknown invitation action",'"'+e+'""')}null!=o&&o.catch(function(e){n.handleError(e.message,"err")})}},{key:"handleNewAccount",value:function(){Ro.navigateTo(Ro.setUrlSidePanel(window.location.hash,"register"))}},{key:"handleNewAccountRequest",value:function(e,t,n,a,o){var r=this;this.tinode.connect(this.state.serverAddress).then(function(){return r.tinode.createAccountBasic(e,t,{public:n,tags:o,cred:E.a.credential(a)})}).then(function(e){300<=e.code&&"validate credentials"==e.text?r.handleCredentialsRequest(e.params):r.handleLoginSuccessful(r)}).catch(function(e){r.handleError(e.message,"err")})}},{key:"handleUpdateAccountRequest",value:function(e,t,n){var a=this;if(t||n){var o={};t&&(o.public=t),n&&(o.defacs=n),this.tinode.getMeTopic().setMeta({desc:o}).catch(function(e){a.handleError(e.message,"err")})}e&&this.tinode.updateAccountBasic(null,this.tinode.getCurrentLogin(),e).catch(function(e){a.handleError(e.message,"err")})}},{key:"handleUpdateAccountTagsRequest",value:function(e){var t=this;this.tinode.getFndTopic().setMeta({tags:e}).catch(function(e){t.handleError(e.message,"err")})}},{key:"handleSettings",value:function(){Ro.navigateTo(Ro.setUrlSidePanel(window.location.hash,this.state.myUserId?"edit":"settings"))}},{key:"handleGlobalSettings",value:function(e){var t=e.serverAddress||this.state.serverAddress,n=e.transport||this.state.transport;this.tinode&&(this.tinode.onDisconnect=void 0,this.tinode.disconnect()),this.tinode=o.tnSetup(t,n),this.tinode.onConnect=this.handleConnected,this.tinode.onDisconnect=this.handleDisconnect,this.setState({serverAddress:t,transport:n}),Ya.setObject("settings",{serverAddress:t,transport:n}),Ro.navigateTo(Ro.setUrlSidePanel(window.location.hash,""))}},{key:"handleShowArchive",value:function(){Ro.navigateTo(Ro.setUrlSidePanel(window.location.hash,this.state.myUserId?"archive":""))}},{key:"initDesktopAlerts",value:function(){var e=this;this.fbPush.onTokenRefresh(function(){e.requestPushToken()}),this.fbPush.onMessage(function(e){})}},{key:"togglePushToken",value:function(e){var t=this;e?this.state.firebaseToken?(this.setState({desktopAlerts:!0}),Ya.updateObject("settings",{desktopAlerts:!0})):this.fbPush.requestPermission().then(function(){t.requestPushToken()}).catch(function(e){t.handleError(e.message,"err"),t.setState({desktopAlerts:!1,firebaseToken:null}),Ya.updateObject("settings",{desktopAlerts:!1}),console.log("Failed to get permission to notify.",e)}):this.state.firebaseToken?this.fbPush.deleteToken(this.state.firebaseToken).catch(function(e){console.log("Unable to delete token.",e)}).finally(function(){Ya.updateObject("settings",{desktopAlerts:!1}),localStorage.removeItem("firebase-token"),t.setState({desktopAlerts:!1,firebaseToken:null})}):(this.setState({desktopAlerts:!1,firebaseToken:null}),Ya.updateObject("settings",{desktopAlerts:!1}))}},{key:"requestPushToken",value:function(){var t=this;this.fbPush.getToken().then(function(e){e!=t.state.firebaseToken&&(t.tinode.setDeviceToken(e,!0),Ya.setObject("firebase-token",e)),t.setState({firebaseToken:e,desktopAlerts:!0}),Ya.updateObject("settings",{desktopAlerts:!0})}).catch(function(e){t.handleError(e.message,"err"),console.log("Failed to retrieve firebase token",e)})}},{key:"handleToggleMessageSounds",value:function(e){this.setState({messageSounds:e}),Ya.updateObject("settings",{messageSoundsOff:!e})}},{key:"handleSidepanelCancel",value:function(){var e=Ro.parseUrlHash(window.location.hash);e.path[0]=this.state.myUserId?"contacts":"",e.params&&(delete e.params.code,delete e.params.method,delete e.params.tab),Ro.navigateTo(Ro.composeUrlHash(e.path,e.params)),this.setState({errorText:"",errorLevel:null})}},{key:"handleNewTopic",value:function(){Ro.navigateTo(Ro.setUrlSidePanel(window.location.hash,"newtpk"))}},{key:"handleNewTopicRequest",value:function(e,t,n,a){var o=this,r=e||this.tinode.newGroupTopicName();e?this.handleTopicSelected(r):this.setState({newGroupTopicParams:{desc:{public:t,private:{comment:n}},tags:a}},function(){o.handleTopicSelected(r)})}},{key:"handleNewTopicCreated",value:function(e,t){this.state.topicSelected==e&&e!=t&&this.setState({topicSelected:t},function(){Ro.navigateTo(Ro.setUrlTopic("",t))})}},{key:"handleTopicUpdateRequest",value:function(e,t,n,a){var o=this,r=this.tinode.getTopic(e);if(r){var i={};t&&(i.public=t),n&&(i.private=n===E.a.DEL_CHAR?E.a.DEL_CHAR:{comment:n}),a&&(i.defacs=a),r.setMeta({desc:i}).catch(function(e){o.handleError(e.message,"err")})}}},{key:"handleChangePermissions",value:function(e,t,n){var a=this,o=this.tinode.getTopic(e);if(o){var r=o.getAccessMode();t=n?(r.updateGiven(t),r.getGiven()):(r.updateWant(t),r.getWant()),o.setMeta({sub:{user:n,mode:t}}).catch(function(e){a.handleError(e.message,"err")})}}},{key:"handleTagsUpdated",value:function(e,t){var n=this,a=this.tinode.getTopic(e);a&&a.setMeta({tags:t}).catch(function(e){n.handleError(e.message,"err")})}},{key:"handleLogout",value:function(){Lt(0),localStorage.removeItem("auth-token"),localStorage.removeItem("firebase-token"),localStorage.removeItem("settings"),this.state.firebaseToken&&this.fbPush.deleteToken(this.state.firebaseToken),this.tinode&&(this.tinode.onDisconnect=void 0,this.tinode.disconnect()),this.setState(this.getBlankState()),this.tinode=o.tnSetup(this.state.serverAddress,this.state.transport),this.tinode.onConnect=this.handleConnected,this.tinode.onDisconnect=this.handleDisconnect,Ro.navigateTo("")}},{key:"handleLeaveUnsubRequest",value:function(e){var t=this,n=this.tinode.getTopic(e);n&&n.leave(!0).then(function(e){Ro.navigateTo(Ro.setUrlTopic(window.location.hash,""))}).catch(function(e){t.handleError(e.message,"err")})}},{key:"handleDialogCancel",value:function(){this.setState({dialogSelected:null})}},{key:"handleShowContextMenu",value:function(e,t){this.setState({contextMenuVisible:!0,contextMenuClickAt:{x:e.x,y:e.y},contextMenuParams:e,contextMenuItems:t||this.defaultTopicContextMenu(e.topicName),contextMenuBounds:i.a.findDOMNode(this).getBoundingClientRect()})}},{key:"defaultTopicContextMenu",value:function(e){var t=this.tinode.getTopic(e),n=this.props.intl.formatMessage,a=!1,o=!1,r=!1,i=!1,s=!1;if(t){r=t.isSubscribed(),s=t.isArchived();var l=t.getAccessMode();l&&(a=l.isMuted(),o=!l.isJoiner(),i=l.isDeleter())}return[r?{title:n({id:"menu_item_info"}),handler:this.handleShowInfoView}:null,r?"messages_clear":null,r&&i?"messages_clear_hard":null,a?"topic_unmute":"topic_mute",o?"topic_unblock":"topic_block",s?null:"topic_archive","topic_delete"]}},{key:"handleHideContextMenu",value:function(){this.setState({contextMenuVisible:!1,contextMenuClickAt:null,contextMenuParams:null,contextMenuBounds:null})}},{key:"handleContextMenuAction",value:function(e,t,n){var a=this;"topic_archive"==e&&t&&n.topicName&&n.topicName==this.state.topicSelected&&t.then(function(){a.handleTopicSelected(null)})}},{key:"handleShowInfoView",value:function(){Ro.navigateTo(Ro.addUrlParam(window.location.hash,"info",!0)),this.setState({showInfoPanel:!0})}},{key:"handleHideInfoView",value:function(){Ro.navigateTo(Ro.removeUrlParam(window.location.hash,"info")),this.setState({showInfoPanel:!1})}},{key:"handleMemberUpdateRequest",value:function(e,t,n){var a=this;if(e){var o=this.tinode.getTopic(e);o&&(t&&0