diff --git a/css/base.css b/css/base.css index 36236e13..0b18caf1 100644 --- a/css/base.css +++ b/css/base.css @@ -1978,7 +1978,7 @@ img.channel { } -#image-preview-caption-panel { +#preview-caption-panel { display: flex; justify-content: space-between; background-color: var(--clr-background-blue-gray-50); @@ -1988,15 +1988,16 @@ img.channel { flex-grow: 0; height: var(--caption-panel-height); padding: 1rem 0.75rem 0 0.75rem; + font-size: 120%; z-index: 3; } -#image-preview-caption-panel a { +#preview-caption-panel a { color: var(--clr-text-secondary); text-decoration: none; } -#image-preview-caption-panel a:hover { +#preview-caption-panel a:hover { color: var(--clr-dark); } @@ -2033,6 +2034,7 @@ img.channel { background-color: var(--clr-std-ltgray); padding: 1rem; border-radius: 0.5rem; + max-width: 30rem; } .doc-card .avatar-box { @@ -2041,6 +2043,10 @@ img.channel { font-size: 4.5rem; } +.doc-card .avatar-box .material-icons { + line-height: 10rem; +} + /* Video-call related styles */ #video-container { diff --git a/css/base.min.css b/css/base.min.css index 3f5f2f99..bcd53dca 100644 --- a/css/base.min.css +++ b/css/base.min.css @@ -1 +1 @@ -:root{color-scheme:light dark;--message-text-size:10pt;--caption-panel-height:4rem;--wallpaper-url:url(../img/bkg/a00.png);--wallpaper-repeat:repeat;--wallpaper-blur:0px;--wallpaper-invert:0;--wallpaper-brightness:1;--wallpaper-size:contain;--wallpaper-position:center;--clr-bright:light-dark(#fff,#181818);--clr-dark:light-dark(#000,#fff);--clr-transparent:transparent;--clr-std-gray:grey;--clr-std-ltgray:light-dark(silver,#3f3f3f);--clr-std-teal:teal;--clr-std-grey:grey;--clr-std-orange:orange;--clr-primary-accent:light-dark(#2094f3,#0e6dba);--clr-primary-accent-hover:light-dark(#0a6ebd,#116ab4);--clr-primary-accent-focus-shadow:light-dark(rgba(33,150,243,.25),rgba(3,7,12,.25));--clr-primary-accent-transparent-medium:light-dark(rgba(33,150,243,.3),rgba(20,70,120,.3));--clr-primary-action:light-dark(#1e89e6,#1571c1);--clr-primary-action-hover:light-dark(#2962ff,#0037b8);--clr-secondary-accent:light-dark(#0097a8,#006570);--clr-primary-light-blue:light-dark(#bcdefb,#78a0be);--clr-light-blue-accent:light-dark(#0398e2,#0379b5);--clr-body-background:var(--clr-std-ltgray);--clr-text-primary:light-dark(#666,#999);--clr-text-secondary:light-dark(#757575,#8a8a8a);--clr-text-tertiary:light-dark(#999,#787878);--clr-text-tertiary-activated:#888;--clr-text-placeholder:light-dark(#bbb,#555);--clr-text-disabled:light-dark(#888,#777);--clr-border-light:light-dark(#ccc,#555);--clr-border-muted:light-dark(#ddd,#444);--clr-background-off-white:light-dark(#fafafa,#222);--clr-background-light-gray:light-dark(#f0f0f0,#0f0f0f);--clr-background-extra-light-gray:light-dark(#eee,#222);--clr-background-blue-gray-50:light-dark(#edf0f2,#202c33);--clr-background-blue-gray-75:light-dark(#e1e8eb,#182124);--clr-background-blue-gray-100:light-dark(#cfd8dc,#20272a);--clr-background-blue-gray-300:light-dark(#b0bec5,#354146);--clr-blue-wash-light:light-dark(#f0f0ff,#22222d);--clr-blue-wash-medium:light-dark(#d8e8ff,#123550);--clr-primary-wash:light-dark(#e3f2fd,#072f45);--clr-indigo-50:light-dark(#e8eaf6,#1a2c44);--clr-danger-text:light-dark(#d33131,#931f1f);--clr-danger-text-hover:light-dark(#f44034,#c10);--clr-error-text-muted:light-dark(#c66,#933);--clr-error-bg-light:light-dark(#ffccd1,#ff6675);--clr-error-border-light:light-dark(#ffbdc6,#ff334e);--clr-error-text-dark:light-dark(#b51c1c,#de2323);--clr-error-icon:light-dark(#ef5552,#d81b0e);--clr-warning-accent:light-dark(#ffc107,#808020);--clr-warning-bg-light:light-dark(#fff9c4,#00060c);--clr-warning-border-light:light-dark(#fff59d,#000a2b);--clr-warning-text-dark:light-dark(#6d4c41,#a08356);--clr-warning-icon:light-dark(#fbc02d,#b48204);--clr-info-bg-light:light-dark(#e1f5fe,#010a0e);--clr-info-border-light:light-dark(#b3e5fc,#001824);--clr-info-text-dark:light-dark(#0288d1,#00151f);--clr-header-stripe-bg:light-dark(#3949ab,#12152f);--clr-scrollbar-thumb:light-dark(rgba(0,0,0,.3),hsla(0,0%,100%,.3));--clr-scrollbar-track:light-dark(hsla(0,0%,100%,.1),rgba(0,0,0,.1));--clr-menu-item-hover-bg:light-dark(#f5f5f5,#0a0a0a);--clr-alert-overlay-bg:light-dark(hsla(0,0%,94%,.85),hsla(0,0%,6%,.85));--clr-verified-accent:light-dark(#02a6f2,#027db6);--clr-staff-accent:light-dark(#689f38,#598830);--clr-badge-inv:light-dark(#fffd,#cccd);--clr-cyan-50:light-dark(#e0f7fa,#2f3e43);--clr-overlay-white-strong:light-dark(hsla(0,0%,100%,.9),rgba(0,0,0,.9));--clr-gray-medium-bg:light-dark(#777,#444);--clr-toast-bg:#333;--clr-toast-text:light-dark(#eee,#aaa);--clr-online:#4caf50;--clr-offline:light-dark(#ccc,#999);--clr-shadow-input-underline:rgba(0,0,0,.1);--clr-shadow-hr-inset:rgba(0,0,0,.15);--clr-shadow-scrollbar-track-webkit:rgba(0,0,0,.2);--clr-shadow-button:rgba(0,0,0,.25);--clr-shadow-button-inset-active:rgba(0,0,0,.125);--clr-shadow-dialog:rgba(0,0,0,.45);--clr-shadow-panel-divider:rgba(0,0,0,.1);--clr-shadow-gray-strong:light-dark(var(--clr-std-gray),#333);--clr-shadow-silver-subtle:light-dark(var(--clr-std-ltgray),#333);--clr-shadow-bubble-drop:rgba(0,0,0,.3);--clr-button-primary-bg:var(--clr-primary-action);--clr-button-primary-text:var(--clr-bright);--clr-button-primary-hover-bg:var(--clr-primary-action-hover);--clr-button-secondary-bg:var(--clr-bright);--clr-button-secondary-text:var(--clr-primary-accent);--clr-button-secondary-hover-bg:var(--clr-primary-wash);--clr-button-outline-text:var(--clr-primary-accent);--clr-button-outline-border:var(--clr-std-ltgray);--clr-button-outline-hover-bg:var(--clr-indigo-50);--clr-button-danger-bg:light-dark(#ec645f,#d74742);--clr-button-danger-text:var(--clr-bright);--clr-button-danger-hover-bg:light-dark(#f77,#a55);--clr-button-positive-bg:light-dark(#71c46f,#3f983e);--clr-button-positive-text:var(--clr-bright);--clr-button-positive-hover-bg:light-dark(#7fed7f,#6ec26e);--clr-input-text:var(--clr-text-primary);--clr-input-border:var(--clr-border-light);--clr-input-border-focus:var(--clr-primary-accent);--clr-input-shadow:var(--clr-shadow-input-underline);--clr-input-shadow-focus:var(--clr-primary-accent-focus-shadow);--clr-input-invalid-border:light-dark(#e57171,#561010);--clr-input-invalid-shadow:light-dark(#e5737340,#1a0c0c40);--clr-input-placeholder-text:var(--clr-text-placeholder);--clr-bubble-left-bg:light-dark(#c4e0a3,#3e5c1f);--clr-bubble-left-bg-flash:light-dark(#94a97c,#2c4517);--clr-bubble-right-bg:var(--clr-background-off-white);--clr-bubble-right-bg-flash:var(--clr-border-light);--clr-bubble-text:light-dark(#212121,#bbc);--clr-bubble-meta-text:var(--clr-text-primary);--clr-bubble-meta-deleted-bg:var(--clr-primary-wash);--clr-bubble-meta-date-bg:light-dark(hsla(0,0%,100%,.8),rgba(40,40,40,.8));--clr-bubble-timestamp-text:light-dark(#777,#888);--clr-bubble-author-text:light-dark(#777,#666);--clr-reply-quote-border:var(--clr-light-blue-accent);--clr-reply-quote-text:var(--clr-text-primary);--clr-reply-quote-left-bg:light-dark(hsla(0,0%,100%,.4),rgba(0,0,0,.4));--clr-reply-quote-right-bg:light-dark(#8080801f,#c4c4c42e);--clr-reply-quote-preview-bg:var(--clr-background-off-white);--clr-badge-default-bg:light-dark(#e8e8e8,#171717);--clr-badge-default-text:var(--clr-text-primary);--clr-badge-default-border:var(--clr-std-ltgray);--clr-badge-green-bg:light-dark(#efe,#131);--clr-badge-green-text:light-dark(#383,#363);--clr-badge-green-border:light-dark(#aca,#242);--clr-badge-yellow-bg:light-dark(#ffe,#331);--clr-badge-yellow-text:light-dark(#660,#660);--clr-badge-yellow-border:light-dark(#cc9,#552);--clr-badge-blue-bg:light-dark(#f0f0ff,#224);--clr-badge-blue-text:light-dark(#339,#447);--clr-badge-blue-border:light-dark(#aad,#336);--clr-badge-red-bg:light-dark(#fee,#522);--clr-badge-red-text:light-dark(#933,#744);--clr-badge-red-border:light-dark(#c99,#633);--clr-badge-magenta-bg:light-dark(#fef,#535);--clr-badge-magenta-text:light-dark(#939,#747);--clr-badge-magenta-border:light-dark(#c9c,#636);--clr-chip-bg:var(--clr-background-extra-light-gray);--clr-chip-invalid-text:var(--clr-error-text-muted);--clr-chip-invalid-bg:var(--clr-badge-red-bg);--clr-chip-remove-icon-bg:light-dark(#aaa,#555);--clr-chip-remove-icon-text:var(--clr-background-extra-light-gray);--clr-chip-remove-icon-hover-bg:var(--clr-text-placeholder);--clr-chip-remove-icon-hover-text:var(--clr-bright);--clr-tabbar-bg:var(--clr-background-extra-light-gray);--clr-tabbar-inactive-text:light-dark(rgba(33,150,243,.6),#165aa0);--clr-tabbar-active-text:var(--clr-primary-accent);--clr-tabbar-inactive-border:var(--clr-border-light);--clr-tabbar-active-border:var(--clr-primary-accent);--clr-highlight-text:var(--clr-std-teal);--clr-highlight-preview-text:light-dark(#5f9ea0,#205e60);--clr-spinner-track:light-dark(#f3f3f3,#0c0c0c);--clr-spinner-active:var(--clr-primary-action);--clr-cropper-bounding-box-border:var(--clr-primary-action);--clr-cropper-bounding-box-bg:var(--clr-text-tertiary);--clr-cropper-cutout-border:var(--clr-text-tertiary);--clr-cropper-cutout-shadow:light-dark(rgba(230,246,255,.66),rgba(25,10,0,.66));--clr-audio-bg:var(--clr-background-extra-light-gray);--clr-audio-icon:light-dark(hsla(180,7%,43%,.8),hsla(0,7%,57%,.8));--clr-audio-icon-disabled:light-dark(hsla(0,0%,60%,.75),hsla(0,0%,40%,.75));--clr-audio-timer-text:light-dark(hsla(0,0%,40%,.75),hsla(0,0%,60%,.75));--clr-pinned-menu-bg:light-dark(#f8f8f8,#1a1a1a);--clr-drag-n-drop-border:var(--clr-std-grey);--clr-drag-n-drop-text:var(--clr-std-grey);--clr-drag-n-drop-bg:light-dark(hsla(0,0%,100%,.95),rgba(0,0,0,.95));--clr-drag-n-drop-outline:light-dark(hsla(0,0%,100%,.95),rgba(0,0,0,.95));--clr-lettertile-default-text:light-dark(#fafafacc,#dcdcdccc);--clr-lettertile-hover-text:var(--clr-bright);--clr-lt-bg-0:#ef9a9a;--clr-lt-bg-1:#90caf9;--clr-lt-bg-2:#b0bec4;--clr-lt-bg-3:#b49edb;--clr-lt-bg-4:#ffa98f;--clr-lt-bg-5:#a4d5a6;--clr-lt-bg-6:#ededed;--clr-lt-bg-7:#e6ee9b;--clr-lt-bg-8:#c4e0a3;--clr-lt-bg-9:#f0e57f;--clr-lt-bg-10:#f490b1;--clr-lt-bg-11:#a0a8da;--clr-lt-bg-12:#ffdf80;--clr-lt-bg-13:#bcaaa4;--clr-lt-bg-14:#80deea;--clr-lt-bg-15:#cd92d8;--clr-dk-bg-0:#c72929;--clr-dk-bg-1:#ad1457;--clr-dk-bg-2:#681b98;--clr-dk-bg-3:#4527a0;--clr-dk-bg-4:#293594;--clr-dk-bg-5:#1565c1;--clr-dk-bg-6:#0277bb;--clr-dk-bg-7:#00838f;--clr-dk-bg-8:#006b5f;--clr-dk-bg-9:#2f7f33;--clr-dk-bg-10:#54892f;--clr-dk-bg-11:#9e9e24;--clr-dk-bg-12:#f9a824;--clr-dk-bg-13:#ff9100;--clr-dk-bg-14:#f06c00;--clr-dk-bg-15:#d54215;--clr-lt-fg-0:var(--clr-lt-bg-0);--clr-lt-fg-1:var(--clr-lt-bg-1);--clr-lt-fg-2:var(--clr-lt-bg-2);--clr-lt-fg-3:var(--clr-lt-bg-3);--clr-lt-fg-4:var(--clr-lt-bg-4);--clr-lt-fg-5:var(--clr-lt-bg-5);--clr-lt-fg-6:var(--clr-lt-bg-6);--clr-lt-fg-7:var(--clr-lt-bg-7);--clr-lt-fg-8:var(--clr-lt-bg-8);--clr-lt-fg-9:var(--clr-lt-bg-9);--clr-lt-fg-10:var(--clr-lt-bg-10);--clr-lt-fg-11:var(--clr-lt-bg-11);--clr-lt-fg-12:var(--clr-lt-bg-12);--clr-lt-fg-13:var(--clr-lt-bg-13);--clr-lt-fg-14:var(--clr-lt-bg-14);--clr-lt-fg-15:var(--clr-lt-bg-15);--clr-dk-fg-0:var(--clr-dk-bg-0);--clr-dk-fg-1:var(--clr-dk-bg-1);--clr-dk-fg-2:var(--clr-dk-bg-2);--clr-dk-fg-3:var(--clr-dk-bg-3);--clr-dk-fg-4:var(--clr-dk-bg-4);--clr-dk-fg-5:var(--clr-dk-bg-5);--clr-dk-fg-6:var(--clr-dk-bg-6);--clr-dk-fg-7:var(--clr-dk-bg-7);--clr-dk-fg-8:var(--clr-dk-bg-8);--clr-dk-fg-9:var(--clr-dk-bg-9);--clr-dk-fg-10:var(--clr-dk-bg-10);--clr-dk-fg-11:var(--clr-dk-bg-11);--clr-dk-fg-12:var(--clr-dk-bg-12);--clr-dk-fg-13:var(--clr-dk-bg-13);--clr-dk-fg-14:var(--clr-dk-bg-14);--clr-dk-fg-15:var(--clr-dk-bg-15)}*{box-sizing:border-box;font-family:Roboto,Arial,sans-serif;margin:0;padding:0;scrollbar-color:var(--clr-scrollbar-thumb) var(--clr-scrollbar-track);scrollbar-width:thin;text-rendering:optimizeLegibility}body,html{background-color:var(--clr-body-background);box-shadow:inset 0 10rem var(--clr-header-stripe-bg);color:var(--clr-text-primary);font-size:10pt;height:100%;overflow:hidden;width:100%}tt{font-family:Roboto Mono,Courier,monospace}a{color:var(--clr-primary-accent);text-decoration:none}a:focus,a:hover{color:var(--clr-primary-accent-hover);text-decoration:underline}a.danger{color:var(--clr-danger-text)}a.danger:focus,a.danger:hover{color:var(--clr-danger-text-hover)}a.gray:focus,a.gray:hover{color:var(--clr-text-tertiary)}form{line-height:1.5;padding:.5rem .75rem}form,label{font-size:1.1rem}label{margin-right:auto}label.small{font-size:.95rem}label.large,label.small{color:var(--clr-primary-action)}label.large{font-size:1.1rem}label.invalid{color:var(--clr-danger-text)}img.avatar{border-radius:50%;height:100%;width:100%}img.avatar.self{padding:7%}button{border:1px solid var(--clr-transparent);border-radius:4px;box-shadow:0 1px 3px 0 var(--clr-shadow-button);cursor:pointer;display:inline-block;font-family:inherit;font-size:1.05rem;font-weight:400;height:2.2rem;line-height:2.2rem;margin:0 .35rem;min-width:5rem;padding-left:1.2rem;padding-right:1.2rem;text-align:center;text-transform:uppercase;touch-action:manipulation;vertical-align:middle;white-space:nowrap}button[disabled],html input[disabled]{box-shadow:none;cursor:default;filter:grayscale(50%);opacity:.65}button.round{border-radius:50%;box-shadow:0 2px .5rem 0 var(--clr-shadow-button);height:3rem;line-height:3.5rem;margin:0;outline:none;padding:0;width:3rem;z-index:2}button.round.small{box-shadow:0 2px .35rem 0 var(--clr-shadow-button);height:2rem;line-height:2rem;width:2rem}button:active:not([disabled]),button:hover:not([disabled]){color:var(--clr-bright)}button:active{box-shadow:inset 0 3px .5rem var(--clr-shadow-button-inset-active)}button:active.round.small{box-shadow:inset 0 2px .35rem var(--clr-shadow-button-inset-active)}button.primary{background-color:var(--clr-button-primary-bg);color:var(--clr-button-primary-text)}button.primary:active:not([disabled]),button.primary:hover:not([disabled]){background-color:var(--clr-button-primary-hover-bg)}button.secondary{background-color:var(--clr-button-secondary-bg);color:var(--clr-button-secondary-text)}button.secondary:active:not([disabled]),button.secondary:hover:not([disabled]){background-color:var(--clr-button-secondary-hover-bg)}button.outline{background-color:var(--clr-transparent);border:1px solid var(--clr-button-outline-border);box-shadow:none;color:var(--clr-button-outline-text)}button.outline:active:not([disabled]),button.outline:hover:not([disabled]){background-color:var(--clr-button-outline-hover-bg);color:var(--clr-button-outline-text)}button.danger{background-color:var(--clr-button-danger-bg);color:var(--clr-button-danger-text)}button.danger:active:not([disabled]),button.danger:hover:not([disabled]){background-color:var(--clr-button-danger-hover-bg)}button.positive{background-color:var(--clr-button-positive-bg);color:var(--clr-button-positive-text)}button.positive:active:not([disabled]),button.positive:hover:not([disabled]){background-color:var(--clr-button-positive-hover-bg)}input,textarea{background:var(--clr-transparent);border:none;color:var(--clr-input-text);font-family:inherit;font-size:1.1rem;margin:.25rem 0;outline:none;padding:0 .125rem}input[type=email],input[type=password],input[type=search],input[type=tel],input[type=text],textarea{border-bottom:1px solid var(--clr-input-border);box-shadow:0 1px 0 var(--clr-input-shadow);height:2.5rem;transition:all .1s ease-in-out,height 0s}input[type=email],input[type=password],input[type=tel],input[type=text],textarea{width:100%}input[type=email]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,textarea:focus{border-bottom:1px solid var(--clr-input-border-focus);box-shadow:0 1px 0 var(--clr-input-shadow-focus)}input[type=email].invalid,input[type=password].invalid,input[type=search].invalid,input[type=tel].invalid,input[type=text].invalid,textarea.invalid{border-bottom:1px solid var(--clr-input-invalid-border);box-shadow:0 1px 0 var(--clr-input-invalid-shadow)}input[type=email]::placeholder,input[type=password]::placeholder,input[type=search]::placeholder,input[type=tel]::placeholder,input[type=text]::placeholder,textarea::placeholder{color:var(--clr-input-placeholder-text);font-weight:lighter}input[type=password].with-icon-right,input[type=text].with-icon-right{margin-right:-2rem;padding-right:2rem}input[type=password].with-icon-left,input[type=text].with-icon-left{margin-left:-1.45rem;padding-left:1.75rem}textarea{padding-top:.45rem;resize:none}input[type=range]{width:90%}option{padding:0}datalist{display:flex;flex-direction:row;justify-content:space-between;width:100%}::-webkit-scrollbar{width:.6rem}::-webkit-scrollbar-track{background-color:var(--clr-scrollbar-track);-webkit-box-shadow:inset 0 0 6px var(--clr-shadow-scrollbar-track-webkit);box-shadow:inset 0 0 6px var(--clr-shadow-scrollbar-track-webkit)}::-webkit-scrollbar-thumb{background-color:var(--clr-scrollbar-thumb)}ul.menu{background-color:var(--clr-bright);border-radius:.2rem;box-shadow:0 1px 6px var(--clr-shadow-dialog);list-style:none;padding-bottom:.35rem;padding-top:.35rem;position:absolute;width:12rem;z-index:4}ul.menu>li{cursor:pointer;padding:.75rem .75rem .75rem 1.25rem}ul.menu>li:hover{background-color:var(--clr-menu-item-hover-bg)}ul.menu>li.separator{height:1px;margin:2px;padding:0}ul.menu>li.separator,ul.menu>li.separator:hover{background-color:var(--clr-border-light)}ul.menu>li.disabled{opacity:.6;pointer-events:none}.menuTrigger{background-color:inherit;border-radius:.7rem;height:1.4rem;line-height:1.4rem;opacity:0;position:absolute;right:.25rem;text-align:center;user-select:none;width:1.4rem}.menuTrigger a{color:var(--clr-text-secondary)}li .menuTrigger{top:.25rem}li:hover .menuTrigger{opacity:.9}li:hover .menuTrigger a{color:var(--clr-text-secondary)}div.alert-container{align-items:center;background:var(--clr-alert-overlay-bg);display:flex;height:100%;justify-content:center;overflow:hidden;padding:1rem;position:absolute;width:100%;z-index:3}div.alert{background-color:var(--clr-bright);border-radius:.3rem;box-shadow:.15rem .15rem 1.5rem var(--clr-shadow-dialog);height:min-content;margin:auto 2rem;max-height:40rem;max-width:24rem;min-width:16rem;overflow:hidden;padding:1rem;position:relative;width:fit-content}div.alert-container .title{color:var(--clr-primary-accent);font-size:1.2rem;font-weight:500;padding:0 0 .35rem;position:relative;width:100%}div.alert-container .title.with-control{align-items:center;display:flex;flex:none;justify-content:space-between;padding:.5rem .5rem 0;position:relative}div.alert-container .content{padding:.5rem 0;position:relative}div.trusted-badge{margin:.25rem 0}.blue{color:var(--clr-primary-accent)!important}.lt-blue{color:var(--clr-lt-fg-1)!important}.orange{color:var(--clr-std-orange)!important}.verified-color{color:var(--clr-verified-accent)!important}.staff-color{color:var(--clr-staff-accent)!important}.danger-color{color:var(--clr-warning-accent)!important}.green{color:light-dark(#388e3c,#1a9a1d)}.white{color:var(--clr-bright)!important}.red{color:var(--clr-danger-text)!important}.badge-inv{color:var(--clr-badge-inv)!important}.gray{color:var(--clr-text-secondary)!important}.light-gray{color:var(--clr-text-placeholder)!important}.large{font-size:120%}.small{font-size:90%}.float-right{position:absolute;right:.5rem}.hr{background-color:var(--clr-background-light-gray);box-shadow:inset 0 .25rem .25rem -.25rem var(--clr-shadow-hr-inset),inset 0 -.25rem .25rem -.25rem var(--clr-shadow-hr-inset);display:block;height:.45rem;min-height:.3rem;width:100%}.hr.thin{height:.015rem}.divider{border-left:1.5px groove var(--clr-border-muted);display:inline-block;margin:0 .25rem;width:1px}.ellipsized{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.flat-button{align-items:center;background-color:var(--clr-bright);display:flex;font-weight:400;height:2em;line-height:2em;margin:.15rem .35rem;text-align:center;text-transform:uppercase;touch-action:manipulation;vertical-align:middle;white-space:nowrap;z-index:1}.flat-button:focus,.flat-button:hover{text-decoration:none}.flat-button.disabled,.flat-button.disabled:focus,.flat-button.disabled:hover{color:var(--clr-primary-accent);cursor:default;filter:grayscale(75%);opacity:.75}.flat-button.faux{background-color:var(--clr-background-extra-light-gray);border:1px solid var(--clr-text-tertiary);border-radius:3px;display:inline-block;height:1.4em;line-height:1.4em;margin:.15rem;padding:0 .35rem;text-transform:none}.action-button{background-color:var(--clr-background-off-white);border-radius:50%;box-shadow:0 2px .5rem 0 var(--clr-shadow-button);color:var(--clr-text-secondary);display:block;font-size:1.8rem;height:3.25rem;margin:0;min-height:unset;min-width:unset;outline:none;padding:0;position:absolute;transition:all .15s;width:3.25rem;z-index:2}.action-button:active:not([disabled]),.action-button:focus,.action-button:hover,.action-button:hover:not([disabled]){background-color:var(--clr-primary-action-hover);color:var(--clr-text-tertiary-activated)}.action-button:active{background-color:var(--clr-primary-action);color:var(--clr-text-tertiary-activated)}.action-button.hidden{bottom:2.625rem;font-size:1px;height:1px;line-height:1px;opacity:0;right:2.625rem;width:1px}.group-focus{outline:none}#mountPoint{height:100%;padding-bottom:1rem;padding-top:1rem}#noscript-message{background-color:var(--clr-bright);border-radius:.25rem;box-shadow:1px 2px .3rem var(--clr-shadow-gray-strong);display:flex;flex-direction:column;margin-left:auto;margin-right:auto;margin-top:5rem;max-width:30rem;overflow:hidden;position:relative}#noscript-title{background-color:var(--clr-primary-accent);color:var(--clr-primary-light-blue);font-size:120%;font-weight:bolder;padding:1rem}#noscript-content{padding:1rem}#app-container{background-color:var(--clr-bright);border-radius:.25rem;box-shadow:1px 2px .3rem var(--clr-shadow-gray-strong);display:flex;height:100%;margin-left:auto;margin-right:auto;max-width:84rem;overflow:hidden;position:relative}#sidepanel{flex-grow:0;flex-shrink:0.3;min-width:18rem;width:24rem}#sidepanel,#topic-view{display:flex;flex-direction:column;height:100%;position:relative}#topic-view{overflow-x:hidden;width:100%}#info-view{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0.3;height:100%;min-width:18rem;position:relative;width:24rem}.center-medium-text{align-items:center;display:flex;font-size:1.4rem;height:100%;justify-content:center;text-align:center;width:100%}.nodisplay{display:none!important}.quoted{margin-left:1rem}.space-right{margin-right:.25rem}.rounded-container{background-color:var(--clr-background-off-white);border-radius:.1rem;margin:.25rem;padding:.25rem;position:relative}div.in-place-edit,span.in-place-edit{border-bottom:1px dashed var(--clr-border-muted);cursor:pointer;display:inline-block;font-family:inherit;font-size:1rem;margin:.25rem .125rem 0;vertical-align:baseline;width:100%}.in-place-edit.short{align-items:center;display:inline-flex;font-size:1.1rem;height:2.5rem;line-height:2.25;white-space:nowrap}.in-place-edit.disabled{border-bottom:none;color:var(--clr-text-disabled);cursor:default}.in-place-edit.placeholder{color:var(--clr-text-placeholder)}.in-place-edit span{display:inline-block}.in-place-edit.short span{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.in-place-edit .material-icons{display:inline-block}.material-icons.invalid{color:var(--clr-error-text-muted)}textarea.in-place-edit{font-size:unset;height:unset}input.in-place-edit.invalid{color:var(--clr-error-text-muted)}table.permission-editor{width:100%}table.permission-editor td{font-size:1.1rem;margin:.35rem 0;vertical-align:middle}table.permission-editor td.checkbox{color:var(--clr-text-tertiary);text-align:center}.permission-editor .material-icons{font-size:1.3rem;line-height:1.3rem}.material-icons.clickable{border-bottom:none;cursor:pointer}.clickable{border-bottom:1px dashed var(--clr-border-muted)}.clean-clickable,.clickable,.image-clickable{cursor:pointer}.panel-title{font-size:1.4rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-title.deleted{text-decoration:line-through}.caption-panel{box-shadow:0 1px 2px var(--clr-shadow-gray-strong);flex:none;height:var(--caption-panel-height);overflow-x:hidden;white-space:nowrap;z-index:1}.caption-panel,.dialog-buttons{align-items:center;display:flex;padding:.5rem}.dialog-buttons{justify-content:flex-end}.dialog-buttons button{margin:0 .5rem}.avatar-box{flex-grow:0;flex-shrink:0;position:relative}.bot-form{display:flex;flex-direction:column;line-height:2rem;min-width:8rem;overflow:hidden}.bot-form div{min-height:2rem;vertical-align:middle}.bot-form button{background-color:var(--clr-blue-wash-light);color:var(--clr-primary-accent);display:inline-block;font-size:inherit;height:2rem;line-height:2rem;margin:.15rem;text-transform:none}.bot-form>div>button{width:auto}.bot-form button:active,.bot-form button:focus,.bot-form button:hover{background-color:var(--clr-primary-wash);color:var(--clr-dk-fg-5);outline:0}#side-caption-panel{background-color:var(--clr-primary-accent);color:var(--clr-primary-light-blue)}#side-caption-panel a{color:var(--clr-primary-light-blue);line-height:1;padding-left:.5rem}#side-caption-panel :hover{color:var(--clr-bright)}#sidepanel-title{margin-left:.5rem;margin-right:auto}#self-avatar{border-radius:50%;flex:none;height:3rem;min-width:3rem;width:3rem}#self-avatar.avatar-box{font-size:1.8rem}#settings-form ul{list-style:none}#settings-form li{vertical-align:middle}#settings-form label{display:inline-block;padding-left:.5rem}input#host-name{width:100%}input.search{text-indent:1.4rem}i.search{left:.6rem;position:absolute}.info-box{display:none;overflow:hidden;padding:1rem 1.5rem .75rem .5rem;position:relative}.info-box>span{line-height:1.35rem}.info-box .cancel{position:absolute;right:.25rem;top:.5rem}.info-box.error{background-color:var(--clr-error-bg-light);border-bottom:1px solid var(--clr-error-border-light);color:var(--clr-error-text-dark);display:flex}.info-box.warning{background-color:var(--clr-warning-bg-light);border-bottom:1px solid var(--clr-warning-border-light);color:var(--clr-warning-text-dark);display:flex}.info-box.info{background-color:var(--clr-info-bg-light);border-bottom:1px solid var(--clr-info-border-light);color:var(--clr-info-text-dark);display:flex}.info-box .cancel .material-icons{color:var(--clr-text-secondary);font-size:1rem}.info-box.error .cancel .material-icons{color:var(--clr-error-text-dark)}.info-box .icon{display:block;margin-right:.5rem}.info-box .icon .material-icons{font-size:1.5rem}.info-box.warning .icon .material-icons{color:var(--clr-warning-icon)}.info-box.error .icon .material-icons{color:var(--clr-error-icon)}.info-box.info .icon .material-icons{color:var(--clr-info-text-dark)}.flex-column{display:flex;flex-direction:column;height:100%;overflow-x:hidden}.flex-column.narrow{height:auto}.scrollable-panel{height:100%;margin-bottom:auto;margin-top:.25rem;overflow-x:hidden;overflow-y:auto;scroll-behavior:smooth}.contact-box{list-style:none;overflow-x:hidden}.contact-box>li{background:linear-gradient(to right,var(--clr-transparent) 3.5rem,var(--clr-background-extra-light-gray) 1px,var(--clr-background-extra-light-gray) 100%) 0 100% /100% 1px no-repeat,var(--clr-bright);cursor:pointer;display:flex;flex-grow:0;flex-shrink:0;min-height:3.75rem;overflow-x:hidden;padding:.35rem .25rem .5rem .35rem;position:relative}.contact-box.small>li{min-height:2.5rem;padding:.25rem .25rem .35rem .35rem}.contact-box>li:last-child{background:var(--clr-bright)}.contact-box>li:hover{background-color:var(--clr-background-blue-gray-50)}.contact-box>li.selected{background-color:var(--clr-background-blue-gray-100)}.contact-box>li.tpinned{background-color:var(--clr-background-blue-gray-75);border-right:1.5px solid var(--clr-secondary-accent)}.contact-box>li.action{border-bottom:none;min-height:2.5rem}.contact-box .text-box{overflow-x:hidden}.contact-box .contact-title{font-size:1.05rem;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-box .contact-title.deleted{opacity:.66;text-decoration:line-through;text-decoration-thickness:.5px}.contact-box .contact-comment{font-weight:lighter}.contact-box .contact-comment,.contact-box .contact-comment>span{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-box .contact-comment b{font-weight:bolder}.contact-box .contact-comment .material-icons{color:light-dark(#777,#666);margin-bottom:.2rem}.contact-box .avatar-box{font-size:1.8rem;height:3rem;margin-right:.35rem;min-height:3rem;min-width:3rem;overflow:hidden;padding:0;position:relative;width:3rem}.contact-box .avatar{border-radius:50%;height:3rem;width:3rem}.contact-box.small .avatar-box{font-size:1.2rem;height:2rem;min-height:2rem;min-width:2rem;width:2rem}.contact-box.small .avatar{height:2rem;width:2rem}.avatar.deleted{filter:grayscale(1);opacity:.75}.contact-box .avatar-box>.material-icons{display:flex;flex-direction:column;font-size:2.4rem;justify-content:space-around;line-height:3rem}.contact-box.small .avatar-box>.material-icons{font-size:1.6rem;line-height:2rem}.contact-box .text-box{display:flex;flex-direction:column;justify-content:space-around}.contact-box .text-box>div{align-items:center;display:flex;flex-direction:row}.contact-box .action-text{cursor:pointer;font-size:.95rem;line-height:2.5rem;margin:0 auto;text-align:center}img.channel{height:1.25rem;margin-left:.3rem;vertical-align:middle;width:1.25rem}.large img.channel{height:1.45rem;margin-bottom:.15rem;margin-left:.5rem;width:1.45rem}.avatar-box .online,.offline{border-radius:50%;bottom:.1rem;flex-shrink:0;height:.75rem;min-height:.75rem;min-width:.75rem;position:absolute;right:0;width:.75rem}.avatar-box .online{background-color:var(--clr-online)}.avatar-box .offline{background-color:var(--clr-offline)}.online.typing{animation:typing .5s infinite}@keyframes typing{0%,to{transform:translateX(0)}50%{transform:translateX(-.3rem)}}.contact-box .checkmark.material-icons{border:0 solid var(--clr-transparent);color:var(--clr-secondary-accent);overflow:visible;padding-left:.5px}.contact-box .checkmark.material-icons,.contact-box .deleted.material-icons{background-color:var(--clr-bright);bottom:0;font-size:1.5rem;height:1.5rem;position:absolute;right:0;width:1.5rem}.contact-box .deleted.material-icons{color:var(--clr-text-tertiary)}#add-topic{bottom:1rem;position:absolute;right:1rem}.panel-form{display:flex;flex-direction:column;padding:0;position:relative}.panel-form-row{align-items:center;flex-shrink:0}.panel-form-column,.panel-form-row{display:flex;flex-grow:0;line-height:1.5;padding:.5rem .75rem;position:relative}.panel-form-column{flex-direction:column;overflow-x:clip}.panel-form-column>.panel-form-column,.panel-form-row>.panel-form-column{flex-grow:1;padding:0!important}.panel-form-column>.panel-form-row,.panel-form-row>.panel-form-row{padding:0!important}.panel-form-column>.group{margin-bottom:.25rem;margin-top:.25rem}.avatar-upload{display:flex;flex-direction:column;flex-shrink:0;font-size:4.5rem;height:10.5rem;margin:.25rem;padding:0;position:relative;width:10rem}.avatar-upload.read-only{height:auto}.avatar-upload .clear-avatar{background-image:radial-gradient(var(--clr-bright) 40%,var(--clr-transparent) 75%);font-size:1rem;opacity:0;position:absolute;right:0;top:0}.avatar-upload:hover .clear-avatar{opacity:1}.avatar-upload .avatar-box{height:10rem;position:relative;width:10rem}.avatar-upload .avatar-box>.material-icons{font-size:4rem;line-height:10rem;position:relative;vertical-align:middle}.avatar-upload:after{clear:both;content:".";display:block;height:0;visibility:hidden}.avatar-upload .blank{border:1px dashed var(--clr-text-tertiary);color:var(--clr-text-tertiary);flex-shrink:0;font-size:1rem;line-height:10rem;text-align:center;vertical-align:middle}.avatar-upload .blank,.avatar-upload img.preview{border-radius:50%;height:10rem;overflow:hidden;width:10rem}.avatar-upload img.preview:before{background:50% no-repeat url(../img/broken_image.png);border-radius:50%;color:var(--clr-text-primary);content:" ";display:flex;font-size:.9rem;font-weight:lighter;height:10rem;justify-content:center;left:0;position:absolute;top:0;width:10rem}.avatar-upload .inputfile.hidden{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px}.avatar-upload .inputfile+label.round{align-items:center;background-color:var(--clr-background-off-white);border-radius:50%;bottom:0;box-shadow:0 1px 4px var(--clr-shadow-dialog);cursor:pointer;display:flex;height:3rem;justify-content:center;line-height:3rem;position:absolute;right:0;width:3rem;z-index:1}.avatar-upload .inputfile:focus+label.round{outline:none}.avatar-upload .inputfile+label:hover,.avatar-upload .inputfile:focus+label{background-color:var(--clr-primary-wash);color:var(--clr-primary-accent)}#topic-caption-panel{background-color:var(--clr-background-blue-gray-300)}#topic-caption-panel a{color:var(--clr-text-secondary);text-decoration:none}#topic-caption-panel :hover{color:var(--clr-dark)}#topic-caption-panel .avatar-box{font-size:1.8rem;height:3rem;margin-right:.35rem;min-width:3rem;position:relative;width:3rem}#topic-caption-panel .avatar-box>.material-icons{font-size:2.4rem;line-height:3rem}#topic-title-group{overflow-x:hidden}#hide-message-view{display:block;margin-right:.35rem}#topic-users{margin-left:auto;margin-right:1rem;width:min-content}#topic-users .avatar-box{display:inline-block;font-size:1rem;height:1.8rem;margin-right:.2rem;min-height:1.8rem;min-width:1.8rem;width:1.8rem}#topic-users .avatar-box>.material-icons{font-size:1.4rem;line-height:1.8rem}#topic-users>span{line-height:2rem;vertical-align:top}.qr-code{align-self:center}#messages-container{height:100%;overflow-y:hidden;position:relative}#messages-container:before{background-color:var(--clr-background-blue-gray-50);background-image:var(--wallpaper-url);background-position:var(--wallpaper-position);background-repeat:var(--wallpaper-repeat);background-size:var(--wallpaper-size);content:"";filter:blur(var(--wallpaper-blur)) invert(var(--wallpaper-invert)) brightness(var(--wallpaper-brightness));height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:0}#messages-panel{height:100%;overflow-y:scroll;padding:.75rem;position:relative}#write-only-background{background-image:repeating-linear-gradient(45deg,hsla(0,0%,100%,.5),hsla(0,0%,100%,.5) .5rem,hsla(0,0%,100%,.8) 0,hsla(0,0%,100%,.8) 1rem);height:100%;left:0;position:absolute;top:0;width:100%}#write-only-note{height:auto;top:50%;transform:translate(-50%,-50%);width:auto}#peer-messaging-disabled-note,#write-only-note{background-color:var(--clr-bright);border-radius:.5rem;box-shadow:0 1px .5px var(--clr-shadow-button-inset-active);color:var(--clr-text-primary);left:50%;line-height:2rem;padding:.75rem 1.25rem;position:absolute;text-align:center}#peer-messaging-disabled-note{bottom:4.3rem;transform:translate(-50%);width:fit-content}#send-message-panel{align-items:center;background-color:var(--clr-background-blue-gray-50);display:flex;flex:none;min-height:4rem;padding:.4rem .4rem .4rem .6rem;z-index:2}#send-message-panel #writing-disabled{font-size:1.2rem;text-align:center;width:100%}#send-message-wrapper{background-color:var(--clr-background-blue-gray-50);box-shadow:0 -2px 3px -1px var(--clr-shadow-panel-divider);z-index:2}#sendMessage{overflow:hidden;overflow-wrap:break-word}#send-message-panel .material-icons{font-size:1.6rem;min-width:2rem}#send-message-panel .material-icons.secondary,.material-icons.disabled{color:var(--clr-text-tertiary)!important}#send-message-panel .material-icons.secondary:hover{color:var(--clr-primary-accent)!important}#send-message-input{max-height:6rem;min-height:2.5rem;overflow:hidden auto}.accept-invite-panel{background-color:var(--clr-background-blue-gray-50);box-shadow:0 -2px 3px -1px var(--clr-shadow-panel-divider);width:100%;z-index:1}.accept-invite-panel .title{font-size:1.2rem;padding:.75rem}.accept-invite-panel .footer{background-color:var(--clr-background-off-white);padding-bottom:.35rem;text-align:center;white-space:nowrap}.accept-invite-panel button{border:1px solid var(--clr-transparent);box-shadow:0 1px 2px 0 var(--clr-shadow-button);font-size:1rem;height:2em;line-height:2em;margin:.25rem}#dummy-view{align-items:center;background-color:var(--clr-cyan-50);display:flex;height:100%;justify-content:center;width:100%}#dummy-view a{display:block;text-align:center;text-decoration:none}#image-preview{background-color:var(--clr-overlay-white-strong);display:flex;flex-direction:column;height:100%;left:0;position:absolute;top:0;width:100%;z-index:2}#image-preview-caption-panel{background-color:var(--clr-background-blue-gray-50);box-shadow:0 1px 2px var(--clr-shadow-silver-subtle);display:flex;flex-grow:0;flex-shrink:0;height:var(--caption-panel-height);justify-content:space-between;line-height:2rem;padding:1rem .75rem 0;z-index:3}#image-preview-caption-panel a{color:var(--clr-text-secondary);text-decoration:none}#image-preview-caption-panel a:hover{color:var(--clr-dark)}#image-preview-container{align-items:center;background-color:var(--clr-gray-medium-bg);display:flex;height:100%;justify-content:space-around;overflow:hidden;width:100%}#image-preview-footer{background-color:var(--clr-background-blue-gray-50);box-shadow:0 -2px 3px -1px var(--clr-shadow-panel-divider);display:flex;flex-grow:0;flex-shrink:0;height:3.2rem;justify-content:space-around;line-height:1.5rem;z-index:1}#image-preview-container .material-icons{font-size:6rem}#image-preview-container .doc-card{background-color:var(--clr-std-ltgray);border-radius:.5rem;display:flex;flex-direction:column;overflow-x:hidden;padding:1rem}.doc-card .avatar-box{font-size:4.5rem;height:10rem;width:10rem}#video-container{background-color:var(--clr-overlay-white-strong);display:flex;flex-direction:column;height:100%;justify-content:space-between;left:0;position:absolute;top:0;width:100%;z-index:3}#video-container.minimized{background-color:unset;border-radius:.5rem;box-shadow:.15rem .15rem 1.5rem var(--clr-shadow-dialog);cursor:grab;height:18rem;left:auto;right:1rem;top:1rem;user-select:none;width:18rem}#controls{align-items:center;align-self:center;bottom:2.5rem;column-gap:1rem;display:flex;justify-content:center;position:absolute;z-index:1}#controls.minimized{bottom:1.75rem;column-gap:.5rem}.incoming-call #controls{bottom:1rem}#controls button{align-items:center;border-radius:50%;box-shadow:0 3px 6px 0 var(--clr-shadow-button);display:flex;height:4rem;justify-content:center;min-width:auto;position:relative;width:4rem}#controls.minimized button{box-shadow:0 2px 4px 0 var(--clr-shadow-button);height:2.75rem;width:2.75rem}#controls button .material-icons{font-size:1.8rem}#controls.minimized button .material-icons{font-size:1.4rem}button.full-screen{background-color:transparent;border-radius:.5rem;box-shadow:none;height:2.5rem;left:2rem;min-width:unset;padding:0;position:absolute;top:2rem;width:2.5rem;z-index:1}.minimized button.full-screen{height:2rem;left:1rem;top:1rem;width:2rem}button.full-screen:hover:not([disabled]),button:active:not([disabled]){color:var(--clr-text-secondary)}button.full-screen .material-icons{font-size:x-large}.minimized button.full-screen .material-icons{font-size:large}#video-container-panel{height:100%;position:relative;width:100%}.call-party{background-color:var(--clr-background-extra-light-gray);border:2px solid var(--clr-border-light);border-radius:.5rem;overflow:hidden}.call-party:hover{border-color:var(--clr-primary-accent)}.minimized .call-party{border-width:1px}.call-party.peer{bottom:1rem;left:1rem;position:absolute;right:1rem;top:1rem;z-index:1}.minimized .call-party.peer{bottom:0;left:0;right:0;top:0}.call-party.self{bottom:.5rem;height:10rem;position:absolute;right:.5rem;width:10rem;z-index:2}.call-party.self[disabled]{display:none}video{height:100%;object-fit:contain;width:100%}.call-party.self video{transform:scaleX(-1)}.call-party[disabled] video{display:none}.caller-card{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.caller-card .avatar-box{font-size:6rem;height:10rem;width:10rem}.caller-card.pulse .lettertile,.caller-card.pulse img.avatar{animation:active-call 1.5s linear infinite}.caller-card .avatar-box .material-icons{font-size:6rem;line-height:1.6}.minimized .caller-card .avatar-box{font-size:3.6rem;height:6rem;width:6rem}.call-party .caller-name{background-color:var(--clr-background-off-white);border-radius:.35rem;max-width:12rem;overflow-x:hidden;padding:.15rem .5rem;text-overflow:ellipsis;text-shadow:0 0 1px var(--clr-bright);white-space:nowrap;z-index:1}.call-party.self .caller-name.inactive{bottom:.25rem;position:absolute;right:.25rem}.caller-card .caller-name{font-size:larger;margin-top:.5rem}.caller-card .trusted-badge{display:inline-block}.call-party.peer .caller-name.inactive{bottom:.5rem;font-size:larger;left:1rem;margin:0 auto;position:absolute}.minimized .caller-name{border-radius:.25rem;font-weight:lighter;padding:.1rem .35rem}.incoming-call{background-color:var(--clr-bright);border-radius:.3rem;box-shadow:.15rem .15rem 1.5rem var(--clr-shadow-dialog);margin:auto 2rem;max-width:24rem;min-width:16rem;width:fit-content}.incoming-call,.incoming-call .caller-card{display:flex;flex-direction:column;position:relative}.incoming-call .caller-card{align-items:center;height:100%;justify-content:center;left:auto;padding:4rem 3.5rem 5.5rem;top:auto;width:100%}.incoming-call .caller-name{background-color:var(--clr-background-off-white);border-radius:.35rem;overflow-x:hidden;padding:.15rem .5rem;text-overflow:ellipsis;text-shadow:0 0 1px var(--clr-bright);white-space:nowrap;z-index:1}.call-message{display:flex;flex-direction:row}.call-message .duration{font-weight:lighter}#go-to-latest{bottom:1rem;right:1.5rem}@keyframes active-call{0%{box-shadow:0 0 0 .1rem var(--clr-primary-accent-transparent-medium),0 0 0 .3rem var(--clr-primary-accent-transparent-medium),0 0 0 .5rem var(--clr-primary-accent-transparent-medium)}to{box-shadow:0 0 0 .4rem var(--clr-primary-accent-transparent-medium),0 0 0 2rem rgba(33,150,243,0),0 0 0 3rem rgba(33,150,243,0)}}.chat-box{list-style:none;margin:0 .5rem;padding:0 0 3.5rem;scroll-behavior:smooth}.chat-box.group{margin-left:-.4rem}.chat-box li{align-items:flex-end;display:flex;margin:0;padding:0}.chat-box .right{justify-content:flex-end}.bubble{border-radius:.5rem;color:var(--clr-bubble-text);display:flex;filter:drop-shadow(.5px .5px .7px var(--clr-shadow-bubble-drop));height:auto;margin:0;max-width:36rem;min-width:9rem;padding:.75rem .5rem;position:relative;text-align:left;transition:background-color .5s ease-out;transition-delay:.3s}.chat-box li.single{margin-bottom:.75rem;margin-top:.25rem}.chat-box li.first{margin-bottom:.15rem;margin-top:.25rem}.chat-box li.middle{margin-bottom:.15rem;margin-top:.15rem}.chat-box li.last{margin-bottom:.75rem;margin-top:.15rem}.left .bubble{background-color:var(--clr-bubble-left-bg);margin-right:.5rem}.left.flash .bubble{background-color:var(--clr-bubble-left-bg-flash)}.left .bubble.tip{border-bottom-left-radius:0}.right .bubble{background-color:var(--clr-bubble-right-bg);margin-left:1.75rem}.right.flash .bubble{background-color:var(--clr-bubble-right-bg-flash)}.right .bubble.tip{border-bottom-right-radius:0}.chat-box .meta{justify-content:center;margin-bottom:.5rem;margin-top:.5rem}.chat-box .meta .bubble{color:var(--clr-bubble-meta-text);min-width:unset}.meta .bubble.deleted{background-color:var(--clr-bubble-meta-deleted-bg);padding:.75rem .75rem .5rem}.meta .bubble.date{background-color:var(--clr-bubble-meta-date-bg);font-size:smaller;padding:.5rem;text-transform:uppercase;user-select:none}.left .bubble.tip:before{background-color:var(--clr-bubble-left-bg);border-bottom-left-radius:.3rem;bottom:0;clip-path:polygon(100% 0,0 110%,100% 110%);-webkit-clip-path:polygon(100% 0,0 110%,100% 110%);content:"";height:.85rem;left:-.8rem;position:absolute;transition:background-color .5s ease-out;transition-delay:.3s;width:.85rem}.left.flash .bubble.tip:before{background-color:var(--clr-bubble-left-bg-flash)}.right .bubble.tip:before{background-color:var(--clr-bubble-right-bg);border-bottom-right-radius:.3rem;bottom:0;clip-path:polygon(0 0,100% 110%,0 110%);-webkit-clip-path:polygon(0 0,100% 110%,0 110%);content:"";height:.85rem;left:99.8%;position:absolute;transition:background-color .5s ease-out;transition-delay:.3s;width:.85rem}.right.flash .bubble.tip:before{background-color:var(--clr-bubble-right-bg-flash)}.chat-box .avatar-box{font-size:.8rem;height:1.4rem;margin-bottom:.8rem;margin-right:.8rem;min-height:1.4rem;min-width:1.4rem;position:relative;width:1.4rem}.bubble div.content-meta{width:100%}.bubble div.message-content{font-size:var(--message-text-size);margin:0;max-width:36rem;overflow-wrap:anywhere;padding:0 .75rem;position:relative;width:100%}.bubble div.message-content.emoji-1{font-size:300%}.bubble div.message-content.emoji-2{font-size:241%}.bubble div.message-content.emoji-3{font-size:193%}.bubble div.message-content.emoji-4{font-size:155%}.bubble div.message-content.emoji-5{font-size:125%}.bubble div.message-content:after{clear:both;content:".";display:block;height:0;visibility:hidden}.chat-box .timestamp-padding{display:inline-block;height:0;width:4rem}.chat-box .timestamp{color:var(--clr-bubble-timestamp-text);float:right;font-size:80%;position:relative;top:.35rem;user-select:none;white-space:nowrap}.chat-box .author{color:var(--clr-bubble-author-text);font-size:80%;max-width:12em;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.image-preview,.inline-image{border-radius:.1rem;overflow:hidden;position:relative}.inline-image{max-height:24rem;max-width:36rem}.inline-image>.rounded-container{border-left:.25rem solid var(--clr-transparent);border-right:.25rem solid var(--clr-transparent);bottom:2rem;margin:.25rem auto;position:relative}img.image-preview:before,img.inline-image:before{background:center no-repeat var(--clr-border-light) url(../img/broken_image.png);color:var(--clr-text-primary);display:flex;font-size:.9rem;font-weight:lighter;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}img.inline-image:before{background-size:3rem 3rem;content:attr(alt)}img.image-preview:before{background-size:10rem 10rem;content:" "}.inline-image.video>img.inline-image:before,img.image-preview.video:before{background:center no-repeat var(--clr-border-light) url(../img/broken_video.png)}.inline-image.video>img.inline-image:before{background-size:3rem 3rem}.inline-video{align-items:center;display:flex;justify-content:center;position:relative}.inline-video>img.inline-image:before{background:var(--clr-border-light)}.inline-video .duration{background-color:hsla(0,0%,100%,.5);border-radius:.3rem;bottom:.25rem;color:var(--clr-toast-bg);font-size:80%;left:.25rem;padding:.25rem .5rem;position:absolute}.inline-video .play-control{align-items:center;background-color:rgba(0,0,0,.4);border-radius:50%;cursor:pointer;display:flex;height:4rem;justify-content:center;pointer-events:none;position:absolute;width:4rem}.attachment{display:flex}.attachment:last-of-type{margin-bottom:-.45rem}#info-caption-panel{background-color:var(--clr-background-blue-gray-300)}#info-caption-panel a{color:var(--clr-text-secondary);line-height:1;text-decoration:none}#info-caption-panel :hover{color:var(--clr-dark)}#info-title{margin-right:auto}#group-manager{display:flex;flex-direction:column;height:100%;overflow-y:hidden;position:relative}#group-manager-buttons{background-color:var(--clr-background-blue-gray-50);border-left:1px solid var(--clr-border-light);box-shadow:0 -1px var(--clr-shadow-panel-divider);display:flex;height:4rem;justify-content:space-around;padding:.4rem;z-index:2}ul.tabbar{background:var(--clr-tabbar-bg);display:flex;flex-grow:0;flex-shrink:0;list-style:none;margin:0;overflow:hidden;padding:0 0 0 1rem;width:100%}ul.tabbar>li{box-shadow:inset 0 -2px 2.5px -1px var(--clr-shadow-button);height:2.4rem;position:relative}ul.tabbar li.active{background:var(--clr-bright)}ul.tabbar li:after{background:var(--clr-tabbar-inactive-border);bottom:0;content:"";height:.1rem;left:0;position:absolute;width:100%}ul.tabbar li.active:after{animation:tabbar-border-expand .2s cubic-bezier(.4,0,.4,1) 0s alternate forwards;background:var(--clr-tabbar-active-border);bottom:0;content:"";height:.15rem;left:0;position:absolute}@keyframes tabbar-border-expand{0%{opacity:0;width:0}to{opacity:1;width:100%}}ul.tabbar>li>a{color:var(--clr-tabbar-inactive-text);font-size:1.3rem;font-variant:small-caps;font-weight:400;line-height:2.4rem;overflow:hidden;padding-left:1rem;padding-right:1rem;position:relative;text-align:center;text-decoration:none}ul.tabbar li.active>a{color:var(--clr-tabbar-active-text)}.unread{background-color:var(--clr-secondary-accent);border-radius:50%;color:var(--clr-bright);display:inline-block;font-size:.75rem;font-weight:bolder;height:1.35rem;line-height:1.45rem;margin-left:.5rem;text-align:center;vertical-align:middle;width:1.35rem}.material-icons.as-badge{color:var(--clr-chip-remove-icon-bg);font-size:1.15rem;padding-left:.2rem}.badge{align-self:flex-start;background-color:var(--clr-badge-default-bg);border:1px solid var(--clr-badge-default-border);border-radius:.2rem;color:var(--clr-badge-default-text);display:inline-block;font-family:Roboto Mono,Courier,monospace,sans-serif;font-size:.8rem;margin:.05rem .1rem;padding:.05rem .25rem}.badge.green{background-color:var(--clr-badge-green-bg);border-color:var(--clr-badge-green-border);color:var(--clr-badge-green-text)}.badge.yellow{background-color:var(--clr-badge-yellow-bg);border-color:var(--clr-badge-yellow-border);color:var(--clr-badge-yellow-text)}.badge.blue{background-color:var(--clr-badge-blue-bg);border-color:var(--clr-badge-blue-border);color:var(--clr-badge-blue-text)}.badge.red{background-color:var(--clr-badge-red-bg);border-color:var(--clr-badge-red-border);color:var(--clr-badge-red-text)}.badge.magenta{background-color:var(--clr-badge-magenta-bg);border-color:var(--clr-badge-magenta-border);color:var(--clr-badge-magenta-text)}.lettertile{border-radius:50%;padding-bottom:100%;user-select:none;width:100%}.lettertile>div{align-items:center;border-radius:50%;bottom:0;color:var(--clr-lettertile-default-text);display:flex;flex-grow:0;flex-shrink:0;justify-content:center;left:0;line-height:1;padding-top:.1em;position:absolute;right:0;text-align:center;text-transform:uppercase;top:0}.lettertile:hover{color:var(--clr-lettertile-hover-text)}.lettertile.disabled{opacity:.5}.lt-bg-0{background-color:var(--clr-lt-bg-0)}.lt-bg-1{background-color:var(--clr-lt-bg-1)}.lt-bg-2{background-color:var(--clr-lt-bg-2)}.lt-bg-3{background-color:var(--clr-lt-bg-3)}.lt-bg-4{background-color:var(--clr-lt-bg-4)}.lt-bg-5{background-color:var(--clr-lt-bg-5)}.lt-bg-6{background-color:var(--clr-lt-bg-6)}.lt-bg-7{background-color:var(--clr-lt-bg-7)}.lt-bg-8{background-color:var(--clr-lt-bg-8)}.lt-bg-9{background-color:var(--clr-lt-bg-9)}.lt-bg-10{background-color:var(--clr-lt-bg-10)}.lt-bg-11{background-color:var(--clr-lt-bg-11)}.lt-bg-12{background-color:var(--clr-lt-bg-12)}.lt-bg-13{background-color:var(--clr-lt-bg-13)}.lt-bg-14{background-color:var(--clr-lt-bg-14)}.lt-bg-15{background-color:var(--clr-lt-bg-15)}.dk-bg-0{background-color:var(--clr-dk-bg-0)}.dk-bg-1{background-color:var(--clr-dk-bg-1)}.dk-bg-2{background-color:var(--clr-dk-bg-2)}.dk-bg-3{background-color:var(--clr-dk-bg-3)}.dk-bg-4{background-color:var(--clr-dk-bg-4)}.dk-bg-5{background-color:var(--clr-dk-bg-5)}.dk-bg-6{background-color:var(--clr-dk-bg-6)}.dk-bg-7{background-color:var(--clr-dk-bg-7)}.dk-bg-8{background-color:var(--clr-dk-bg-8)}.dk-bg-9{background-color:var(--clr-dk-bg-9)}.dk-bg-10{background-color:var(--clr-dk-bg-10)}.dk-bg-11{background-color:var(--clr-dk-bg-11)}.dk-bg-12{background-color:var(--clr-dk-bg-12)}.dk-bg-13{background-color:var(--clr-dk-bg-13)}.dk-bg-14{background-color:var(--clr-dk-bg-14)}.dk-bg-15{background-color:var(--clr-dk-bg-15)}.lt-fg-0{color:var(--clr-lt-fg-0)!important}.lt-fg-1{color:var(--clr-lt-fg-1)!important}.lt-fg-2{color:var(--clr-lt-fg-2)!important}.lt-fg-3{color:var(--clr-lt-fg-3)!important}.lt-fg-4{color:var(--clr-lt-fg-4)!important}.lt-fg-5{color:var(--clr-lt-fg-5)!important}.lt-fg-6{color:var(--clr-lt-fg-6)!important}.lt-fg-7{color:var(--clr-lt-fg-7)!important}.lt-fg-8{color:var(--clr-lt-fg-8)!important}.lt-fg-9{color:var(--clr-lt-fg-9)!important}.lt-fg-10{color:var(--clr-lt-fg-10)!important}.lt-fg-11{color:var(--clr-lt-fg-11)!important}.lt-fg-12{color:var(--clr-lt-fg-12)!important}.lt-fg-13{color:var(--clr-lt-fg-13)!important}.lt-fg-14{color:var(--clr-lt-fg-14)!important}.lt-fg-15{color:var(--clr-lt-fg-15)!important}.dk-fg-0{color:var(--clr-dk-fg-0)!important}.dk-fg-1{color:var(--clr-dk-fg-1)!important}.dk-fg-2{color:var(--clr-dk-fg-2)!important}.dk-fg-3{color:var(--clr-dk-fg-3)!important}.dk-fg-4{color:var(--clr-dk-fg-4)!important}.dk-fg-5{color:var(--clr-dk-fg-5)!important}.dk-fg-6{color:var(--clr-dk-fg-6)!important}.dk-fg-7{color:var(--clr-dk-fg-7)!important}.dk-fg-8{color:var(--clr-dk-fg-8)!important}.dk-fg-9{color:var(--clr-dk-fg-9)!important}.dk-fg-10{color:var(--clr-dk-fg-10)!important}.dk-fg-11{color:var(--clr-dk-fg-11)!important}.dk-fg-12{color:var(--clr-dk-fg-12)!important}.dk-fg-13{color:var(--clr-dk-fg-13)!important}.dk-fg-14{color:var(--clr-dk-fg-14)!important}.dk-fg-15{color:var(--clr-dk-fg-15)!important}.material-icons{font-size:1.4rem;line-height:1;text-align:center;user-select:none;vertical-align:middle}.material-icons.small{font-size:1rem}.material-icons.medium{font-size:1.2rem}.material-icons.large{font-size:1.6rem}.material-icons.big{font-size:2.2rem}.material-icons.x-big{font-size:3rem}.material-icons.huge{font-size:4rem}.composed-material{display:inline-block;position:relative}.composed-material .second{font-size:85%;font-weight:700;left:39%;position:absolute;top:7%}.composed-material .second-small{font-size:62%;font-weight:700;left:30%;position:absolute;top:14%}.material-icons.outline{position:relative;text-shadow:-1px 1px var(--clr-bright),1px 1px var(--clr-bright),1px -1px var(--clr-bright),-1px -1px var(--clr-bright)}#self-avatar .material-icons{font-size:2.4rem;line-height:3rem}.avatar-box .material-icons{border-radius:50%;color:var(--clr-lettertile-default-text);height:inherit;width:inherit}.chip-input{align-items:center;background:var(--clr-transparent);border-bottom:1px solid var(--clr-input-border);box-shadow:0 1px 0 var(--clr-input-shadow);color:var(--clr-input-text);cursor:text;display:flex;flex-grow:1;flex-wrap:wrap;font-size:1.1rem;font-weight:400;justify-content:flex-start;margin:.25rem 0;max-height:10rem;min-height:4rem;outline:none;overflow-y:scroll;text-align:center;transition:all .1s ease-in-out}.chip-input.focused{border-bottom:1px solid var(--clr-input-border-focus);box-shadow:0 1px 0 var(--clr-input-shadow-focus)}.chip-input>input[type=text]{border:none;box-shadow:none;display:inline-block;flex:1 0 auto;min-width:4rem;width:auto}.chip,.chip-input>input[type=text]{height:1.8rem;line-height:1.8;margin:.125rem}.chip{align-items:center;background-color:var(--clr-chip-bg);border-radius:.9rem;display:flex;flex:0 0 auto;font-size:90%;max-width:12rem;overflow:hidden}.chip,.chip>span{text-overflow:ellipsis;white-space:nowrap}.chip>span{overflow-x:hidden}.chip.invalid{background-color:var(--clr-chip-invalid-bg);color:var(--clr-chip-invalid-text)}.chip>a{background-color:var(--clr-chip-remove-icon-bg);border-radius:50%;color:var(--clr-chip-remove-icon-text);display:inline-block;height:1.175rem;line-height:1.15;margin:.3rem;min-width:1.175rem;text-decoration:none;width:1.175rem}.chip>a:focus,.chip>a:hover{background-color:var(--clr-chip-remove-icon-hover-bg);color:var(--clr-chip-remove-icon-hover-text);text-decoration:none}.chip .avatar-box{font-size:1rem;height:1.8rem;margin-right:.2rem;min-height:1.8rem;min-width:1.8rem;position:relative;width:1.8rem}.chip .avatar-box .material-icons{font-size:1.4rem;line-height:1.8rem}.chip .spacer{display:inline-block;height:1.175rem;margin:.3rem;width:.25rem}.load-spinner-box{--size-small:2.5rem;--size-large:4rem;background-color:var(--clr-bright);border-radius:50%;box-shadow:.1rem .1rem .15rem 1px var(--clr-shadow-button);height:var(--size-small);left:0;margin-left:auto;margin-right:auto;padding:.25rem;position:absolute;right:0;top:5rem;width:var(--size-small);z-index:2}.load-spinner-box.large{height:var(--size-large);width:var(--size-large)}.load-spinner-box.clear{background-color:hsla(0,0%,100%,.5);box-shadow:.1rem .1rem .15rem 1px var(--clr-shadow-button-inset-active)}.load-spinner-box.centered{top:calc(var(--size-small)/2 - .25rem)}.load-spinner-box.large.centered{top:calc(var(--size-large)/2 - .25rem)}.loader-spinner{animation:spin 1.5s linear infinite;border-radius:50%;border-top:.35rem solid var(--clr-spinner-track);border:.35rem solid var(--clr-spinner-track);border-top-color:var(--clr-spinner-active);height:2rem;width:2rem}.load-spinner-box.large .loader-spinner{height:3.5rem;width:3.5rem}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.uploader{display:flex}.uploader>div{background-color:var(--clr-background-blue-gray-100);border-radius:.1rem;height:.6rem;line-height:0;margin:.35rem;padding:.15rem;position:relative;width:6rem}.uploader>div>span{background-color:var(--clr-primary-action);border-radius:.08rem;display:inline-block;height:.3rem}.highlight{color:var(--clr-highlight-text);font-weight:bolder}.highlight .preview{color:var(--clr-highlight-preview-text);font-weight:inherit}.cropper{align-self:center;height:21rem;margin:1rem auto auto;transform:translateZ(0)}.cropper,.cropper .bounding-box{border-radius:.25rem;position:relative;width:18rem}.cropper .bounding-box{background-color:var(--clr-cropper-bounding-box-bg);border:2px solid var(--clr-cropper-bounding-box-border);box-shadow:1px 1px 3px var(--clr-shadow-cropper-gray);height:18rem;overflow:hidden;z-index:1}.cropper .preview{max-height:none;max-width:none;position:absolute;z-index:-1}.cropper .cutout{border:1px dashed var(--clr-cropper-cutout-border);bottom:0;box-shadow:0 0 150rem 150rem var(--clr-cropper-cutout-shadow);height:17.8rem;left:0;margin:auto;position:absolute;right:0;top:0;width:17.8rem;z-index:0}.cropper .cutout.circle{border-radius:50%}.cropper .overlay{cursor:move;position:absolute;touch-action:none;z-index:1}.cropper .zoom-wrapper{height:2rem;margin:1rem auto;text-align:center;width:80%}.cropper .zoom{box-shadow:none;pointer-events:none;z-index:2}.cropper .zoom:focus{outline:none}.reply-quote{border-left:.25rem solid var(--clr-reply-quote-border);border-radius:.25rem;color:var(--clr-reply-quote-text);cursor:pointer;font-weight:lighter;line-height:1.5em;padding:.15rem .5rem .25rem;position:relative}.chat-box .bubble .reply-quote{margin:.15rem -.75rem .3rem}.chat-box .bubble .reply-quote:first-child{margin-top:-.25rem}.chat-box .left .reply-quote{background-color:var(--clr-reply-quote-left-bg)}.chat-box .right .reply-quote{background-color:var(--clr-reply-quote-right-bg)}.reply-quote .inline-image{margin-bottom:.1rem;vertical-align:middle}.reply-quote img.inline-image:before{content:""}#reply-quote-preview{align-items:center;display:flex}#reply-quote-preview .reply-quote{background-color:var(--clr-reply-quote-preview-bg);cursor:auto;margin:.35rem .5rem 0 0;width:100%}#reply-quote-preview .cancel{min-width:2.4rem;text-align:center}#reply-quote-preview .inline-image{background-color:var(--clr-border-light)}#reply-quote-preview img.inline-image:before{content:""}#send-message-panel #reply-quote-preview{width:100%}#send-message-panel #reply-quote-preview .reply-quote{margin-bottom:.35rem}.forwarding-quote{font-size:200%;line-height:200%}.mention{font-weight:500}.forward-dialog{background-color:var(--clr-bright);border-radius:.3rem;box-shadow:.15rem .15rem 1.5rem var(--clr-shadow-dialog);height:80%;margin:auto 1rem;overflow:hidden;padding:.5rem;position:relative;width:24rem}.forward-dialog .scrollable-panel{height:80%}.audio{align-items:center;background-color:var(--clr-audio-bg);border-radius:1.5rem;display:flex;flex:none;height:3rem;margin-left:auto}.audio canvas{height:2.6rem;margin-right:2rem;width:14rem}.audio canvas.playback{margin-right:0}.audio .duration{font-size:large}.audio-player{align-items:center;display:flex}.audio-player .material-icons.large{color:var(--clr-audio-icon);font-size:2.4rem}.audio-player .material-icons.disabled{color:var(--clr-audio-icon-disabled);cursor:default}.audio-player .playback{height:2.6rem;width:14rem}.audio-player canvas.playback{display:block}.audio-player div.playback{align-items:center;color:var(--clr-audio-icon);display:flex;font-size:small;justify-content:center}.audio-player .timer{color:var(--clr-audio-timer-text);font-size:smaller}#pinned-wrapper{margin-right:.5rem}#pinned-wrapper,.pinned{align-items:center;display:flex;height:100%;position:relative}.pinned{background-color:var(--clr-background-off-white);background-position:50%;border-radius:0 .25rem .25rem 0;color:var(--clr-text-primary);cursor:pointer;font-weight:lighter;min-width:0;padding:.15rem .5rem .25rem;transition:background .4s;width:24rem}.pinned>p{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.pinned:hover{background-color:var(--clr-bright)}.pinned:active{background-color:var(--clr-blue-wash-medium);transition:background 0s}.pinned-scroll{align-items:center;background-color:var(--clr-background-extra-light-gray);border-radius:.25rem 0 0 .25rem;display:flex;flex-direction:column;height:100%;justify-content:space-evenly;margin-left:.35rem;padding:.2rem;position:relative;user-select:none}.pinned-scroll .dot{background-color:var(--clr-text-tertiary);border-radius:50%;height:.3rem;user-select:none;width:.3rem}.pinned-scroll .adot{background-color:var(--clr-light-blue-accent);border-radius:50%;height:.45rem;user-select:none;width:.45rem}#pinned-wrapper:hover .menuTrigger{opacity:.9}#pinned-wrapper:hover .menuTrigger a{color:var(--clr-text-secondary)}.pinned-menu{background-color:var(--clr-pinned-menu-bg);border-radius:0 .25rem .25rem 0;bottom:0;display:flex;flex-direction:column;justify-content:space-evenly;position:absolute;right:0;top:0}.pinned-menu .menuTrigger{position:relative;right:0}.contact-card{background-color:var(--clr-background-off-white);border-radius:.5rem;display:flex;flex-direction:column;min-width:14rem;position:relative}.contact-card .avatar-box{font-size:1rem;height:1.8rem;margin-bottom:0;margin-right:.75rem;position:relative;width:1.8rem}.contact-card .contact-body{align-items:center;background-color:var(--clr-background-blue-gray-50);border-bottom:none;border-radius:.5rem .5rem 0 0;display:flex;padding:.75rem}.contact-card .contact-body .name-box{display:flex;flex-direction:column;overflow:hidden}.contact-card .contact-body .name-box .name{color:var(--clr-text-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-card .contact-body .name-box .org{color:var(--clr-text-secondary);font-size:90%;font-weight:300;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-card .contact-actions{align-items:center;background-color:var(--clr-bright);border-radius:0 0 .5rem .5rem;border-top:none;display:flex;justify-content:space-evenly;padding:0 .5rem}.contact-card .contact-actions a{cursor:pointer}.contact-card .contact-actions .divider{height:1.8rem;opacity:.5}.drag-n-drop{align-items:center;background-color:var(--clr-drag-n-drop-bg);border:.15rem dashed var(--clr-drag-n-drop-border);border-radius:1rem;bottom:1.5rem;color:var(--clr-drag-n-drop-text);display:flex;font-size:2rem;justify-content:center;left:1.5rem;outline:.5rem solid var(--clr-drag-n-drop-outline);position:absolute;right:1.5rem;top:1.5rem;z-index:3}.country-flag{display:inline-block;font-size:larger}.dial-code{cursor:pointer;display:inline-block;margin-bottom:.15rem;vertical-align:middle;white-space:nowrap}ul.phone-country-selector{list-style:none;overflow-x:hidden}ul.phone-country-selector>li{cursor:pointer;font-weight:lighter;padding:.25rem .5rem .15rem;position:relative;width:100%}ul.phone-country-selector>li:hover{background-color:var(--clr-background-blue-gray-50)}ul.phone-country-selector>li.selected{background-color:var(--clr-background-blue-gray-100)}ul.phone-country-selector .dial-code{color:var(--clr-primary-action);font-weight:400;position:absolute;right:.5rem}ul.phone-country-selector span{display:inline-block}ul.phone-country-selector span.country{overflow-x:hidden;text-overflow:ellipsis}.image-grid{display:grid;gap:.35rem;grid-template-columns:repeat(auto-fill,minmax(7rem,1fr));padding:.25rem;position:relative}.image-grid-cell{border:1.5px solid transparent;border-radius:.25rem;box-shadow:0 0 .2rem var( --clr-shadow-hr-inset);cursor:pointer;height:7rem;margin:0;overflow:hidden;padding:0;width:100%}.image-grid-cell img{object-fit:cover}.image-grid-cell.selected{border:1.5px solid var(--clr-secondary-accent)}img.inverted{filter:invert(1)}div.toast{align-items:center;background-color:var(--clr-toast-bg);border-radius:.5rem;bottom:2rem;box-shadow:1px 2px .3rem var(--clr-shadow-gray-strong);color:var(--clr-toast-text);display:flex;font-weight:lighter;height:3rem;justify-content:center;left:50%;min-width:10rem;padding:.5rem 1rem;position:absolute;translate:-50%;visibility:hidden;z-index:3}div.toast.show{animation:fadein .5s,fadeout .5s 2.5s;visibility:visible}@keyframes fadein{0%{bottom:0;opacity:0}to{bottom:2rem;opacity:1}}@keyframes fadeout{0%{bottom:2rem;opacity:1}to{bottom:0;opacity:0}}@media (min-width:1440px){#app-container{max-width:114rem}}@media (max-width:960px){#mountPoint{padding:0}.pinned{width:16rem}}@media (max-width:640px){#app-container{border-radius:0;box-shadow:none;width:100%}#info-view,#sidepanel{width:100%}.forward-dialog{border-radius:.3rem .3rem 0 0;margin:auto 0 0;width:100%}.menuTrigger{opacity:.3}#send-message-input{transition-property:-tinode-mobile}#pinned-wrapper{height:3.5rem;margin:.25rem}.pinned{width:unset}#video-container.minimized{border-radius:unset;box-shadow:0 0 .5rem var(--clr-shadow-gray-strong);flex-direction:row;height:11rem;left:0;top:var(--caption-panel-height);width:100%}#controls.minimized{bottom:auto;column-gap:unset;flex-direction:column;right:1rem;row-gap:.5rem}.minimized .call-party{border-radius:unset;box-shadow:unset}.call-party.self{border-radius:unset;bottom:8.5rem}} \ No newline at end of file +:root{color-scheme:light dark;--message-text-size:10pt;--caption-panel-height:4rem;--wallpaper-url:url(../img/bkg/a00.png);--wallpaper-repeat:repeat;--wallpaper-blur:0px;--wallpaper-invert:0;--wallpaper-brightness:1;--wallpaper-size:contain;--wallpaper-position:center;--clr-bright:light-dark(#fff,#181818);--clr-dark:light-dark(#000,#fff);--clr-transparent:transparent;--clr-std-gray:grey;--clr-std-ltgray:light-dark(silver,#3f3f3f);--clr-std-teal:teal;--clr-std-grey:grey;--clr-std-orange:orange;--clr-primary-accent:light-dark(#2094f3,#0e6dba);--clr-primary-accent-hover:light-dark(#0a6ebd,#116ab4);--clr-primary-accent-focus-shadow:light-dark(rgba(33,150,243,.25),rgba(3,7,12,.25));--clr-primary-accent-transparent-medium:light-dark(rgba(33,150,243,.3),rgba(20,70,120,.3));--clr-primary-action:light-dark(#1e89e6,#1571c1);--clr-primary-action-hover:light-dark(#2962ff,#0037b8);--clr-secondary-accent:light-dark(#0097a8,#006570);--clr-primary-light-blue:light-dark(#bcdefb,#78a0be);--clr-light-blue-accent:light-dark(#0398e2,#0379b5);--clr-body-background:var(--clr-std-ltgray);--clr-text-primary:light-dark(#666,#999);--clr-text-secondary:light-dark(#757575,#8a8a8a);--clr-text-tertiary:light-dark(#999,#787878);--clr-text-tertiary-activated:#888;--clr-text-placeholder:light-dark(#bbb,#555);--clr-text-disabled:light-dark(#888,#777);--clr-border-light:light-dark(#ccc,#555);--clr-border-muted:light-dark(#ddd,#444);--clr-background-off-white:light-dark(#fafafa,#222);--clr-background-light-gray:light-dark(#f0f0f0,#0f0f0f);--clr-background-extra-light-gray:light-dark(#eee,#222);--clr-background-blue-gray-50:light-dark(#edf0f2,#202c33);--clr-background-blue-gray-75:light-dark(#e1e8eb,#182124);--clr-background-blue-gray-100:light-dark(#cfd8dc,#20272a);--clr-background-blue-gray-300:light-dark(#b0bec5,#354146);--clr-blue-wash-light:light-dark(#f0f0ff,#22222d);--clr-blue-wash-medium:light-dark(#d8e8ff,#123550);--clr-primary-wash:light-dark(#e3f2fd,#072f45);--clr-indigo-50:light-dark(#e8eaf6,#1a2c44);--clr-danger-text:light-dark(#d33131,#931f1f);--clr-danger-text-hover:light-dark(#f44034,#c10);--clr-error-text-muted:light-dark(#c66,#933);--clr-error-bg-light:light-dark(#ffccd1,#ff6675);--clr-error-border-light:light-dark(#ffbdc6,#ff334e);--clr-error-text-dark:light-dark(#b51c1c,#de2323);--clr-error-icon:light-dark(#ef5552,#d81b0e);--clr-warning-accent:light-dark(#ffc107,#808020);--clr-warning-bg-light:light-dark(#fff9c4,#00060c);--clr-warning-border-light:light-dark(#fff59d,#000a2b);--clr-warning-text-dark:light-dark(#6d4c41,#a08356);--clr-warning-icon:light-dark(#fbc02d,#b48204);--clr-info-bg-light:light-dark(#e1f5fe,#010a0e);--clr-info-border-light:light-dark(#b3e5fc,#001824);--clr-info-text-dark:light-dark(#0288d1,#00151f);--clr-header-stripe-bg:light-dark(#3949ab,#12152f);--clr-scrollbar-thumb:light-dark(rgba(0,0,0,.3),hsla(0,0%,100%,.3));--clr-scrollbar-track:light-dark(hsla(0,0%,100%,.1),rgba(0,0,0,.1));--clr-menu-item-hover-bg:light-dark(#f5f5f5,#0a0a0a);--clr-alert-overlay-bg:light-dark(hsla(0,0%,94%,.85),hsla(0,0%,6%,.85));--clr-verified-accent:light-dark(#02a6f2,#027db6);--clr-staff-accent:light-dark(#689f38,#598830);--clr-badge-inv:light-dark(#fffd,#cccd);--clr-cyan-50:light-dark(#e0f7fa,#2f3e43);--clr-overlay-white-strong:light-dark(hsla(0,0%,100%,.9),rgba(0,0,0,.9));--clr-gray-medium-bg:light-dark(#777,#444);--clr-toast-bg:#333;--clr-toast-text:light-dark(#eee,#aaa);--clr-online:#4caf50;--clr-offline:light-dark(#ccc,#999);--clr-shadow-input-underline:rgba(0,0,0,.1);--clr-shadow-hr-inset:rgba(0,0,0,.15);--clr-shadow-scrollbar-track-webkit:rgba(0,0,0,.2);--clr-shadow-button:rgba(0,0,0,.25);--clr-shadow-button-inset-active:rgba(0,0,0,.125);--clr-shadow-dialog:rgba(0,0,0,.45);--clr-shadow-panel-divider:rgba(0,0,0,.1);--clr-shadow-gray-strong:light-dark(var(--clr-std-gray),#333);--clr-shadow-silver-subtle:light-dark(var(--clr-std-ltgray),#333);--clr-shadow-bubble-drop:rgba(0,0,0,.3);--clr-button-primary-bg:var(--clr-primary-action);--clr-button-primary-text:var(--clr-bright);--clr-button-primary-hover-bg:var(--clr-primary-action-hover);--clr-button-secondary-bg:var(--clr-bright);--clr-button-secondary-text:var(--clr-primary-accent);--clr-button-secondary-hover-bg:var(--clr-primary-wash);--clr-button-outline-text:var(--clr-primary-accent);--clr-button-outline-border:var(--clr-std-ltgray);--clr-button-outline-hover-bg:var(--clr-indigo-50);--clr-button-danger-bg:light-dark(#ec645f,#d74742);--clr-button-danger-text:var(--clr-bright);--clr-button-danger-hover-bg:light-dark(#f77,#a55);--clr-button-positive-bg:light-dark(#71c46f,#3f983e);--clr-button-positive-text:var(--clr-bright);--clr-button-positive-hover-bg:light-dark(#7fed7f,#6ec26e);--clr-input-text:var(--clr-text-primary);--clr-input-border:var(--clr-border-light);--clr-input-border-focus:var(--clr-primary-accent);--clr-input-shadow:var(--clr-shadow-input-underline);--clr-input-shadow-focus:var(--clr-primary-accent-focus-shadow);--clr-input-invalid-border:light-dark(#e57171,#561010);--clr-input-invalid-shadow:light-dark(#e5737340,#1a0c0c40);--clr-input-placeholder-text:var(--clr-text-placeholder);--clr-bubble-left-bg:light-dark(#c4e0a3,#3e5c1f);--clr-bubble-left-bg-flash:light-dark(#94a97c,#2c4517);--clr-bubble-right-bg:var(--clr-background-off-white);--clr-bubble-right-bg-flash:var(--clr-border-light);--clr-bubble-text:light-dark(#212121,#bbc);--clr-bubble-meta-text:var(--clr-text-primary);--clr-bubble-meta-deleted-bg:var(--clr-primary-wash);--clr-bubble-meta-date-bg:light-dark(hsla(0,0%,100%,.8),rgba(40,40,40,.8));--clr-bubble-timestamp-text:light-dark(#777,#888);--clr-bubble-author-text:light-dark(#777,#666);--clr-reply-quote-border:var(--clr-light-blue-accent);--clr-reply-quote-text:var(--clr-text-primary);--clr-reply-quote-left-bg:light-dark(hsla(0,0%,100%,.4),rgba(0,0,0,.4));--clr-reply-quote-right-bg:light-dark(#8080801f,#c4c4c42e);--clr-reply-quote-preview-bg:var(--clr-background-off-white);--clr-badge-default-bg:light-dark(#e8e8e8,#171717);--clr-badge-default-text:var(--clr-text-primary);--clr-badge-default-border:var(--clr-std-ltgray);--clr-badge-green-bg:light-dark(#efe,#131);--clr-badge-green-text:light-dark(#383,#363);--clr-badge-green-border:light-dark(#aca,#242);--clr-badge-yellow-bg:light-dark(#ffe,#331);--clr-badge-yellow-text:light-dark(#660,#660);--clr-badge-yellow-border:light-dark(#cc9,#552);--clr-badge-blue-bg:light-dark(#f0f0ff,#224);--clr-badge-blue-text:light-dark(#339,#447);--clr-badge-blue-border:light-dark(#aad,#336);--clr-badge-red-bg:light-dark(#fee,#522);--clr-badge-red-text:light-dark(#933,#744);--clr-badge-red-border:light-dark(#c99,#633);--clr-badge-magenta-bg:light-dark(#fef,#535);--clr-badge-magenta-text:light-dark(#939,#747);--clr-badge-magenta-border:light-dark(#c9c,#636);--clr-chip-bg:var(--clr-background-extra-light-gray);--clr-chip-invalid-text:var(--clr-error-text-muted);--clr-chip-invalid-bg:var(--clr-badge-red-bg);--clr-chip-remove-icon-bg:light-dark(#aaa,#555);--clr-chip-remove-icon-text:var(--clr-background-extra-light-gray);--clr-chip-remove-icon-hover-bg:var(--clr-text-placeholder);--clr-chip-remove-icon-hover-text:var(--clr-bright);--clr-tabbar-bg:var(--clr-background-extra-light-gray);--clr-tabbar-inactive-text:light-dark(rgba(33,150,243,.6),#165aa0);--clr-tabbar-active-text:var(--clr-primary-accent);--clr-tabbar-inactive-border:var(--clr-border-light);--clr-tabbar-active-border:var(--clr-primary-accent);--clr-highlight-text:var(--clr-std-teal);--clr-highlight-preview-text:light-dark(#5f9ea0,#205e60);--clr-spinner-track:light-dark(#f3f3f3,#0c0c0c);--clr-spinner-active:var(--clr-primary-action);--clr-cropper-bounding-box-border:var(--clr-primary-action);--clr-cropper-bounding-box-bg:var(--clr-text-tertiary);--clr-cropper-cutout-border:var(--clr-text-tertiary);--clr-cropper-cutout-shadow:light-dark(rgba(230,246,255,.66),rgba(25,10,0,.66));--clr-audio-bg:var(--clr-background-extra-light-gray);--clr-audio-icon:light-dark(hsla(180,7%,43%,.8),hsla(0,7%,57%,.8));--clr-audio-icon-disabled:light-dark(hsla(0,0%,60%,.75),hsla(0,0%,40%,.75));--clr-audio-timer-text:light-dark(hsla(0,0%,40%,.75),hsla(0,0%,60%,.75));--clr-pinned-menu-bg:light-dark(#f8f8f8,#1a1a1a);--clr-drag-n-drop-border:var(--clr-std-grey);--clr-drag-n-drop-text:var(--clr-std-grey);--clr-drag-n-drop-bg:light-dark(hsla(0,0%,100%,.95),rgba(0,0,0,.95));--clr-drag-n-drop-outline:light-dark(hsla(0,0%,100%,.95),rgba(0,0,0,.95));--clr-lettertile-default-text:light-dark(#fafafacc,#dcdcdccc);--clr-lettertile-hover-text:var(--clr-bright);--clr-lt-bg-0:#ef9a9a;--clr-lt-bg-1:#90caf9;--clr-lt-bg-2:#b0bec4;--clr-lt-bg-3:#b49edb;--clr-lt-bg-4:#ffa98f;--clr-lt-bg-5:#a4d5a6;--clr-lt-bg-6:#ededed;--clr-lt-bg-7:#e6ee9b;--clr-lt-bg-8:#c4e0a3;--clr-lt-bg-9:#f0e57f;--clr-lt-bg-10:#f490b1;--clr-lt-bg-11:#a0a8da;--clr-lt-bg-12:#ffdf80;--clr-lt-bg-13:#bcaaa4;--clr-lt-bg-14:#80deea;--clr-lt-bg-15:#cd92d8;--clr-dk-bg-0:#c72929;--clr-dk-bg-1:#ad1457;--clr-dk-bg-2:#681b98;--clr-dk-bg-3:#4527a0;--clr-dk-bg-4:#293594;--clr-dk-bg-5:#1565c1;--clr-dk-bg-6:#0277bb;--clr-dk-bg-7:#00838f;--clr-dk-bg-8:#006b5f;--clr-dk-bg-9:#2f7f33;--clr-dk-bg-10:#54892f;--clr-dk-bg-11:#9e9e24;--clr-dk-bg-12:#f9a824;--clr-dk-bg-13:#ff9100;--clr-dk-bg-14:#f06c00;--clr-dk-bg-15:#d54215;--clr-lt-fg-0:var(--clr-lt-bg-0);--clr-lt-fg-1:var(--clr-lt-bg-1);--clr-lt-fg-2:var(--clr-lt-bg-2);--clr-lt-fg-3:var(--clr-lt-bg-3);--clr-lt-fg-4:var(--clr-lt-bg-4);--clr-lt-fg-5:var(--clr-lt-bg-5);--clr-lt-fg-6:var(--clr-lt-bg-6);--clr-lt-fg-7:var(--clr-lt-bg-7);--clr-lt-fg-8:var(--clr-lt-bg-8);--clr-lt-fg-9:var(--clr-lt-bg-9);--clr-lt-fg-10:var(--clr-lt-bg-10);--clr-lt-fg-11:var(--clr-lt-bg-11);--clr-lt-fg-12:var(--clr-lt-bg-12);--clr-lt-fg-13:var(--clr-lt-bg-13);--clr-lt-fg-14:var(--clr-lt-bg-14);--clr-lt-fg-15:var(--clr-lt-bg-15);--clr-dk-fg-0:var(--clr-dk-bg-0);--clr-dk-fg-1:var(--clr-dk-bg-1);--clr-dk-fg-2:var(--clr-dk-bg-2);--clr-dk-fg-3:var(--clr-dk-bg-3);--clr-dk-fg-4:var(--clr-dk-bg-4);--clr-dk-fg-5:var(--clr-dk-bg-5);--clr-dk-fg-6:var(--clr-dk-bg-6);--clr-dk-fg-7:var(--clr-dk-bg-7);--clr-dk-fg-8:var(--clr-dk-bg-8);--clr-dk-fg-9:var(--clr-dk-bg-9);--clr-dk-fg-10:var(--clr-dk-bg-10);--clr-dk-fg-11:var(--clr-dk-bg-11);--clr-dk-fg-12:var(--clr-dk-bg-12);--clr-dk-fg-13:var(--clr-dk-bg-13);--clr-dk-fg-14:var(--clr-dk-bg-14);--clr-dk-fg-15:var(--clr-dk-bg-15)}*{box-sizing:border-box;font-family:Roboto,Arial,sans-serif;margin:0;padding:0;scrollbar-color:var(--clr-scrollbar-thumb) var(--clr-scrollbar-track);scrollbar-width:thin;text-rendering:optimizeLegibility}body,html{background-color:var(--clr-body-background);box-shadow:inset 0 10rem var(--clr-header-stripe-bg);color:var(--clr-text-primary);font-size:10pt;height:100%;overflow:hidden;width:100%}tt{font-family:Roboto Mono,Courier,monospace}a{color:var(--clr-primary-accent);text-decoration:none}a:focus,a:hover{color:var(--clr-primary-accent-hover);text-decoration:underline}a.danger{color:var(--clr-danger-text)}a.danger:focus,a.danger:hover{color:var(--clr-danger-text-hover)}a.gray:focus,a.gray:hover{color:var(--clr-text-tertiary)}form{line-height:1.5;padding:.5rem .75rem}form,label{font-size:1.1rem}label{margin-right:auto}label.small{font-size:.95rem}label.large,label.small{color:var(--clr-primary-action)}label.large{font-size:1.1rem}label.invalid{color:var(--clr-danger-text)}img.avatar{border-radius:50%;height:100%;width:100%}img.avatar.self{padding:7%}button{border:1px solid var(--clr-transparent);border-radius:4px;box-shadow:0 1px 3px 0 var(--clr-shadow-button);cursor:pointer;display:inline-block;font-family:inherit;font-size:1.05rem;font-weight:400;height:2.2rem;line-height:2.2rem;margin:0 .35rem;min-width:5rem;padding-left:1.2rem;padding-right:1.2rem;text-align:center;text-transform:uppercase;touch-action:manipulation;vertical-align:middle;white-space:nowrap}button[disabled],html input[disabled]{box-shadow:none;cursor:default;filter:grayscale(50%);opacity:.65}button.round{border-radius:50%;box-shadow:0 2px .5rem 0 var(--clr-shadow-button);height:3rem;line-height:3.5rem;margin:0;outline:none;padding:0;width:3rem;z-index:2}button.round.small{box-shadow:0 2px .35rem 0 var(--clr-shadow-button);height:2rem;line-height:2rem;width:2rem}button:active:not([disabled]),button:hover:not([disabled]){color:var(--clr-bright)}button:active{box-shadow:inset 0 3px .5rem var(--clr-shadow-button-inset-active)}button:active.round.small{box-shadow:inset 0 2px .35rem var(--clr-shadow-button-inset-active)}button.primary{background-color:var(--clr-button-primary-bg);color:var(--clr-button-primary-text)}button.primary:active:not([disabled]),button.primary:hover:not([disabled]){background-color:var(--clr-button-primary-hover-bg)}button.secondary{background-color:var(--clr-button-secondary-bg);color:var(--clr-button-secondary-text)}button.secondary:active:not([disabled]),button.secondary:hover:not([disabled]){background-color:var(--clr-button-secondary-hover-bg)}button.outline{background-color:var(--clr-transparent);border:1px solid var(--clr-button-outline-border);box-shadow:none;color:var(--clr-button-outline-text)}button.outline:active:not([disabled]),button.outline:hover:not([disabled]){background-color:var(--clr-button-outline-hover-bg);color:var(--clr-button-outline-text)}button.danger{background-color:var(--clr-button-danger-bg);color:var(--clr-button-danger-text)}button.danger:active:not([disabled]),button.danger:hover:not([disabled]){background-color:var(--clr-button-danger-hover-bg)}button.positive{background-color:var(--clr-button-positive-bg);color:var(--clr-button-positive-text)}button.positive:active:not([disabled]),button.positive:hover:not([disabled]){background-color:var(--clr-button-positive-hover-bg)}input,textarea{background:var(--clr-transparent);border:none;color:var(--clr-input-text);font-family:inherit;font-size:1.1rem;margin:.25rem 0;outline:none;padding:0 .125rem}input[type=email],input[type=password],input[type=search],input[type=tel],input[type=text],textarea{border-bottom:1px solid var(--clr-input-border);box-shadow:0 1px 0 var(--clr-input-shadow);height:2.5rem;transition:all .1s ease-in-out,height 0s}input[type=email],input[type=password],input[type=tel],input[type=text],textarea{width:100%}input[type=email]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,textarea:focus{border-bottom:1px solid var(--clr-input-border-focus);box-shadow:0 1px 0 var(--clr-input-shadow-focus)}input[type=email].invalid,input[type=password].invalid,input[type=search].invalid,input[type=tel].invalid,input[type=text].invalid,textarea.invalid{border-bottom:1px solid var(--clr-input-invalid-border);box-shadow:0 1px 0 var(--clr-input-invalid-shadow)}input[type=email]::placeholder,input[type=password]::placeholder,input[type=search]::placeholder,input[type=tel]::placeholder,input[type=text]::placeholder,textarea::placeholder{color:var(--clr-input-placeholder-text);font-weight:lighter}input[type=password].with-icon-right,input[type=text].with-icon-right{margin-right:-2rem;padding-right:2rem}input[type=password].with-icon-left,input[type=text].with-icon-left{margin-left:-1.45rem;padding-left:1.75rem}textarea{padding-top:.45rem;resize:none}input[type=range]{width:90%}option{padding:0}datalist{display:flex;flex-direction:row;justify-content:space-between;width:100%}::-webkit-scrollbar{width:.6rem}::-webkit-scrollbar-track{background-color:var(--clr-scrollbar-track);-webkit-box-shadow:inset 0 0 6px var(--clr-shadow-scrollbar-track-webkit);box-shadow:inset 0 0 6px var(--clr-shadow-scrollbar-track-webkit)}::-webkit-scrollbar-thumb{background-color:var(--clr-scrollbar-thumb)}ul.menu{background-color:var(--clr-bright);border-radius:.2rem;box-shadow:0 1px 6px var(--clr-shadow-dialog);list-style:none;padding-bottom:.35rem;padding-top:.35rem;position:absolute;width:12rem;z-index:4}ul.menu>li{cursor:pointer;padding:.75rem .75rem .75rem 1.25rem}ul.menu>li:hover{background-color:var(--clr-menu-item-hover-bg)}ul.menu>li.separator{height:1px;margin:2px;padding:0}ul.menu>li.separator,ul.menu>li.separator:hover{background-color:var(--clr-border-light)}ul.menu>li.disabled{opacity:.6;pointer-events:none}.menuTrigger{background-color:inherit;border-radius:.7rem;height:1.4rem;line-height:1.4rem;opacity:0;position:absolute;right:.25rem;text-align:center;user-select:none;width:1.4rem}.menuTrigger a{color:var(--clr-text-secondary)}li .menuTrigger{top:.25rem}li:hover .menuTrigger{opacity:.9}li:hover .menuTrigger a{color:var(--clr-text-secondary)}div.alert-container{align-items:center;background:var(--clr-alert-overlay-bg);display:flex;height:100%;justify-content:center;overflow:hidden;padding:1rem;position:absolute;width:100%;z-index:3}div.alert{background-color:var(--clr-bright);border-radius:.3rem;box-shadow:.15rem .15rem 1.5rem var(--clr-shadow-dialog);height:min-content;margin:auto 2rem;max-height:40rem;max-width:24rem;min-width:16rem;overflow:hidden;padding:1rem;position:relative;width:fit-content}div.alert-container .title{color:var(--clr-primary-accent);font-size:1.2rem;font-weight:500;padding:0 0 .35rem;position:relative;width:100%}div.alert-container .title.with-control{align-items:center;display:flex;flex:none;justify-content:space-between;padding:.5rem .5rem 0;position:relative}div.alert-container .content{padding:.5rem 0;position:relative}div.trusted-badge{margin:.25rem 0}.blue{color:var(--clr-primary-accent)!important}.lt-blue{color:var(--clr-lt-fg-1)!important}.orange{color:var(--clr-std-orange)!important}.verified-color{color:var(--clr-verified-accent)!important}.staff-color{color:var(--clr-staff-accent)!important}.danger-color{color:var(--clr-warning-accent)!important}.green{color:light-dark(#388e3c,#1a9a1d)}.white{color:var(--clr-bright)!important}.red{color:var(--clr-danger-text)!important}.badge-inv{color:var(--clr-badge-inv)!important}.gray{color:var(--clr-text-secondary)!important}.light-gray{color:var(--clr-text-placeholder)!important}.large{font-size:120%}.small{font-size:90%}.float-right{position:absolute;right:.5rem}.hr{background-color:var(--clr-background-light-gray);box-shadow:inset 0 .25rem .25rem -.25rem var(--clr-shadow-hr-inset),inset 0 -.25rem .25rem -.25rem var(--clr-shadow-hr-inset);display:block;height:.45rem;min-height:.3rem;width:100%}.hr.thin{height:.015rem}.divider{border-left:1.5px groove var(--clr-border-muted);display:inline-block;margin:0 .25rem;width:1px}.ellipsized{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.flat-button{align-items:center;background-color:var(--clr-bright);display:flex;font-weight:400;height:2em;line-height:2em;margin:.15rem .35rem;text-align:center;text-transform:uppercase;touch-action:manipulation;vertical-align:middle;white-space:nowrap;z-index:1}.flat-button:focus,.flat-button:hover{text-decoration:none}.flat-button.disabled,.flat-button.disabled:focus,.flat-button.disabled:hover{color:var(--clr-primary-accent);cursor:default;filter:grayscale(75%);opacity:.75}.flat-button.faux{background-color:var(--clr-background-extra-light-gray);border:1px solid var(--clr-text-tertiary);border-radius:3px;display:inline-block;height:1.4em;line-height:1.4em;margin:.15rem;padding:0 .35rem;text-transform:none}.action-button{background-color:var(--clr-background-off-white);border-radius:50%;box-shadow:0 2px .5rem 0 var(--clr-shadow-button);color:var(--clr-text-secondary);display:block;font-size:1.8rem;height:3.25rem;margin:0;min-height:unset;min-width:unset;outline:none;padding:0;position:absolute;transition:all .15s;width:3.25rem;z-index:2}.action-button:active:not([disabled]),.action-button:focus,.action-button:hover,.action-button:hover:not([disabled]){background-color:var(--clr-primary-action-hover);color:var(--clr-text-tertiary-activated)}.action-button:active{background-color:var(--clr-primary-action);color:var(--clr-text-tertiary-activated)}.action-button.hidden{bottom:2.625rem;font-size:1px;height:1px;line-height:1px;opacity:0;right:2.625rem;width:1px}.group-focus{outline:none}#mountPoint{height:100%;padding-bottom:1rem;padding-top:1rem}#noscript-message{background-color:var(--clr-bright);border-radius:.25rem;box-shadow:1px 2px .3rem var(--clr-shadow-gray-strong);display:flex;flex-direction:column;margin-left:auto;margin-right:auto;margin-top:5rem;max-width:30rem;overflow:hidden;position:relative}#noscript-title{background-color:var(--clr-primary-accent);color:var(--clr-primary-light-blue);font-size:120%;font-weight:bolder;padding:1rem}#noscript-content{padding:1rem}#app-container{background-color:var(--clr-bright);border-radius:.25rem;box-shadow:1px 2px .3rem var(--clr-shadow-gray-strong);display:flex;height:100%;margin-left:auto;margin-right:auto;max-width:84rem;overflow:hidden;position:relative}#sidepanel{flex-grow:0;flex-shrink:0.3;min-width:18rem;width:24rem}#sidepanel,#topic-view{display:flex;flex-direction:column;height:100%;position:relative}#topic-view{overflow-x:hidden;width:100%}#info-view{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0.3;height:100%;min-width:18rem;position:relative;width:24rem}.center-medium-text{align-items:center;display:flex;font-size:1.4rem;height:100%;justify-content:center;text-align:center;width:100%}.nodisplay{display:none!important}.quoted{margin-left:1rem}.space-right{margin-right:.25rem}.rounded-container{background-color:var(--clr-background-off-white);border-radius:.1rem;margin:.25rem;padding:.25rem;position:relative}div.in-place-edit,span.in-place-edit{border-bottom:1px dashed var(--clr-border-muted);cursor:pointer;display:inline-block;font-family:inherit;font-size:1rem;margin:.25rem .125rem 0;vertical-align:baseline;width:100%}.in-place-edit.short{align-items:center;display:inline-flex;font-size:1.1rem;height:2.5rem;line-height:2.25;white-space:nowrap}.in-place-edit.disabled{border-bottom:none;color:var(--clr-text-disabled);cursor:default}.in-place-edit.placeholder{color:var(--clr-text-placeholder)}.in-place-edit span{display:inline-block}.in-place-edit.short span{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.in-place-edit .material-icons{display:inline-block}.material-icons.invalid{color:var(--clr-error-text-muted)}textarea.in-place-edit{font-size:unset;height:unset}input.in-place-edit.invalid{color:var(--clr-error-text-muted)}table.permission-editor{width:100%}table.permission-editor td{font-size:1.1rem;margin:.35rem 0;vertical-align:middle}table.permission-editor td.checkbox{color:var(--clr-text-tertiary);text-align:center}.permission-editor .material-icons{font-size:1.3rem;line-height:1.3rem}.material-icons.clickable{border-bottom:none;cursor:pointer}.clickable{border-bottom:1px dashed var(--clr-border-muted)}.clean-clickable,.clickable,.image-clickable{cursor:pointer}.panel-title{font-size:1.4rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-title.deleted{text-decoration:line-through}.caption-panel{box-shadow:0 1px 2px var(--clr-shadow-gray-strong);flex:none;height:var(--caption-panel-height);overflow-x:hidden;white-space:nowrap;z-index:1}.caption-panel,.dialog-buttons{align-items:center;display:flex;padding:.5rem}.dialog-buttons{justify-content:flex-end}.dialog-buttons button{margin:0 .5rem}.avatar-box{flex-grow:0;flex-shrink:0;position:relative}.bot-form{display:flex;flex-direction:column;line-height:2rem;min-width:8rem;overflow:hidden}.bot-form div{min-height:2rem;vertical-align:middle}.bot-form button{background-color:var(--clr-blue-wash-light);color:var(--clr-primary-accent);display:inline-block;font-size:inherit;height:2rem;line-height:2rem;margin:.15rem;text-transform:none}.bot-form>div>button{width:auto}.bot-form button:active,.bot-form button:focus,.bot-form button:hover{background-color:var(--clr-primary-wash);color:var(--clr-dk-fg-5);outline:0}#side-caption-panel{background-color:var(--clr-primary-accent);color:var(--clr-primary-light-blue)}#side-caption-panel a{color:var(--clr-primary-light-blue);line-height:1;padding-left:.5rem}#side-caption-panel :hover{color:var(--clr-bright)}#sidepanel-title{margin-left:.5rem;margin-right:auto}#self-avatar{border-radius:50%;flex:none;height:3rem;min-width:3rem;width:3rem}#self-avatar.avatar-box{font-size:1.8rem}#settings-form ul{list-style:none}#settings-form li{vertical-align:middle}#settings-form label{display:inline-block;padding-left:.5rem}input#host-name{width:100%}input.search{text-indent:1.4rem}i.search{left:.6rem;position:absolute}.info-box{display:none;overflow:hidden;padding:1rem 1.5rem .75rem .5rem;position:relative}.info-box>span{line-height:1.35rem}.info-box .cancel{position:absolute;right:.25rem;top:.5rem}.info-box.error{background-color:var(--clr-error-bg-light);border-bottom:1px solid var(--clr-error-border-light);color:var(--clr-error-text-dark);display:flex}.info-box.warning{background-color:var(--clr-warning-bg-light);border-bottom:1px solid var(--clr-warning-border-light);color:var(--clr-warning-text-dark);display:flex}.info-box.info{background-color:var(--clr-info-bg-light);border-bottom:1px solid var(--clr-info-border-light);color:var(--clr-info-text-dark);display:flex}.info-box .cancel .material-icons{color:var(--clr-text-secondary);font-size:1rem}.info-box.error .cancel .material-icons{color:var(--clr-error-text-dark)}.info-box .icon{display:block;margin-right:.5rem}.info-box .icon .material-icons{font-size:1.5rem}.info-box.warning .icon .material-icons{color:var(--clr-warning-icon)}.info-box.error .icon .material-icons{color:var(--clr-error-icon)}.info-box.info .icon .material-icons{color:var(--clr-info-text-dark)}.flex-column{display:flex;flex-direction:column;height:100%;overflow-x:hidden}.flex-column.narrow{height:auto}.scrollable-panel{height:100%;margin-bottom:auto;margin-top:.25rem;overflow-x:hidden;overflow-y:auto;scroll-behavior:smooth}.contact-box{list-style:none;overflow-x:hidden}.contact-box>li{background:linear-gradient(to right,var(--clr-transparent) 3.5rem,var(--clr-background-extra-light-gray) 1px,var(--clr-background-extra-light-gray) 100%) 0 100% /100% 1px no-repeat,var(--clr-bright);cursor:pointer;display:flex;flex-grow:0;flex-shrink:0;min-height:3.75rem;overflow-x:hidden;padding:.35rem .25rem .5rem .35rem;position:relative}.contact-box.small>li{min-height:2.5rem;padding:.25rem .25rem .35rem .35rem}.contact-box>li:last-child{background:var(--clr-bright)}.contact-box>li:hover{background-color:var(--clr-background-blue-gray-50)}.contact-box>li.selected{background-color:var(--clr-background-blue-gray-100)}.contact-box>li.tpinned{background-color:var(--clr-background-blue-gray-75);border-right:1.5px solid var(--clr-secondary-accent)}.contact-box>li.action{border-bottom:none;min-height:2.5rem}.contact-box .text-box{overflow-x:hidden}.contact-box .contact-title{font-size:1.05rem;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-box .contact-title.deleted{opacity:.66;text-decoration:line-through;text-decoration-thickness:.5px}.contact-box .contact-comment{font-weight:lighter}.contact-box .contact-comment,.contact-box .contact-comment>span{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-box .contact-comment b{font-weight:bolder}.contact-box .contact-comment .material-icons{color:light-dark(#777,#666);margin-bottom:.2rem}.contact-box .avatar-box{font-size:1.8rem;height:3rem;margin-right:.35rem;min-height:3rem;min-width:3rem;overflow:hidden;padding:0;position:relative;width:3rem}.contact-box .avatar{border-radius:50%;height:3rem;width:3rem}.contact-box.small .avatar-box{font-size:1.2rem;height:2rem;min-height:2rem;min-width:2rem;width:2rem}.contact-box.small .avatar{height:2rem;width:2rem}.avatar.deleted{filter:grayscale(1);opacity:.75}.contact-box .avatar-box>.material-icons{display:flex;flex-direction:column;font-size:2.4rem;justify-content:space-around;line-height:3rem}.contact-box.small .avatar-box>.material-icons{font-size:1.6rem;line-height:2rem}.contact-box .text-box{display:flex;flex-direction:column;justify-content:space-around}.contact-box .text-box>div{align-items:center;display:flex;flex-direction:row}.contact-box .action-text{cursor:pointer;font-size:.95rem;line-height:2.5rem;margin:0 auto;text-align:center}img.channel{height:1.25rem;margin-left:.3rem;vertical-align:middle;width:1.25rem}.large img.channel{height:1.45rem;margin-bottom:.15rem;margin-left:.5rem;width:1.45rem}.avatar-box .online,.offline{border-radius:50%;bottom:.1rem;flex-shrink:0;height:.75rem;min-height:.75rem;min-width:.75rem;position:absolute;right:0;width:.75rem}.avatar-box .online{background-color:var(--clr-online)}.avatar-box .offline{background-color:var(--clr-offline)}.online.typing{animation:typing .5s infinite}@keyframes typing{0%,to{transform:translateX(0)}50%{transform:translateX(-.3rem)}}.contact-box .checkmark.material-icons{border:0 solid var(--clr-transparent);color:var(--clr-secondary-accent);overflow:visible;padding-left:.5px}.contact-box .checkmark.material-icons,.contact-box .deleted.material-icons{background-color:var(--clr-bright);bottom:0;font-size:1.5rem;height:1.5rem;position:absolute;right:0;width:1.5rem}.contact-box .deleted.material-icons{color:var(--clr-text-tertiary)}#add-topic{bottom:1rem;position:absolute;right:1rem}.panel-form{display:flex;flex-direction:column;padding:0;position:relative}.panel-form-row{align-items:center;flex-shrink:0}.panel-form-column,.panel-form-row{display:flex;flex-grow:0;line-height:1.5;padding:.5rem .75rem;position:relative}.panel-form-column{flex-direction:column;overflow-x:clip}.panel-form-column>.panel-form-column,.panel-form-row>.panel-form-column{flex-grow:1;padding:0!important}.panel-form-column>.panel-form-row,.panel-form-row>.panel-form-row{padding:0!important}.panel-form-column>.group{margin-bottom:.25rem;margin-top:.25rem}.avatar-upload{display:flex;flex-direction:column;flex-shrink:0;font-size:4.5rem;height:10.5rem;margin:.25rem;padding:0;position:relative;width:10rem}.avatar-upload.read-only{height:auto}.avatar-upload .clear-avatar{background-image:radial-gradient(var(--clr-bright) 40%,var(--clr-transparent) 75%);font-size:1rem;opacity:0;position:absolute;right:0;top:0}.avatar-upload:hover .clear-avatar{opacity:1}.avatar-upload .avatar-box{height:10rem;position:relative;width:10rem}.avatar-upload .avatar-box>.material-icons{font-size:4rem;line-height:10rem;position:relative;vertical-align:middle}.avatar-upload:after{clear:both;content:".";display:block;height:0;visibility:hidden}.avatar-upload .blank{border:1px dashed var(--clr-text-tertiary);color:var(--clr-text-tertiary);flex-shrink:0;font-size:1rem;line-height:10rem;text-align:center;vertical-align:middle}.avatar-upload .blank,.avatar-upload img.preview{border-radius:50%;height:10rem;overflow:hidden;width:10rem}.avatar-upload img.preview:before{background:50% no-repeat url(../img/broken_image.png);border-radius:50%;color:var(--clr-text-primary);content:" ";display:flex;font-size:.9rem;font-weight:lighter;height:10rem;justify-content:center;left:0;position:absolute;top:0;width:10rem}.avatar-upload .inputfile.hidden{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px}.avatar-upload .inputfile+label.round{align-items:center;background-color:var(--clr-background-off-white);border-radius:50%;bottom:0;box-shadow:0 1px 4px var(--clr-shadow-dialog);cursor:pointer;display:flex;height:3rem;justify-content:center;line-height:3rem;position:absolute;right:0;width:3rem;z-index:1}.avatar-upload .inputfile:focus+label.round{outline:none}.avatar-upload .inputfile+label:hover,.avatar-upload .inputfile:focus+label{background-color:var(--clr-primary-wash);color:var(--clr-primary-accent)}#topic-caption-panel{background-color:var(--clr-background-blue-gray-300)}#topic-caption-panel a{color:var(--clr-text-secondary);text-decoration:none}#topic-caption-panel :hover{color:var(--clr-dark)}#topic-caption-panel .avatar-box{font-size:1.8rem;height:3rem;margin-right:.35rem;min-width:3rem;position:relative;width:3rem}#topic-caption-panel .avatar-box>.material-icons{font-size:2.4rem;line-height:3rem}#topic-title-group{overflow-x:hidden}#hide-message-view{display:block;margin-right:.35rem}#topic-users{margin-left:auto;margin-right:1rem;width:min-content}#topic-users .avatar-box{display:inline-block;font-size:1rem;height:1.8rem;margin-right:.2rem;min-height:1.8rem;min-width:1.8rem;width:1.8rem}#topic-users .avatar-box>.material-icons{font-size:1.4rem;line-height:1.8rem}#topic-users>span{line-height:2rem;vertical-align:top}.qr-code{align-self:center}#messages-container{height:100%;overflow-y:hidden;position:relative}#messages-container:before{background-color:var(--clr-background-blue-gray-50);background-image:var(--wallpaper-url);background-position:var(--wallpaper-position);background-repeat:var(--wallpaper-repeat);background-size:var(--wallpaper-size);content:"";filter:blur(var(--wallpaper-blur)) invert(var(--wallpaper-invert)) brightness(var(--wallpaper-brightness));height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:0}#messages-panel{height:100%;overflow-y:scroll;padding:.75rem;position:relative}#write-only-background{background-image:repeating-linear-gradient(45deg,hsla(0,0%,100%,.5),hsla(0,0%,100%,.5) .5rem,hsla(0,0%,100%,.8) 0,hsla(0,0%,100%,.8) 1rem);height:100%;left:0;position:absolute;top:0;width:100%}#write-only-note{height:auto;top:50%;transform:translate(-50%,-50%);width:auto}#peer-messaging-disabled-note,#write-only-note{background-color:var(--clr-bright);border-radius:.5rem;box-shadow:0 1px .5px var(--clr-shadow-button-inset-active);color:var(--clr-text-primary);left:50%;line-height:2rem;padding:.75rem 1.25rem;position:absolute;text-align:center}#peer-messaging-disabled-note{bottom:4.3rem;transform:translate(-50%);width:fit-content}#send-message-panel{align-items:center;background-color:var(--clr-background-blue-gray-50);display:flex;flex:none;min-height:4rem;padding:.4rem .4rem .4rem .6rem;z-index:2}#send-message-panel #writing-disabled{font-size:1.2rem;text-align:center;width:100%}#send-message-wrapper{background-color:var(--clr-background-blue-gray-50);box-shadow:0 -2px 3px -1px var(--clr-shadow-panel-divider);z-index:2}#sendMessage{overflow:hidden;overflow-wrap:break-word}#send-message-panel .material-icons{font-size:1.6rem;min-width:2rem}#send-message-panel .material-icons.secondary,.material-icons.disabled{color:var(--clr-text-tertiary)!important}#send-message-panel .material-icons.secondary:hover{color:var(--clr-primary-accent)!important}#send-message-input{max-height:6rem;min-height:2.5rem;overflow:hidden auto}.accept-invite-panel{background-color:var(--clr-background-blue-gray-50);box-shadow:0 -2px 3px -1px var(--clr-shadow-panel-divider);width:100%;z-index:1}.accept-invite-panel .title{font-size:1.2rem;padding:.75rem}.accept-invite-panel .footer{background-color:var(--clr-background-off-white);padding-bottom:.35rem;text-align:center;white-space:nowrap}.accept-invite-panel button{border:1px solid var(--clr-transparent);box-shadow:0 1px 2px 0 var(--clr-shadow-button);font-size:1rem;height:2em;line-height:2em;margin:.25rem}#dummy-view{align-items:center;background-color:var(--clr-cyan-50);display:flex;height:100%;justify-content:center;width:100%}#dummy-view a{display:block;text-align:center;text-decoration:none}#image-preview{background-color:var(--clr-overlay-white-strong);display:flex;flex-direction:column;height:100%;left:0;position:absolute;top:0;width:100%;z-index:2}#preview-caption-panel{background-color:var(--clr-background-blue-gray-50);box-shadow:0 1px 2px var(--clr-shadow-silver-subtle);display:flex;flex-grow:0;flex-shrink:0;font-size:120%;height:var(--caption-panel-height);justify-content:space-between;line-height:2rem;padding:1rem .75rem 0;z-index:3}#preview-caption-panel a{color:var(--clr-text-secondary);text-decoration:none}#preview-caption-panel a:hover{color:var(--clr-dark)}#image-preview-container{align-items:center;background-color:var(--clr-gray-medium-bg);display:flex;height:100%;justify-content:space-around;overflow:hidden;width:100%}#image-preview-footer{background-color:var(--clr-background-blue-gray-50);box-shadow:0 -2px 3px -1px var(--clr-shadow-panel-divider);display:flex;flex-grow:0;flex-shrink:0;height:3.2rem;justify-content:space-around;line-height:1.5rem;z-index:1}#image-preview-container .material-icons{font-size:6rem}#image-preview-container .doc-card{background-color:var(--clr-std-ltgray);border-radius:.5rem;display:flex;flex-direction:column;max-width:30rem;overflow-x:hidden;padding:1rem}.doc-card .avatar-box{font-size:4.5rem;height:10rem;width:10rem}.doc-card .avatar-box .material-icons{line-height:10rem}#video-container{background-color:var(--clr-overlay-white-strong);display:flex;flex-direction:column;height:100%;justify-content:space-between;left:0;position:absolute;top:0;width:100%;z-index:3}#video-container.minimized{background-color:unset;border-radius:.5rem;box-shadow:.15rem .15rem 1.5rem var(--clr-shadow-dialog);cursor:grab;height:18rem;left:auto;right:1rem;top:1rem;user-select:none;width:18rem}#controls{align-items:center;align-self:center;bottom:2.5rem;column-gap:1rem;display:flex;justify-content:center;position:absolute;z-index:1}#controls.minimized{bottom:1.75rem;column-gap:.5rem}.incoming-call #controls{bottom:1rem}#controls button{align-items:center;border-radius:50%;box-shadow:0 3px 6px 0 var(--clr-shadow-button);display:flex;height:4rem;justify-content:center;min-width:auto;position:relative;width:4rem}#controls.minimized button{box-shadow:0 2px 4px 0 var(--clr-shadow-button);height:2.75rem;width:2.75rem}#controls button .material-icons{font-size:1.8rem}#controls.minimized button .material-icons{font-size:1.4rem}button.full-screen{background-color:transparent;border-radius:.5rem;box-shadow:none;height:2.5rem;left:2rem;min-width:unset;padding:0;position:absolute;top:2rem;width:2.5rem;z-index:1}.minimized button.full-screen{height:2rem;left:1rem;top:1rem;width:2rem}button.full-screen:hover:not([disabled]),button:active:not([disabled]){color:var(--clr-text-secondary)}button.full-screen .material-icons{font-size:x-large}.minimized button.full-screen .material-icons{font-size:large}#video-container-panel{height:100%;position:relative;width:100%}.call-party{background-color:var(--clr-background-extra-light-gray);border:2px solid var(--clr-border-light);border-radius:.5rem;overflow:hidden}.call-party:hover{border-color:var(--clr-primary-accent)}.minimized .call-party{border-width:1px}.call-party.peer{bottom:1rem;left:1rem;position:absolute;right:1rem;top:1rem;z-index:1}.minimized .call-party.peer{bottom:0;left:0;right:0;top:0}.call-party.self{bottom:.5rem;height:10rem;position:absolute;right:.5rem;width:10rem;z-index:2}.call-party.self[disabled]{display:none}video{height:100%;object-fit:contain;width:100%}.call-party.self video{transform:scaleX(-1)}.call-party[disabled] video{display:none}.caller-card{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.caller-card .avatar-box{font-size:6rem;height:10rem;width:10rem}.caller-card.pulse .lettertile,.caller-card.pulse img.avatar{animation:active-call 1.5s linear infinite}.caller-card .avatar-box .material-icons{font-size:6rem;line-height:1.6}.minimized .caller-card .avatar-box{font-size:3.6rem;height:6rem;width:6rem}.call-party .caller-name{background-color:var(--clr-background-off-white);border-radius:.35rem;max-width:12rem;overflow-x:hidden;padding:.15rem .5rem;text-overflow:ellipsis;text-shadow:0 0 1px var(--clr-bright);white-space:nowrap;z-index:1}.call-party.self .caller-name.inactive{bottom:.25rem;position:absolute;right:.25rem}.caller-card .caller-name{font-size:larger;margin-top:.5rem}.caller-card .trusted-badge{display:inline-block}.call-party.peer .caller-name.inactive{bottom:.5rem;font-size:larger;left:1rem;margin:0 auto;position:absolute}.minimized .caller-name{border-radius:.25rem;font-weight:lighter;padding:.1rem .35rem}.incoming-call{background-color:var(--clr-bright);border-radius:.3rem;box-shadow:.15rem .15rem 1.5rem var(--clr-shadow-dialog);margin:auto 2rem;max-width:24rem;min-width:16rem;width:fit-content}.incoming-call,.incoming-call .caller-card{display:flex;flex-direction:column;position:relative}.incoming-call .caller-card{align-items:center;height:100%;justify-content:center;left:auto;padding:4rem 3.5rem 5.5rem;top:auto;width:100%}.incoming-call .caller-name{background-color:var(--clr-background-off-white);border-radius:.35rem;overflow-x:hidden;padding:.15rem .5rem;text-overflow:ellipsis;text-shadow:0 0 1px var(--clr-bright);white-space:nowrap;z-index:1}.call-message{display:flex;flex-direction:row}.call-message .duration{font-weight:lighter}#go-to-latest{bottom:1rem;right:1.5rem}@keyframes active-call{0%{box-shadow:0 0 0 .1rem var(--clr-primary-accent-transparent-medium),0 0 0 .3rem var(--clr-primary-accent-transparent-medium),0 0 0 .5rem var(--clr-primary-accent-transparent-medium)}to{box-shadow:0 0 0 .4rem var(--clr-primary-accent-transparent-medium),0 0 0 2rem rgba(33,150,243,0),0 0 0 3rem rgba(33,150,243,0)}}.chat-box{list-style:none;margin:0 .5rem;padding:0 0 3.5rem;scroll-behavior:smooth}.chat-box.group{margin-left:-.4rem}.chat-box li{align-items:flex-end;display:flex;margin:0;padding:0}.chat-box .right{justify-content:flex-end}.bubble{border-radius:.5rem;color:var(--clr-bubble-text);display:flex;filter:drop-shadow(.5px .5px .7px var(--clr-shadow-bubble-drop));height:auto;margin:0;max-width:36rem;min-width:9rem;padding:.75rem .5rem;position:relative;text-align:left;transition:background-color .5s ease-out;transition-delay:.3s}.chat-box li.single{margin-bottom:.75rem;margin-top:.25rem}.chat-box li.first{margin-bottom:.15rem;margin-top:.25rem}.chat-box li.middle{margin-bottom:.15rem;margin-top:.15rem}.chat-box li.last{margin-bottom:.75rem;margin-top:.15rem}.left .bubble{background-color:var(--clr-bubble-left-bg);margin-right:.5rem}.left.flash .bubble{background-color:var(--clr-bubble-left-bg-flash)}.left .bubble.tip{border-bottom-left-radius:0}.right .bubble{background-color:var(--clr-bubble-right-bg);margin-left:1.75rem}.right.flash .bubble{background-color:var(--clr-bubble-right-bg-flash)}.right .bubble.tip{border-bottom-right-radius:0}.chat-box .meta{justify-content:center;margin-bottom:.5rem;margin-top:.5rem}.chat-box .meta .bubble{color:var(--clr-bubble-meta-text);min-width:unset}.meta .bubble.deleted{background-color:var(--clr-bubble-meta-deleted-bg);padding:.75rem .75rem .5rem}.meta .bubble.date{background-color:var(--clr-bubble-meta-date-bg);font-size:smaller;padding:.5rem;text-transform:uppercase;user-select:none}.left .bubble.tip:before{background-color:var(--clr-bubble-left-bg);border-bottom-left-radius:.3rem;bottom:0;clip-path:polygon(100% 0,0 110%,100% 110%);-webkit-clip-path:polygon(100% 0,0 110%,100% 110%);content:"";height:.85rem;left:-.8rem;position:absolute;transition:background-color .5s ease-out;transition-delay:.3s;width:.85rem}.left.flash .bubble.tip:before{background-color:var(--clr-bubble-left-bg-flash)}.right .bubble.tip:before{background-color:var(--clr-bubble-right-bg);border-bottom-right-radius:.3rem;bottom:0;clip-path:polygon(0 0,100% 110%,0 110%);-webkit-clip-path:polygon(0 0,100% 110%,0 110%);content:"";height:.85rem;left:99.8%;position:absolute;transition:background-color .5s ease-out;transition-delay:.3s;width:.85rem}.right.flash .bubble.tip:before{background-color:var(--clr-bubble-right-bg-flash)}.chat-box .avatar-box{font-size:.8rem;height:1.4rem;margin-bottom:.8rem;margin-right:.8rem;min-height:1.4rem;min-width:1.4rem;position:relative;width:1.4rem}.bubble div.content-meta{width:100%}.bubble div.message-content{font-size:var(--message-text-size);margin:0;max-width:36rem;overflow-wrap:anywhere;padding:0 .75rem;position:relative;width:100%}.bubble div.message-content.emoji-1{font-size:300%}.bubble div.message-content.emoji-2{font-size:241%}.bubble div.message-content.emoji-3{font-size:193%}.bubble div.message-content.emoji-4{font-size:155%}.bubble div.message-content.emoji-5{font-size:125%}.bubble div.message-content:after{clear:both;content:".";display:block;height:0;visibility:hidden}.chat-box .timestamp-padding{display:inline-block;height:0;width:4rem}.chat-box .timestamp{color:var(--clr-bubble-timestamp-text);float:right;font-size:80%;position:relative;top:.35rem;user-select:none;white-space:nowrap}.chat-box .author{color:var(--clr-bubble-author-text);font-size:80%;max-width:12em;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.image-preview,.inline-image{border-radius:.1rem;overflow:hidden;position:relative}.inline-image{max-height:24rem;max-width:36rem}.inline-image>.rounded-container{border-left:.25rem solid var(--clr-transparent);border-right:.25rem solid var(--clr-transparent);bottom:2rem;margin:.25rem auto;position:relative}img.image-preview:before,img.inline-image:before{background:center no-repeat var(--clr-border-light) url(../img/broken_image.png);color:var(--clr-text-primary);display:flex;font-size:.9rem;font-weight:lighter;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}img.inline-image:before{background-size:3rem 3rem;content:attr(alt)}img.image-preview:before{background-size:10rem 10rem;content:" "}.inline-image.video>img.inline-image:before,img.image-preview.video:before{background:center no-repeat var(--clr-border-light) url(../img/broken_video.png)}.inline-image.video>img.inline-image:before{background-size:3rem 3rem}.inline-video{align-items:center;display:flex;justify-content:center;position:relative}.inline-video>img.inline-image:before{background:var(--clr-border-light)}.inline-video .duration{background-color:hsla(0,0%,100%,.5);border-radius:.3rem;bottom:.25rem;color:var(--clr-toast-bg);font-size:80%;left:.25rem;padding:.25rem .5rem;position:absolute}.inline-video .play-control{align-items:center;background-color:rgba(0,0,0,.4);border-radius:50%;cursor:pointer;display:flex;height:4rem;justify-content:center;pointer-events:none;position:absolute;width:4rem}.attachment{display:flex}.attachment:last-of-type{margin-bottom:-.45rem}#info-caption-panel{background-color:var(--clr-background-blue-gray-300)}#info-caption-panel a{color:var(--clr-text-secondary);line-height:1;text-decoration:none}#info-caption-panel :hover{color:var(--clr-dark)}#info-title{margin-right:auto}#group-manager{display:flex;flex-direction:column;height:100%;overflow-y:hidden;position:relative}#group-manager-buttons{background-color:var(--clr-background-blue-gray-50);border-left:1px solid var(--clr-border-light);box-shadow:0 -1px var(--clr-shadow-panel-divider);display:flex;height:4rem;justify-content:space-around;padding:.4rem;z-index:2}ul.tabbar{background:var(--clr-tabbar-bg);display:flex;flex-grow:0;flex-shrink:0;list-style:none;margin:0;overflow:hidden;padding:0 0 0 1rem;width:100%}ul.tabbar>li{box-shadow:inset 0 -2px 2.5px -1px var(--clr-shadow-button);height:2.4rem;position:relative}ul.tabbar li.active{background:var(--clr-bright)}ul.tabbar li:after{background:var(--clr-tabbar-inactive-border);bottom:0;content:"";height:.1rem;left:0;position:absolute;width:100%}ul.tabbar li.active:after{animation:tabbar-border-expand .2s cubic-bezier(.4,0,.4,1) 0s alternate forwards;background:var(--clr-tabbar-active-border);bottom:0;content:"";height:.15rem;left:0;position:absolute}@keyframes tabbar-border-expand{0%{opacity:0;width:0}to{opacity:1;width:100%}}ul.tabbar>li>a{color:var(--clr-tabbar-inactive-text);font-size:1.3rem;font-variant:small-caps;font-weight:400;line-height:2.4rem;overflow:hidden;padding-left:1rem;padding-right:1rem;position:relative;text-align:center;text-decoration:none}ul.tabbar li.active>a{color:var(--clr-tabbar-active-text)}.unread{background-color:var(--clr-secondary-accent);border-radius:50%;color:var(--clr-bright);display:inline-block;font-size:.75rem;font-weight:bolder;height:1.35rem;line-height:1.45rem;margin-left:.5rem;text-align:center;vertical-align:middle;width:1.35rem}.material-icons.as-badge{color:var(--clr-chip-remove-icon-bg);font-size:1.15rem;padding-left:.2rem}.badge{align-self:flex-start;background-color:var(--clr-badge-default-bg);border:1px solid var(--clr-badge-default-border);border-radius:.2rem;color:var(--clr-badge-default-text);display:inline-block;font-family:Roboto Mono,Courier,monospace,sans-serif;font-size:.8rem;margin:.05rem .1rem;padding:.05rem .25rem}.badge.green{background-color:var(--clr-badge-green-bg);border-color:var(--clr-badge-green-border);color:var(--clr-badge-green-text)}.badge.yellow{background-color:var(--clr-badge-yellow-bg);border-color:var(--clr-badge-yellow-border);color:var(--clr-badge-yellow-text)}.badge.blue{background-color:var(--clr-badge-blue-bg);border-color:var(--clr-badge-blue-border);color:var(--clr-badge-blue-text)}.badge.red{background-color:var(--clr-badge-red-bg);border-color:var(--clr-badge-red-border);color:var(--clr-badge-red-text)}.badge.magenta{background-color:var(--clr-badge-magenta-bg);border-color:var(--clr-badge-magenta-border);color:var(--clr-badge-magenta-text)}.lettertile{border-radius:50%;padding-bottom:100%;user-select:none;width:100%}.lettertile>div{align-items:center;border-radius:50%;bottom:0;color:var(--clr-lettertile-default-text);display:flex;flex-grow:0;flex-shrink:0;justify-content:center;left:0;line-height:1;padding-top:.1em;position:absolute;right:0;text-align:center;text-transform:uppercase;top:0}.lettertile:hover{color:var(--clr-lettertile-hover-text)}.lettertile.disabled{opacity:.5}.lt-bg-0{background-color:var(--clr-lt-bg-0)}.lt-bg-1{background-color:var(--clr-lt-bg-1)}.lt-bg-2{background-color:var(--clr-lt-bg-2)}.lt-bg-3{background-color:var(--clr-lt-bg-3)}.lt-bg-4{background-color:var(--clr-lt-bg-4)}.lt-bg-5{background-color:var(--clr-lt-bg-5)}.lt-bg-6{background-color:var(--clr-lt-bg-6)}.lt-bg-7{background-color:var(--clr-lt-bg-7)}.lt-bg-8{background-color:var(--clr-lt-bg-8)}.lt-bg-9{background-color:var(--clr-lt-bg-9)}.lt-bg-10{background-color:var(--clr-lt-bg-10)}.lt-bg-11{background-color:var(--clr-lt-bg-11)}.lt-bg-12{background-color:var(--clr-lt-bg-12)}.lt-bg-13{background-color:var(--clr-lt-bg-13)}.lt-bg-14{background-color:var(--clr-lt-bg-14)}.lt-bg-15{background-color:var(--clr-lt-bg-15)}.dk-bg-0{background-color:var(--clr-dk-bg-0)}.dk-bg-1{background-color:var(--clr-dk-bg-1)}.dk-bg-2{background-color:var(--clr-dk-bg-2)}.dk-bg-3{background-color:var(--clr-dk-bg-3)}.dk-bg-4{background-color:var(--clr-dk-bg-4)}.dk-bg-5{background-color:var(--clr-dk-bg-5)}.dk-bg-6{background-color:var(--clr-dk-bg-6)}.dk-bg-7{background-color:var(--clr-dk-bg-7)}.dk-bg-8{background-color:var(--clr-dk-bg-8)}.dk-bg-9{background-color:var(--clr-dk-bg-9)}.dk-bg-10{background-color:var(--clr-dk-bg-10)}.dk-bg-11{background-color:var(--clr-dk-bg-11)}.dk-bg-12{background-color:var(--clr-dk-bg-12)}.dk-bg-13{background-color:var(--clr-dk-bg-13)}.dk-bg-14{background-color:var(--clr-dk-bg-14)}.dk-bg-15{background-color:var(--clr-dk-bg-15)}.lt-fg-0{color:var(--clr-lt-fg-0)!important}.lt-fg-1{color:var(--clr-lt-fg-1)!important}.lt-fg-2{color:var(--clr-lt-fg-2)!important}.lt-fg-3{color:var(--clr-lt-fg-3)!important}.lt-fg-4{color:var(--clr-lt-fg-4)!important}.lt-fg-5{color:var(--clr-lt-fg-5)!important}.lt-fg-6{color:var(--clr-lt-fg-6)!important}.lt-fg-7{color:var(--clr-lt-fg-7)!important}.lt-fg-8{color:var(--clr-lt-fg-8)!important}.lt-fg-9{color:var(--clr-lt-fg-9)!important}.lt-fg-10{color:var(--clr-lt-fg-10)!important}.lt-fg-11{color:var(--clr-lt-fg-11)!important}.lt-fg-12{color:var(--clr-lt-fg-12)!important}.lt-fg-13{color:var(--clr-lt-fg-13)!important}.lt-fg-14{color:var(--clr-lt-fg-14)!important}.lt-fg-15{color:var(--clr-lt-fg-15)!important}.dk-fg-0{color:var(--clr-dk-fg-0)!important}.dk-fg-1{color:var(--clr-dk-fg-1)!important}.dk-fg-2{color:var(--clr-dk-fg-2)!important}.dk-fg-3{color:var(--clr-dk-fg-3)!important}.dk-fg-4{color:var(--clr-dk-fg-4)!important}.dk-fg-5{color:var(--clr-dk-fg-5)!important}.dk-fg-6{color:var(--clr-dk-fg-6)!important}.dk-fg-7{color:var(--clr-dk-fg-7)!important}.dk-fg-8{color:var(--clr-dk-fg-8)!important}.dk-fg-9{color:var(--clr-dk-fg-9)!important}.dk-fg-10{color:var(--clr-dk-fg-10)!important}.dk-fg-11{color:var(--clr-dk-fg-11)!important}.dk-fg-12{color:var(--clr-dk-fg-12)!important}.dk-fg-13{color:var(--clr-dk-fg-13)!important}.dk-fg-14{color:var(--clr-dk-fg-14)!important}.dk-fg-15{color:var(--clr-dk-fg-15)!important}.material-icons{font-size:1.4rem;line-height:1;text-align:center;user-select:none;vertical-align:middle}.material-icons.small{font-size:1rem}.material-icons.medium{font-size:1.2rem}.material-icons.large{font-size:1.6rem}.material-icons.big{font-size:2.2rem}.material-icons.x-big{font-size:3rem}.material-icons.huge{font-size:4rem}.composed-material{display:inline-block;position:relative}.composed-material .second{font-size:85%;font-weight:700;left:39%;position:absolute;top:7%}.composed-material .second-small{font-size:62%;font-weight:700;left:30%;position:absolute;top:14%}.material-icons.outline{position:relative;text-shadow:-1px 1px var(--clr-bright),1px 1px var(--clr-bright),1px -1px var(--clr-bright),-1px -1px var(--clr-bright)}#self-avatar .material-icons{font-size:2.4rem;line-height:3rem}.avatar-box .material-icons{border-radius:50%;color:var(--clr-lettertile-default-text);height:inherit;width:inherit}.chip-input{align-items:center;background:var(--clr-transparent);border-bottom:1px solid var(--clr-input-border);box-shadow:0 1px 0 var(--clr-input-shadow);color:var(--clr-input-text);cursor:text;display:flex;flex-grow:1;flex-wrap:wrap;font-size:1.1rem;font-weight:400;justify-content:flex-start;margin:.25rem 0;max-height:10rem;min-height:4rem;outline:none;overflow-y:scroll;text-align:center;transition:all .1s ease-in-out}.chip-input.focused{border-bottom:1px solid var(--clr-input-border-focus);box-shadow:0 1px 0 var(--clr-input-shadow-focus)}.chip-input>input[type=text]{border:none;box-shadow:none;display:inline-block;flex:1 0 auto;min-width:4rem;width:auto}.chip,.chip-input>input[type=text]{height:1.8rem;line-height:1.8;margin:.125rem}.chip{align-items:center;background-color:var(--clr-chip-bg);border-radius:.9rem;display:flex;flex:0 0 auto;font-size:90%;max-width:12rem;overflow:hidden}.chip,.chip>span{text-overflow:ellipsis;white-space:nowrap}.chip>span{overflow-x:hidden}.chip.invalid{background-color:var(--clr-chip-invalid-bg);color:var(--clr-chip-invalid-text)}.chip>a{background-color:var(--clr-chip-remove-icon-bg);border-radius:50%;color:var(--clr-chip-remove-icon-text);display:inline-block;height:1.175rem;line-height:1.15;margin:.3rem;min-width:1.175rem;text-decoration:none;width:1.175rem}.chip>a:focus,.chip>a:hover{background-color:var(--clr-chip-remove-icon-hover-bg);color:var(--clr-chip-remove-icon-hover-text);text-decoration:none}.chip .avatar-box{font-size:1rem;height:1.8rem;margin-right:.2rem;min-height:1.8rem;min-width:1.8rem;position:relative;width:1.8rem}.chip .avatar-box .material-icons{font-size:1.4rem;line-height:1.8rem}.chip .spacer{display:inline-block;height:1.175rem;margin:.3rem;width:.25rem}.load-spinner-box{--size-small:2.5rem;--size-large:4rem;background-color:var(--clr-bright);border-radius:50%;box-shadow:.1rem .1rem .15rem 1px var(--clr-shadow-button);height:var(--size-small);left:0;margin-left:auto;margin-right:auto;padding:.25rem;position:absolute;right:0;top:5rem;width:var(--size-small);z-index:2}.load-spinner-box.large{height:var(--size-large);width:var(--size-large)}.load-spinner-box.clear{background-color:hsla(0,0%,100%,.5);box-shadow:.1rem .1rem .15rem 1px var(--clr-shadow-button-inset-active)}.load-spinner-box.centered{top:calc(var(--size-small)/2 - .25rem)}.load-spinner-box.large.centered{top:calc(var(--size-large)/2 - .25rem)}.loader-spinner{animation:spin 1.5s linear infinite;border-radius:50%;border-top:.35rem solid var(--clr-spinner-track);border:.35rem solid var(--clr-spinner-track);border-top-color:var(--clr-spinner-active);height:2rem;width:2rem}.load-spinner-box.large .loader-spinner{height:3.5rem;width:3.5rem}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.uploader{display:flex}.uploader>div{background-color:var(--clr-background-blue-gray-100);border-radius:.1rem;height:.6rem;line-height:0;margin:.35rem;padding:.15rem;position:relative;width:6rem}.uploader>div>span{background-color:var(--clr-primary-action);border-radius:.08rem;display:inline-block;height:.3rem}.highlight{color:var(--clr-highlight-text);font-weight:bolder}.highlight .preview{color:var(--clr-highlight-preview-text);font-weight:inherit}.cropper{align-self:center;height:21rem;margin:1rem auto auto;transform:translateZ(0)}.cropper,.cropper .bounding-box{border-radius:.25rem;position:relative;width:18rem}.cropper .bounding-box{background-color:var(--clr-cropper-bounding-box-bg);border:2px solid var(--clr-cropper-bounding-box-border);box-shadow:1px 1px 3px var(--clr-shadow-cropper-gray);height:18rem;overflow:hidden;z-index:1}.cropper .preview{max-height:none;max-width:none;position:absolute;z-index:-1}.cropper .cutout{border:1px dashed var(--clr-cropper-cutout-border);bottom:0;box-shadow:0 0 150rem 150rem var(--clr-cropper-cutout-shadow);height:17.8rem;left:0;margin:auto;position:absolute;right:0;top:0;width:17.8rem;z-index:0}.cropper .cutout.circle{border-radius:50%}.cropper .overlay{cursor:move;position:absolute;touch-action:none;z-index:1}.cropper .zoom-wrapper{height:2rem;margin:1rem auto;text-align:center;width:80%}.cropper .zoom{box-shadow:none;pointer-events:none;z-index:2}.cropper .zoom:focus{outline:none}.reply-quote{border-left:.25rem solid var(--clr-reply-quote-border);border-radius:.25rem;color:var(--clr-reply-quote-text);cursor:pointer;font-weight:lighter;line-height:1.5em;padding:.15rem .5rem .25rem;position:relative}.chat-box .bubble .reply-quote{margin:.15rem -.75rem .3rem}.chat-box .bubble .reply-quote:first-child{margin-top:-.25rem}.chat-box .left .reply-quote{background-color:var(--clr-reply-quote-left-bg)}.chat-box .right .reply-quote{background-color:var(--clr-reply-quote-right-bg)}.reply-quote .inline-image{margin-bottom:.1rem;vertical-align:middle}.reply-quote img.inline-image:before{content:""}#reply-quote-preview{align-items:center;display:flex}#reply-quote-preview .reply-quote{background-color:var(--clr-reply-quote-preview-bg);cursor:auto;margin:.35rem .5rem 0 0;width:100%}#reply-quote-preview .cancel{min-width:2.4rem;text-align:center}#reply-quote-preview .inline-image{background-color:var(--clr-border-light)}#reply-quote-preview img.inline-image:before{content:""}#send-message-panel #reply-quote-preview{width:100%}#send-message-panel #reply-quote-preview .reply-quote{margin-bottom:.35rem}.forwarding-quote{font-size:200%;line-height:200%}.mention{font-weight:500}.forward-dialog{background-color:var(--clr-bright);border-radius:.3rem;box-shadow:.15rem .15rem 1.5rem var(--clr-shadow-dialog);height:80%;margin:auto 1rem;overflow:hidden;padding:.5rem;position:relative;width:24rem}.forward-dialog .scrollable-panel{height:80%}.audio{align-items:center;background-color:var(--clr-audio-bg);border-radius:1.5rem;display:flex;flex:none;height:3rem;margin-left:auto}.audio canvas{height:2.6rem;margin-right:2rem;width:14rem}.audio canvas.playback{margin-right:0}.audio .duration{font-size:large}.audio-player{align-items:center;display:flex}.audio-player .material-icons.large{color:var(--clr-audio-icon);font-size:2.4rem}.audio-player .material-icons.disabled{color:var(--clr-audio-icon-disabled);cursor:default}.audio-player .playback{height:2.6rem;width:14rem}.audio-player canvas.playback{display:block}.audio-player div.playback{align-items:center;color:var(--clr-audio-icon);display:flex;font-size:small;justify-content:center}.audio-player .timer{color:var(--clr-audio-timer-text);font-size:smaller}#pinned-wrapper{margin-right:.5rem}#pinned-wrapper,.pinned{align-items:center;display:flex;height:100%;position:relative}.pinned{background-color:var(--clr-background-off-white);background-position:50%;border-radius:0 .25rem .25rem 0;color:var(--clr-text-primary);cursor:pointer;font-weight:lighter;min-width:0;padding:.15rem .5rem .25rem;transition:background .4s;width:24rem}.pinned>p{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.pinned:hover{background-color:var(--clr-bright)}.pinned:active{background-color:var(--clr-blue-wash-medium);transition:background 0s}.pinned-scroll{align-items:center;background-color:var(--clr-background-extra-light-gray);border-radius:.25rem 0 0 .25rem;display:flex;flex-direction:column;height:100%;justify-content:space-evenly;margin-left:.35rem;padding:.2rem;position:relative;user-select:none}.pinned-scroll .dot{background-color:var(--clr-text-tertiary);border-radius:50%;height:.3rem;user-select:none;width:.3rem}.pinned-scroll .adot{background-color:var(--clr-light-blue-accent);border-radius:50%;height:.45rem;user-select:none;width:.45rem}#pinned-wrapper:hover .menuTrigger{opacity:.9}#pinned-wrapper:hover .menuTrigger a{color:var(--clr-text-secondary)}.pinned-menu{background-color:var(--clr-pinned-menu-bg);border-radius:0 .25rem .25rem 0;bottom:0;display:flex;flex-direction:column;justify-content:space-evenly;position:absolute;right:0;top:0}.pinned-menu .menuTrigger{position:relative;right:0}.contact-card{background-color:var(--clr-background-off-white);border-radius:.5rem;display:flex;flex-direction:column;min-width:14rem;position:relative}.contact-card .avatar-box{font-size:1rem;height:1.8rem;margin-bottom:0;margin-right:.75rem;position:relative;width:1.8rem}.contact-card .contact-body{align-items:center;background-color:var(--clr-background-blue-gray-50);border-bottom:none;border-radius:.5rem .5rem 0 0;display:flex;padding:.75rem}.contact-card .contact-body .name-box{display:flex;flex-direction:column;overflow:hidden}.contact-card .contact-body .name-box .name{color:var(--clr-text-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-card .contact-body .name-box .org{color:var(--clr-text-secondary);font-size:90%;font-weight:300;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-card .contact-actions{align-items:center;background-color:var(--clr-bright);border-radius:0 0 .5rem .5rem;border-top:none;display:flex;justify-content:space-evenly;padding:0 .5rem}.contact-card .contact-actions a{cursor:pointer}.contact-card .contact-actions .divider{height:1.8rem;opacity:.5}.drag-n-drop{align-items:center;background-color:var(--clr-drag-n-drop-bg);border:.15rem dashed var(--clr-drag-n-drop-border);border-radius:1rem;bottom:1.5rem;color:var(--clr-drag-n-drop-text);display:flex;font-size:2rem;justify-content:center;left:1.5rem;outline:.5rem solid var(--clr-drag-n-drop-outline);position:absolute;right:1.5rem;top:1.5rem;z-index:3}.country-flag{display:inline-block;font-size:larger}.dial-code{cursor:pointer;display:inline-block;margin-bottom:.15rem;vertical-align:middle;white-space:nowrap}ul.phone-country-selector{list-style:none;overflow-x:hidden}ul.phone-country-selector>li{cursor:pointer;font-weight:lighter;padding:.25rem .5rem .15rem;position:relative;width:100%}ul.phone-country-selector>li:hover{background-color:var(--clr-background-blue-gray-50)}ul.phone-country-selector>li.selected{background-color:var(--clr-background-blue-gray-100)}ul.phone-country-selector .dial-code{color:var(--clr-primary-action);font-weight:400;position:absolute;right:.5rem}ul.phone-country-selector span{display:inline-block}ul.phone-country-selector span.country{overflow-x:hidden;text-overflow:ellipsis}.image-grid{display:grid;gap:.35rem;grid-template-columns:repeat(auto-fill,minmax(7rem,1fr));padding:.25rem;position:relative}.image-grid-cell{border:1.5px solid transparent;border-radius:.25rem;box-shadow:0 0 .2rem var( --clr-shadow-hr-inset);cursor:pointer;height:7rem;margin:0;overflow:hidden;padding:0;width:100%}.image-grid-cell img{object-fit:cover}.image-grid-cell.selected{border:1.5px solid var(--clr-secondary-accent)}img.inverted{filter:invert(1)}div.toast{align-items:center;background-color:var(--clr-toast-bg);border-radius:.5rem;bottom:2rem;box-shadow:1px 2px .3rem var(--clr-shadow-gray-strong);color:var(--clr-toast-text);display:flex;font-weight:lighter;height:3rem;justify-content:center;left:50%;min-width:10rem;padding:.5rem 1rem;position:absolute;translate:-50%;visibility:hidden;z-index:3}div.toast.show{animation:fadein .5s,fadeout .5s 2.5s;visibility:visible}@keyframes fadein{0%{bottom:0;opacity:0}to{bottom:2rem;opacity:1}}@keyframes fadeout{0%{bottom:2rem;opacity:1}to{bottom:0;opacity:0}}@media (min-width:1440px){#app-container{max-width:114rem}}@media (max-width:960px){#mountPoint{padding:0}.pinned{width:16rem}}@media (max-width:640px){#app-container{border-radius:0;box-shadow:none;width:100%}#info-view,#sidepanel{width:100%}.forward-dialog{border-radius:.3rem .3rem 0 0;margin:auto 0 0;width:100%}.menuTrigger{opacity:.3}#send-message-input{transition-property:-tinode-mobile}#pinned-wrapper{height:3.5rem;margin:.25rem}.pinned{width:unset}#video-container.minimized{border-radius:unset;box-shadow:0 0 .5rem var(--clr-shadow-gray-strong);flex-direction:row;height:11rem;left:0;top:var(--caption-panel-height);width:100%}#controls.minimized{bottom:auto;column-gap:unset;flex-direction:column;right:1rem;row-gap:.5rem}.minimized .call-party{border-radius:unset;box-shadow:unset}.call-party.self{border-radius:unset;bottom:8.5rem}} \ No newline at end of file diff --git a/src/i18n/ar.json b/src/i18n/ar.json index 7b116de4..d9f0402d 100644 --- a/src/i18n/ar.json +++ b/src/i18n/ar.json @@ -1225,7 +1225,7 @@ "label_description": { "translation": "الوصف", "defaultMessage": "Description", - "description": "Label for editing topic description", + "description": "Label for description of user or topic", "missing": false, "obsolete": false }, diff --git a/src/i18n/de.json b/src/i18n/de.json index 4f3bbebf..2c926b5d 100644 --- a/src/i18n/de.json +++ b/src/i18n/de.json @@ -1225,7 +1225,7 @@ "label_description": { "translation": "Beschreibung", "defaultMessage": "Description", - "description": "Label for editing topic description", + "description": "Label for description of user or topic", "missing": false, "obsolete": false }, diff --git a/src/i18n/en.json b/src/i18n/en.json index 03b087db..54778a20 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -1225,7 +1225,7 @@ "label_description": { "translation": "Description", "defaultMessage": "Description", - "description": "Label for editing topic description", + "description": "Label for description of user or topic", "missing": false, "obsolete": false }, diff --git a/src/i18n/es.json b/src/i18n/es.json index 8884ae4b..0fe5c0a8 100644 --- a/src/i18n/es.json +++ b/src/i18n/es.json @@ -1218,7 +1218,7 @@ "label_description": { "translation": "Descripción", "defaultMessage": "Description", - "description": "Label for editing topic description", + "description": "Label for description of user or topic", "missing": false, "obsolete": false }, diff --git a/src/i18n/ex/base-en.json b/src/i18n/ex/base-en.json index db89fd2c..926d7f19 100644 --- a/src/i18n/ex/base-en.json +++ b/src/i18n/ex/base-en.json @@ -452,7 +452,7 @@ }, "label_description": { "defaultMessage": "Description", - "description": "Label for editing topic description" + "description": "Label for description of user or topic" }, "label_file_name": { "defaultMessage": "File name:", diff --git a/src/i18n/fr.json b/src/i18n/fr.json index dab84290..cf0b46cf 100644 --- a/src/i18n/fr.json +++ b/src/i18n/fr.json @@ -1225,7 +1225,7 @@ "label_description": { "translation": "Description", "defaultMessage": "Description", - "description": "Label for editing topic description", + "description": "Label for description of user or topic", "missing": false, "obsolete": false }, diff --git a/src/i18n/it.json b/src/i18n/it.json index f1faf2ed..fe463234 100644 --- a/src/i18n/it.json +++ b/src/i18n/it.json @@ -1218,7 +1218,7 @@ "label_description": { "translation": "Descrizione", "defaultMessage": "Description", - "description": "Label for editing topic description", + "description": "Label for description of user or topic", "missing": false, "obsolete": false }, diff --git a/src/i18n/ko.json b/src/i18n/ko.json index 2554ebf8..20a2cceb 100644 --- a/src/i18n/ko.json +++ b/src/i18n/ko.json @@ -1218,7 +1218,7 @@ "label_description": { "translation": "설명", "defaultMessage": "Description", - "description": "Label for editing topic description", + "description": "Label for description of user or topic", "missing": false, "obsolete": false }, diff --git a/src/i18n/ro.json b/src/i18n/ro.json index bb9a0e74..c5baf6e8 100644 --- a/src/i18n/ro.json +++ b/src/i18n/ro.json @@ -1218,7 +1218,7 @@ "label_description": { "translation": "Descriere", "defaultMessage": "Description", - "description": "Label for editing topic description", + "description": "Label for description of user or topic", "missing": false, "obsolete": false }, diff --git a/src/i18n/ru.json b/src/i18n/ru.json index a299e9b2..b8bf3db3 100644 --- a/src/i18n/ru.json +++ b/src/i18n/ru.json @@ -1218,7 +1218,7 @@ "label_description": { "translation": "Описание", "defaultMessage": "Description", - "description": "Label for editing topic description", + "description": "Label for description of user or topic", "missing": false, "obsolete": false }, diff --git a/src/i18n/th.json b/src/i18n/th.json index d0475e03..63697a21 100644 --- a/src/i18n/th.json +++ b/src/i18n/th.json @@ -1225,7 +1225,7 @@ "label_description": { "translation": "คำอธิบาย", "defaultMessage": "Description", - "description": "Label for editing topic description", + "description": "Label for description of user or topic", "missing": false, "obsolete": false }, diff --git a/src/i18n/uk.json b/src/i18n/uk.json index 71d28c0f..aa06339e 100644 --- a/src/i18n/uk.json +++ b/src/i18n/uk.json @@ -1218,7 +1218,7 @@ "label_description": { "translation": "Опис", "defaultMessage": "Description", - "description": "Label for editing topic description", + "description": "Label for description of user or topic", "missing": false, "obsolete": false }, diff --git a/src/i18n/zh-TW.json b/src/i18n/zh-TW.json index ccf2ea65..94a07f8b 100644 --- a/src/i18n/zh-TW.json +++ b/src/i18n/zh-TW.json @@ -1218,7 +1218,7 @@ "label_description": { "translation": "說明", "defaultMessage": "Description", - "description": "Label for editing topic description", + "description": "Label for description of user or topic", "missing": false, "obsolete": false }, diff --git a/src/i18n/zh.json b/src/i18n/zh.json index 7cd4cbda..3bd40242 100644 --- a/src/i18n/zh.json +++ b/src/i18n/zh.json @@ -1218,7 +1218,7 @@ "label_description": { "translation": "说明", "defaultMessage": "Description", - "description": "Label for editing topic description", + "description": "Label for description of user or topic", "missing": false, "obsolete": false }, diff --git a/src/views/account-settings-view.jsx b/src/views/account-settings-view.jsx index 4afcf397..ac80f30a 100644 --- a/src/views/account-settings-view.jsx +++ b/src/views/account-settings-view.jsx @@ -138,7 +138,7 @@ export default class AccountSettingsView extends React.Component {
{this.state.description}
: null} diff --git a/src/views/info-view.jsx b/src/views/info-view.jsx index 13b91428..0e2ffe76 100644 --- a/src/views/info-view.jsx +++ b/src/views/info-view.jsx @@ -2,7 +2,7 @@ import React from 'react'; import { FormattedMessage, FormattedNumber, defineMessages, injectIntl } from 'react-intl'; -import { AccessMode, Tinode } from 'tinode-sdk'; +import { AccessMode, Tinode, TheCard } from 'tinode-sdk'; import AvatarUpload from '../widgets/avatar-upload.jsx'; import BadgeList from '../widgets/badge-list.jsx'; @@ -20,7 +20,6 @@ import { MAX_TITLE_LENGTH, MAX_TOPIC_DESCRIPTION_LENGTH, NO_ACCESS_MODE, TOAST_DURATION } from '../config.js'; import { makeImageUrl } from '../lib/blob-helpers.js'; -import { theCard } from '../lib/utils.js'; import { truncateString } from '../lib/strformat.js'; const messages = defineMessages({ @@ -147,6 +146,7 @@ class InfoView extends React.Component { this.handleLaunchPermissionsEditor = this.handleLaunchPermissionsEditor.bind(this); this.handleShowQRCode = this.handleShowQRCode.bind(this); this.handleCopyToClipboard = this.handleCopyToClipboard.bind(this); + this.handleShare = this.handleShare.bind(this); this.handleShowAddMembers = this.handleShowAddMembers.bind(this); this.handleMemberUpdateRequest = this.handleMemberUpdateRequest.bind(this); this.handleMemberSelected = this.handleMemberSelected.bind(this); @@ -299,7 +299,7 @@ class InfoView extends React.Component { handleImageChanged(mime, img) { this.setState({avatar: img}); - this.props.onTopicDescUpdate(this.props.topic, theCard(null, img || Tinode.DEL_CHAR), null); + this.props.onTopicDescUpdate(this.props.topic, new TheCard(null, img || Tinode.DEL_CHAR), null); } handleMuted(ignored, checked) { @@ -421,7 +421,13 @@ class InfoView extends React.Component { this.setState({toast: this.props.intl.formatMessage(messages.text_copied)}); setTimeout(_ => { this.setState({toast: ''}); }, TOAST_DURATION); }); + } + handleShare(e) { + e.preventDefault(); + const card = new TheCard(this.state.fullName, this.state.avatar, null, this.state.description); + TheCard.setTinodeID(card, Tinode.URI_TOPIC_ID_PREFIX + this.props.topic); + this.props.onShareTheCard(card); } handleShowAddMembers(e) { @@ -629,6 +635,9 @@ class InfoView extends React.Component {   qr_code   +   + share +   {alias ? @@ -673,7 +682,7 @@ class InfoView extends React.Component {
{this.state.description}
: null} diff --git a/src/views/messages-view.jsx b/src/views/messages-view.jsx index de3c86b8..74bed072 100644 --- a/src/views/messages-view.jsx +++ b/src/views/messages-view.jsx @@ -1,17 +1,17 @@ // Panel with a chat. -import React from 'react'; +import React, { Suspense } from 'react'; import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; import { Drafty, Tinode, TheCard } from 'tinode-sdk'; -import CallPanel from '../widgets/call-panel.jsx'; +const CallPanel = React.lazy(_ => import('../widgets/call-panel.jsx')); import ChatMessage from '../widgets/chat-message.jsx'; import ContactBadges from '../widgets/contact-badges.jsx'; -import DocPreview from '../widgets/doc-preview.jsx'; +const DocPreview = React.lazy(_ => import('../widgets/doc-preview.jsx')); import ErrorPanel from '../widgets/error-panel.jsx'; import GroupSubs from '../widgets/group-subs.jsx'; -import ImagePreview from '../widgets/image-preview.jsx'; +const ImagePreview = React.lazy(_ => import('../widgets/image-preview.jsx')); import Invitation from '../widgets/invitation.jsx'; import LetterTile from '../widgets/letter-tile.jsx'; import LoadSpinner from '../widgets/load-spinner.jsx'; @@ -19,8 +19,8 @@ import LogoView from './logo-view.jsx'; import MetaMessage from '../widgets/meta-message.jsx'; import PinnedMessages from '../widgets/pinned-messages.jsx'; import SendMessage from '../widgets/send-message.jsx'; -import TheCardPreview from '../widgets/the-card-preview.jsx'; -import VideoPreview from '../widgets/video-preview.jsx'; +const TheCardPreview = React.lazy(_ => import('../widgets/the-card-preview.jsx')); +const VideoPreview = React.lazy(_ => import('../widgets/video-preview.jsx')); import { DEFAULT_P2P_ACCESS_MODE, EDIT_PREVIEW_LENGTH, IMAGE_PREVIEW_DIM, IMMEDIATE_P2P_SUBSCRIPTION, DRAFTY_FR_MIME_TYPE_LEGACY, KEYPRESS_DELAY, MESSAGES_PAGE, MAX_EXTERN_ATTACHMENT_SIZE, MAX_IMAGE_DIM, @@ -390,11 +390,18 @@ class MessagesView extends React.Component { }; if (nextProps.forwardMessage) { - // We are forwarding a message. Show preview. - nextState.reply = { - content: nextProps.forwardMessage.preview, - seq: null - }; + if (nextProps.forwardMessage.content) { + nextState.docPreview = { + object: nextProps.forwardMessage.content, + type: nextProps.forwardMessage.type + }; + } else { + // We are forwarding a message. Show preview. + nextState.reply = { + content: nextProps.forwardMessage.preview, + seq: null + }; + } } else { nextState.reply = null; } @@ -908,7 +915,14 @@ class MessagesView extends React.Component { if (this.state.videoPreview && this.state.videoPreview.url) { URL.revokeObjectURL(this.state.videoPreview.url); } - this.setState({ imagePostview: null, imagePreview: null, docPreview: null, videoPreview: null, videoPostview: null}); + this.setState({ + imagePostview: null, + imagePreview: null, + docPreview: null, + videoPreview: null, + videoPostview: null, + }); + this.props.onCancelForwardMessage(); } handleFormResponse(action, text, data) { @@ -1522,22 +1536,25 @@ class MessagesView extends React.Component { // P2P call is an overlay, not a separate component because it cannot be // re-mounted between full screen/minimized. const overlay = this.state.rtcPanel && - ; + }> + + ; let component; if (!this.state.topic) { @@ -1550,57 +1567,76 @@ class MessagesView extends React.Component { if (this.state.imagePreview) { // Preview image before sending. component2 = ( - + }> + + ); } else if (this.state.videoPreview) { // Preview video. - component2 = ; + component2 = }> + + ; } else if (this.state.imagePostview) { // Expand received image. - component2 = ; + component2 = }> + + ; } else if (this.state.videoPostview) { // Play received video. - component2 = ; + component2 = }> + + ; } else if (this.state.docPreview) { // Preview attachment before sending. - if (TheCard.isFileSupported(this.state.docPreview.type, this.state.docPreview.name)) { - component2 = ; + if (TheCard.isFileSupported(this.state.docPreview.type, this.state.docPreview.name) || + this.state.docPreview.type == TheCard.contentType) { + component2 = }> + + ; } else { - component2 = ; + component2 = }> + + ; } } else { const topic = this.props.tinode.getTopic(this.state.topic); diff --git a/src/views/tinode-web.jsx b/src/views/tinode-web.jsx index d26b86e8..d5c9462a 100644 --- a/src/views/tinode-web.jsx +++ b/src/views/tinode-web.jsx @@ -15,7 +15,7 @@ import CallIncoming from '../widgets/call-incoming.jsx'; const PhoneCountrySelector = React.lazy(_ => import('../widgets/phone-country-selector.jsx')); const InfoView = React.lazy(_ => import('./info-view.jsx')); -import MessagesView from './messages-view.jsx'; +const MessagesView = React.lazy(_ => import('./messages-view.jsx')); import SidepanelView from './sidepanel-view.jsx'; import { API_KEY, APP_NAME, DEFAULT_COLOR_SCHEME, DEFAULT_P2P_ACCESS_MODE, DEFAULT_TEXT_SIZE, FORWARDED_PREVIEW_LENGTH, @@ -108,6 +108,7 @@ class TinodeWeb extends React.Component { 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); @@ -165,6 +166,7 @@ class TinodeWeb extends React.Component { 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); @@ -318,6 +320,9 @@ class TinodeWeb extends React.Component { // Window/tab visible or invisible for pausing timers. document.addEventListener('visibilitychange', this.handleVisibilityEvent); + + // Listen for Escape key to clear selections. + document.addEventListener('keydown', this.handleEscapeKey); document.documentElement.style.colorScheme = this.state.colorSchema == 'auto' ? 'light dark' : this.state.colorSchema; document.documentElement.style.setProperty('--message-text-size', `${this.state.textSize}pt`); @@ -407,6 +412,7 @@ class TinodeWeb extends React.Component { 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); } @@ -516,6 +522,27 @@ class TinodeWeb extends React.Component { } } + handleEscapeKey(e) { + if (e.key === 'Escape' || e.keyCode === 27) { + // Clear selections and navigate to base state + this.setState({ + topicSelected: null, + errorText: '', + errorLevel: null, + mobilePanel: 'sidepanel', + topicSelectedOnline: false, + topicSelectedAcs: null, + infoPanel: undefined, + forwardMessage: null, + contextMenuVisible: false, + forwardDialogVisible: false, + alertVisible: false + }); + // Navigate to contacts or login view + HashNavigation.navigateTo(HashNavigation.setUrlTopic('', null)); + } + } + // Check if a newer version of TinodeWeb app is available at the server. checkForAppUpdate(reg) { reg.onupdatefound = _ => { @@ -1703,7 +1730,7 @@ class TinodeWeb extends React.Component { // If the Find panel is active, close it. this.handleSidepanelCancel(); } - const header = '➦ ' + params.userName; + const header = params.userName ? '➦ ' + params.userName : ''; const content = typeof params.content == 'string' ? Drafty.init(params.content) : Drafty.forwardedContent(params.content); const preview = Drafty.preview(content, FORWARDED_PREVIEW_LENGTH, true); const msg = Drafty.append(Drafty.appendLineBreak(Drafty.mention(header, params.userFrom)), content); @@ -1718,6 +1745,16 @@ class TinodeWeb extends React.Component { }); } + handleShareTheCard(card) { + this.setState({ + forwardDialogVisible: true, + forwardMessage: { + content: card, + type: card.contentType, + } + }); + } + defaultTopicContextMenu(topicName) { const topic = this.tinode.getTopic(topicName); @@ -2228,56 +2265,59 @@ class TinodeWeb extends React.Component { : null} {!this.state.displayMobile || (this.state.mobilePanel == 'topic-view' && !this.state.infoPanel) ? - }> + + 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 ? @@ -2307,7 +2347,7 @@ class TinodeWeb extends React.Component { onLeaveTopic={this.handleLeaveUnsubRequest} onBlockTopic={this.handleBlockTopicRequest} onReportTopic={this.handleReportTopic} - onAddMember={this.handleManageGroupMembers} + onShareTheCard={this.handleShareTheCard} onTopicTagsUpdateRequest={this.handleTagsUpdateRequest} onTopicUnArchive={this.handleUnarchive} onInitFind={this.tnInitFind} diff --git a/src/widgets/doc-preview.jsx b/src/widgets/doc-preview.jsx index de8663d4..e02edbea 100644 --- a/src/widgets/doc-preview.jsx +++ b/src/widgets/doc-preview.jsx @@ -46,7 +46,7 @@ export default class DocPreview extends React.PureComponent { } return (
-
+ diff --git a/src/widgets/image-preview.jsx b/src/widgets/image-preview.jsx index 445f6f24..1f777d6f 100644 --- a/src/widgets/image-preview.jsx +++ b/src/widgets/image-preview.jsx @@ -77,7 +77,7 @@ export default class ImagePreview extends React.PureComponent { return (
-
+
{this.props.onSendMessage ? {fname} : diff --git a/src/widgets/new-topic-group.jsx b/src/widgets/new-topic-group.jsx index f5ac7226..6a825473 100644 --- a/src/widgets/new-topic-group.jsx +++ b/src/widgets/new-topic-group.jsx @@ -161,7 +161,7 @@ export default class NewTopicGroup extends React.PureComponent {
{ diff --git a/src/widgets/show-qrcode.jsx b/src/widgets/show-qrcode.jsx index bd33aa89..1e8670f1 100644 --- a/src/widgets/show-qrcode.jsx +++ b/src/widgets/show-qrcode.jsx @@ -23,6 +23,7 @@ export default class ShowQRCode extends React.PureComponent {

+
{this.props.uri}
\n \n
\n );\n }\n}\n\nexport default injectIntl(CredentialEdit);\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { parsePhoneNumber } from 'libphonenumber-js/mobile';\n\nimport AvatarUpload from '../widgets/avatar-upload.jsx';\nimport BadgeList from '../widgets/badge-list.jsx';\nimport CredentialEdit from '../widgets/credential-edit.jsx';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\nimport { truncateString } from '../lib/strformat.js';\nimport { MAX_TITLE_LENGTH, MAX_TOPIC_DESCRIPTION_LENGTH } from '../config.js';\n\nfunction _clip(str, length) {\n return truncateString(str, length);\n}\n\nexport default class AccountSettingsView extends React.Component {\n constructor(props) {\n super(props);\n\n const me = this.props.tinode.getMeTopic();\n this.state = {\n fullName: _clip(me.public ? me.public.fn : undefined, MAX_TITLE_LENGTH),\n description: _clip(me.public ? me.public.note : undefined, MAX_TOPIC_DESCRIPTION_LENGTH),\n avatar: makeImageUrl(me.public ? me.public.photo : null),\n credentials: me.getCredentials() || [],\n credEdit: undefined,\n alias: ((me.tags() || []).find(tag => tag.startsWith('alias:')) || '').substring(6),\n };\n }\n\n componentDidMount() {\n const me = this.props.tinode.getMeTopic();\n me.onCredsUpdated = _ => this.setState({credentials: me.getCredentials()});\n }\n\n componentWillUnmount() {\n const me = this.props.tinode.getMeTopic();\n me.onCredsUpdated = null;\n }\n\n render() {\n if (this.state.credEdit) {\n return (\n this.setState({credEdit: undefined})}\n onError={this.props.onError} />\n );\n }\n\n // Count how many times each method is validated.\n const validated = {};\n this.state.credentials.forEach(cred => {\n if (cred.done) {\n validated[cred.meth] = (validated[cred.meth] || 0) + 1;\n }\n });\n\n const credentials = [];\n this.state.credentials.forEach((cred, idx) => {\n if (!['email', 'tel'].includes(cred.meth)) {\n // Skip unknown methods.\n return ;\n }\n\n let val = cred.val\n if (cred.meth == 'tel') {\n const number = parsePhoneNumber(cred.val);\n val = number ? number.formatInternational() : cred.val;\n }\n\n credentials.push(\n
\n {e.preventDefault(); this.setState({credEdit: cred});}}>{val}\n {cred.done ? null : pending} \n {!cred.done || validated[cred.meth] > 1 || this.props.reqCredMethod != cred.meth ?\n {e.preventDefault(); this.props.onCredDelete(cred.meth, cred.val);}}>\n delete\n \n :\n null}\n \n
);\n });\n if (credentials.length > 0) {\n // Add title as the first element.\n credentials.unshift(\n );\n }\n\n return (\n
\n
\n {e.preventDefault(); this.props.onNavigate('general');}}>\n edit \n \n \n
\n \n
\n
\n \n
{this.state.fullName}
\n
\n
\n  \n {this.props.myUserId}\n
\n {this.state.alias ?\n
\n  \n @{this.state.alias}\n
: null}\n
\n \n
\n {this.state.description ?\n
\n \n
{this.state.description}
\n
: null}\n
\n
\n
\n
{credentials}
\n
\n \n );\n }\n};\n","// Editor for a phone number.\n\nimport React from 'react';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { AsYouType, getExampleNumber, parsePhoneNumber } from 'libphonenumber-js/mobile';\nimport examples from 'libphonenumber-js/mobile/examples'\n\nimport * as dcodes from '../dcodes.json';\nimport { flagEmoji } from '../lib/strformat';\n\nconst messages = defineMessages({\n mobile_number_required: {\n id: 'mobile_number_required',\n defaultMessage: 'Mobile phone number required',\n description: 'Error message'\n }\n});\n\nclass PhoneEdit extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.codeMap = {};\n dcodes.default.forEach(dc => { this.codeMap[dc.code] = dc.dial; });\n\n const code = props.countryCode || 'US';\n const dial = this.codeMap[code];\n\n this.state = {\n countryCode: code,\n dialCode: dial,\n localNumber: '',\n placeholderNumber: this.placeholderNumber(code, dial)\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleFinished = this.handleFinished.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.showCountrySelector = this.showCountrySelector.bind(this);\n }\n\n handleChange(e) {\n const prefix = `+${this.state.dialCode}`;\n let formatted = new AsYouType().input(`${prefix}${this.filterNumber(e.target.value)}`);\n formatted = formatted.substring(prefix.length).trim();\n this.setState({localNumber: formatted});\n }\n\n handleFinished(e) {\n e.preventDefault();\n const raw = `${this.state.dialCode}${this.state.localNumber.trim()}`.replace(/[^\\d]/g, '');\n let number = null;\n try {\n number = parsePhoneNumber(`+${raw}`);\n } catch (err) {}\n\n if (!number || !number.isValid()) {\n this.inputField.setCustomValidity(this.props.intl.formatMessage(messages.mobile_number_required));\n return;\n }\n\n this.inputField.setCustomValidity('');\n this.props.onSubmit(number.format('E.164'));\n }\n\n\n handleKeyDown(e) {\n if (e.key === 'Enter') {\n this.handleFinished(e);\n }\n }\n\n showCountrySelector() {\n this.props.onShowCountrySelector(this.state.countryCode, this.state.dialCode,\n (code, dial) => {\n this.setState({\n countryCode: code,\n dialCode: dial,\n placeholderNumber: this.placeholderNumber(code, dial)\n })\n });\n }\n\n // Filter out characters not permitted in a phone number.\n filterNumber(number) {\n if (!number) {\n return number;\n }\n // Leave numbers, space, (, ), -, and .\n // The + is not allowed: it's handled by the country code portion.\n return number.replace(/[^-\\s().\\d]/g, '');\n }\n\n placeholderNumber(code, dial) {\n const sample = getExampleNumber(code, examples);\n return sample ? sample.formatInternational().substring(dial.length + 1).trim() : '123 0123';\n }\n\n render() {\n return (\n <>\n \n {flagEmoji(this.state.countryCode)} \n +{this.state.dialCode} \n {this.inputField = ref}} placeholder={this.state.placeholderNumber}\n value={this.state.localNumber} onChange={this.handleChange}\n maxLength={17} onKeyDown={this.handleKeyDown} onBlur={this.handleFinished}\n required autoFocus={this.props.autoFocus} />\n \n );\n }\n}\n\nexport default injectIntl(PhoneEdit);\n"],"names":["messages","defineMessages","password_reset_email_sent","id","defaultMessage","password_reset_sms_sent","CredentialEdit","React","constructor","props","super","this","state","code","tel","email","sent","handleSubmit","bind","handleEmailChange","handlePhoneChange","handleCodeChange","formatPhoneNumber","raw","number","parsePhoneNumber","err","formatInternational","e","setState","target","value","replace","preventDefault","method","onError","onCredConfirm","onCredAdd","msg","intl","formatMessage","render","readyForCode","done","rawValue","val","formattedValue","changeEmail","className","FormattedMessage","changePhone","newEmailLabel","newEmailInput","email_prompt","type","placeholder","autoComplete","onChange","required","newPhoneLabel","newPhoneInput","PhoneEdit","autoFocus","onShowCountrySelector","onSubmit","codeInput","numbers_only","maxLength","onClick","onCancel","injectIntl","_clip","str","length","truncateString","AccountSettingsView","me","tinode","getMeTopic","fullName","public","fn","undefined","MAX_TITLE_LENGTH","description","note","MAX_TOPIC_DESCRIPTION_LENGTH","avatar","makeImageUrl","photo","credentials","getCredentials","credEdit","alias","tags","find","tag","startsWith","substring","componentDidMount","onCredsUpdated","_","componentWillUnmount","meth","validated","forEach","cred","idx","includes","push","key","reqCredMethod","href","onCredDelete","unshift","onNavigate","AvatarUpload","readOnly","uid","myUserId","title","BadgeList","trustedBadges","mobile_number_required","codeMap","dcodes","dc","dial","countryCode","dialCode","localNumber","placeholderNumber","handleChange","handleFinished","handleKeyDown","showCountrySelector","prefix","formatted","AsYouType","input","filterNumber","trim","isValid","inputField","setCustomValidity","format","sample","getExampleNumber","examples","flagEmoji","ref","onKeyDown","onBlur"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"271.prod.js","mappings":"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","sources":["webpack://tinode-webapp/./src/widgets/credential-edit.jsx","webpack://tinode-webapp/./src/views/account-settings-view.jsx","webpack://tinode-webapp/./src/widgets/phone-edit.jsx"],"sourcesContent":["// Enter one credential at a time.\n\nimport React from 'react';\nimport { defineMessages, FormattedMessage, injectIntl } from 'react-intl';\nimport PhoneEdit from './phone-edit.jsx';\nimport { parsePhoneNumber } from 'libphonenumber-js/mobile';\n\nconst messages = defineMessages({\n password_reset_email_sent: {\n id: 'password_reset_email_sent',\n defaultMessage: 'An email with security code has been sent.',\n description: 'Notification that the email with password reset instructions has been sent'\n },\n password_reset_sms_sent: {\n id: 'password_reset_sms_sent',\n defaultMessage: 'A text message with security code has been sent.',\n description: 'Notification that the SMS with password reset instructions has been sent'\n },\n});\n\nclass CredentialEdit extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n code: '',\n tel: '',\n email: '',\n sent: false\n };\n\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleEmailChange = this.handleEmailChange.bind(this);\n this.handlePhoneChange = this.handlePhoneChange.bind(this);\n this.handleCodeChange = this.handleCodeChange.bind(this);\n }\n\n static formatPhoneNumber(raw) {\n let number;\n try {\n number = parsePhoneNumber(raw);\n } catch (err) {}\n return number ? number.formatInternational() : raw;\n }\n\n handleEmailChange(e) {\n this.setState({email: e.target.value});\n }\n\n handlePhoneChange(number) {\n this.setState({tel: number});\n }\n\n handleCodeChange(e) {\n this.setState({code: e.target.value.replace(/[^\\d]/g, '')});\n }\n\n handleSubmit(e) {\n e.preventDefault();\n const value = this.props.method == 'email' ? this.state.email : this.state.tel;\n if (this.state.code) {\n this.props.onError(null);\n this.props.onCredConfirm(this.props.method, this.state.code);\n } else if (value) {\n this.props.onCredAdd(this.props.method, value);\n this.setState({sent: true});\n const msg = this.props.method == 'email' ? messages.password_reset_email_sent : messages.password_reset_sms_sent;\n this.props.onError(this.props.intl.formatMessage(msg), 'info');\n }\n }\n\n render() {\n const readyForCode = this.state.sent || !this.props.done;\n const rawValue = readyForCode ? (this.state.tel || this.state.email) : this.props.val;\n const formattedValue = this.props.method == 'tel' ? CredentialEdit.formatPhoneNumber(rawValue) : rawValue;\n\n const changeEmail = (\n <>
\n \n
\n
\n \n
);\n\n const changePhone = (\n <>
\n \n
\n
\n \n
\n );\n\n const newEmailLabel = ();\n\n const newEmailInput = (\n <>
{newEmailLabel}
\n
\n {\n (email_prompt) => \n }\n
\n );\n\n const newPhoneLabel = ();\n\n const newPhoneInput = (\n <>
{newPhoneLabel}
\n
\n \n
\n );\n\n const codeInput = (\n <>
\n \n
\n
\n {\n (numbers_only) => \n }\n
\n );\n\n return (
\n {readyForCode ?\n (this.props.method == 'email' ? newEmailLabel : this.props.method == 'tel' ? newPhoneLabel : null)\n :\n (this.props.method == 'email' ? changeEmail : this.props.method == 'tel' ? changePhone : null)\n }\n
\n {formattedValue}\n
\n {readyForCode ?\n null\n :\n (this.props.method == 'email' ? newEmailInput : this.props.method == 'tel' ? newPhoneInput : null)\n }\n {readyForCode ? codeInput : null}\n
\n \n \n
\n
);\n }\n}\n\nexport default injectIntl(CredentialEdit);\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { parsePhoneNumber } from 'libphonenumber-js/mobile';\n\nimport AvatarUpload from '../widgets/avatar-upload.jsx';\nimport BadgeList from '../widgets/badge-list.jsx';\nimport CredentialEdit from '../widgets/credential-edit.jsx';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\nimport { truncateString } from '../lib/strformat.js';\nimport { MAX_TITLE_LENGTH, MAX_TOPIC_DESCRIPTION_LENGTH } from '../config.js';\n\nfunction _clip(str, length) {\n return truncateString(str, length);\n}\n\nexport default class AccountSettingsView extends React.Component {\n constructor(props) {\n super(props);\n\n const me = this.props.tinode.getMeTopic();\n this.state = {\n fullName: _clip(me.public ? me.public.fn : undefined, MAX_TITLE_LENGTH),\n description: _clip(me.public ? me.public.note : undefined, MAX_TOPIC_DESCRIPTION_LENGTH),\n avatar: makeImageUrl(me.public ? me.public.photo : null),\n credentials: me.getCredentials() || [],\n credEdit: undefined,\n alias: ((me.tags() || []).find(tag => tag.startsWith('alias:')) || '').substring(6),\n };\n }\n\n componentDidMount() {\n const me = this.props.tinode.getMeTopic();\n me.onCredsUpdated = _ => this.setState({credentials: me.getCredentials()});\n }\n\n componentWillUnmount() {\n const me = this.props.tinode.getMeTopic();\n me.onCredsUpdated = null;\n }\n\n render() {\n if (this.state.credEdit) {\n return (\n this.setState({credEdit: undefined})}\n onError={this.props.onError} />\n );\n }\n\n // Count how many times each method is validated.\n const validated = {};\n this.state.credentials.forEach(cred => {\n if (cred.done) {\n validated[cred.meth] = (validated[cred.meth] || 0) + 1;\n }\n });\n\n const credentials = [];\n this.state.credentials.forEach((cred, idx) => {\n if (!['email', 'tel'].includes(cred.meth)) {\n // Skip unknown methods.\n return ;\n }\n\n let val = cred.val\n if (cred.meth == 'tel') {\n const number = parsePhoneNumber(cred.val);\n val = number ? number.formatInternational() : cred.val;\n }\n\n credentials.push(\n
\n {e.preventDefault(); this.setState({credEdit: cred});}}>{val}\n {cred.done ? null : pending} \n {!cred.done || validated[cred.meth] > 1 || this.props.reqCredMethod != cred.meth ?\n {e.preventDefault(); this.props.onCredDelete(cred.meth, cred.val);}}>\n delete\n \n :\n null}\n \n
);\n });\n if (credentials.length > 0) {\n // Add title as the first element.\n credentials.unshift(\n );\n }\n\n return (\n
\n
\n {e.preventDefault(); this.props.onNavigate('general');}}>\n edit \n \n \n
\n \n
\n
\n \n
{this.state.fullName}
\n
\n
\n  \n {this.props.myUserId}\n
\n {this.state.alias ?\n
\n  \n @{this.state.alias}\n
: null}\n
\n \n
\n {this.state.description ?\n
\n \n
{this.state.description}
\n
: null}\n
\n
\n
\n
{credentials}
\n
\n \n );\n }\n};\n","// Editor for a phone number.\n\nimport React from 'react';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { AsYouType, getExampleNumber, parsePhoneNumber } from 'libphonenumber-js/mobile';\nimport examples from 'libphonenumber-js/mobile/examples'\n\nimport * as dcodes from '../dcodes.json';\nimport { flagEmoji } from '../lib/strformat';\n\nconst messages = defineMessages({\n mobile_number_required: {\n id: 'mobile_number_required',\n defaultMessage: 'Mobile phone number required',\n description: 'Error message'\n }\n});\n\nclass PhoneEdit extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.codeMap = {};\n dcodes.default.forEach(dc => { this.codeMap[dc.code] = dc.dial; });\n\n const code = props.countryCode || 'US';\n const dial = this.codeMap[code];\n\n this.state = {\n countryCode: code,\n dialCode: dial,\n localNumber: '',\n placeholderNumber: this.placeholderNumber(code, dial)\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleFinished = this.handleFinished.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.showCountrySelector = this.showCountrySelector.bind(this);\n }\n\n handleChange(e) {\n const prefix = `+${this.state.dialCode}`;\n let formatted = new AsYouType().input(`${prefix}${this.filterNumber(e.target.value)}`);\n formatted = formatted.substring(prefix.length).trim();\n this.setState({localNumber: formatted});\n }\n\n handleFinished(e) {\n e.preventDefault();\n const raw = `${this.state.dialCode}${this.state.localNumber.trim()}`.replace(/[^\\d]/g, '');\n let number = null;\n try {\n number = parsePhoneNumber(`+${raw}`);\n } catch (err) {}\n\n if (!number || !number.isValid()) {\n this.inputField.setCustomValidity(this.props.intl.formatMessage(messages.mobile_number_required));\n return;\n }\n\n this.inputField.setCustomValidity('');\n this.props.onSubmit(number.format('E.164'));\n }\n\n\n handleKeyDown(e) {\n if (e.key === 'Enter') {\n this.handleFinished(e);\n }\n }\n\n showCountrySelector() {\n this.props.onShowCountrySelector(this.state.countryCode, this.state.dialCode,\n (code, dial) => {\n this.setState({\n countryCode: code,\n dialCode: dial,\n placeholderNumber: this.placeholderNumber(code, dial)\n })\n });\n }\n\n // Filter out characters not permitted in a phone number.\n filterNumber(number) {\n if (!number) {\n return number;\n }\n // Leave numbers, space, (, ), -, and .\n // The + is not allowed: it's handled by the country code portion.\n return number.replace(/[^-\\s().\\d]/g, '');\n }\n\n placeholderNumber(code, dial) {\n const sample = getExampleNumber(code, examples);\n return sample ? sample.formatInternational().substring(dial.length + 1).trim() : '123 0123';\n }\n\n render() {\n return (\n <>\n \n {flagEmoji(this.state.countryCode)} \n +{this.state.dialCode} \n {this.inputField = ref}} placeholder={this.state.placeholderNumber}\n value={this.state.localNumber} onChange={this.handleChange}\n maxLength={17} onKeyDown={this.handleKeyDown} onBlur={this.handleFinished}\n required autoFocus={this.props.autoFocus} />\n \n );\n }\n}\n\nexport default injectIntl(PhoneEdit);\n"],"names":["messages","defineMessages","password_reset_email_sent","id","defaultMessage","password_reset_sms_sent","CredentialEdit","React","constructor","props","super","this","state","code","tel","email","sent","handleSubmit","bind","handleEmailChange","handlePhoneChange","handleCodeChange","formatPhoneNumber","raw","number","parsePhoneNumber","err","formatInternational","e","setState","target","value","replace","preventDefault","method","onError","onCredConfirm","onCredAdd","msg","intl","formatMessage","render","readyForCode","done","rawValue","val","formattedValue","changeEmail","className","FormattedMessage","changePhone","newEmailLabel","newEmailInput","email_prompt","type","placeholder","autoComplete","onChange","required","newPhoneLabel","newPhoneInput","PhoneEdit","autoFocus","onShowCountrySelector","onSubmit","codeInput","numbers_only","maxLength","onClick","onCancel","injectIntl","_clip","str","length","truncateString","AccountSettingsView","me","tinode","getMeTopic","fullName","public","fn","undefined","MAX_TITLE_LENGTH","description","note","MAX_TOPIC_DESCRIPTION_LENGTH","avatar","makeImageUrl","photo","credentials","getCredentials","credEdit","alias","tags","find","tag","startsWith","substring","componentDidMount","onCredsUpdated","_","componentWillUnmount","meth","validated","forEach","cred","idx","includes","push","key","reqCredMethod","href","onCredDelete","unshift","onNavigate","AvatarUpload","readOnly","uid","myUserId","title","BadgeList","trustedBadges","mobile_number_required","codeMap","dcodes","dc","dial","countryCode","dialCode","localNumber","placeholderNumber","handleChange","handleFinished","handleKeyDown","showCountrySelector","prefix","formatted","AsYouType","input","filterNumber","trim","isValid","inputField","setCustomValidity","format","sample","getExampleNumber","examples","flagEmoji","ref","onKeyDown","onBlur"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/umd/371.prod.js b/umd/371.prod.js new file mode 100644 index 00000000..ea06fbf8 --- /dev/null +++ b/umd/371.prod.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunktinode_webapp=self.webpackChunktinode_webapp||[]).push([[371],{6371:function(e,t,n){n.r(t);var i=n(1594),o=n.n(i),s=n(8181),r=n(1725),a=n(8589);const l=(0,s.defineMessages)({unrecognized_video_format:{id:"unrecognized_video_format",defaultMessage:[{type:0,value:"Format of this video is not recognized"}]}});class d extends o().PureComponent{constructor(e){super(e),this.videoRef=o().createRef(),this.handleSendVideo=this.handleSendVideo.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this)}componentDidMount(){document.addEventListener("keydown",this.handleKeyDown)}componentWillUnmount(){document.removeEventListener("keydown",this.handleKeyDown)}handleKeyDown(e){this.props.onSendMessage||(e.preventDefault(),"Escape"===e.key&&this.props.onClose())}handleSendVideo(e){this.props.onClose();const t={width:this.videoRef.current.videoWidth,height:this.videoRef.current.videoHeight,duration:1e3*this.videoRef.current.duration|0,mime:this.props.content.mime,name:this.props.content.filename};if(0==t.width||0==t.height)return void this.props.onError(this.props.intl.formatMessage(l.unrecognized_video_format),"err");const n=document.createElement("canvas");n.width=t.width,n.height=t.height;const i=n.getContext("2d");i.drawImage(this.videoRef.current,0,0,n.width,n.height),i.canvas.toBlob(n=>this.props.onSendMessage(e,this.props.content.blob,n,t),"image/jpeg",.75)}render(){if(!this.props.content)return null;const e=this.props.content.width||"-",t=this.props.content.height||"-",n=this.props.onSendMessage?"nodownload":"",i=!this.props.onSendMessage;return o().createElement("div",{id:"image-preview"},o().createElement("div",{id:"preview-caption-panel"},o().createElement("span",null,this.props.content.filename),o().createElement("a",{href:"#",onClick:e=>{e.preventDefault(),this.props.onClose()}},o().createElement("i",{className:"material-icons gray"},"close"))),o().createElement("div",{id:"image-preview-container"},o().createElement("video",{className:"image-preview",controls:!0,controlsList:n,disablePictureInPicture:!0,ref:this.videoRef,autoPlay:i,src:this.props.tinode.authorizeURL(this.props.content.url),poster:this.props.content.preview,alt:this.props.content.filename})),this.props.onSendMessage?o().createElement(r.A,{messagePrompt:"add_image_caption",acceptBlank:!0,tinode:this.props.tinode,reply:this.props.reply,onCancelReply:this.props.onCancelReply,onSendMessage:this.handleSendVideo,onError:this.props.onError}):o().createElement("div",{id:"image-preview-footer"},o().createElement("div",null,o().createElement("div",null,o().createElement("b",null,o().createElement(s.FormattedMessage,{id:"label_file_name",defaultMessage:[{type:0,value:"File name:"}]}))),o().createElement("div",null,o().createElement("span",{title:this.props.content.filename},this.props.content.filename))),o().createElement("div",null,o().createElement("div",null,o().createElement("b",null,o().createElement(s.FormattedMessage,{id:"label_content_type",defaultMessage:[{type:0,value:"Content type:"}]}))),o().createElement("div",null,this.props.content.type)),o().createElement("div",null,o().createElement("div",null,o().createElement("b",null,o().createElement(s.FormattedMessage,{id:"label_size",defaultMessage:[{type:0,value:"Size:"}]}))),o().createElement("div",null,e," × ",t," px; ",(0,a.lX)(this.props.content.size)))))}}t.default=(0,s.injectIntl)(d)}}]); +//# sourceMappingURL=371.prod.js.map \ No newline at end of file diff --git a/umd/371.prod.js.map b/umd/371.prod.js.map new file mode 100644 index 00000000..8c5568b3 --- /dev/null +++ b/umd/371.prod.js.map @@ -0,0 +1 @@ +{"version":3,"file":"371.prod.js","mappings":"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","sources":["webpack://tinode-webapp/./src/widgets/video-preview.jsx"],"sourcesContent":["import React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\nimport SendMessage from './send-message.jsx';\n\nimport { bytesToHumanSize } from '../lib/strformat.js';\n\nconst messages = defineMessages({\n unrecognized_video_format: {\n id: 'unrecognized_video_format',\n defaultMessage: 'Format of this video is not recognized',\n description: 'Error message when uploaded video is invalid',\n }\n});\n\nclass VideoPreview extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.videoRef = React.createRef();\n\n this.handleSendVideo = this.handleSendVideo.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n componentDidMount() {\n document.addEventListener('keydown', this.handleKeyDown);\n }\n\n componentWillUnmount() {\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n\n handleKeyDown(e) {\n if (this.props.onSendMessage) {\n return;\n }\n\n e.preventDefault();\n if (e.key === 'Escape') {\n this.props.onClose();\n }\n }\n\n handleSendVideo(caption) {\n this.props.onClose();\n const params = {\n width: this.videoRef.current.videoWidth,\n height: this.videoRef.current.videoHeight,\n duration: (this.videoRef.current.duration * 1000) | 0,\n mime: this.props.content.mime,\n name: this.props.content.filename\n }\n\n if (params.width == 0 || params.height == 0) {\n this.props.onError(this.props.intl.formatMessage(messages.unrecognized_video_format), 'err');\n return;\n }\n\n // Capture screen from a video.\n const canvas = document.createElement('canvas');\n canvas.width = params.width;\n canvas.height = params.height;\n const ctx = canvas.getContext('2d');\n ctx.drawImage(this.videoRef.current, 0, 0, canvas.width, canvas.height);\n ctx.canvas.toBlob(\n preview => this.props.onSendMessage(caption, this.props.content.blob, preview, params),\n 'image/jpeg', 0.75\n );\n }\n\n render() {\n if (!this.props.content) {\n return null;\n }\n\n const width = this.props.content.width || '-';\n const height = this.props.content.height || '-';\n\n const controlist = this.props.onSendMessage ? 'nodownload' : '';\n const autoPlay = !this.props.onSendMessage;\n\n return (\n
\n
\n {this.props.content.filename}\n {e.preventDefault(); this.props.onClose();}}>close\n
\n
\n \n
\n {this.props.onSendMessage ?\n \n :\n
\n
\n
\n
{this.props.content.filename}
\n
\n
\n
\n
{this.props.content.type}
\n
\n
\n
\n
{width} × {height} px; {bytesToHumanSize(this.props.content.size)}
\n
\n
}\n
\n );\n }\n};\n\nexport default injectIntl(VideoPreview);\n"],"names":["messages","defineMessages","unrecognized_video_format","id","defaultMessage","VideoPreview","React","constructor","props","super","this","videoRef","handleSendVideo","bind","handleKeyDown","componentDidMount","document","addEventListener","componentWillUnmount","removeEventListener","e","onSendMessage","preventDefault","key","onClose","caption","params","width","current","videoWidth","height","videoHeight","duration","mime","content","name","filename","onError","intl","formatMessage","canvas","createElement","ctx","getContext","drawImage","toBlob","preview","blob","render","controlist","autoPlay","href","onClick","className","controls","controlsList","disablePictureInPicture","ref","src","tinode","authorizeURL","url","poster","alt","SendMessage","messagePrompt","acceptBlank","reply","onCancelReply","FormattedMessage","title","type","bytesToHumanSize","size","injectIntl"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/umd/429.prod.js b/umd/429.prod.js new file mode 100644 index 00000000..b1da600b --- /dev/null +++ b/umd/429.prod.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunktinode_webapp=self.webpackChunktinode_webapp||[]).push([[429],{1725:function(e,t,s){var i=s(1594),a=s.n(i),n=s(8181),l=s(4532),r=s(9027),o=s(6110),h=s(5791);const d=a().lazy(e=>Promise.all([s.e(537),s.e(0)]).then(s.bind(s,4e3))),c=(0,n.defineMessages)({messaging_disabled:{id:"messaging_disabled_prompt",defaultMessage:[{type:0,value:"Messaging disabled"}]},type_new_message:{id:"new_message_prompt",defaultMessage:[{type:0,value:"New message"}]},add_image_caption:{id:"image_caption_prompt",defaultMessage:[{type:0,value:"Image caption"}]},file_attachment_too_large:{id:"file_attachment_too_large",defaultMessage:[{type:0,value:"The file size "},{type:1,value:"size"},{type:0,value:" exceeds the "},{type:1,value:"limit"},{type:0,value:" limit."}]},cannot_initiate_upload:{id:"cannot_initiate_file_upload",defaultMessage:[{type:0,value:"Cannot initiate file upload."}]},icon_title_record_voice:{id:"icon_title_record_voice",defaultMessage:[{type:0,value:"Record voice message"}]},icon_title_attach_file:{id:"icon_title_attach_file",defaultMessage:[{type:0,value:"Attach file"}]},icon_title_add_image:{id:"icon_title_add_image",defaultMessage:[{type:0,value:"Add image"}]},icon_title_send:{id:"icon_title_send",defaultMessage:[{type:0,value:"Send message"}]}});class p extends a().PureComponent{constructor(e){super(e),this.state={quote:null,message:"",audioRec:!1,audioAvailable:!(!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia)},this.keypressTimestamp=0,this.handlePasteEvent=this.handlePasteEvent.bind(this),this.handleAttachImage=this.handleAttachImage.bind(this),this.handleAttachFile=this.handleAttachFile.bind(this),this.handleAttachAudio=this.handleAttachAudio.bind(this),this.handleSend=this.handleSend.bind(this),this.handleKeyPress=this.handleKeyPress.bind(this),this.handleMessageTyping=this.handleMessageTyping.bind(this),this.handleDropAttach=this.handleDropAttach.bind(this),this.handleQuoteClick=this.handleQuoteClick.bind(this),this.formatReply=this.formatReply.bind(this)}componentDidMount(){this.messageEditArea&&(this.messageEditArea.addEventListener("paste",this.handlePasteEvent,!1),"all"==window.getComputedStyle(this.messageEditArea).getPropertyValue("transition-property")&&this.messageEditArea.focus()),this.setState({quote:this.formatReply()})}componentWillUnmount(){this.messageEditArea&&this.messageEditArea.removeEventListener("paste",this.handlePasteEvent,!1)}componentDidUpdate(e){if(this.messageEditArea&&("all"==window.getComputedStyle(this.messageEditArea).getPropertyValue("transition-property")&&this.messageEditArea.focus(),this.messageEditArea.style.height="0px",this.messageEditArea.style.height=this.messageEditArea.scrollHeight+"px"),e.topicName!=this.props.topicName)this.setState({message:this.props.initMessage||"",audioRec:!1,quote:null});else if(e.initMessage!=this.props.initMessage){const e=this.props.initMessage||"";this.setState({message:e},t=>{this.messageEditArea.scrollTop=this.messageEditArea.scrollHeight,this.messageEditArea.setSelectionRange(e.length,e.length)})}e.reply!=this.props.reply&&this.setState({quote:this.formatReply()})}formatReply(){return this.props.reply?l.Drafty.format(this.props.reply.content,h.NV,{formatMessage:this.props.intl.formatMessage.bind(this.props.intl),authorizeURL:this.props.tinode.authorizeURL.bind(this.props.tinode)}):null}handlePasteEvent(e){this.props.disabled||(0,o.iJ)(e,e=>{this.props.onAttachImage(e)},e=>{this.props.onAttachFile(e)},this.props.onError)&&e.preventDefault()}handleAttachImage(e){e.target.files&&e.target.files.length>0&&this.props.onAttachImage(e.target.files[0]),e.target.value=""}handleAttachFile(e){e.target.files&&e.target.files.length>0&&this.props.onAttachFile(e.target.files[0]),e.target.value=""}handleDropAttach(e){e&&e.length>0&&this.props.onAttachFile(e[0])}handleAttachAudio(e,t,s){this.setState({audioRec:!1}),this.props.onAttachAudio(e,t,s)}handleSend(e){e.preventDefault();const t=this.state.message.trim();(t||this.props.acceptBlank||this.props.noInput)&&(this.props.onSendMessage(t),this.setState({message:""}))}handleKeyPress(e){if(this.state.audioRec)return e.preventDefault(),void e.stopPropagation();"Enter"===e.key&&("plain"==this.props.sendOnEnter?e.shiftKey||(e.preventDefault(),e.stopPropagation(),this.handleSend(e)):(e.ctrlKey||e.metaKey)&&(e.preventDefault(),e.stopPropagation(),this.handleSend(e)))}handleMessageTyping(e){if(this.setState({message:e.target.value}),this.props.onKeyPress){const e=(new Date).getTime();e-this.keypressTimestamp>r.NR&&(this.props.onKeyPress(),this.keypressTimestamp=e)}}handleQuoteClick(e){if(e.preventDefault(),e.stopPropagation(),this.props.reply&&this.props.onQuoteClick){const e=this.props.reply.seq;this.props.onQuoteClick(e)}}render(){const{formatMessage:e}=this.props.intl,t=this.props.disabled?e(c.messaging_disabled):this.props.messagePrompt?e(c[this.props.messagePrompt]):e(c.type_new_message),s=this.props.reply&&this.props.reply.editing?"check_circle":"send",l=this.state.quote?a().createElement("div",{id:"reply-quote-preview"},a().createElement("div",{className:"cancel"},a().createElement("a",{href:"#",onClick:e=>{e.preventDefault(),this.props.onCancelReply()}},a().createElement("i",{className:"material-icons gray"},"close"))),this.state.quote):null,r=this.state.audioAvailable&&this.props.onAttachAudio;return a().createElement("div",{id:"send-message-wrapper"},this.props.noInput?null:l,a().createElement("div",{id:"send-message-panel"},this.props.disabled?a().createElement("div",{id:"writing-disabled"},t):a().createElement(a().Fragment,null,this.props.onAttachFile&&!this.state.audioRec?a().createElement(a().Fragment,null,a().createElement("a",{href:"#",onClick:e=>{e.preventDefault(),this.attachImage.click()},title:e(c.icon_title_add_image)},a().createElement("i",{className:"material-icons secondary"},"photo")),a().createElement("a",{href:"#",onClick:e=>{e.preventDefault(),this.attachFile.click()},title:e(c.icon_title_attach_file)},a().createElement("i",{className:"material-icons secondary"},"attach_file"))):null,this.props.noInput?l||a().createElement("div",{className:"hr thin"}):this.state.audioRec?a().createElement(i.Suspense,{fallback:a().createElement("div",null,a().createElement(n.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},a().createElement(d,{onRecordingProgress:e=>this.props.onKeyPress(!0),onDeleted:e=>this.setState({audioRec:!1}),onFinished:this.handleAttachAudio})):a().createElement("textarea",{id:"send-message-input",placeholder:t,value:this.state.message,onChange:this.handleMessageTyping,onKeyDown:this.handleKeyPress,ref:e=>{this.messageEditArea=e}}),this.state.message||!r?a().createElement("a",{href:"#",onClick:this.handleSend,title:e(c.icon_title_send)},a().createElement("i",{className:"material-icons"},s)):this.state.audioRec?null:a().createElement("a",{href:"#",onClick:e=>{e.preventDefault(),this.setState({audioRec:!0})},title:e(c.icon_title_record_voice)},a().createElement("i",{className:"material-icons"},"mic")),a().createElement("input",{type:"file",ref:e=>{this.attachFile=e},onChange:this.handleAttachFile,style:{display:"none"}}),a().createElement("input",{type:"file",ref:e=>{this.attachImage=e},accept:"image/*, video/*",onChange:this.handleAttachImage,style:{display:"none"}}))))}}t.A=(0,n.injectIntl)(p)},6429:function(e,t,s){s.r(t),s.d(t,{default:function(){return j}});var i=s(1594),a=s.n(i),n=s(8181),l=s(4532),r=s(9895),o=s(8589),h=s(3540);class d extends a().Component{constructor(e){super(e),this.state={downloader:null,progress:0},this.downloadFile=this.downloadFile.bind(this),this.handleCancel=this.handleCancel.bind(this)}downloadFile(e,t,s){if(!e)return void this.props.onError("Invalid download URL '"+e+"'");const i=this.props.tinode.getLargeFileHelper();this.setState({downloader:i}),i.download(e,t,s,e=>this.setState({progress:e/this.props.size}),e=>this.props.onError(e,"err")).then(e=>this.setState({downloader:null,progress:0})).catch(e=>{e&&this.props.onError("Error downloading file: "+e.message,"err"),this.setState({downloader:null,progress:0})})}handleCancel(){this.props.uploading?this.props.onCancelUpload():this.state.downloader&&this.state.downloader.cancel()}render(){let e=this.props.filename||"file_attachment";e.length>36&&(e=e.substr(0,16)+"..."+e.substr(-16));let t,s,i=this.props.size>0?a().createElement("span",{className:"small gray"},"(",(0,o.lX)(this.props.size),")"):null;this.props.uploading||this.state.downloader||!(0,h.YO)(this.props.downloadUrl)?(t=(0,h.Jf)(this.props.downloadUrl),s=null):(t="#",s=e=>{e.preventDefault(),this.downloadFile(this.props.downloadUrl,this.props.filename,this.props.mimetype)});const l=a().createElement(a().Fragment,null,a().createElement("i",{className:"material-icons"},"file_download")," ",a().createElement(n.FormattedMessage,{id:"save_attachment",defaultMessage:[{type:0,value:"save"}]}));return a().createElement("div",{className:"attachment"},a().createElement("div",null,a().createElement("i",{className:"material-icons big gray"},"insert_drive_file")),a().createElement("div",{className:"flex-column"},a().createElement("div",null,e," ",i),this.props.uploading||this.state.downloader?a().createElement(r.A,{progress:this.props.uploading?this.props.progress:this.state.progress,onCancel:this.handleCancel}):a().createElement("div",null,t?a().createElement("a",{href:t,download:this.props.filename,onClick:s},l):a().createElement("span",{className:"light-gray"},l))))}}var c=s(6904);const p=(0,n.defineMessages)({message_sending:{id:"message_sending",defaultMessage:[{type:0,value:"sending..."}]},message_sending_failed:{id:"message_sending_failed",defaultMessage:[{type:0,value:"failed"}]},message_edited_marker:{id:"message_edited_marker",defaultMessage:[{type:0,value:", edited"}]}});class u extends a().PureComponent{render(){const{formatMessage:e}=this.props.intl;let t;t=this.props.received<=l.Tinode.MESSAGE_STATUS_SENDING?e(p.message_sending):this.props.received==l.Tinode.MESSAGE_STATUS_FAILED||this.props.received==l.Tinode.MESSAGE_STATUS_FATAL?e(p.message_sending_failed):this.props.timestamp.toLocaleTimeString(this.props.intl.locale,{timeStyle:"short"});const s=(0,h.LO)(this.props.received),i=s?a().createElement("i",{className:"material-icons small "+s.color},s.name):null,n=this.props.edited?e(p.message_edited_marker):null;return a().createElement("span",{className:"timestamp"},t,n," ",i)}}var m=(0,n.injectIntl)(u),g=s(5791);function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t{switch(t){case"image":this.handleExpandImage(e);break;case"video":this.handlePlayVideo(e);break;case"form_button":this.handleFormButtonClick(e);break;case"quote":this.handleQuoteClick(e);break;case"contact_chat":case"contact_find":e.preventDefault(),console.log("Contact click handling not implemented yet.",t,e.target.dataset);break;default:console.log("Unhandled drafty action.",t,e.target.dataset)}};handleExpandImage(e){e.preventDefault(),this.props.onExpandMedia({url:e.target.src,filename:e.target.dataset.name,width:e.target.dataset.width,height:e.target.dataset.height,size:e.target.dataset.size,type:e.target.dataset.mime})}handlePlayVideo(e){e.preventDefault(),this.props.onExpandMedia({video:!0,url:e.target.dataset.src,preview:e.target.src,filename:e.target.dataset.name,width:e.target.dataset.width,height:e.target.dataset.height,duration:e.target.dataset.duration,size:e.target.dataset.size,type:e.target.dataset.mime})}handleFormButtonClick(e){e.preventDefault();const t={seq:this.props.seq,resp:{}};e.target.dataset.name&&(t.resp[e.target.dataset.name]=e.target.dataset.val?e.target.dataset.val:void 0===e.target.dataset.val?1:""+e.target.dataset.val),"url"==e.target.dataset.act&&(t.ref=(0,h.Jf)(e.target.dataset.ref)||"about:blank");const s=e.target.dataset.title||"unknown";this.props.onFormResponse(e.target.dataset.act,s,t)}handleContextClick(e){e.preventDefault(),e.stopPropagation();const t=[];if(this.props.received==l.Tinode.MESSAGE_STATUS_FAILED&&t.push("menu_item_send_retry"),this.props.received>l.Tinode.MESSAGE_STATUS_FATAL){if(this.props.userIsWriter&&(t.push("menu_item_reply"),!this.props.response)){let e=!1;l.Drafty.entities(this.props.content,(t,s,i)=>(e=["AU","EX","FM","IM","TC","VC","VD"].includes(i),e)),e||l.Drafty.styles(this.props.content,t=>(e=["QQ"].includes(t),e)),e||t.push("menu_item_edit")}this.props.userIsAdmin&&t.push(this.props.pinned?"menu_item_unpin":"menu_item_pin")}t.push("menu_item_forward"),this.props.showContextMenu({seq:this.props.seq,replace:this.props.edited?parseInt(this.props.edited.split(":")[1]):0,content:this.props.content,userFrom:this.props.userFrom,userName:this.props.userName,y:e.pageY,x:e.pageX,pickReply:this.props.pickReply,editMessage:this.props.editMessage,timestamp:this.props.timestamp},t)}handleProgress(e){this.setState({progress:e})}handleCancelUpload(){this.props.onCancelUpload(this.props.seq,this.props.uploader)}handleQuoteClick(e){e.preventDefault(),e.stopPropagation();const t=this.props.replyToSeq;t&&this.props.onQuoteClick(t)}render(){const e=this.props.sequence+" "+(this.props.response?"left":"right"),t="single"==this.props.sequence||"last"==this.props.sequence?"bubble tip":"bubble",s=this.props.userAvatar||!0;let i="message-content";const r=this.props.isGroup&&this.props.response&&("single"==this.props.sequence||"last"==this.props.sequence);let o=this.props.content;const h=[];if(this.props.mimeType==l.Drafty.getContentType()&&l.Drafty.isValid(o)){l.Drafty.attachments(o,(e,t)=>{l.Drafty.isFormResponseType(e.mime)||h.push(a().createElement(d,{tinode:this.props.tinode,downloadUrl:l.Drafty.getDownloadUrl(e),filename:e.name,uploading:l.Drafty.isProcessing(e),mimetype:e.mime,size:l.Drafty.getEntitySize(e),progress:this.state.progress,onCancelUpload:this.handleCancelUpload,onError:this.props.onError,key:t}))},this);const e=l.Drafty.format(o,g.e3,this.formatterContext);o=a().createElement(a().Fragment,null,e)}else"string"==typeof o?new RegExp("^\\p{RGI_Emoji}{1,5}$","v").test(o||"")&&(i+=" emoji-"+(o||"").match(/(?:👨🏻‍❤️‍💋‍👨🏻|👨🏻‍❤️‍💋‍👨🏼|👨🏻‍❤️‍💋‍👨🏽|👨🏻‍❤️‍💋‍👨🏾|👨🏻‍❤️‍💋‍👨🏿|👨🏼‍❤️‍💋‍👨🏻|👨🏼‍❤️‍💋‍👨🏼|👨🏼‍❤️‍💋‍👨🏽|👨🏼‍❤️‍💋‍👨🏾|👨🏼‍❤️‍💋‍👨🏿|👨🏽‍❤️‍💋‍👨🏻|👨🏽‍❤️‍💋‍👨🏼|👨🏽‍❤️‍💋‍👨🏽|👨🏽‍❤️‍💋‍👨🏾|👨🏽‍❤️‍💋‍👨🏿|👨🏾‍❤️‍💋‍👨🏻|👨🏾‍❤️‍💋‍👨🏼|👨🏾‍❤️‍💋‍👨🏽|👨🏾‍❤️‍💋‍👨🏾|👨🏾‍❤️‍💋‍👨🏿|👨🏿‍❤️‍💋‍👨🏻|👨🏿‍❤️‍💋‍👨🏼|👨🏿‍❤️‍💋‍👨🏽|👨🏿‍❤️‍💋‍👨🏾|👨🏿‍❤️‍💋‍👨🏿|👩🏻‍❤️‍💋‍👨🏻|👩🏻‍❤️‍💋‍👨🏼|👩🏻‍❤️‍💋‍👨🏽|👩🏻‍❤️‍💋‍👨🏾|👩🏻‍❤️‍💋‍👨🏿|👩🏻‍❤️‍💋‍👩🏻|👩🏻‍❤️‍💋‍👩🏼|👩🏻‍❤️‍💋‍👩🏽|👩🏻‍❤️‍💋‍👩🏾|👩🏻‍❤️‍💋‍👩🏿|👩🏼‍❤️‍💋‍👨🏻|👩🏼‍❤️‍💋‍👨🏼|👩🏼‍❤️‍💋‍👨🏽|👩🏼‍❤️‍💋‍👨🏾|👩🏼‍❤️‍💋‍👨🏿|👩🏼‍❤️‍💋‍👩🏻|👩🏼‍❤️‍💋‍👩🏼|👩🏼‍❤️‍💋‍👩🏽|👩🏼‍❤️‍💋‍👩🏾|👩🏼‍❤️‍💋‍👩🏿|👩🏽‍❤️‍💋‍👨🏻|👩🏽‍❤️‍💋‍👨🏼|👩🏽‍❤️‍💋‍👨🏽|👩🏽‍❤️‍💋‍👨🏾|👩🏽‍❤️‍💋‍👨🏿|👩🏽‍❤️‍💋‍👩🏻|👩🏽‍❤️‍💋‍👩🏼|👩🏽‍❤️‍💋‍👩🏽|👩🏽‍❤️‍💋‍👩🏾|👩🏽‍❤️‍💋‍👩🏿|👩🏾‍❤️‍💋‍👨🏻|👩🏾‍❤️‍💋‍👨🏼|👩🏾‍❤️‍💋‍👨🏽|👩🏾‍❤️‍💋‍👨🏾|👩🏾‍❤️‍💋‍👨🏿|👩🏾‍❤️‍💋‍👩🏻|👩🏾‍❤️‍💋‍👩🏼|👩🏾‍❤️‍💋‍👩🏽|👩🏾‍❤️‍💋‍👩🏾|👩🏾‍❤️‍💋‍👩🏿|👩🏿‍❤️‍💋‍👨🏻|👩🏿‍❤️‍💋‍👨🏼|👩🏿‍❤️‍💋‍👨🏽|👩🏿‍❤️‍💋‍👨🏾|👩🏿‍❤️‍💋‍👨🏿|👩🏿‍❤️‍💋‍👩🏻|👩🏿‍❤️‍💋‍👩🏼|👩🏿‍❤️‍💋‍👩🏽|👩🏿‍❤️‍💋‍👩🏾|👩🏿‍❤️‍💋‍👩🏿|🧑🏻‍❤️‍💋‍🧑🏼|🧑🏻‍❤️‍💋‍🧑🏽|🧑🏻‍❤️‍💋‍🧑🏾|🧑🏻‍❤️‍💋‍🧑🏿|🧑🏼‍❤️‍💋‍🧑🏻|🧑🏼‍❤️‍💋‍🧑🏽|🧑🏼‍❤️‍💋‍🧑🏾|🧑🏼‍❤️‍💋‍🧑🏿|🧑🏽‍❤️‍💋‍🧑🏻|🧑🏽‍❤️‍💋‍🧑🏼|🧑🏽‍❤️‍💋‍🧑🏾|🧑🏽‍❤️‍💋‍🧑🏿|🧑🏾‍❤️‍💋‍🧑🏻|🧑🏾‍❤️‍💋‍🧑🏼|🧑🏾‍❤️‍💋‍🧑🏽|🧑🏾‍❤️‍💋‍🧑🏿|🧑🏿‍❤️‍💋‍🧑🏻|🧑🏿‍❤️‍💋‍🧑🏼|🧑🏿‍❤️‍💋‍🧑🏽|🧑🏿‍❤️‍💋‍🧑🏾|🏴󠁧󠁢󠁥󠁮󠁧󠁿|🏴󠁧󠁢󠁳󠁣󠁴󠁿|🏴󠁧󠁢󠁷󠁬󠁳󠁿|👨🏻‍❤️‍👨🏻|👨🏻‍❤️‍👨🏼|👨🏻‍❤️‍👨🏽|👨🏻‍❤️‍👨🏾|👨🏻‍❤️‍👨🏿|👨🏻‍🐰‍👨🏼|👨🏻‍🐰‍👨🏽|👨🏻‍🐰‍👨🏾|👨🏻‍🐰‍👨🏿|👨🏻‍🤝‍👨🏼|👨🏻‍🤝‍👨🏽|👨🏻‍🤝‍👨🏾|👨🏻‍🤝‍👨🏿|👨🏻‍🫯‍👨🏼|👨🏻‍🫯‍👨🏽|👨🏻‍🫯‍👨🏾|👨🏻‍🫯‍👨🏿|👨🏼‍❤️‍👨🏻|👨🏼‍❤️‍👨🏼|👨🏼‍❤️‍👨🏽|👨🏼‍❤️‍👨🏾|👨🏼‍❤️‍👨🏿|👨🏼‍🐰‍👨🏻|👨🏼‍🐰‍👨🏽|👨🏼‍🐰‍👨🏾|👨🏼‍🐰‍👨🏿|👨🏼‍🤝‍👨🏻|👨🏼‍🤝‍👨🏽|👨🏼‍🤝‍👨🏾|👨🏼‍🤝‍👨🏿|👨🏼‍🫯‍👨🏻|👨🏼‍🫯‍👨🏽|👨🏼‍🫯‍👨🏾|👨🏼‍🫯‍👨🏿|👨🏽‍❤️‍👨🏻|👨🏽‍❤️‍👨🏼|👨🏽‍❤️‍👨🏽|👨🏽‍❤️‍👨🏾|👨🏽‍❤️‍👨🏿|👨🏽‍🐰‍👨🏻|👨🏽‍🐰‍👨🏼|👨🏽‍🐰‍👨🏾|👨🏽‍🐰‍👨🏿|👨🏽‍🤝‍👨🏻|👨🏽‍🤝‍👨🏼|👨🏽‍🤝‍👨🏾|👨🏽‍🤝‍👨🏿|👨🏽‍🫯‍👨🏻|👨🏽‍🫯‍👨🏼|👨🏽‍🫯‍👨🏾|👨🏽‍🫯‍👨🏿|👨🏾‍❤️‍👨🏻|👨🏾‍❤️‍👨🏼|👨🏾‍❤️‍👨🏽|👨🏾‍❤️‍👨🏾|👨🏾‍❤️‍👨🏿|👨🏾‍🐰‍👨🏻|👨🏾‍🐰‍👨🏼|👨🏾‍🐰‍👨🏽|👨🏾‍🐰‍👨🏿|👨🏾‍🤝‍👨🏻|👨🏾‍🤝‍👨🏼|👨🏾‍🤝‍👨🏽|👨🏾‍🤝‍👨🏿|👨🏾‍🫯‍👨🏻|👨🏾‍🫯‍👨🏼|👨🏾‍🫯‍👨🏽|👨🏾‍🫯‍👨🏿|👨🏿‍❤️‍👨🏻|👨🏿‍❤️‍👨🏼|👨🏿‍❤️‍👨🏽|👨🏿‍❤️‍👨🏾|👨🏿‍❤️‍👨🏿|👨🏿‍🐰‍👨🏻|👨🏿‍🐰‍👨🏼|👨🏿‍🐰‍👨🏽|👨🏿‍🐰‍👨🏾|👨🏿‍🤝‍👨🏻|👨🏿‍🤝‍👨🏼|👨🏿‍🤝‍👨🏽|👨🏿‍🤝‍👨🏾|👨🏿‍🫯‍👨🏻|👨🏿‍🫯‍👨🏼|👨🏿‍🫯‍👨🏽|👨🏿‍🫯‍👨🏾|👩🏻‍❤️‍👨🏻|👩🏻‍❤️‍👨🏼|👩🏻‍❤️‍👨🏽|👩🏻‍❤️‍👨🏾|👩🏻‍❤️‍👨🏿|👩🏻‍❤️‍👩🏻|👩🏻‍❤️‍👩🏼|👩🏻‍❤️‍👩🏽|👩🏻‍❤️‍👩🏾|👩🏻‍❤️‍👩🏿|👩🏻‍🐰‍👩🏼|👩🏻‍🐰‍👩🏽|👩🏻‍🐰‍👩🏾|👩🏻‍🐰‍👩🏿|👩🏻‍🤝‍👨🏼|👩🏻‍🤝‍👨🏽|👩🏻‍🤝‍👨🏾|👩🏻‍🤝‍👨🏿|👩🏻‍🤝‍👩🏼|👩🏻‍🤝‍👩🏽|👩🏻‍🤝‍👩🏾|👩🏻‍🤝‍👩🏿|👩🏻‍🫯‍👩🏼|👩🏻‍🫯‍👩🏽|👩🏻‍🫯‍👩🏾|👩🏻‍🫯‍👩🏿|👩🏼‍❤️‍👨🏻|👩🏼‍❤️‍👨🏼|👩🏼‍❤️‍👨🏽|👩🏼‍❤️‍👨🏾|👩🏼‍❤️‍👨🏿|👩🏼‍❤️‍👩🏻|👩🏼‍❤️‍👩🏼|👩🏼‍❤️‍👩🏽|👩🏼‍❤️‍👩🏾|👩🏼‍❤️‍👩🏿|👩🏼‍🐰‍👩🏻|👩🏼‍🐰‍👩🏽|👩🏼‍🐰‍👩🏾|👩🏼‍🐰‍👩🏿|👩🏼‍🤝‍👨🏻|👩🏼‍🤝‍👨🏽|👩🏼‍🤝‍👨🏾|👩🏼‍🤝‍👨🏿|👩🏼‍🤝‍👩🏻|👩🏼‍🤝‍👩🏽|👩🏼‍🤝‍👩🏾|👩🏼‍🤝‍👩🏿|👩🏼‍🫯‍👩🏻|👩🏼‍🫯‍👩🏽|👩🏼‍🫯‍👩🏾|👩🏼‍🫯‍👩🏿|👩🏽‍❤️‍👨🏻|👩🏽‍❤️‍👨🏼|👩🏽‍❤️‍👨🏽|👩🏽‍❤️‍👨🏾|👩🏽‍❤️‍👨🏿|👩🏽‍❤️‍👩🏻|👩🏽‍❤️‍👩🏼|👩🏽‍❤️‍👩🏽|👩🏽‍❤️‍👩🏾|👩🏽‍❤️‍👩🏿|👩🏽‍🐰‍👩🏻|👩🏽‍🐰‍👩🏼|👩🏽‍🐰‍👩🏾|👩🏽‍🐰‍👩🏿|👩🏽‍🤝‍👨🏻|👩🏽‍🤝‍👨🏼|👩🏽‍🤝‍👨🏾|👩🏽‍🤝‍👨🏿|👩🏽‍🤝‍👩🏻|👩🏽‍🤝‍👩🏼|👩🏽‍🤝‍👩🏾|👩🏽‍🤝‍👩🏿|👩🏽‍🫯‍👩🏻|👩🏽‍🫯‍👩🏼|👩🏽‍🫯‍👩🏾|👩🏽‍🫯‍👩🏿|👩🏾‍❤️‍👨🏻|👩🏾‍❤️‍👨🏼|👩🏾‍❤️‍👨🏽|👩🏾‍❤️‍👨🏾|👩🏾‍❤️‍👨🏿|👩🏾‍❤️‍👩🏻|👩🏾‍❤️‍👩🏼|👩🏾‍❤️‍👩🏽|👩🏾‍❤️‍👩🏾|👩🏾‍❤️‍👩🏿|👩🏾‍🐰‍👩🏻|👩🏾‍🐰‍👩🏼|👩🏾‍🐰‍👩🏽|👩🏾‍🐰‍👩🏿|👩🏾‍🤝‍👨🏻|👩🏾‍🤝‍👨🏼|👩🏾‍🤝‍👨🏽|👩🏾‍🤝‍👨🏿|👩🏾‍🤝‍👩🏻|👩🏾‍🤝‍👩🏼|👩🏾‍🤝‍👩🏽|👩🏾‍🤝‍👩🏿|👩🏾‍🫯‍👩🏻|👩🏾‍🫯‍👩🏼|👩🏾‍🫯‍👩🏽|👩🏾‍🫯‍👩🏿|👩🏿‍❤️‍👨🏻|👩🏿‍❤️‍👨🏼|👩🏿‍❤️‍👨🏽|👩🏿‍❤️‍👨🏾|👩🏿‍❤️‍👨🏿|👩🏿‍❤️‍👩🏻|👩🏿‍❤️‍👩🏼|👩🏿‍❤️‍👩🏽|👩🏿‍❤️‍👩🏾|👩🏿‍❤️‍👩🏿|👩🏿‍🐰‍👩🏻|👩🏿‍🐰‍👩🏼|👩🏿‍🐰‍👩🏽|👩🏿‍🐰‍👩🏾|👩🏿‍🤝‍👨🏻|👩🏿‍🤝‍👨🏼|👩🏿‍🤝‍👨🏽|👩🏿‍🤝‍👨🏾|👩🏿‍🤝‍👩🏻|👩🏿‍🤝‍👩🏼|👩🏿‍🤝‍👩🏽|👩🏿‍🤝‍👩🏾|👩🏿‍🫯‍👩🏻|👩🏿‍🫯‍👩🏼|👩🏿‍🫯‍👩🏽|👩🏿‍🫯‍👩🏾|🧑🏻‍❤️‍🧑🏼|🧑🏻‍❤️‍🧑🏽|🧑🏻‍❤️‍🧑🏾|🧑🏻‍❤️‍🧑🏿|🧑🏻‍🐰‍🧑🏼|🧑🏻‍🐰‍🧑🏽|🧑🏻‍🐰‍🧑🏾|🧑🏻‍🐰‍🧑🏿|🧑🏻‍🤝‍🧑🏻|🧑🏻‍🤝‍🧑🏼|🧑🏻‍🤝‍🧑🏽|🧑🏻‍🤝‍🧑🏾|🧑🏻‍🤝‍🧑🏿|🧑🏻‍🫯‍🧑🏼|🧑🏻‍🫯‍🧑🏽|🧑🏻‍🫯‍🧑🏾|🧑🏻‍🫯‍🧑🏿|🧑🏼‍❤️‍🧑🏻|🧑🏼‍❤️‍🧑🏽|🧑🏼‍❤️‍🧑🏾|🧑🏼‍❤️‍🧑🏿|🧑🏼‍🐰‍🧑🏻|🧑🏼‍🐰‍🧑🏽|🧑🏼‍🐰‍🧑🏾|🧑🏼‍🐰‍🧑🏿|🧑🏼‍🤝‍🧑🏻|🧑🏼‍🤝‍🧑🏼|🧑🏼‍🤝‍🧑🏽|🧑🏼‍🤝‍🧑🏾|🧑🏼‍🤝‍🧑🏿|🧑🏼‍🫯‍🧑🏻|🧑🏼‍🫯‍🧑🏽|🧑🏼‍🫯‍🧑🏾|🧑🏼‍🫯‍🧑🏿|🧑🏽‍❤️‍🧑🏻|🧑🏽‍❤️‍🧑🏼|🧑🏽‍❤️‍🧑🏾|🧑🏽‍❤️‍🧑🏿|🧑🏽‍🐰‍🧑🏻|🧑🏽‍🐰‍🧑🏼|🧑🏽‍🐰‍🧑🏾|🧑🏽‍🐰‍🧑🏿|🧑🏽‍🤝‍🧑🏻|🧑🏽‍🤝‍🧑🏼|🧑🏽‍🤝‍🧑🏽|🧑🏽‍🤝‍🧑🏾|🧑🏽‍🤝‍🧑🏿|🧑🏽‍🫯‍🧑🏻|🧑🏽‍🫯‍🧑🏼|🧑🏽‍🫯‍🧑🏾|🧑🏽‍🫯‍🧑🏿|🧑🏾‍❤️‍🧑🏻|🧑🏾‍❤️‍🧑🏼|🧑🏾‍❤️‍🧑🏽|🧑🏾‍❤️‍🧑🏿|🧑🏾‍🐰‍🧑🏻|🧑🏾‍🐰‍🧑🏼|🧑🏾‍🐰‍🧑🏽|🧑🏾‍🐰‍🧑🏿|🧑🏾‍🤝‍🧑🏻|🧑🏾‍🤝‍🧑🏼|🧑🏾‍🤝‍🧑🏽|🧑🏾‍🤝‍🧑🏾|🧑🏾‍🤝‍🧑🏿|🧑🏾‍🫯‍🧑🏻|🧑🏾‍🫯‍🧑🏼|🧑🏾‍🫯‍🧑🏽|🧑🏾‍🫯‍🧑🏿|🧑🏿‍❤️‍🧑🏻|🧑🏿‍❤️‍🧑🏼|🧑🏿‍❤️‍🧑🏽|🧑🏿‍❤️‍🧑🏾|🧑🏿‍🐰‍🧑🏻|🧑🏿‍🐰‍🧑🏼|🧑🏿‍🐰‍🧑🏽|🧑🏿‍🐰‍🧑🏾|🧑🏿‍🤝‍🧑🏻|🧑🏿‍🤝‍🧑🏼|🧑🏿‍🤝‍🧑🏽|🧑🏿‍🤝‍🧑🏾|🧑🏿‍🤝‍🧑🏿|🧑🏿‍🫯‍🧑🏻|🧑🏿‍🫯‍🧑🏼|🧑🏿‍🫯‍🧑🏽|🧑🏿‍🫯‍🧑🏾|👨‍❤️‍💋‍👨|👨‍👨‍👦‍👦|👨‍👨‍👧‍👦|👨‍👨‍👧‍👧|👨‍👩‍👦‍👦|👨‍👩‍👧‍👦|👨‍👩‍👧‍👧|👩‍❤️‍💋‍👨|👩‍❤️‍💋‍👩|👩‍👩‍👦‍👦|👩‍👩‍👧‍👦|👩‍👩‍👧‍👧|🧑‍🧑‍🧒‍🧒|🏃🏻‍♀️‍➡️|🏃🏻‍♂️‍➡️|🏃🏼‍♀️‍➡️|🏃🏼‍♂️‍➡️|🏃🏽‍♀️‍➡️|🏃🏽‍♂️‍➡️|🏃🏾‍♀️‍➡️|🏃🏾‍♂️‍➡️|🏃🏿‍♀️‍➡️|🏃🏿‍♂️‍➡️|👨🏻‍🦯‍➡️|👨🏻‍🦼‍➡️|👨🏻‍🦽‍➡️|👨🏼‍🦯‍➡️|👨🏼‍🦼‍➡️|👨🏼‍🦽‍➡️|👨🏽‍🦯‍➡️|👨🏽‍🦼‍➡️|👨🏽‍🦽‍➡️|👨🏾‍🦯‍➡️|👨🏾‍🦼‍➡️|👨🏾‍🦽‍➡️|👨🏿‍🦯‍➡️|👨🏿‍🦼‍➡️|👨🏿‍🦽‍➡️|👩🏻‍🦯‍➡️|👩🏻‍🦼‍➡️|👩🏻‍🦽‍➡️|👩🏼‍🦯‍➡️|👩🏼‍🦼‍➡️|👩🏼‍🦽‍➡️|👩🏽‍🦯‍➡️|👩🏽‍🦼‍➡️|👩🏽‍🦽‍➡️|👩🏾‍🦯‍➡️|👩🏾‍🦼‍➡️|👩🏾‍🦽‍➡️|👩🏿‍🦯‍➡️|👩🏿‍🦼‍➡️|👩🏿‍🦽‍➡️|🚶🏻‍♀️‍➡️|🚶🏻‍♂️‍➡️|🚶🏼‍♀️‍➡️|🚶🏼‍♂️‍➡️|🚶🏽‍♀️‍➡️|🚶🏽‍♂️‍➡️|🚶🏾‍♀️‍➡️|🚶🏾‍♂️‍➡️|🚶🏿‍♀️‍➡️|🚶🏿‍♂️‍➡️|🧎🏻‍♀️‍➡️|🧎🏻‍♂️‍➡️|🧎🏼‍♀️‍➡️|🧎🏼‍♂️‍➡️|🧎🏽‍♀️‍➡️|🧎🏽‍♂️‍➡️|🧎🏾‍♀️‍➡️|🧎🏾‍♂️‍➡️|🧎🏿‍♀️‍➡️|🧎🏿‍♂️‍➡️|🧑🏻‍🦯‍➡️|🧑🏻‍🦼‍➡️|🧑🏻‍🦽‍➡️|🧑🏼‍🦯‍➡️|🧑🏼‍🦼‍➡️|🧑🏼‍🦽‍➡️|🧑🏽‍🦯‍➡️|🧑🏽‍🦼‍➡️|🧑🏽‍🦽‍➡️|🧑🏾‍🦯‍➡️|🧑🏾‍🦼‍➡️|🧑🏾‍🦽‍➡️|🧑🏿‍🦯‍➡️|🧑🏿‍🦼‍➡️|🧑🏿‍🦽‍➡️|🫱🏻‍🫲🏼|🫱🏻‍🫲🏽|🫱🏻‍🫲🏾|🫱🏻‍🫲🏿|🫱🏼‍🫲🏻|🫱🏼‍🫲🏽|🫱🏼‍🫲🏾|🫱🏼‍🫲🏿|🫱🏽‍🫲🏻|🫱🏽‍🫲🏼|🫱🏽‍🫲🏾|🫱🏽‍🫲🏿|🫱🏾‍🫲🏻|🫱🏾‍🫲🏼|🫱🏾‍🫲🏽|🫱🏾‍🫲🏿|🫱🏿‍🫲🏻|🫱🏿‍🫲🏼|🫱🏿‍🫲🏽|🫱🏿‍🫲🏾|🏃‍♀️‍➡️|🏃‍♂️‍➡️|👨‍❤️‍👨|👨‍👦‍👦|👨‍👧‍👦|👨‍👧‍👧|👨‍👨‍👦|👨‍👨‍👧|👨‍👩‍👦|👨‍👩‍👧|👨‍🦯‍➡️|👨‍🦼‍➡️|👨‍🦽‍➡️|👩‍❤️‍👨|👩‍❤️‍👩|👩‍👦‍👦|👩‍👧‍👦|👩‍👧‍👧|👩‍👩‍👦|👩‍👩‍👧|👩‍🦯‍➡️|👩‍🦼‍➡️|👩‍🦽‍➡️|🚶‍♀️‍➡️|🚶‍♂️‍➡️|🧎‍♀️‍➡️|🧎‍♂️‍➡️|🧑‍🤝‍🧑|🧑‍🦯‍➡️|🧑‍🦼‍➡️|🧑‍🦽‍➡️|🧑‍🧑‍🧒|🧑‍🧒‍🧒|🏃🏻‍♀️|🏃🏻‍♂️|🏃🏻‍➡️|🏃🏼‍♀️|🏃🏼‍♂️|🏃🏼‍➡️|🏃🏽‍♀️|🏃🏽‍♂️|🏃🏽‍➡️|🏃🏾‍♀️|🏃🏾‍♂️|🏃🏾‍➡️|🏃🏿‍♀️|🏃🏿‍♂️|🏃🏿‍➡️|🏄🏻‍♀️|🏄🏻‍♂️|🏄🏼‍♀️|🏄🏼‍♂️|🏄🏽‍♀️|🏄🏽‍♂️|🏄🏾‍♀️|🏄🏾‍♂️|🏄🏿‍♀️|🏄🏿‍♂️|🏊🏻‍♀️|🏊🏻‍♂️|🏊🏼‍♀️|🏊🏼‍♂️|🏊🏽‍♀️|🏊🏽‍♂️|🏊🏾‍♀️|🏊🏾‍♂️|🏊🏿‍♀️|🏊🏿‍♂️|🏋🏻‍♀️|🏋🏻‍♂️|🏋🏼‍♀️|🏋🏼‍♂️|🏋🏽‍♀️|🏋🏽‍♂️|🏋🏾‍♀️|🏋🏾‍♂️|🏋🏿‍♀️|🏋🏿‍♂️|🏌🏻‍♀️|🏌🏻‍♂️|🏌🏼‍♀️|🏌🏼‍♂️|🏌🏽‍♀️|🏌🏽‍♂️|🏌🏾‍♀️|🏌🏾‍♂️|🏌🏿‍♀️|🏌🏿‍♂️|👁️‍🗨️|👨🏻‍⚕️|👨🏻‍⚖️|👨🏻‍✈️|👨🏻‍🌾|👨🏻‍🍳|👨🏻‍🍼|👨🏻‍🎓|👨🏻‍🎤|👨🏻‍🎨|👨🏻‍🏫|👨🏻‍🏭|👨🏻‍💻|👨🏻‍💼|👨🏻‍🔧|👨🏻‍🔬|👨🏻‍🚀|👨🏻‍🚒|👨🏻‍🦯|👨🏻‍🦰|👨🏻‍🦱|👨🏻‍🦲|👨🏻‍🦳|👨🏻‍🦼|👨🏻‍🦽|👨🏼‍⚕️|👨🏼‍⚖️|👨🏼‍✈️|👨🏼‍🌾|👨🏼‍🍳|👨🏼‍🍼|👨🏼‍🎓|👨🏼‍🎤|👨🏼‍🎨|👨🏼‍🏫|👨🏼‍🏭|👨🏼‍💻|👨🏼‍💼|👨🏼‍🔧|👨🏼‍🔬|👨🏼‍🚀|👨🏼‍🚒|👨🏼‍🦯|👨🏼‍🦰|👨🏼‍🦱|👨🏼‍🦲|👨🏼‍🦳|👨🏼‍🦼|👨🏼‍🦽|👨🏽‍⚕️|👨🏽‍⚖️|👨🏽‍✈️|👨🏽‍🌾|👨🏽‍🍳|👨🏽‍🍼|👨🏽‍🎓|👨🏽‍🎤|👨🏽‍🎨|👨🏽‍🏫|👨🏽‍🏭|👨🏽‍💻|👨🏽‍💼|👨🏽‍🔧|👨🏽‍🔬|👨🏽‍🚀|👨🏽‍🚒|👨🏽‍🦯|👨🏽‍🦰|👨🏽‍🦱|👨🏽‍🦲|👨🏽‍🦳|👨🏽‍🦼|👨🏽‍🦽|👨🏾‍⚕️|👨🏾‍⚖️|👨🏾‍✈️|👨🏾‍🌾|👨🏾‍🍳|👨🏾‍🍼|👨🏾‍🎓|👨🏾‍🎤|👨🏾‍🎨|👨🏾‍🏫|👨🏾‍🏭|👨🏾‍💻|👨🏾‍💼|👨🏾‍🔧|👨🏾‍🔬|👨🏾‍🚀|👨🏾‍🚒|👨🏾‍🦯|👨🏾‍🦰|👨🏾‍🦱|👨🏾‍🦲|👨🏾‍🦳|👨🏾‍🦼|👨🏾‍🦽|👨🏿‍⚕️|👨🏿‍⚖️|👨🏿‍✈️|👨🏿‍🌾|👨🏿‍🍳|👨🏿‍🍼|👨🏿‍🎓|👨🏿‍🎤|👨🏿‍🎨|👨🏿‍🏫|👨🏿‍🏭|👨🏿‍💻|👨🏿‍💼|👨🏿‍🔧|👨🏿‍🔬|👨🏿‍🚀|👨🏿‍🚒|👨🏿‍🦯|👨🏿‍🦰|👨🏿‍🦱|👨🏿‍🦲|👨🏿‍🦳|👨🏿‍🦼|👨🏿‍🦽|👩🏻‍⚕️|👩🏻‍⚖️|👩🏻‍✈️|👩🏻‍🌾|👩🏻‍🍳|👩🏻‍🍼|👩🏻‍🎓|👩🏻‍🎤|👩🏻‍🎨|👩🏻‍🏫|👩🏻‍🏭|👩🏻‍💻|👩🏻‍💼|👩🏻‍🔧|👩🏻‍🔬|👩🏻‍🚀|👩🏻‍🚒|👩🏻‍🦯|👩🏻‍🦰|👩🏻‍🦱|👩🏻‍🦲|👩🏻‍🦳|👩🏻‍🦼|👩🏻‍🦽|👩🏼‍⚕️|👩🏼‍⚖️|👩🏼‍✈️|👩🏼‍🌾|👩🏼‍🍳|👩🏼‍🍼|👩🏼‍🎓|👩🏼‍🎤|👩🏼‍🎨|👩🏼‍🏫|👩🏼‍🏭|👩🏼‍💻|👩🏼‍💼|👩🏼‍🔧|👩🏼‍🔬|👩🏼‍🚀|👩🏼‍🚒|👩🏼‍🦯|👩🏼‍🦰|👩🏼‍🦱|👩🏼‍🦲|👩🏼‍🦳|👩🏼‍🦼|👩🏼‍🦽|👩🏽‍⚕️|👩🏽‍⚖️|👩🏽‍✈️|👩🏽‍🌾|👩🏽‍🍳|👩🏽‍🍼|👩🏽‍🎓|👩🏽‍🎤|👩🏽‍🎨|👩🏽‍🏫|👩🏽‍🏭|👩🏽‍💻|👩🏽‍💼|👩🏽‍🔧|👩🏽‍🔬|👩🏽‍🚀|👩🏽‍🚒|👩🏽‍🦯|👩🏽‍🦰|👩🏽‍🦱|👩🏽‍🦲|👩🏽‍🦳|👩🏽‍🦼|👩🏽‍🦽|👩🏾‍⚕️|👩🏾‍⚖️|👩🏾‍✈️|👩🏾‍🌾|👩🏾‍🍳|👩🏾‍🍼|👩🏾‍🎓|👩🏾‍🎤|👩🏾‍🎨|👩🏾‍🏫|👩🏾‍🏭|👩🏾‍💻|👩🏾‍💼|👩🏾‍🔧|👩🏾‍🔬|👩🏾‍🚀|👩🏾‍🚒|👩🏾‍🦯|👩🏾‍🦰|👩🏾‍🦱|👩🏾‍🦲|👩🏾‍🦳|👩🏾‍🦼|👩🏾‍🦽|👩🏿‍⚕️|👩🏿‍⚖️|👩🏿‍✈️|👩🏿‍🌾|👩🏿‍🍳|👩🏿‍🍼|👩🏿‍🎓|👩🏿‍🎤|👩🏿‍🎨|👩🏿‍🏫|👩🏿‍🏭|👩🏿‍💻|👩🏿‍💼|👩🏿‍🔧|👩🏿‍🔬|👩🏿‍🚀|👩🏿‍🚒|👩🏿‍🦯|👩🏿‍🦰|👩🏿‍🦱|👩🏿‍🦲|👩🏿‍🦳|👩🏿‍🦼|👩🏿‍🦽|👮🏻‍♀️|👮🏻‍♂️|👮🏼‍♀️|👮🏼‍♂️|👮🏽‍♀️|👮🏽‍♂️|👮🏾‍♀️|👮🏾‍♂️|👮🏿‍♀️|👮🏿‍♂️|👯🏻‍♀️|👯🏻‍♂️|👯🏼‍♀️|👯🏼‍♂️|👯🏽‍♀️|👯🏽‍♂️|👯🏾‍♀️|👯🏾‍♂️|👯🏿‍♀️|👯🏿‍♂️|👰🏻‍♀️|👰🏻‍♂️|👰🏼‍♀️|👰🏼‍♂️|👰🏽‍♀️|👰🏽‍♂️|👰🏾‍♀️|👰🏾‍♂️|👰🏿‍♀️|👰🏿‍♂️|👱🏻‍♀️|👱🏻‍♂️|👱🏼‍♀️|👱🏼‍♂️|👱🏽‍♀️|👱🏽‍♂️|👱🏾‍♀️|👱🏾‍♂️|👱🏿‍♀️|👱🏿‍♂️|👳🏻‍♀️|👳🏻‍♂️|👳🏼‍♀️|👳🏼‍♂️|👳🏽‍♀️|👳🏽‍♂️|👳🏾‍♀️|👳🏾‍♂️|👳🏿‍♀️|👳🏿‍♂️|👷🏻‍♀️|👷🏻‍♂️|👷🏼‍♀️|👷🏼‍♂️|👷🏽‍♀️|👷🏽‍♂️|👷🏾‍♀️|👷🏾‍♂️|👷🏿‍♀️|👷🏿‍♂️|💁🏻‍♀️|💁🏻‍♂️|💁🏼‍♀️|💁🏼‍♂️|💁🏽‍♀️|💁🏽‍♂️|💁🏾‍♀️|💁🏾‍♂️|💁🏿‍♀️|💁🏿‍♂️|💂🏻‍♀️|💂🏻‍♂️|💂🏼‍♀️|💂🏼‍♂️|💂🏽‍♀️|💂🏽‍♂️|💂🏾‍♀️|💂🏾‍♂️|💂🏿‍♀️|💂🏿‍♂️|💆🏻‍♀️|💆🏻‍♂️|💆🏼‍♀️|💆🏼‍♂️|💆🏽‍♀️|💆🏽‍♂️|💆🏾‍♀️|💆🏾‍♂️|💆🏿‍♀️|💆🏿‍♂️|💇🏻‍♀️|💇🏻‍♂️|💇🏼‍♀️|💇🏼‍♂️|💇🏽‍♀️|💇🏽‍♂️|💇🏾‍♀️|💇🏾‍♂️|💇🏿‍♀️|💇🏿‍♂️|🕵🏻‍♀️|🕵🏻‍♂️|🕵🏼‍♀️|🕵🏼‍♂️|🕵🏽‍♀️|🕵🏽‍♂️|🕵🏾‍♀️|🕵🏾‍♂️|🕵🏿‍♀️|🕵🏿‍♂️|🙅🏻‍♀️|🙅🏻‍♂️|🙅🏼‍♀️|🙅🏼‍♂️|🙅🏽‍♀️|🙅🏽‍♂️|🙅🏾‍♀️|🙅🏾‍♂️|🙅🏿‍♀️|🙅🏿‍♂️|🙆🏻‍♀️|🙆🏻‍♂️|🙆🏼‍♀️|🙆🏼‍♂️|🙆🏽‍♀️|🙆🏽‍♂️|🙆🏾‍♀️|🙆🏾‍♂️|🙆🏿‍♀️|🙆🏿‍♂️|🙇🏻‍♀️|🙇🏻‍♂️|🙇🏼‍♀️|🙇🏼‍♂️|🙇🏽‍♀️|🙇🏽‍♂️|🙇🏾‍♀️|🙇🏾‍♂️|🙇🏿‍♀️|🙇🏿‍♂️|🙋🏻‍♀️|🙋🏻‍♂️|🙋🏼‍♀️|🙋🏼‍♂️|🙋🏽‍♀️|🙋🏽‍♂️|🙋🏾‍♀️|🙋🏾‍♂️|🙋🏿‍♀️|🙋🏿‍♂️|🙍🏻‍♀️|🙍🏻‍♂️|🙍🏼‍♀️|🙍🏼‍♂️|🙍🏽‍♀️|🙍🏽‍♂️|🙍🏾‍♀️|🙍🏾‍♂️|🙍🏿‍♀️|🙍🏿‍♂️|🙎🏻‍♀️|🙎🏻‍♂️|🙎🏼‍♀️|🙎🏼‍♂️|🙎🏽‍♀️|🙎🏽‍♂️|🙎🏾‍♀️|🙎🏾‍♂️|🙎🏿‍♀️|🙎🏿‍♂️|🚣🏻‍♀️|🚣🏻‍♂️|🚣🏼‍♀️|🚣🏼‍♂️|🚣🏽‍♀️|🚣🏽‍♂️|🚣🏾‍♀️|🚣🏾‍♂️|🚣🏿‍♀️|🚣🏿‍♂️|🚴🏻‍♀️|🚴🏻‍♂️|🚴🏼‍♀️|🚴🏼‍♂️|🚴🏽‍♀️|🚴🏽‍♂️|🚴🏾‍♀️|🚴🏾‍♂️|🚴🏿‍♀️|🚴🏿‍♂️|🚵🏻‍♀️|🚵🏻‍♂️|🚵🏼‍♀️|🚵🏼‍♂️|🚵🏽‍♀️|🚵🏽‍♂️|🚵🏾‍♀️|🚵🏾‍♂️|🚵🏿‍♀️|🚵🏿‍♂️|🚶🏻‍♀️|🚶🏻‍♂️|🚶🏻‍➡️|🚶🏼‍♀️|🚶🏼‍♂️|🚶🏼‍➡️|🚶🏽‍♀️|🚶🏽‍♂️|🚶🏽‍➡️|🚶🏾‍♀️|🚶🏾‍♂️|🚶🏾‍➡️|🚶🏿‍♀️|🚶🏿‍♂️|🚶🏿‍➡️|🤦🏻‍♀️|🤦🏻‍♂️|🤦🏼‍♀️|🤦🏼‍♂️|🤦🏽‍♀️|🤦🏽‍♂️|🤦🏾‍♀️|🤦🏾‍♂️|🤦🏿‍♀️|🤦🏿‍♂️|🤵🏻‍♀️|🤵🏻‍♂️|🤵🏼‍♀️|🤵🏼‍♂️|🤵🏽‍♀️|🤵🏽‍♂️|🤵🏾‍♀️|🤵🏾‍♂️|🤵🏿‍♀️|🤵🏿‍♂️|🤷🏻‍♀️|🤷🏻‍♂️|🤷🏼‍♀️|🤷🏼‍♂️|🤷🏽‍♀️|🤷🏽‍♂️|🤷🏾‍♀️|🤷🏾‍♂️|🤷🏿‍♀️|🤷🏿‍♂️|🤸🏻‍♀️|🤸🏻‍♂️|🤸🏼‍♀️|🤸🏼‍♂️|🤸🏽‍♀️|🤸🏽‍♂️|🤸🏾‍♀️|🤸🏾‍♂️|🤸🏿‍♀️|🤸🏿‍♂️|🤹🏻‍♀️|🤹🏻‍♂️|🤹🏼‍♀️|🤹🏼‍♂️|🤹🏽‍♀️|🤹🏽‍♂️|🤹🏾‍♀️|🤹🏾‍♂️|🤹🏿‍♀️|🤹🏿‍♂️|🤼🏻‍♀️|🤼🏻‍♂️|🤼🏼‍♀️|🤼🏼‍♂️|🤼🏽‍♀️|🤼🏽‍♂️|🤼🏾‍♀️|🤼🏾‍♂️|🤼🏿‍♀️|🤼🏿‍♂️|🤽🏻‍♀️|🤽🏻‍♂️|🤽🏼‍♀️|🤽🏼‍♂️|🤽🏽‍♀️|🤽🏽‍♂️|🤽🏾‍♀️|🤽🏾‍♂️|🤽🏿‍♀️|🤽🏿‍♂️|🤾🏻‍♀️|🤾🏻‍♂️|🤾🏼‍♀️|🤾🏼‍♂️|🤾🏽‍♀️|🤾🏽‍♂️|🤾🏾‍♀️|🤾🏾‍♂️|🤾🏿‍♀️|🤾🏿‍♂️|🦸🏻‍♀️|🦸🏻‍♂️|🦸🏼‍♀️|🦸🏼‍♂️|🦸🏽‍♀️|🦸🏽‍♂️|🦸🏾‍♀️|🦸🏾‍♂️|🦸🏿‍♀️|🦸🏿‍♂️|🦹🏻‍♀️|🦹🏻‍♂️|🦹🏼‍♀️|🦹🏼‍♂️|🦹🏽‍♀️|🦹🏽‍♂️|🦹🏾‍♀️|🦹🏾‍♂️|🦹🏿‍♀️|🦹🏿‍♂️|🧍🏻‍♀️|🧍🏻‍♂️|🧍🏼‍♀️|🧍🏼‍♂️|🧍🏽‍♀️|🧍🏽‍♂️|🧍🏾‍♀️|🧍🏾‍♂️|🧍🏿‍♀️|🧍🏿‍♂️|🧎🏻‍♀️|🧎🏻‍♂️|🧎🏻‍➡️|🧎🏼‍♀️|🧎🏼‍♂️|🧎🏼‍➡️|🧎🏽‍♀️|🧎🏽‍♂️|🧎🏽‍➡️|🧎🏾‍♀️|🧎🏾‍♂️|🧎🏾‍➡️|🧎🏿‍♀️|🧎🏿‍♂️|🧎🏿‍➡️|🧏🏻‍♀️|🧏🏻‍♂️|🧏🏼‍♀️|🧏🏼‍♂️|🧏🏽‍♀️|🧏🏽‍♂️|🧏🏾‍♀️|🧏🏾‍♂️|🧏🏿‍♀️|🧏🏿‍♂️|🧑🏻‍⚕️|🧑🏻‍⚖️|🧑🏻‍✈️|🧑🏻‍🌾|🧑🏻‍🍳|🧑🏻‍🍼|🧑🏻‍🎄|🧑🏻‍🎓|🧑🏻‍🎤|🧑🏻‍🎨|🧑🏻‍🏫|🧑🏻‍🏭|🧑🏻‍💻|🧑🏻‍💼|🧑🏻‍🔧|🧑🏻‍🔬|🧑🏻‍🚀|🧑🏻‍🚒|🧑🏻‍🦯|🧑🏻‍🦰|🧑🏻‍🦱|🧑🏻‍🦲|🧑🏻‍🦳|🧑🏻‍🦼|🧑🏻‍🦽|🧑🏻‍🩰|🧑🏼‍⚕️|🧑🏼‍⚖️|🧑🏼‍✈️|🧑🏼‍🌾|🧑🏼‍🍳|🧑🏼‍🍼|🧑🏼‍🎄|🧑🏼‍🎓|🧑🏼‍🎤|🧑🏼‍🎨|🧑🏼‍🏫|🧑🏼‍🏭|🧑🏼‍💻|🧑🏼‍💼|🧑🏼‍🔧|🧑🏼‍🔬|🧑🏼‍🚀|🧑🏼‍🚒|🧑🏼‍🦯|🧑🏼‍🦰|🧑🏼‍🦱|🧑🏼‍🦲|🧑🏼‍🦳|🧑🏼‍🦼|🧑🏼‍🦽|🧑🏼‍🩰|🧑🏽‍⚕️|🧑🏽‍⚖️|🧑🏽‍✈️|🧑🏽‍🌾|🧑🏽‍🍳|🧑🏽‍🍼|🧑🏽‍🎄|🧑🏽‍🎓|🧑🏽‍🎤|🧑🏽‍🎨|🧑🏽‍🏫|🧑🏽‍🏭|🧑🏽‍💻|🧑🏽‍💼|🧑🏽‍🔧|🧑🏽‍🔬|🧑🏽‍🚀|🧑🏽‍🚒|🧑🏽‍🦯|🧑🏽‍🦰|🧑🏽‍🦱|🧑🏽‍🦲|🧑🏽‍🦳|🧑🏽‍🦼|🧑🏽‍🦽|🧑🏽‍🩰|🧑🏾‍⚕️|🧑🏾‍⚖️|🧑🏾‍✈️|🧑🏾‍🌾|🧑🏾‍🍳|🧑🏾‍🍼|🧑🏾‍🎄|🧑🏾‍🎓|🧑🏾‍🎤|🧑🏾‍🎨|🧑🏾‍🏫|🧑🏾‍🏭|🧑🏾‍💻|🧑🏾‍💼|🧑🏾‍🔧|🧑🏾‍🔬|🧑🏾‍🚀|🧑🏾‍🚒|🧑🏾‍🦯|🧑🏾‍🦰|🧑🏾‍🦱|🧑🏾‍🦲|🧑🏾‍🦳|🧑🏾‍🦼|🧑🏾‍🦽|🧑🏾‍🩰|🧑🏿‍⚕️|🧑🏿‍⚖️|🧑🏿‍✈️|🧑🏿‍🌾|🧑🏿‍🍳|🧑🏿‍🍼|🧑🏿‍🎄|🧑🏿‍🎓|🧑🏿‍🎤|🧑🏿‍🎨|🧑🏿‍🏫|🧑🏿‍🏭|🧑🏿‍💻|🧑🏿‍💼|🧑🏿‍🔧|🧑🏿‍🔬|🧑🏿‍🚀|🧑🏿‍🚒|🧑🏿‍🦯|🧑🏿‍🦰|🧑🏿‍🦱|🧑🏿‍🦲|🧑🏿‍🦳|🧑🏿‍🦼|🧑🏿‍🦽|🧑🏿‍🩰|🧔🏻‍♀️|🧔🏻‍♂️|🧔🏼‍♀️|🧔🏼‍♂️|🧔🏽‍♀️|🧔🏽‍♂️|🧔🏾‍♀️|🧔🏾‍♂️|🧔🏿‍♀️|🧔🏿‍♂️|🧖🏻‍♀️|🧖🏻‍♂️|🧖🏼‍♀️|🧖🏼‍♂️|🧖🏽‍♀️|🧖🏽‍♂️|🧖🏾‍♀️|🧖🏾‍♂️|🧖🏿‍♀️|🧖🏿‍♂️|🧗🏻‍♀️|🧗🏻‍♂️|🧗🏼‍♀️|🧗🏼‍♂️|🧗🏽‍♀️|🧗🏽‍♂️|🧗🏾‍♀️|🧗🏾‍♂️|🧗🏿‍♀️|🧗🏿‍♂️|🧘🏻‍♀️|🧘🏻‍♂️|🧘🏼‍♀️|🧘🏼‍♂️|🧘🏽‍♀️|🧘🏽‍♂️|🧘🏾‍♀️|🧘🏾‍♂️|🧘🏿‍♀️|🧘🏿‍♂️|🧙🏻‍♀️|🧙🏻‍♂️|🧙🏼‍♀️|🧙🏼‍♂️|🧙🏽‍♀️|🧙🏽‍♂️|🧙🏾‍♀️|🧙🏾‍♂️|🧙🏿‍♀️|🧙🏿‍♂️|🧚🏻‍♀️|🧚🏻‍♂️|🧚🏼‍♀️|🧚🏼‍♂️|🧚🏽‍♀️|🧚🏽‍♂️|🧚🏾‍♀️|🧚🏾‍♂️|🧚🏿‍♀️|🧚🏿‍♂️|🧛🏻‍♀️|🧛🏻‍♂️|🧛🏼‍♀️|🧛🏼‍♂️|🧛🏽‍♀️|🧛🏽‍♂️|🧛🏾‍♀️|🧛🏾‍♂️|🧛🏿‍♀️|🧛🏿‍♂️|🧜🏻‍♀️|🧜🏻‍♂️|🧜🏼‍♀️|🧜🏼‍♂️|🧜🏽‍♀️|🧜🏽‍♂️|🧜🏾‍♀️|🧜🏾‍♂️|🧜🏿‍♀️|🧜🏿‍♂️|🧝🏻‍♀️|🧝🏻‍♂️|🧝🏼‍♀️|🧝🏼‍♂️|🧝🏽‍♀️|🧝🏽‍♂️|🧝🏾‍♀️|🧝🏾‍♂️|🧝🏿‍♀️|🧝🏿‍♂️|⛹🏻‍♀️|⛹🏻‍♂️|⛹🏼‍♀️|⛹🏼‍♂️|⛹🏽‍♀️|⛹🏽‍♂️|⛹🏾‍♀️|⛹🏾‍♂️|⛹🏿‍♀️|⛹🏿‍♂️|🏋️‍♀️|🏋️‍♂️|🏌️‍♀️|🏌️‍♂️|🏳️‍⚧️|🏳️‍🌈|🕵️‍♀️|🕵️‍♂️|😶‍🌫️|⛓️‍💥|⛹️‍♀️|⛹️‍♂️|❤️‍🔥|❤️‍🩹|🍄‍🟫|🍋‍🟩|🏃‍♀️|🏃‍♂️|🏃‍➡️|🏄‍♀️|🏄‍♂️|🏊‍♀️|🏊‍♂️|🏴‍☠️|🐕‍🦺|🐦‍🔥|🐻‍❄️|👨‍⚕️|👨‍⚖️|👨‍✈️|👨‍🌾|👨‍🍳|👨‍🍼|👨‍🎓|👨‍🎤|👨‍🎨|👨‍🏫|👨‍🏭|👨‍👦|👨‍👧|👨‍💻|👨‍💼|👨‍🔧|👨‍🔬|👨‍🚀|👨‍🚒|👨‍🦯|👨‍🦰|👨‍🦱|👨‍🦲|👨‍🦳|👨‍🦼|👨‍🦽|👩‍⚕️|👩‍⚖️|👩‍✈️|👩‍🌾|👩‍🍳|👩‍🍼|👩‍🎓|👩‍🎤|👩‍🎨|👩‍🏫|👩‍🏭|👩‍👦|👩‍👧|👩‍💻|👩‍💼|👩‍🔧|👩‍🔬|👩‍🚀|👩‍🚒|👩‍🦯|👩‍🦰|👩‍🦱|👩‍🦲|👩‍🦳|👩‍🦼|👩‍🦽|👮‍♀️|👮‍♂️|👯‍♀️|👯‍♂️|👰‍♀️|👰‍♂️|👱‍♀️|👱‍♂️|👳‍♀️|👳‍♂️|👷‍♀️|👷‍♂️|💁‍♀️|💁‍♂️|💂‍♀️|💂‍♂️|💆‍♀️|💆‍♂️|💇‍♀️|💇‍♂️|😮‍💨|😵‍💫|🙂‍↔️|🙂‍↕️|🙅‍♀️|🙅‍♂️|🙆‍♀️|🙆‍♂️|🙇‍♀️|🙇‍♂️|🙋‍♀️|🙋‍♂️|🙍‍♀️|🙍‍♂️|🙎‍♀️|🙎‍♂️|🚣‍♀️|🚣‍♂️|🚴‍♀️|🚴‍♂️|🚵‍♀️|🚵‍♂️|🚶‍♀️|🚶‍♂️|🚶‍➡️|🤦‍♀️|🤦‍♂️|🤵‍♀️|🤵‍♂️|🤷‍♀️|🤷‍♂️|🤸‍♀️|🤸‍♂️|🤹‍♀️|🤹‍♂️|🤼‍♀️|🤼‍♂️|🤽‍♀️|🤽‍♂️|🤾‍♀️|🤾‍♂️|🦸‍♀️|🦸‍♂️|🦹‍♀️|🦹‍♂️|🧍‍♀️|🧍‍♂️|🧎‍♀️|🧎‍♂️|🧎‍➡️|🧏‍♀️|🧏‍♂️|🧑‍⚕️|🧑‍⚖️|🧑‍✈️|🧑‍🌾|🧑‍🍳|🧑‍🍼|🧑‍🎄|🧑‍🎓|🧑‍🎤|🧑‍🎨|🧑‍🏫|🧑‍🏭|🧑‍💻|🧑‍💼|🧑‍🔧|🧑‍🔬|🧑‍🚀|🧑‍🚒|🧑‍🦯|🧑‍🦰|🧑‍🦱|🧑‍🦲|🧑‍🦳|🧑‍🦼|🧑‍🦽|🧑‍🧒|🧑‍🩰|🧔‍♀️|🧔‍♂️|🧖‍♀️|🧖‍♂️|🧗‍♀️|🧗‍♂️|🧘‍♀️|🧘‍♂️|🧙‍♀️|🧙‍♂️|🧚‍♀️|🧚‍♂️|🧛‍♀️|🧛‍♂️|🧜‍♀️|🧜‍♂️|🧝‍♀️|🧝‍♂️|🧞‍♀️|🧞‍♂️|🧟‍♀️|🧟‍♂️|\*️⃣|🇦🇨|🇦🇩|🇦🇪|🇦🇫|🇦🇬|🇦🇮|🇦🇱|🇦🇲|🇦🇴|🇦🇶|🇦🇷|🇦🇸|🇦🇹|🇦🇺|🇦🇼|🇦🇽|🇦🇿|🇧🇦|🇧🇧|🇧🇩|🇧🇪|🇧🇫|🇧🇬|🇧🇭|🇧🇮|🇧🇯|🇧🇱|🇧🇲|🇧🇳|🇧🇴|🇧🇶|🇧🇷|🇧🇸|🇧🇹|🇧🇻|🇧🇼|🇧🇾|🇧🇿|🇨🇦|🇨🇨|🇨🇩|🇨🇫|🇨🇬|🇨🇭|🇨🇮|🇨🇰|🇨🇱|🇨🇲|🇨🇳|🇨🇴|🇨🇵|🇨🇶|🇨🇷|🇨🇺|🇨🇻|🇨🇼|🇨🇽|🇨🇾|🇨🇿|🇩🇪|🇩🇬|🇩🇯|🇩🇰|🇩🇲|🇩🇴|🇩🇿|🇪🇦|🇪🇨|🇪🇪|🇪🇬|🇪🇭|🇪🇷|🇪🇸|🇪🇹|🇪🇺|🇫🇮|🇫🇯|🇫🇰|🇫🇲|🇫🇴|🇫🇷|🇬🇦|🇬🇧|🇬🇩|🇬🇪|🇬🇫|🇬🇬|🇬🇭|🇬🇮|🇬🇱|🇬🇲|🇬🇳|🇬🇵|🇬🇶|🇬🇷|🇬🇸|🇬🇹|🇬🇺|🇬🇼|🇬🇾|🇭🇰|🇭🇲|🇭🇳|🇭🇷|🇭🇹|🇭🇺|🇮🇨|🇮🇩|🇮🇪|🇮🇱|🇮🇲|🇮🇳|🇮🇴|🇮🇶|🇮🇷|🇮🇸|🇮🇹|🇯🇪|🇯🇲|🇯🇴|🇯🇵|🇰🇪|🇰🇬|🇰🇭|🇰🇮|🇰🇲|🇰🇳|🇰🇵|🇰🇷|🇰🇼|🇰🇾|🇰🇿|🇱🇦|🇱🇧|🇱🇨|🇱🇮|🇱🇰|🇱🇷|🇱🇸|🇱🇹|🇱🇺|🇱🇻|🇱🇾|🇲🇦|🇲🇨|🇲🇩|🇲🇪|🇲🇫|🇲🇬|🇲🇭|🇲🇰|🇲🇱|🇲🇲|🇲🇳|🇲🇴|🇲🇵|🇲🇶|🇲🇷|🇲🇸|🇲🇹|🇲🇺|🇲🇻|🇲🇼|🇲🇽|🇲🇾|🇲🇿|🇳🇦|🇳🇨|🇳🇪|🇳🇫|🇳🇬|🇳🇮|🇳🇱|🇳🇴|🇳🇵|🇳🇷|🇳🇺|🇳🇿|🇴🇲|🇵🇦|🇵🇪|🇵🇫|🇵🇬|🇵🇭|🇵🇰|🇵🇱|🇵🇲|🇵🇳|🇵🇷|🇵🇸|🇵🇹|🇵🇼|🇵🇾|🇶🇦|🇷🇪|🇷🇴|🇷🇸|🇷🇺|🇷🇼|🇸🇦|🇸🇧|🇸🇨|🇸🇩|🇸🇪|🇸🇬|🇸🇭|🇸🇮|🇸🇯|🇸🇰|🇸🇱|🇸🇲|🇸🇳|🇸🇴|🇸🇷|🇸🇸|🇸🇹|🇸🇻|🇸🇽|🇸🇾|🇸🇿|🇹🇦|🇹🇨|🇹🇩|🇹🇫|🇹🇬|🇹🇭|🇹🇯|🇹🇰|🇹🇱|🇹🇲|🇹🇳|🇹🇴|🇹🇷|🇹🇹|🇹🇻|🇹🇼|🇹🇿|🇺🇦|🇺🇬|🇺🇲|🇺🇳|🇺🇸|🇺🇾|🇺🇿|🇻🇦|🇻🇨|🇻🇪|🇻🇬|🇻🇮|🇻🇳|🇻🇺|🇼🇫|🇼🇸|🇽🇰|🇾🇪|🇾🇹|🇿🇦|🇿🇲|🇿🇼|🎅🏻|🎅🏼|🎅🏽|🎅🏾|🎅🏿|🏂🏻|🏂🏼|🏂🏽|🏂🏾|🏂🏿|🏃🏻|🏃🏼|🏃🏽|🏃🏾|🏃🏿|🏄🏻|🏄🏼|🏄🏽|🏄🏾|🏄🏿|🏇🏻|🏇🏼|🏇🏽|🏇🏾|🏇🏿|🏊🏻|🏊🏼|🏊🏽|🏊🏾|🏊🏿|🏋🏻|🏋🏼|🏋🏽|🏋🏾|🏋🏿|🏌🏻|🏌🏼|🏌🏽|🏌🏾|🏌🏿|🐈‍⬛|🐦‍⬛|👂🏻|👂🏼|👂🏽|👂🏾|👂🏿|👃🏻|👃🏼|👃🏽|👃🏾|👃🏿|👆🏻|👆🏼|👆🏽|👆🏾|👆🏿|👇🏻|👇🏼|👇🏽|👇🏾|👇🏿|👈🏻|👈🏼|👈🏽|👈🏾|👈🏿|👉🏻|👉🏼|👉🏽|👉🏾|👉🏿|👊🏻|👊🏼|👊🏽|👊🏾|👊🏿|👋🏻|👋🏼|👋🏽|👋🏾|👋🏿|👌🏻|👌🏼|👌🏽|👌🏾|👌🏿|👍🏻|👍🏼|👍🏽|👍🏾|👍🏿|👎🏻|👎🏼|👎🏽|👎🏾|👎🏿|👏🏻|👏🏼|👏🏽|👏🏾|👏🏿|👐🏻|👐🏼|👐🏽|👐🏾|👐🏿|👦🏻|👦🏼|👦🏽|👦🏾|👦🏿|👧🏻|👧🏼|👧🏽|👧🏾|👧🏿|👨🏻|👨🏼|👨🏽|👨🏾|👨🏿|👩🏻|👩🏼|👩🏽|👩🏾|👩🏿|👫🏻|👫🏼|👫🏽|👫🏾|👫🏿|👬🏻|👬🏼|👬🏽|👬🏾|👬🏿|👭🏻|👭🏼|👭🏽|👭🏾|👭🏿|👮🏻|👮🏼|👮🏽|👮🏾|👮🏿|👯🏻|👯🏼|👯🏽|👯🏾|👯🏿|👰🏻|👰🏼|👰🏽|👰🏾|👰🏿|👱🏻|👱🏼|👱🏽|👱🏾|👱🏿|👲🏻|👲🏼|👲🏽|👲🏾|👲🏿|👳🏻|👳🏼|👳🏽|👳🏾|👳🏿|👴🏻|👴🏼|👴🏽|👴🏾|👴🏿|👵🏻|👵🏼|👵🏽|👵🏾|👵🏿|👶🏻|👶🏼|👶🏽|👶🏾|👶🏿|👷🏻|👷🏼|👷🏽|👷🏾|👷🏿|👸🏻|👸🏼|👸🏽|👸🏾|👸🏿|👼🏻|👼🏼|👼🏽|👼🏾|👼🏿|💁🏻|💁🏼|💁🏽|💁🏾|💁🏿|💂🏻|💂🏼|💂🏽|💂🏾|💂🏿|💃🏻|💃🏼|💃🏽|💃🏾|💃🏿|💅🏻|💅🏼|💅🏽|💅🏾|💅🏿|💆🏻|💆🏼|💆🏽|💆🏾|💆🏿|💇🏻|💇🏼|💇🏽|💇🏾|💇🏿|💏🏻|💏🏼|💏🏽|💏🏾|💏🏿|💑🏻|💑🏼|💑🏽|💑🏾|💑🏿|💪🏻|💪🏼|💪🏽|💪🏾|💪🏿|🕴🏻|🕴🏼|🕴🏽|🕴🏾|🕴🏿|🕵🏻|🕵🏼|🕵🏽|🕵🏾|🕵🏿|🕺🏻|🕺🏼|🕺🏽|🕺🏾|🕺🏿|🖐🏻|🖐🏼|🖐🏽|🖐🏾|🖐🏿|🖕🏻|🖕🏼|🖕🏽|🖕🏾|🖕🏿|🖖🏻|🖖🏼|🖖🏽|🖖🏾|🖖🏿|🙅🏻|🙅🏼|🙅🏽|🙅🏾|🙅🏿|🙆🏻|🙆🏼|🙆🏽|🙆🏾|🙆🏿|🙇🏻|🙇🏼|🙇🏽|🙇🏾|🙇🏿|🙋🏻|🙋🏼|🙋🏽|🙋🏾|🙋🏿|🙌🏻|🙌🏼|🙌🏽|🙌🏾|🙌🏿|🙍🏻|🙍🏼|🙍🏽|🙍🏾|🙍🏿|🙎🏻|🙎🏼|🙎🏽|🙎🏾|🙎🏿|🙏🏻|🙏🏼|🙏🏽|🙏🏾|🙏🏿|🚣🏻|🚣🏼|🚣🏽|🚣🏾|🚣🏿|🚴🏻|🚴🏼|🚴🏽|🚴🏾|🚴🏿|🚵🏻|🚵🏼|🚵🏽|🚵🏾|🚵🏿|🚶🏻|🚶🏼|🚶🏽|🚶🏾|🚶🏿|🛀🏻|🛀🏼|🛀🏽|🛀🏾|🛀🏿|🛌🏻|🛌🏼|🛌🏽|🛌🏾|🛌🏿|🤌🏻|🤌🏼|🤌🏽|🤌🏾|🤌🏿|🤏🏻|🤏🏼|🤏🏽|🤏🏾|🤏🏿|🤘🏻|🤘🏼|🤘🏽|🤘🏾|🤘🏿|🤙🏻|🤙🏼|🤙🏽|🤙🏾|🤙🏿|🤚🏻|🤚🏼|🤚🏽|🤚🏾|🤚🏿|🤛🏻|🤛🏼|🤛🏽|🤛🏾|🤛🏿|🤜🏻|🤜🏼|🤜🏽|🤜🏾|🤜🏿|🤝🏻|🤝🏼|🤝🏽|🤝🏾|🤝🏿|🤞🏻|🤞🏼|🤞🏽|🤞🏾|🤞🏿|🤟🏻|🤟🏼|🤟🏽|🤟🏾|🤟🏿|🤦🏻|🤦🏼|🤦🏽|🤦🏾|🤦🏿|🤰🏻|🤰🏼|🤰🏽|🤰🏾|🤰🏿|🤱🏻|🤱🏼|🤱🏽|🤱🏾|🤱🏿|🤲🏻|🤲🏼|🤲🏽|🤲🏾|🤲🏿|🤳🏻|🤳🏼|🤳🏽|🤳🏾|🤳🏿|🤴🏻|🤴🏼|🤴🏽|🤴🏾|🤴🏿|🤵🏻|🤵🏼|🤵🏽|🤵🏾|🤵🏿|🤶🏻|🤶🏼|🤶🏽|🤶🏾|🤶🏿|🤷🏻|🤷🏼|🤷🏽|🤷🏾|🤷🏿|🤸🏻|🤸🏼|🤸🏽|🤸🏾|🤸🏿|🤹🏻|🤹🏼|🤹🏽|🤹🏾|🤹🏿|🤼🏻|🤼🏼|🤼🏽|🤼🏾|🤼🏿|🤽🏻|🤽🏼|🤽🏽|🤽🏾|🤽🏿|🤾🏻|🤾🏼|🤾🏽|🤾🏾|🤾🏿|🥷🏻|🥷🏼|🥷🏽|🥷🏾|🥷🏿|🦵🏻|🦵🏼|🦵🏽|🦵🏾|🦵🏿|🦶🏻|🦶🏼|🦶🏽|🦶🏾|🦶🏿|🦸🏻|🦸🏼|🦸🏽|🦸🏾|🦸🏿|🦹🏻|🦹🏼|🦹🏽|🦹🏾|🦹🏿|🦻🏻|🦻🏼|🦻🏽|🦻🏾|🦻🏿|🧍🏻|🧍🏼|🧍🏽|🧍🏾|🧍🏿|🧎🏻|🧎🏼|🧎🏽|🧎🏾|🧎🏿|🧏🏻|🧏🏼|🧏🏽|🧏🏾|🧏🏿|🧑🏻|🧑🏼|🧑🏽|🧑🏾|🧑🏿|🧒🏻|🧒🏼|🧒🏽|🧒🏾|🧒🏿|🧓🏻|🧓🏼|🧓🏽|🧓🏾|🧓🏿|🧔🏻|🧔🏼|🧔🏽|🧔🏾|🧔🏿|🧕🏻|🧕🏼|🧕🏽|🧕🏾|🧕🏿|🧖🏻|🧖🏼|🧖🏽|🧖🏾|🧖🏿|🧗🏻|🧗🏼|🧗🏽|🧗🏾|🧗🏿|🧘🏻|🧘🏼|🧘🏽|🧘🏾|🧘🏿|🧙🏻|🧙🏼|🧙🏽|🧙🏾|🧙🏿|🧚🏻|🧚🏼|🧚🏽|🧚🏾|🧚🏿|🧛🏻|🧛🏼|🧛🏽|🧛🏾|🧛🏿|🧜🏻|🧜🏼|🧜🏽|🧜🏾|🧜🏿|🧝🏻|🧝🏼|🧝🏽|🧝🏾|🧝🏿|🫃🏻|🫃🏼|🫃🏽|🫃🏾|🫃🏿|🫄🏻|🫄🏼|🫄🏽|🫄🏾|🫄🏿|🫅🏻|🫅🏼|🫅🏽|🫅🏾|🫅🏿|🫰🏻|🫰🏼|🫰🏽|🫰🏾|🫰🏿|🫱🏻|🫱🏼|🫱🏽|🫱🏾|🫱🏿|🫲🏻|🫲🏼|🫲🏽|🫲🏾|🫲🏿|🫳🏻|🫳🏼|🫳🏽|🫳🏾|🫳🏿|🫴🏻|🫴🏼|🫴🏽|🫴🏾|🫴🏿|🫵🏻|🫵🏼|🫵🏽|🫵🏾|🫵🏿|🫶🏻|🫶🏼|🫶🏽|🫶🏾|🫶🏿|🫷🏻|🫷🏼|🫷🏽|🫷🏾|🫷🏿|🫸🏻|🫸🏼|🫸🏽|🫸🏾|🫸🏿|#️⃣|0️⃣|1️⃣|2️⃣|3️⃣|4️⃣|5️⃣|6️⃣|7️⃣|8️⃣|9️⃣|☝🏻|☝🏼|☝🏽|☝🏾|☝🏿|⛹🏻|⛹🏼|⛹🏽|⛹🏾|⛹🏿|✊🏻|✊🏼|✊🏽|✊🏾|✊🏿|✋🏻|✋🏼|✋🏽|✋🏾|✋🏿|✌🏻|✌🏼|✌🏽|✌🏾|✌🏿|✍🏻|✍🏼|✍🏽|✍🏾|✍🏿|🅰️|🅱️|🅾️|🅿️|🈂️|🈷️|🌡️|🌤️|🌥️|🌦️|🌧️|🌨️|🌩️|🌪️|🌫️|🌬️|🌶️|🍽️|🎖️|🎗️|🎙️|🎚️|🎛️|🎞️|🎟️|🏋️|🏌️|🏍️|🏎️|🏔️|🏕️|🏖️|🏗️|🏘️|🏙️|🏚️|🏛️|🏜️|🏝️|🏞️|🏟️|🏳️|🏵️|🏷️|🐿️|👁️|📽️|🕉️|🕊️|🕯️|🕰️|🕳️|🕴️|🕵️|🕶️|🕷️|🕸️|🕹️|🖇️|🖊️|🖋️|🖌️|🖍️|🖐️|🖥️|🖨️|🖱️|🖲️|🖼️|🗂️|🗃️|🗄️|🗑️|🗒️|🗓️|🗜️|🗝️|🗞️|🗡️|🗣️|🗨️|🗯️|🗳️|🗺️|🛋️|🛍️|🛎️|🛏️|🛠️|🛡️|🛢️|🛣️|🛤️|🛥️|🛩️|🛰️|🛳️|©️|®️|‼️|⁉️|™️|ℹ️|↔️|↕️|↖️|↗️|↘️|↙️|↩️|↪️|⌨️|⏏️|⏭️|⏮️|⏯️|⏱️|⏲️|⏸️|⏹️|⏺️|Ⓜ️|▪️|▫️|▶️|◀️|◻️|◼️|☀️|☁️|☂️|☃️|☄️|☎️|☑️|☘️|☝️|☠️|☢️|☣️|☦️|☪️|☮️|☯️|☸️|☹️|☺️|♀️|♂️|♟️|♠️|♣️|♥️|♦️|♨️|♻️|♾️|⚒️|⚔️|⚕️|⚖️|⚗️|⚙️|⚛️|⚜️|⚠️|⚧️|⚰️|⚱️|⛈️|⛏️|⛑️|⛓️|⛩️|⛰️|⛱️|⛴️|⛷️|⛸️|⛹️|✂️|✈️|✉️|✌️|✍️|✏️|✒️|✔️|✖️|✝️|✡️|✳️|✴️|❄️|❇️|❣️|❤️|➡️|⤴️|⤵️|⬅️|⬆️|⬇️|〰️|〽️|㊗️|㊙️|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6D5}-\u{1F6D8}\u{1F6DC}-\u{1F6DF}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6FC}\u{1F7E0}-\u{1F7EB}\u{1F7F0}\u{1F90C}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F9FF}\u{1FA70}-\u{1FA7C}\u{1FA80}-\u{1FA8A}\u{1FA8E}-\u{1FAC6}\u{1FAC8}\u{1FACD}-\u{1FADC}\u{1FADF}-\u{1FAEA}\u{1FAEF}-\u{1FAF8}])/gu).length):o=a().createElement(a().Fragment,null,a().createElement("i",{className:"material-icons gray"},"warning_amber")," ",a().createElement("i",{className:"gray"},a().createElement(n.FormattedMessage,{id:"invalid_content",defaultMessage:[{type:0,value:"invalid content"}]})));return a().createElement("li",{ref:this.props.innerRef,className:e},this.props.isGroup&&this.props.response?a().createElement("div",{className:"avatar-box"},r?a().createElement(c.A,{authorizeURL:this.props.tinode.authorizeURL,topic:this.props.userFrom,title:this.props.userName,avatar:s}):null):null,a().createElement("div",null,a().createElement("div",{className:t},a().createElement("div",{className:"content-meta"},a().createElement("div",{className:i},o,h),this.props.timestamp?a().createElement(m,{edited:this.props.edited,timestamp:this.props.timestamp,received:this.props.received}):null),this.props.showContextMenu?a().createElement("span",{className:"menuTrigger"},a().createElement("a",{href:"#",onClick:this.handleContextClick},a().createElement("i",{className:"material-icons"},"expand_more"))):null),r?a().createElement("div",{className:"author"},this.props.userName||a().createElement("i",null,a().createElement(n.FormattedMessage,{id:"user_not_found",defaultMessage:[{type:0,value:"Not found"}]}))):null))}}const y=(0,n.injectIntl)(v);var E=a().forwardRef((e,t)=>a().createElement(y,f({innerRef:t},e))),b=s(504),M=s(1334),S=s(9027),C=s(6110);class _ extends a().Component{constructor(e){super(e)}render(){const e=[],t=(this.props.subscribers||[]).length,s=Math.min(S.DT,t);return(this.props.subscribers||[]).some(t=>(e.push(a().createElement("div",{className:"avatar-box",key:t.user},a().createElement(c.A,{authorizeURL:this.props.tinode.authorizeURL,topic:t.user,avatar:(0,C.to)(t.public?t.public.photo:null)||!0,title:t.public?t.public.fn:null}))),e.length==s)),0==e.length?null:a().createElement("div",{id:"topic-users"},e," ",t>s?a().createElement("span",null,a().createElement(n.FormattedMessage,{id:"more_online_members",defaultMessage:[{type:0,value:"+"},{type:1,value:"overflow"},{type:0,value:" more"}],values:{overflow:t-s}})):null)}}class w extends a().PureComponent{constructor(e){super(e),this.handleButtonAction=this.handleButtonAction.bind(this)}handleButtonAction(e,t){e.preventDefault(),this.props.onAction(t)}render(){return a().createElement("div",{className:"accept-invite-panel"},a().createElement("div",{className:"title"},a().createElement(n.FormattedMessage,{id:"chat_invitation",defaultMessage:[{type:0,value:"You are invited to start a new chat. What would you like to do?"}]})),a().createElement("div",{className:"footer"},a().createElement("button",{className:"primary",onClick:e=>{this.handleButtonAction(e,"accept")}},a().createElement(n.FormattedMessage,{id:"chat_invitation_accept",defaultMessage:[{type:0,value:"Accept"}]})),a().createElement("button",{className:"secondary",onClick:e=>{this.handleButtonAction(e,"delete")}},a().createElement(n.FormattedMessage,{id:"chat_invitation_ignore",defaultMessage:[{type:0,value:"Ignore"}]})),a().createElement("button",{className:"secondary",onClick:e=>{this.handleButtonAction(e,"block")}},a().createElement(n.FormattedMessage,{id:"chat_invitation_block",defaultMessage:[{type:0,value:"Block"}]}))))}}var F=s(1013);class A extends a().PureComponent{render(){const e=S.C3+" ("+l.Tinode.getLibrary()+")";return a().createElement("div",{id:"dummy-view"},a().createElement("div",null,a().createElement("a",{href:"https://github.com/tinode/chat/"},a().createElement("img",{id:"logo",alt:"logo",src:"img/logo.svg"}),a().createElement("h2",null,"Tinode Web")),a().createElement("p",null,a().createElement(n.FormattedMessage,{id:"label_client",defaultMessage:[{type:0,value:"Client:"}]})," ",e),a().createElement("p",null,a().createElement(n.FormattedMessage,{id:"label_server",defaultMessage:[{type:0,value:"Server:"}]})," ",this.props.serverVersion," (",this.props.serverAddress,")")))}}class D extends a().PureComponent{constructor(e){super(e)}render(){let e=null,t="bubble";return this.props.date&&(e=a().createElement(a().Fragment,null,this.props.date),t+=" date"),e?a().createElement("li",{className:"meta"},a().createElement("div",{className:t},a().createElement("div",{className:"message-content"},e))):a().createElement(a().Fragment,null,null)}}const P=(0,n.defineMessages)({message_not_found:{id:"message_not_found",defaultMessage:[{type:0,value:"message not found"}]},message_deleted:{id:"message_deleted",defaultMessage:[{type:0,value:"message deleted"}]}});class T extends a().PureComponent{constructor(e){super(e),this.touchX=null,this.touchY=null,this.touchSurface=a().createRef(),this.getSelectedIndex=this.getSelectedIndex.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleSelected=this.handleSelected.bind(this),this.handleMoveNext=this.handleMoveNext.bind(this),this.handleMovePrev=this.handleMovePrev.bind(this),this.handleTouchEventStart=this.handleTouchEventStart.bind(this),this.handleTouchEventEnd=this.handleTouchEventEnd.bind(this),this.handleTouchCancel=this.handleTouchCancel.bind(this)}componentDidMount(){this.touchSurface.current.addEventListener("touchstart",this.handleTouchEventStart,{passive:!0}),this.touchSurface.current.addEventListener("touchend",this.handleTouchEventEnd,{passive:!0}),this.touchSurface.current.addEventListener("touchcancel",this.handleTouchCancel,{passive:!0})}componentWillUnmount(){this.touchSurface.current.removeEventListener("touchstart",this.handleTouchEventStart),this.touchSurface.current.removeEventListener("touchend",this.handleTouchEventEnd),this.touchSurface.current.removeEventListener("touchcancel",this.handleTouchCancel)}getSelectedIndex(){return(this.props.pins||[]).length-this.props.selected-1}handleCancel(e){e.preventDefault(),this.props.onCancel(this.props.pins[this.getSelectedIndex()])}handleSelected(e){e.preventDefault(),this.props.onSelected(this.props.pins[this.getSelectedIndex()])}handleMoveNext(e,t){t||e.preventDefault(),e.stopPropagation();const s=Math.max(this.props.selected-1,0);s!=this.props.selected&&this.props.setSelected(s)}handleMovePrev(e,t){t||e.preventDefault(),e.stopPropagation();const s=Math.min(this.props.selected+1,(this.props.pins||[]).length-1);s!=this.props.selected&&this.props.setSelected(s)}handleTouchEventStart(e){1==e.touches.length&&(this.touchX=e.touches[0].clientX,this.touchY=e.touches[0].clientY)}handleTouchEventEnd(e){if(null===this.touchX||1!=e.changedTouches.length)return void(this.touchX=null);const t=this.touchX-e.changedTouches[0].clientX,s=this.touchY-e.changedTouches[0].clientY;this.touchX=null,Math.abs(t)>Math.abs(s)||Math.abs(s)0?this.handleMovePrev(e,!0):this.handleMoveNext(e,!0))}handleTouchCancel(){this.touchX=null}render(){const e=this.getSelectedIndex();let t=(this.props.messages||[])[e];t=t?t._deleted?a().createElement("i",{className:"gray"},this.props.intl.formatMessage(P.message_deleted)):l.Drafty.format(t.content,g.TU,{formatMessage:this.props.intl.formatMessage.bind(this.props.intl),authorizeURL:this.props.tinode.authorizeURL.bind(this.props.tinode)}):a().createElement("i",{className:"gray"},this.props.intl.formatMessage(P.message_not_found));const s=[];return this.props.pins.forEach(t=>{const i=s.length==e?"adot":"dot";s.push(a().createElement("div",{key:t,className:i}))}),a().createElement("div",{id:"pinned-wrapper",ref:this.touchSurface},this.props.isAdmin?a().createElement("div",{className:"cancel"},a().createElement("a",{href:"#",onClick:this.handleCancel},a().createElement("i",{className:"material-icons gray"},"close"))):a().createElement("div",null,a().createElement("i",{className:"material-icons gray"},"push_pin")),a().createElement("div",{className:"pinned-scroll"},s),a().createElement("div",{className:"pinned",onClick:this.handleSelected},a().createElement("p",null,t)),a().createElement("div",{className:"pinned-menu"},a().createElement("span",{className:"menuTrigger upper"},e>0?a().createElement("a",{href:"#",onClick:this.handleMovePrev},a().createElement("i",{className:"material-icons"},"expand_less")):null),a().createElement("span",{className:"menuTrigger lower"},this.props.selected>0?a().createElement("a",{href:"#",onClick:this.handleMoveNext},a().createElement("i",{className:"material-icons"},"expand_more")):null)))}}var R=(0,n.injectIntl)(T),k=s(1725),N=s(3832),I=s(7151);const x=a().lazy(e=>s.e(836).then(s.bind(s,6836))),L=a().lazy(e=>s.e(472).then(s.bind(s,4472))),U=a().lazy(e=>s.e(889).then(s.bind(s,8889))),z=a().lazy(e=>Promise.all([s.e(892),s.e(942)]).then(s.bind(s,8942))),q=a().lazy(e=>s.e(371).then(s.bind(s,6371))),B=(0,n.defineMessages)({online_now:{id:"online_now",defaultMessage:[{type:0,value:"online now"}]},last_seen:{id:"last_seen_timestamp",defaultMessage:[{type:0,value:"Last seen: "},{type:1,value:"timestamp"}]},not_found:{id:"title_not_found",defaultMessage:[{type:0,value:"Not found"}]},channel:{id:"channel",defaultMessage:[{type:0,value:"channel"}]},file_attachment_too_large:{id:"file_attachment_too_large",defaultMessage:[{type:0,value:"The file size "},{type:1,value:"size"},{type:0,value:" exceeds the "},{type:1,value:"limit"},{type:0,value:" limit."}]},invalid_content:{id:"invalid_content",defaultMessage:[{type:0,value:"invalid content"}]},editing_message:{id:"editing_message",defaultMessage:[{type:0,value:"Editing"}]},drag_file:{id:"drag_file",defaultMessage:[{type:0,value:"Drag file here"}]},self_topic_name:{id:"self_topic_name",defaultMessage:[{type:0,value:"Saved messages"}]},subscriber_count:{id:"subscriber_count",defaultMessage:[{type:6,value:"count",options:{one:{value:[{type:2,value:"count",style:null},{type:0,value:" subscriber"}]},two:{value:[{type:2,value:"count",style:null},{type:0,value:" subscribers"}]},three:{value:[{type:2,value:"count",style:null},{type:0,value:" subscribers"}]},few:{value:[{type:2,value:"count",style:null},{type:0,value:" subscribers"}]},many:{value:[{type:2,value:"count",style:null},{type:0,value:" subscribers"}]},other:{value:[{type:2,value:"count",style:null},{type:0,value:" subscribers"}]}},offset:0,pluralType:"cardinal"}]},member_count:{id:"member_count",defaultMessage:[{type:6,value:"count",options:{one:{value:[{type:2,value:"count",style:null},{type:0,value:" member"}]},two:{value:[{type:2,value:"count",style:null},{type:0,value:" members"}]},three:{value:[{type:2,value:"count",style:null},{type:0,value:" members"}]},few:{value:[{type:2,value:"count",style:null},{type:0,value:" members"}]},many:{value:[{type:2,value:"count",style:null},{type:0,value:" members"}]},other:{value:[{type:2,value:"count",style:null},{type:0,value:" members"}]}},offset:0,pluralType:"cardinal"}]},cannot_parse_vcard:{id:"cannot_parse_vcard",defaultMessage:[{type:0,value:"Cannot parse vCard file."}]}});function O(e){if(e){const t=e.getExcessive()||"";return e.isJoiner("given")&&(t.includes("R")||t.includes("W"))}return!1}function Q(e){if(e){const t=e.getMissing()||"";return e.isJoiner("want")&&(t.includes("R")||t.includes("W"))}return!1}function V(e){return e==N.No||e==N.d1}class H extends a().Component{constructor(e){super(e),this.state=H.getDerivedStateFromProps(e,{}),this.componentSetup=this.componentSetup.bind(this),this.leave=this.leave.bind(this),this.sendMessage=this.sendMessage.bind(this),this.retrySend=this.retrySend.bind(this),this.sendImageAttachment=this.sendImageAttachment.bind(this),this.sendVideoAttachment=this.sendVideoAttachment.bind(this),this.sendFileAttachment=this.sendFileAttachment.bind(this),this.sendAudioAttachment=this.sendAudioAttachment.bind(this),this.sendTheCardAttachment=this.sendTheCardAttachment.bind(this),this.sendKeyPress=this.sendKeyPress.bind(this),this.subscribe=this.subscribe.bind(this),this.handleScrollReference=this.handleScrollReference.bind(this),this.mountDnDEvents=this.mountDnDEvents.bind(this),this.handleScrollEvent=this.handleScrollEvent.bind(this),this.handleDescChange=this.handleDescChange.bind(this),this.handleSubsUpdated=this.handleSubsUpdated.bind(this),this.handleMessageUpdate=this.handleMessageUpdate.bind(this),this.handleAuxUpdate=this.handleAuxUpdate.bind(this),this.handleAllMessagesReceived=this.handleAllMessagesReceived.bind(this),this.handleInfoReceipt=this.handleInfoReceipt.bind(this),this.handleExpandMedia=this.handleExpandMedia.bind(this),this.handleClosePreview=this.handleClosePreview.bind(this),this.handleCallPanelToggle=this.handleCallPanelToggle.bind(this),this.handleFormResponse=this.handleFormResponse.bind(this),this.handleContextClick=this.handleContextClick.bind(this),this.handleShowMessageContextMenu=this.handleShowMessageContextMenu.bind(this),this.handleNewChatAcceptance=this.handleNewChatAcceptance.bind(this),this.handleEnablePeer=this.handleEnablePeer.bind(this),this.handleAttachFile=this.handleAttachFile.bind(this),this.handleAttachImageOrVideo=this.handleAttachImageOrVideo.bind(this),this.handleCancelUpload=this.handleCancelUpload.bind(this),this.postReadNotification=this.postReadNotification.bind(this),this.clearNotificationQueue=this.clearNotificationQueue.bind(this),this.goToLatestMessage=this.goToLatestMessage.bind(this),this.handleFileDrop=this.handleFileDrop.bind(this),this.handlePickReply=this.handlePickReply.bind(this),this.handleEditMessage=this.handleEditMessage.bind(this),this.handleCancelReply=this.handleCancelReply.bind(this),this.handleQuoteClick=this.handleQuoteClick.bind(this),this.handleUnpinMessage=this.handleUnpinMessage.bind(this),this.handleCallHangup=this.handleCallHangup.bind(this),this.isDragEnabled=this.isDragEnabled.bind(this),this.handleDragStart=this.handleDragStart.bind(this),this.handleDragIn=this.handleDragIn.bind(this),this.handleDragOut=this.handleDragOut.bind(this),this.handleDrag=this.handleDrag.bind(this),this.handleDrop=this.handleDrop.bind(this),this.chatMessageRefs=[],this.getOrCreateMessageRef=this.getOrCreateMessageRef.bind(this),this.getVisibleMessageRange=this.getVisibleMessageRange.bind(this),this.dragCounter=0,this.dndRef=null,this.readNotificationQueue=[],this.readNotificationTimer=null,this.keyPressTimer=null}getOrCreateMessageRef(e){if(this.chatMessageRefs[e])return this.chatMessageRefs[e];const t=a().createRef();return this.chatMessageRefs[e]=t,t}getVisibleMessageRange(e){let t=Number.MAX_SAFE_INTEGER,s=-1,i=!1;return this.chatMessageRefs.every((a,n)=>{if(a.current){const{top:l,bottom:r,height:o}=a.current.getBoundingClientRect();if(l<=e.top?e.top-l<=o:r-e.bottom<=o)i=!0,t=Math.min(t,n),s=Math.max(s,n);else if(i)return!1}return!0}),s>=t?{min:t,max:s}:{min:0,max:0}}componentDidMount(){this.messagesScroller&&this.messagesScroller.addEventListener("scroll",this.handleScrollEvent),this.mountDnDEvents(this.dndRef),this.componentSetup({},{})}componentWillUnmount(){this.messagesScroller&&this.messagesScroller.removeEventListener("scroll",this.handleScrollEvent),this.clearNotificationQueue(),this.dndRef&&(this.dndRef.removeEventListener("dragstart",this.handleDragStart),this.dndRef.removeEventListener("dragenter",this.handleDragIn),this.dndRef.removeEventListener("dragleave",this.handleDragOut),this.dndRef.removeEventListener("dragover",this.handleDrag),this.dndRef.removeEventListener("drop",this.handleDrop))}componentDidUpdate(e,t){!this.messagesScroller||t.topic==this.state.topic&&t.maxSeqId==this.state.maxSeqId&&t.minSeqId==this.state.minSeqId||this.state.scrollPosition<100&&(this.messagesScroller.scrollTop=this.messagesScroller.scrollHeight-this.state.scrollPosition-this.messagesScroller.offsetHeight),this.props.applicationVisible?this.postReadNotification(0):this.clearNotificationQueue(),this.componentSetup(e,t)}componentSetup(e,t){const s=this.props.tinode?this.props.tinode.getTopic(this.state.topic):void 0;if(this.state.topic!=t.topic&&(t.topic&&!l.Tinode.isNewGroupTopicName(t.topic)&&(this.leave(t.topic),t.rtcPanel&&this.handleCallHangup(t.topic,e.callSeq)),s&&(s.onData=this.handleMessageUpdate,s.onAllMessagesReceived=this.handleAllMessagesReceived,s.onInfo=this.handleInfoReceipt,s.onMetaDesc=this.handleDescChange,s.onSubsUpdated=this.handleSubsUpdated,s.onPres=this.handleSubsUpdated,s.onAuxUpdated=this.handleAuxUpdate)),s)if(this.state.topic!=t.topic||this.props.myUserId&&!e.myUserId){const e=this.props.newTopicParams&&this.props.newTopicParams._topicName==this.props.topic;s.isP2PType()&&e&&!S.rl?s.getMeta(s.startMetaQuery().withDesc().build()):this.props.myUserId&&this.subscribe(s)}else s.isSubscribed()&&this.state.isReader&&!t.isReader&&s.getMeta(s.startMetaQuery().withLaterData().build())}static getDerivedStateFromProps(e,t){let s={};if(e.topic)if(e.topic!=t.topic){const i=e.tinode.getTopic(e.topic);if(s={topic:e.topic,deleted:i._deleted,docPreview:null,imagePreview:null,imagePostview:null,videoPreview:null,videoPostview:null,rtcPanel:null,minimizedCallPanel:!1,typingIndicator:!1,scrollPosition:0,fetchingMessages:!1,showGoToLastButton:!1,contentToEdit:null,dragging:!1,selectedPin:0},e.forwardMessage?e.forwardMessage.content?s.docPreview={object:e.forwardMessage.content,type:e.forwardMessage.type}:s.reply={content:e.forwardMessage.preview,seq:null}:s.reply=null,i){const a=[];e.connected&&i.subscribers(t=>{t.online&&t.user!=e.myUserId&&a.push(t)}),Object.assign(s,{onlineSubs:a}),i.isSelfType()?Object.assign(s,{title:e.intl.formatMessage(B.self_topic_name),avatar:!0}):i.public?Object.assign(s,{title:i.public.fn,avatar:(0,C.to)(i.public.photo)}):Object.assign(s,{title:"",avatar:null});const n=i.p2pPeerDesc();n?Object.assign(s,{peerMessagingDisabled:Q(n.acs)}):t.peerMessagingDisabled&&Object.assign(s,{peerMessagingDisabled:!1}),Object.assign(s,{minSeqId:i.minMsgSeq(),maxSeqId:i.maxMsgSeq(),latestClearId:i.maxClearId(),channel:i.isChannelType(),pins:(i.aux("pins")||[]).slice(),pinsLoaded:!1}),e.callTopic==i.name&&V(e.callState)&&(s.rtcPanel=e.callTopic)}else Object.assign(s,{minSeqId:-1,maxSeqId:-1,latestClearId:-1,onlineSubs:[],title:"",avatar:null,peerMessagingDisabled:!1,channel:!1,pins:[],pinsLoaded:!1})}else e.callTopic==t.topic&&!t.rtcPanel&&V(e.callState)&&(s.rtcPanel=e.callTopic);else s={minSeqId:-1,maxSeqId:-1,latestClearId:-1,onlineSubs:[],topic:null,title:"",avatar:null,isVerified:!1,isStaff:!1,isDangerous:!1,deleted:!1,docPreview:null,imagePreview:null,imagePostview:null,videoPreview:null,videoPostview:null,rtcPanel:null,minimizedCallPanel:!1,typingIndicator:!1,scrollPosition:0,fetchingMessages:!1,peerMessagingDisabled:!1,channel:!1,reply:null,contentToEdit:null,showGoToLastButton:!1,dragging:!1,pins:[],pinsLoaded:!1,selectedPin:0,subsVersion:0};return e.acs?(e.acs.isWriter()!=t.isWriter&&(s.isWriter=!t.isWriter),e.acs.isReader()!=t.isReader&&(s.isReader=!t.isReader),e.acs.isAdmin()!=t.isAdmin&&(s.isAdmin=!t.isAdmin),!e.acs.isReader("given")!=t.readingBlocked&&(s.readingBlocked=!t.readingBlocked),e.acs.isSharer()!=t.isSharer&&(s.isSharer=!t.isSharer)):(t.isWriter&&(s.isWriter=!1),t.isReader&&(s.isReader=!1),t.isAdmin&&(s.isAdmin=!1),t.readingBlocked||(t.readingBlocked=!0),t.isSharer&&(s.isSharer=!1)),O(e.acs)==!t.unconformed&&(s.unconfirmed=!t.unconformed),!e.connected&&t.onlineSubs&&t.onlineSubs.length>0&&(s.onlineSubs=[]),s}subscribe(e){if(e.isSubscribed()||!this.props.ready)return;const t=this.props.newTopicParams&&this.props.newTopicParams._topicName==this.props.topic;let s=e.startMetaQuery().withLaterDesc().withLaterSub().withAux();(this.state.isReader||t)&&(s=s.withLaterData(S.H1),this.state.isReader&&(s=s.withLaterDel()),this.setState({fetchingMessages:!0}));const i=t?this.props.newTopicParams:void 0;e.subscribe(s.build(),i).then(t=>{if(303==t.code)return void I.A.navigateTo(I.A.setUrlTopic("",t.params.topic));this.state.topic!=t.topic&&this.setState({topic:t.topic}),this.state.deleted&&this.setState({deleted:!1}),this.props.onNewTopicCreated(this.props.topic,t.topic);let s=[];e.queuedMessages(t=>{t._sending||(t._fatal||t.head&&t.head.webrtc?s.push(t.seq):e.isSubscribed()&&this.retrySend(t))}),s.length>0&&e.delMessagesList(s,!0)}).catch(e=>{console.error("Failed subscription to",this.state.topic,e),this.props.onError(e.message,"err");const t=H.getDerivedStateFromProps({},{});t.title=this.props.intl.formatMessage(B.not_found),this.setState(t)})}leave(e){if(!e||!this.props.tinode.isTopicCached(e))return;const t=this.props.tinode.getTopic(e);t&&t.isSubscribed()&&t.leave(!1).catch(e=>{}).finally(e=>{this.setState({fetchingMessages:!1}),t.onData=void 0,t.onAllMessagesReceived=void 0,t.onInfo=void 0,t.onMetaDesc=void 0,t.onSubsUpdated=void 0,t.onPres=void 0,t.onAuxUpdated=void 0})}handleScrollReference(e){e&&(e.addEventListener("scroll",this.handleScrollEvent),this.messagesScroller=e,this.messagesScroller.scrollTop=this.messagesScroller.scrollHeight-this.state.scrollPosition-this.messagesScroller.offsetHeight)}handleScrollEvent(e){const t=e.target.scrollHeight-e.target.scrollTop-e.target.offsetHeight;if(this.setState({scrollPosition:t,showGoToLastButton:t>100&&t0&&this.setState({fetchingMessages:!0},e=>{t.getMessagesPage(S.H1,a,s,i).catch(e=>this.props.onError(e.message,"err")).finally(e=>this.setState({fetchingMessages:!1}))})}}this.processingScrollEvent=!1}}mountDnDEvents(e){e&&(e.addEventListener("dragstart",this.handleDragStart),e.addEventListener("dragenter",this.handleDragIn),e.addEventListener("dragleave",this.handleDragOut),e.addEventListener("dragover",this.handleDrag),e.addEventListener("drop",this.handleDrop),this.dndRef=e)}goToLatestMessage(){this.setState({scrollPosition:0}),this.messagesScroller&&(this.messagesScroller.scrollTop=this.messagesScroller.scrollHeight-this.messagesScroller.offsetHeight)}handleDescChange(e){l.Tinode.isSelfTopicName(this.props.topic)?this.setState({title:this.props.intl.formatMessage(B.self_topic_name),avatar:!0}):e.public?this.setState({title:e.public.fn,avatar:(0,C.to)(e.public.photo)}):this.setState({title:"",avatar:null}),e.acs&&this.setState({isWriter:e.acs.isWriter(),isReader:e.acs.isReader(),isAdmin:e.acs.isAdmin(),readingBlocked:!e.acs.isReader("given"),unconfirmed:O(e.acs)})}postReadNotification(e){if(!this.props.applicationVisible||!this.state.topic)return;this.readNotificationTimer||(this.readNotificationTimer=setInterval(e=>{if(0==this.readNotificationQueue.length)return clearInterval(this.readNotificationTimer),void(this.readNotificationTimer=null);let t=-1;for(;this.readNotificationQueue.length>0;){const e=this.readNotificationQueue[0];if(e.topicName!=this.state.topic){this.readNotificationQueue.shift();continue}const s=new Date;if(!(e.sendAt<=s))break;this.readNotificationQueue.shift(),(0==e.seq||l.Tinode.isServerAssignedSeq(e.seq))&&(t=Math.max(t,e.seq))}if(t>=0){const e=this.props.tinode.getTopic(this.state.topic);if(e)try{e.noteRead(t)}catch(e){console.error("Failed to send read notification",e)}}},300));const t=new Date;this.readNotificationQueue.push({topicName:this.state.topic,seq:e,sendAt:t.setMilliseconds(t.getMilliseconds()+S.J)})}clearNotificationQueue(){this.readNotificationQueue=[],this.readNotificationTimer&&(clearInterval(this.readNotificationTimer),this.readNotificationTimer=null)}handleSubsUpdated(){if(this.state.topic){const e=[],t=this.props.tinode.getTopic(this.state.topic);t.subscribers(t=>{t.online&&t.user!=this.props.myUserId&&e.push(t)});const s={onlineSubs:e,subsVersion:this.state.subsVersion+1},i=t.p2pPeerDesc();i?Object.assign(s,{peerMessagingDisabled:Q(i.acs)}):this.state.peerMessagingDisabled&&Object.assign(s,{peerMessagingDisabled:!1}),this.setState(s)}}handleMessageUpdate(e){if(!this.state.topic)return;const t=this.props.tinode.getTopic(this.state.topic);if(!e)return void this.setState({latestClearId:t.maxClearId()});clearTimeout(this.keyPressTimer),this.setState({maxSeqId:t.maxMsgSeq(),minSeqId:t.minMsgSeq(),typingIndicator:!1},s=>{t.isNewMessage(e.seq)?this.state.scrollPosition>100?this.setState({showGoToLastButton:!0}):this.goToLatestMessage():this.messagesScroller&&(this.messagesScroller.scrollTop=this.messagesScroller.scrollHeight-this.state.scrollPosition-this.messagesScroller.offsetHeight)});t.msgStatus(e,!0)>=l.Tinode.MESSAGE_STATUS_SENT&&e.from!=this.props.myUserId&&this.postReadNotification(e.seq)}handleAllMessagesReceived(e){if(this.setState({fetchingMessages:!1}),!e){const e=this.props.tinode.getTopic(this.state.topic);return void(e&&this.postReadNotification(e.seq))}if(this.state.pinsLoaded)this.setState({pinsLoaded:!1});else{const e=this.props.tinode.getTopic(this.state.topic);this.setState({pinsLoaded:!0},t=>{e.getPinnedMessages()})}}handleAuxUpdate(e){const t=(e.pins||[]).slice();let s=this.state.selectedPin;t.length>this.state.pins.length?s=0:s>=t.length&&(s=Math.max(0,t.length-1)),this.setState({pins:t,selectedPin:s})}handleInfoReceipt(e){switch(e.what){case"kp":clearTimeout(this.keyPressTimer),this.keyPressTimer=setTimeout(e=>this.setState({typingIndicator:!1}),S.NR+1e3),this.state.typingIndicator||this.setState({typingIndicator:!0});break;case"read":case"recv":this.forceUpdate();break;default:console.info("Other change in topic: ",e.what)}}handleExpandMedia(e){e&&(e.video?this.setState({videoPostview:e}):this.setState({imagePostview:e}))}handleClosePreview(){this.state.imagePreview&&this.state.imagePreview.url&&URL.revokeObjectURL(this.state.imagePreview.url),this.state.videoPreview&&this.state.videoPreview.url&&URL.revokeObjectURL(this.state.videoPreview.url),this.setState({imagePostview:null,imagePreview:null,docPreview:null,videoPreview:null,videoPostview:null}),this.props.onCancelForwardMessage()}handleFormResponse(e,t,s){if("pub"==e)this.sendMessage(l.Drafty.attachJSON(l.Drafty.parse(t),s));else if("url"==e){const e=new URL(s.ref),t=e.searchParams;for(let e in s.resp)s.resp.hasOwnProperty(e)&&t.set(e,s.resp[e]);["name","seq"].forEach(e=>{s[e]&&t.set(e,s[e])}),t.set("uid",this.props.myUserId),t.set("topic",this.state.topic),e.search=t,window.open(e,"_blank")}else console.info("Unknown action in form",e)}handleContextClick(e){e.preventDefault(),e.stopPropagation(),this.props.showContextMenu({topicName:this.state.topic,y:e.pageY,x:e.pageX})}handleShowMessageContextMenu(e,t){"chan"==e.userFrom&&(e.userFrom=this.state.topic,e.userName=this.state.title),e.topicName=this.state.topic;const s=t||[],i=this.props.tinode.getTopic(e.topicName);if(i)if(i.isSelfType())s.push("message_delete_generic");else{i.isChannelType()||s.push("message_delete");const t=i.getAccessMode();if(t&&t.isDeleter()){let i=t.isOwner();if(!i){const t=0|this.props.tinode.getServerParam(l.Tinode.MSG_DELETE_AGE,0);i=0==t||!!(t>0&&e.timestamp)&&e.timestamp.getTime()>(new Date).getTime()-1e3*t}i&&s.push("message_delete_hard")}}this.props.showContextMenu(e,s)}handleNewChatAcceptance(e){this.props.onNewChat(this.state.topic,e)}handleEnablePeer(e){e.preventDefault(),this.props.onChangePermissions(this.state.topic,S.cZ,this.state.topic)}sendKeyPress(e){const t=this.props.tinode.getTopic(this.state.topic);t.isSubscribed()&&(e?t.noteRecording(!0):t.noteKeyPress())}sendMessage(e,t,s){let i;if(this.props.forwardMessage)e=this.props.forwardMessage.msg,i=this.props.forwardMessage.head,this.handleCancelReply();else if(this.state.reply){if(this.state.reply.editing){if(e==this.state.contentToEdit)return void this.handleCancelReply();i={replace:":"+this.state.reply.seq}}else this.state.reply.content&&(i={reply:""+this.state.reply.seq},"string"==typeof e&&(e=l.Drafty.parse(e)),e=l.Drafty.append(l.Drafty.sanitizeEntities(this.state.reply.content),e));this.handleCancelReply()}this.props.sendMessage(e,t,s,i)}retrySend(e){this.props.sendMessage(e.content,void 0,void 0,e.head).then(t=>{this.props.tinode.getTopic(this.state.topic).delMessagesList([e.seq],!0)})}sendFileAttachment(e){const t=.75*this.props.tinode.getServerParam("maxMessageSize",S.mp)-1024|0;if(l.TheCard.isFileSupported(e.type,e.name)&&this.sendTheCardAttachment(e,t))return;const s=e=>e===S.Uv?"application/octet-stream":e;if(e.size>t){const t=this.props.tinode.getLargeFileHelper();if(!t)return void this.props.onError(this.props.intl.formatMessage(B.cannot_initiate_upload));const i=t.upload(e),a=l.Drafty.attachFile(null,{mime:s(e.type),filename:e.name,size:e.size,urlPromise:i});this.sendMessage(a,i,t)}else(0,C.bB)(e).then(t=>this.sendMessage(l.Drafty.attachFile(null,{mime:s(t.mime),data:t.bits,filename:t.name,size:e.size}))).catch(e=>this.props.onError(e.message,"err"))}sendTheCardAttachment(e,t){return!(e.size>t)&&((0,C.QJ)(e).then(e=>{this.sendMessage(l.Drafty.appendTheCard(null,e))}).catch(e=>{this.props.onError(this.props.intl.formatMessage(B.cannot_parse_vcard,{error:e.message}),"err")}),!0)}handleAttachFile(e){const t=this.props.tinode.getServerParam("maxFileUploadSize",S.qy);e.size>t?this.props.onError(this.props.intl.formatMessage(B.file_attachment_too_large,{size:(0,o.lX)(e.size),limit:(0,o.lX)(t)}),"err"):this.setState({docPreview:{file:e,name:e.name,size:e.size,type:e.type}})}handleCallHangup(e,t){this.props.onVideoCallClosed(),this.setState({rtcPanel:null}),this.props.onCallHangup(e,t)}handleCallPanelToggle(){this.setState({minimizedCallPanel:!this.state.minimizedCallPanel})}sendImageAttachment(e,t){const s=this.state.imagePreview.mime,i=this.state.imagePreview.width,a=this.state.imagePreview.height,n=this.state.imagePreview.filename,r=.75*this.props.tinode.getServerParam("maxMessageSize",S.mp)-1024|0;if(t.size>r){const r=this.props.tinode.getLargeFileHelper();if(!r)return void this.props.onError(this.props.intl.formatMessage(B.cannot_initiate_upload));const o=r.upload(t);return void(0,C.ag)(t,S.wj,S.wj,-1,!1).then(e=>(0,C.Sk)(e.blob)).then(h=>{let d=l.Drafty.insertImage(null,0,{mime:s,_tempPreview:h.bits,bits:h.bits,width:i,height:a,filename:n,size:t.size,urlPromise:o});e&&(d=l.Drafty.appendLineBreak(d),d=l.Drafty.append(d,l.Drafty.parse(e))),this.sendMessage(d,o,r)}).catch(e=>this.props.onError(e,"err"))}(0,C.Sk)(t).then(s=>{let r=l.Drafty.insertImage(null,0,{mime:s.mime,bits:s.bits,width:i,height:a,filename:n,size:t.size});e&&(r=l.Drafty.appendLineBreak(r),r=l.Drafty.append(r,l.Drafty.parse(e))),this.sendMessage(r)})}sendVideoAttachment(e,t,s,i){const a=i.width,n=i.height,r=.75*this.props.tinode.getServerParam("maxMessageSize",S.mp)-1024|0,o=[];let h;if(t.size+s.size>r){if(h=this.props.tinode.getLargeFileHelper(),!h)return void this.props.onError(this.props.intl.formatMessage(B.cannot_initiate_upload));o[0]=t.size>.675*r?h.upload(t):null,o[1]=s.size>.275*r?h.upload(s):null}if(0==o.length)return void Promise.all([(0,C.Sk)(t),(0,C.Sk)(s)]).then(s=>{const[r,o]=s;let h=l.Drafty.insertVideo(null,0,{mime:r.mime,bits:r.bits,preview:o.bits,premime:o.mime,width:a,height:n,duration:i.duration,filename:i.name,size:t.size});e&&(h=l.Drafty.appendLineBreak(h),h=l.Drafty.append(h,l.Drafty.parse(e))),this.sendMessage(h)});const d=Promise.all(o),c=[];c[0]=o[0]?null:(0,C.Sk)(t),c[1]=o[1]?null:(0,C.ag)(s,S.QG,S.QG,-1,!1).then(e=>(0,C.Sk)(e.blob)),c[2]=(0,C.ag)(s,S.Cx,S.Cx,-1,!1).then(e=>(0,C.Sk)(e.blob)),Promise.all(c).then(s=>{const[r,o,c]=s;let p=l.Drafty.insertVideo(null,0,{mime:i.mime,bits:r?r.bits:null,_tempPreview:c.bits,preview:o?o.bits:c.bits,premime:o?o.mime:c.mime,width:a,height:n,duration:i.duration,filename:i.name,size:t.size,urlPromise:d});e&&(p=l.Drafty.appendLineBreak(p),p=l.Drafty.append(p,l.Drafty.parse(e))),this.sendMessage(p,d,h)}).catch(e=>this.props.onError(e.message,"err"))}handleAttachImageOrVideo(e){const t=this.props.tinode.getServerParam("maxFileUploadSize",S.qy);e.type.startsWith("video/")?this.setState({videoPreview:{url:URL.createObjectURL(e),blob:e,filename:e.name,size:e.size,mime:e.type}}):(0,C.ag)(e,S.QG,S.QG,t,!1).then(e=>{this.setState({imagePreview:{url:URL.createObjectURL(e.blob),blob:e.blob,filename:e.name,width:e.width,height:e.height,size:e.blob.size,mime:e.mime}})}).catch(e=>{this.props.onError(e.message,"err")})}handleFileDrop(e){if(!e||0==e.length)return;const t=e[0];t.type&&t.type.startsWith("image/")?this.handleAttachImageOrVideo(t):this.handleAttachFile(t)}sendAudioAttachment(e,t,s){fetch(e).then(e=>e.blob()).then(e=>{const i=.75*this.props.tinode.getServerParam("maxMessageSize",S.mp)-1024;if(e.size>i){const i=this.props.tinode.getLargeFileHelper();if(!i)return void this.props.onError(this.props.intl.formatMessage(B.cannot_initiate_upload));const a=i.upload(e),n=l.Drafty.appendAudio(null,{mime:e.type,size:e.size,duration:s,preview:t,urlPromise:a});this.sendMessage(n,a,i)}else(0,C.Sk)(e).then(i=>{this.sendMessage(l.Drafty.appendAudio(null,{mime:i.mime,bits:i.bits,size:e.size,duration:s,preview:t}))})}).catch(e=>{this.props.onError(e.message,"err")})}handleCancelUpload(e,t){const s=this.props.tinode.getTopic(this.state.topic).findMessage(e);s&&(s._cancelled=!0),t.cancel()}handlePickReply(e,t,s,i){e&&t?(t="string"==typeof t?l.Drafty.init(t):t,t=l.Drafty.isValid(t)?l.Drafty.replyContent(t,S.Rz):l.Drafty.append(l.Drafty.init("⚠ "),l.Drafty.wrapInto(this.props.intl.formatMessage(B.invalid_content),"EM")),this.setState({reply:{content:l.Drafty.quote(i,s,t),seq:e}}),this.props.onCancelForwardMessage()):this.setState({reply:null})}handleEditMessage(e,t){if(!e||!t)return void this.setState({reply:null});t="string"==typeof t?l.Drafty.init(t):t;const s=l.Drafty.toMarkdown(t);t=l.Drafty.isValid(t)?l.Drafty.replyContent(t,S.hB):l.Drafty.append(l.Drafty.init("⚠ "),l.Drafty.wrapInto(this.props.intl.formatMessage(B.invalid_content),"EM")),this.setState({reply:{content:l.Drafty.quote(this.props.intl.formatMessage(B.editing_message),null,t),seq:e,editing:!0},contentToEdit:s}),this.props.onCancelForwardMessage()}handleCancelReply(){this.setState({reply:null,contentToEdit:null}),this.props.onCancelForwardMessage()}handleQuoteClick(e){const t=this.getOrCreateMessageRef(e);t&&t.current?(t.current.scrollIntoView({block:"center",behavior:"smooth"}),t.current.classList.add("flash"),setTimeout(e=>{t.current.classList.remove("flash")},1e3)):console.error("Unresolved message ref",e)}handleUnpinMessage(e){this.props.tinode.getTopic(this.state.topic).pinMessage(e,!1)}isDragEnabled(){return this.state.isWriter&&!this.state.unconfirmed&&!this.props.forwardMessage&&!this.state.peerMessagingDisabled}handleDragStart(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer.clearData()}handleDragIn(e){e.preventDefault(),e.stopPropagation(),this.dragCounter++,e.dataTransfer.items&&e.dataTransfer.items.length>0&&this.setState({dragging:!0})}handleDragOut(e){e.preventDefault(),e.stopPropagation(),this.dragCounter--,this.dragCounter<=0&&this.setState({dragging:!1})}handleDrag(e){e.preventDefault(),e.stopPropagation()}handleDrop(e){e.preventDefault(),e.stopPropagation(),this.setState({dragging:!1}),this.isDragEnabled()&&e.dataTransfer.files&&e.dataTransfer.files.length>0&&(this.handleFileDrop(e.dataTransfer.files),this.dragCounter=0)}render(){const{formatMessage:e}=this.props.intl,t=this.state.rtcPanel&&a().createElement(i.Suspense,{fallback:a().createElement("div",null,a().createElement(n.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},a().createElement(x,{topic:this.state.topic,seq:this.props.callSeq,callState:this.props.callState,callAudioOnly:this.props.callAudioOnly,tinode:this.props.tinode,title:this.state.title,avatar:this.state.avatar||!0,minimized:this.state.minimizedCallPanel,onError:this.props.onError,onHangup:this.handleCallHangup,onToggleMinimize:this.handleCallPanelToggle,onInvite:this.props.onCallInvite,onSendOffer:this.props.onCallSendOffer,onIceCandidate:this.props.onCallIceCandidate,onSendAnswer:this.props.onCallSendAnswer}));let s;if(this.state.topic){let r;if(this.state.imagePreview)r=a().createElement(i.Suspense,{fallback:a().createElement("div",null,a().createElement(n.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},a().createElement(U,{content:this.state.imagePreview,tinode:this.props.tinode,reply:this.state.reply,onCancelReply:this.handleCancelReply,onClose:this.handleClosePreview,onSendMessage:this.sendImageAttachment}));else if(this.state.videoPreview)r=a().createElement(i.Suspense,{fallback:a().createElement("div",null,a().createElement(n.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},a().createElement(q,{content:this.state.videoPreview,tinode:this.props.tinode,reply:this.state.reply,onError:this.props.onError,onCancelReply:this.handleCancelReply,onClose:this.handleClosePreview,onSendMessage:this.sendVideoAttachment}));else if(this.state.imagePostview)r=a().createElement(i.Suspense,{fallback:a().createElement("div",null,a().createElement(n.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},a().createElement(U,{content:this.state.imagePostview,onClose:this.handleClosePreview}));else if(this.state.videoPostview)r=a().createElement(i.Suspense,{fallback:a().createElement("div",null,a().createElement(n.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},a().createElement(q,{content:this.state.videoPostview,tinode:this.props.tinode,onError:this.props.onError,onClose:this.handleClosePreview}));else if(this.state.docPreview)r=l.TheCard.isFileSupported(this.state.docPreview.type,this.state.docPreview.name)||this.state.docPreview.type==l.TheCard.contentType?a().createElement(i.Suspense,{fallback:a().createElement("div",null,a().createElement(n.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},a().createElement(z,{content:this.state.docPreview,tinode:this.props.tinode,reply:this.state.reply,onCancelReply:this.handleCancelReply,onClose:this.handleClosePreview,onSendMessage:this.sendFileAttachment})):a().createElement(i.Suspense,{fallback:a().createElement("div",null,a().createElement(n.FormattedMessage,{id:"loading_note",defaultMessage:[{type:0,value:"Loading..."}]}))},a().createElement(L,{content:this.state.docPreview,tinode:this.props.tinode,reply:this.state.reply,onCancelReply:this.handleCancelReply,onClose:this.handleClosePreview,onSendMessage:this.sendFileAttachment}));else{const t=this.props.tinode.getTopic(this.state.topic),s=t.isChannelType()||t.chan,i=t.isGroupType()&&!s,h=[];t.trusted&&(t.trusted.verified&&h.push({icon:"verified",color:"badge-inv"}),t.trusted.staff&&h.push({icon:"staff",color:"badge-inv"}),t.trusted.danger&&h.push({icon:"dangerous",color:"badge-inv"}));const d=[];this.state.pins.forEach(e=>d.push(t.latestMsgVersion(e)||t.findMessage(e)));const p=[];let u=null,m=null,g=null;t.messages((e,s,n,l)=>{let r=n?n.from||"chan":null,h="single",d=e.from||"chan";d==u?h=d==r?"middle":"last":d==r&&(h="first"),u=d;const c=!(d==this.props.myUserId),f=t.msgStatus(e,!0);let v,y,b=d;const M=t.userDesc(d);M&&M.public&&(v=M.public.fn,y=(0,C.to)(M.public.photo)),g=i?"chat-box group":"chat-box";const S=this.getOrCreateMessageRef(e.seq);let _=e.head?parseInt(e.head.reply):null;if(_&&!isNaN(_)||(_=null),e.hi)p.push(a().createElement(D,{deleted:!0,key:e.seq}));else{const t=new Date(e.ts);m&&m.toDateString()==t.toDateString()||(p.push(a().createElement(D,{date:(0,o.mf)(e.ts),locale:this.props.intl.locale,key:"date-"+e.seq})),m=t),p.push(a().createElement(E,{tinode:this.props.tinode,topic:this.state.topic,content:e.content,mimeType:e.head&&e.head.mime,replyToSeq:_,edited:e.head&&!e.head.webrtc&&e.head.replace,timestamp:e.ts,response:c,seq:e.seq,isGroup:i,isChan:this.state.channel,userFrom:b,userName:v,userAvatar:y,sequence:h,received:f,uploader:e._uploader,userIsWriter:this.state.isWriter,userIsAdmin:this.state.isAdmin,pinned:this.state.pins.includes(e.seq),viewportWidth:this.props.viewportWidth,showContextMenu:this.handleShowMessageContextMenu,onExpandMedia:this.handleExpandMedia,onFormResponse:this.handleFormResponse,onCancelUpload:this.handleCancelUpload,pickReply:this.handlePickReply,editMessage:this.handleEditMessage,onQuoteClick:this.handleQuoteClick,onAcceptCall:this.props.onAcceptCall,onError:this.props.onError,ref:S,key:e.seq}))}});let f=null;if(s)t.subcnt&&(f=e(B.subscriber_count,{count:t.subcnt}));else{const s=this.props.tinode.getMeTopic().getContact(this.state.topic);s&&(l.Tinode.isP2PTopicName(s.topic)?s.online?f=e(B.online_now):s.seen&&(f=e(B.last_seen,{timestamp:(0,o.cq)(s.seen.when,this.props.intl.locale)})):l.Tinode.isGroupTopicName(s.topic)&&t.subcnt&&(f=e(B.member_count,{count:t.subcnt})))}const v=this.state.avatar||!0,y=this.state.deleted||t.isSelfType()?null:this.props.online?"online"+(this.state.typingIndicator?" typing":""):"offline",S="panel-title"+(this.state.deleted?" deleted":""),A="dark"==this.props.colorSchema?"dark":"";let P=a().createElement(a().Fragment,null,a().createElement("div",{id:"messages-container",className:A},a().createElement("button",{id:"go-to-latest",className:"action-button"+(this.state.showGoToLastButton?"":" hidden"),onClick:this.goToLatestMessage},a().createElement("i",{className:"material-icons"},"arrow_downward")),a().createElement("div",{id:"messages-panel",ref:this.handleScrollReference},a().createElement("ul",{id:"scroller",className:g},p)),this.state.isReader?null:a().createElement("div",{id:"write-only-background"},this.state.readingBlocked?a().createElement("div",{id:"write-only-note"},a().createElement(n.FormattedMessage,{id:"messages_not_readable",defaultMessage:[{type:0,value:"no access to messages"}]})):null)),this.state.peerMessagingDisabled&&!this.state.unconfirmed?a().createElement("div",{id:"peer-messaging-disabled-note"},a().createElement("i",{className:"material-icons secondary"},"block")," ",a().createElement(n.FormattedMessage,{id:"peers_messaging_disabled",defaultMessage:[{type:0,value:"Peer's messaging is disabled."}]})," ",a().createElement("a",{href:"#",onClick:this.handleEnablePeer},a().createElement(n.FormattedMessage,{id:"enable_peers_messaging",defaultMessage:[{type:0,value:"Enable"}]})),"."):null,this.state.unconfirmed?a().createElement(w,{onAction:this.handleNewChatAcceptance}):a().createElement(k.A,{tinode:this.props.tinode,topicName:this.state.topic,noInput:!!this.props.forwardMessage,disabled:!this.state.isWriter||this.state.deleted,reply:this.state.reply,initMessage:this.state.contentToEdit,sendOnEnter:this.props.sendOnEnter,onKeyPress:this.sendKeyPress,onRecordingProgress:this.sendKeyPress,onSendMessage:this.sendMessage,onAttachFile:this.props.forwardMessage?null:this.handleAttachFile,onAttachImage:this.props.forwardMessage?null:this.handleAttachImageOrVideo,onAttachAudio:this.props.forwardMessage?null:this.sendAudioAttachment,onError:this.props.onError,onQuoteClick:this.handleQuoteClick,onCancelReply:this.handleCancelReply}));r=a().createElement(a().Fragment,null,a().createElement("div",{id:"topic-caption-panel",className:"caption-panel"},this.props.displayMobile?a().createElement("a",{href:"#",id:"hide-message-view",onClick:e=>{e.preventDefault(),this.leave(this.state.topic),this.props.onHideMessagesView()}},a().createElement("i",{className:"material-icons"},"arrow_back")):null,a().createElement("div",{className:"avatar-box"},a().createElement(c.A,{authorizeURL:this.props.tinode.authorizeURL,avatar:v,topic:this.state.topic,title:this.state.title,deleted:this.state.deleted}),s?null:a().createElement("span",{className:y})),a().createElement("div",{id:"topic-title-group"},a().createElement("div",{id:"topic-title",className:S},this.state.title||a().createElement("i",null,a().createElement(n.FormattedMessage,{id:"unnamed_topic",defaultMessage:[{type:0,value:"Unnamed"}]})),a().createElement(b.A,{badges:h})),a().createElement("div",{id:"topic-last-seen"},f)),a().createElement("div",{style:{marginLeft:"auto"}}),!this.props.displayMobile&&this.state.pins.length>0?a().createElement(R,{tinode:this.props.tinode,pins:this.state.pins,messages:d,selected:this.state.selectedPin,isAdmin:this.state.isAdmin,setSelected:e=>this.setState({selectedPin:e}),onSelected:this.handleQuoteClick,onCancel:this.handleUnpinMessage}):null,i?a().createElement(_,{tinode:this.props.tinode,subscribers:this.state.onlineSubs}):null,a().createElement("div",null,a().createElement("a",{href:"#",onClick:this.handleContextClick},a().createElement("i",{className:"material-icons"},"more_vert")))),this.props.displayMobile?a().createElement(a().Fragment,null,this.state.pins.length>0?a().createElement(R,{tinode:this.props.tinode,pins:this.state.pins,messages:d,selected:this.state.selectedPin,isAdmin:this.state.isAdmin,setSelected:e=>this.setState({selectedPin:e}),onSelected:this.handleQuoteClick,onCancel:this.handleUnpinMessage}):null,a().createElement(M.A,{level:this.props.errorLevel,text:this.props.errorText,onClearError:this.props.onError})):null,a().createElement(F.A,{show:this.state.fetchingMessages}),P,this.state.dragging&&this.isDragEnabled()?a().createElement("div",{className:"drag-n-drop"},e(B.drag_file)):null)}s=a().createElement("div",{id:"topic-view",ref:this.mountDnDEvents},r,t)}else s=a().createElement(A,{serverVersion:this.props.serverVersion,serverAddress:this.props.serverAddress});return s}}var j=(0,n.injectIntl)(H)}}]); +//# sourceMappingURL=429.prod.js.map \ No newline at end of file diff --git a/umd/429.prod.js.map b/umd/429.prod.js.map new file mode 100644 index 00000000..fd155b77 --- /dev/null +++ b/umd/429.prod.js.map @@ -0,0 +1 @@ +{"version":3,"file":"429.prod.js","mappings":"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","sources":["webpack://tinode-webapp/./src/widgets/send-message.jsx","webpack://tinode-webapp/./src/widgets/attachment.jsx","webpack://tinode-webapp/./src/widgets/received-marker.jsx","webpack://tinode-webapp/./src/widgets/chat-message.jsx","webpack://tinode-webapp/./src/widgets/group-subs.jsx","webpack://tinode-webapp/./src/widgets/invitation.jsx","webpack://tinode-webapp/./src/views/logo-view.jsx","webpack://tinode-webapp/./src/widgets/meta-message.jsx","webpack://tinode-webapp/./src/widgets/pinned-messages.jsx","webpack://tinode-webapp/./src/views/messages-view.jsx"],"sourcesContent":["// Send message form.\nimport React, { Suspense } from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\nimport { Drafty } from 'tinode-sdk';\n\n// Lazy-loading AudioRecorder because it's quite large due to\n// a dependency on webm-duration-fix.\nconst AudioRecorder = React.lazy(_ => import('./audio-recorder.jsx'));\n\nimport { KEYPRESS_DELAY } from '../config.js';\nimport { filePasted } from '../lib/blob-helpers.js';\nimport { replyFormatter } from '../lib/formatters.js';\n\nconst messages = defineMessages({\n messaging_disabled: {\n id: 'messaging_disabled_prompt',\n defaultMessage: 'Messaging disabled',\n description: 'Prompt in SendMessage in read-only topic'\n },\n type_new_message: {\n id: 'new_message_prompt',\n defaultMessage: 'New message',\n description: 'Prompt in send message field'\n },\n add_image_caption: {\n id: 'image_caption_prompt',\n defaultMessage: 'Image caption',\n description: 'Prompt in SendMessage for attached image'\n },\n file_attachment_too_large: {\n id: 'file_attachment_too_large',\n defaultMessage: 'The file size {size} exceeds the {limit} limit.',\n description: 'Error message when attachment is too large'\n },\n cannot_initiate_upload: {\n id: 'cannot_initiate_file_upload',\n defaultMessage: 'Cannot initiate file upload.',\n description: 'Generic error messagewhen attachment fails'\n },\n icon_title_record_voice: {\n id: 'icon_title_record_voice',\n defaultMessage: 'Record voice message',\n description: 'Icon tool tip for recording a voice message'\n },\n icon_title_attach_file: {\n id: 'icon_title_attach_file',\n defaultMessage: 'Attach file',\n description: 'Icon tool tip for attaching a file'\n },\n icon_title_add_image: {\n id: 'icon_title_add_image',\n defaultMessage: 'Add image',\n description: 'Icon tool tip for attaching an image'\n },\n icon_title_send: {\n id: 'icon_title_send',\n defaultMessage: 'Send message',\n description: 'Icon tool tip for sending a message'\n },\n});\n\nclass SendMessage extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n quote: null,\n message: '',\n audioRec: false,\n audioAvailable: !!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia),\n };\n\n // Timestamp when the previous key press was sent to the server.\n this.keypressTimestamp = 0;\n\n this.handlePasteEvent = this.handlePasteEvent.bind(this);\n this.handleAttachImage = this.handleAttachImage.bind(this);\n this.handleAttachFile = this.handleAttachFile.bind(this);\n this.handleAttachAudio = this.handleAttachAudio.bind(this);\n this.handleSend = this.handleSend.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.handleMessageTyping = this.handleMessageTyping.bind(this);\n this.handleDropAttach = this.handleDropAttach.bind(this);\n\n this.handleQuoteClick = this.handleQuoteClick.bind(this);\n\n this.formatReply = this.formatReply.bind(this);\n }\n\n componentDidMount() {\n if (this.messageEditArea) {\n this.messageEditArea.addEventListener('paste', this.handlePasteEvent, false);\n if (window.getComputedStyle(this.messageEditArea).getPropertyValue('transition-property') == 'all') {\n // Set focus on desktop, but not on mobile: focus causes soft keyboard to pop up.\n this.messageEditArea.focus();\n }\n }\n\n this.setState({quote: this.formatReply()});\n }\n\n componentWillUnmount() {\n if (this.messageEditArea) {\n this.messageEditArea.removeEventListener('paste', this.handlePasteEvent, false);\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.messageEditArea) {\n if (window.getComputedStyle(this.messageEditArea).getPropertyValue('transition-property') == 'all') {\n // Set focus on desktop, but not on mobile: focus causes soft keyboard to pop up.\n this.messageEditArea.focus();\n }\n\n // Adjust height of the message area for the amount of text.\n this.messageEditArea.style.height = '0px';\n this.messageEditArea.style.height = this.messageEditArea.scrollHeight + 'px';\n }\n\n if (prevProps.topicName != this.props.topicName) {\n this.setState({message: this.props.initMessage || '', audioRec: false, quote: null});\n } else if (prevProps.initMessage != this.props.initMessage) {\n const msg = this.props.initMessage || '';\n this.setState({message: msg}, _ => {\n // If there is text, scroll to bottom and set caret to the end.\n this.messageEditArea.scrollTop = this.messageEditArea.scrollHeight;\n this.messageEditArea.setSelectionRange(msg.length, msg.length);\n });\n }\n if (prevProps.reply != this.props.reply) {\n this.setState({quote: this.formatReply()});\n }\n }\n\n formatReply() {\n return this.props.reply ?\n Drafty.format(this.props.reply.content, replyFormatter, {\n formatMessage: this.props.intl.formatMessage.bind(this.props.intl),\n authorizeURL: this.props.tinode.authorizeURL.bind(this.props.tinode)\n }) : null;\n }\n\n handlePasteEvent(e) {\n if (this.props.disabled) {\n return;\n }\n // FIXME: handle large files too.\n if (filePasted(e,\n file => { this.props.onAttachImage(file); },\n file => { this.props.onAttachFile(file); },\n this.props.onError)) {\n\n // If a file was pasted, don't paste base64 data into input field.\n e.preventDefault();\n }\n }\n\n handleAttachImage(e) {\n if (e.target.files && e.target.files.length > 0) {\n this.props.onAttachImage(e.target.files[0]);\n }\n // Clear the value so the same file can be uploaded again.\n e.target.value = '';\n }\n\n handleAttachFile(e) {\n if (e.target.files && e.target.files.length > 0) {\n this.props.onAttachFile(e.target.files[0]);\n }\n // Clear the value so the same file can be uploaded again.\n e.target.value = '';\n }\n\n handleDropAttach(files) {\n if (files && files.length > 0) {\n this.props.onAttachFile(files[0]);\n }\n }\n\n handleAttachAudio(url, preview, duration) {\n this.setState({audioRec: false});\n this.props.onAttachAudio(url, preview, duration);\n }\n\n handleSend(e) {\n e.preventDefault();\n const message = this.state.message.trim();\n if (message || this.props.acceptBlank || this.props.noInput) {\n this.props.onSendMessage(message);\n this.setState({message: ''});\n }\n }\n\n /* Send on Enter key */\n handleKeyPress(e) {\n if (this.state.audioRec) {\n // Ignore key presses while audio is being recorded.\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n // Enter pressed: either send, or enter a new line.\n if (e.key === 'Enter') {\n if (this.props.sendOnEnter == 'plain') {\n // Have Shift-Enter insert a line break instead\n if (!e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n\n this.handleSend(e);\n }\n } else {\n if (e.ctrlKey || e.metaKey) {\n e.preventDefault();\n e.stopPropagation();\n\n this.handleSend(e);\n }\n }\n }\n }\n\n handleMessageTyping(e) {\n this.setState({message: e.target.value});\n if (this.props.onKeyPress) {\n const now = new Date().getTime();\n if (now - this.keypressTimestamp > KEYPRESS_DELAY) {\n this.props.onKeyPress();\n this.keypressTimestamp = now;\n }\n }\n }\n\n handleQuoteClick(e) {\n e.preventDefault();\n e.stopPropagation();\n if (this.props.reply && this.props.onQuoteClick) {\n const replyToSeq = this.props.reply.seq;\n this.props.onQuoteClick(replyToSeq);\n }\n }\n\n render() {\n const { formatMessage } = this.props.intl;\n const prompt = this.props.disabled ?\n formatMessage(messages.messaging_disabled) :\n (this.props.messagePrompt ?\n formatMessage(messages[this.props.messagePrompt]) :\n formatMessage(messages.type_new_message));\n\n const sendIcon = (this.props.reply && this.props.reply.editing) ?\n 'check_circle' : 'send';\n\n const quote = this.state.quote ?\n () : null;\n const audioEnabled = this.state.audioAvailable && this.props.onAttachAudio;\n return (\n
\n {!this.props.noInput ? quote : null}\n
\n {!this.props.disabled ?\n <>\n {this.props.onAttachFile && !this.state.audioRec ?\n <>\n {e.preventDefault(); this.attachImage.click();}} title={formatMessage(messages.icon_title_add_image)}>\n photo\n \n {e.preventDefault(); this.attachFile.click();}} title={formatMessage(messages.icon_title_attach_file)}>\n attach_file\n \n \n :\n null}\n {this.props.noInput ?\n (quote ||
) :\n (this.state.audioRec ?\n (
}>\n this.props.onKeyPress(true)}\n onDeleted={_ => this.setState({audioRec: false})}\n onFinished={this.handleAttachAudio}/>\n ) :\n