Build 9945bc5f7

This commit is contained in:
Christian P. MOMON 2020-03-28 11:49:11 +01:00 committed by root
commit f024b4a3c1
45 changed files with 58209 additions and 0 deletions

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<path opacity="0.9" fill="#13A354" enable-background="new " d="M256,55.05c-41.43,0-75.02,33.59-75.02,75.02v100.89l150.04-81.8
v-19.09C331.02,88.64,297.43,55.05,256,55.05z"/>
<path opacity="0.9" fill="#13A354" enable-background="new " d="M237.46,444.93L237.46,444.93z"/>
<path opacity="0.9" fill="#13A354" enable-background="new " d="M274.54,444.93L274.54,444.93z"/>
<path opacity="0.9" fill="#13A354" enable-background="new " d="M274.54,444.93c62.37-8.99,110.29-62.66,110.29-127.51
l-26.71,0.79c0,56.4-45.72,102.12-102.12,102.12c-44.12,0-81.71-27.98-95.97-67.17l-0.001-0.002l27.46-14.971l0.001,0.003
c11.71,26.19,37.98,44.43,68.51,44.43c41.43,0,75.02-33.59,75.02-75.02l0.001-47.667L481.5,177.89l-22.98-42.14L30.5,369.11
l22.98,42.14l83.149-45.333l0.001,0.003c16.91,41.62,54.96,72.39,100.83,79.01v27.24h-73.4c-10.41,0-18.85,8.44-18.85,18.85v-2.93
c0,10.42,8.44,18.86,18.85,18.86h183.88c10.41,0,18.85-8.44,18.85-18.86v2.93c0-10.41-8.44-18.85-18.85-18.85h-73.4V444.93z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<g id="Layer_2" display="none">
<rect x="-109.5" y="-86.5" display="inline" stroke="#000000" stroke-miterlimit="10" width="721" height="687"/>
</g>
<path fill="#FFB000" d="M430.81,103.5H81.19c-15.31,0-27.69,12.38-27.69,27.69v264.56c0,15.3,12.38,27.69,27.69,27.69h55.37v83.06
l124.6-83.06h169.65c15.31,0,27.69-12.39,27.69-27.69V131.19C458.5,115.88,446.12,103.5,430.81,103.5z"/>
<line fill="none" x1="349.5" y1="241.48" x2="349.5" y2="288.23"/>
<line fill="none" x1="162.5" y1="288.23" x2="162.5" y2="241.48"/>
</svg>

After

Width:  |  Height:  |  Size: 988 B

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<g opacity="0.9">
<g>
<g>
<path fill="#13A354" d="M170.907,136.328c-12.249,5.827-22.271,21.695-22.271,35.259l-0.001,168.823
c0,13.565,10.022,29.431,22.271,35.259l153.775,73.163c12.249,5.827,22.271-0.502,22.271-14.067l0.002-357.53
c0-13.565-10.022-19.895-22.271-14.067L170.907,136.328z"/>
</g>
</g>
</g>
<g opacity="0.9">
<g>
<g>
<g>
<path fill="#13A354" d="M67.18,171.09c0-13.565,11.098-24.663,24.663-24.663h6.734c13.565,0,24.663,11.098,24.663,24.663V340.91
c0,13.565-11.098,24.663-24.663,24.663h-6.734c-13.565,0-24.663-11.098-24.663-24.663C67.18,340.91,67.18,171.09,67.18,171.09z"
/>
</g>
</g>
</g>
</g>
<path opacity="0.9" fill="#13A354" enable-background="new " d="M424.835,406.492L403.143,384.8
c71.02-71.02,71.019-186.579,0.001-257.599l21.693-21.693C507.818,188.49,507.818,323.511,424.835,406.492z"/>
<path opacity="0.9" fill="#13A354" enable-background="new " d="M382.838,362.074l-21.693-21.693
c46.527-46.527,46.527-122.233,0.001-168.764l21.693-21.693C441.327,208.415,441.327,303.586,382.838,362.074z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,44 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M3245 6924 c-230 -22 -403 -51 -577 -94 -1229 -307 -2191 -1269
-2498 -2498 -30 -123 -60 -282 -82 -442 -17 -128 -17 -652 0 -780 76 -553 226
-984 498 -1422 510 -824 1365 -1403 2314 -1567 235 -41 302 -46 600 -46 298 0
365 5 600 46 949 164 1804 743 2314 1567 272 438 422 869 498 1422 17 128 17
652 0 780 -88 645 -296 1171 -654 1652 -564 758 -1367 1229 -2323 1364 -105
14 -594 27 -690 18z m559 -75 c553 -44 1107 -241 1585 -566 185 -126 309 -229
487 -407 281 -282 462 -531 638 -882 255 -509 369 -1057 344 -1657 -29 -692
-275 -1352 -719 -1923 -106 -137 -392 -426 -526 -532 -515 -406 -1066 -639
-1718 -724 -134 -17 -656 -17 -790 0 -652 85 -1203 318 -1718 724 -134 106
-420 395 -526 532 -444 571 -690 1231 -719 1923 -21 502 54 959 229 1400 122
308 301 614 511 877 105 130 374 399 504 504 524 420 1161 678 1810 732 224
18 368 18 608 -1z"/>
<path d="M4199 6540 c-103 -18 -191 -76 -229 -151 -39 -75 -42 -136 -39 -874
2 -701 2 -711 -19 -776 -39 -118 -103 -189 -210 -230 -80 -31 -265 -38 -347
-14 -177 51 -255 131 -288 295 -13 64 -15 180 -10 810 6 803 9 755 -49 820
-76 84 -161 110 -351 110 -167 0 -235 -10 -366 -52 -350 -112 -616 -367 -711
-683 -51 -169 -60 -312 -60 -992 l0 -542 -83 -39 c-252 -118 -482 -353 -631
-645 -228 -447 -268 -1030 -105 -1522 137 -410 404 -754 704 -905 135 -68 229
-91 375 -91 184 0 257 34 277 129 9 40 11 3221 3 3822 -5 385 -1 446 41 607
25 93 77 196 131 258 49 56 145 104 222 112 l58 6 -3 -634 c-4 -721 -7 -697
78 -868 113 -229 305 -340 643 -371 188 -18 526 -8 645 18 173 39 278 88 376
179 96 89 157 199 195 353 18 70 19 115 15 699 l-3 624 69 -5 c76 -6 157 -37
210 -82 68 -58 129 -179 158 -315 35 -167 37 -312 30 -2171 -3 -1004 -7 -1897
-8 -1985 -1 -186 11 -246 67 -311 l34 -40 -63 -47 c-35 -25 -104 -70 -152 -99
l-88 -53 -317 -3 -317 -3 -12 23 c-35 69 -138 141 -264 184 -74 25 -93 27
-245 28 -183 1 -245 -10 -356 -64 -296 -144 -264 -436 62 -551 74 -26 210 -49
290 -49 89 0 220 25 301 58 80 32 100 45 159 102 l43 41 313 -1 c337 0 378 4
476 54 122 62 480 320 502 361 9 17 35 30 99 50 434 134 750 509 885 1050 78
314 85 646 21 970 -35 173 -75 289 -160 460 -147 296 -337 496 -596 630 -58
30 -112 61 -119 70 -17 20 -17 43 -1 460 15 397 10 685 -14 825 -43 239 -118
414 -244 568 -110 134 -428 303 -691 367 -112 27 -261 38 -331 25z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="500px" height="500px" viewBox="0 0 500 500" enable-background="new 0 0 500 500" xml:space="preserve">
<circle opacity="0.9" fill="#498BEA" cx="251" cy="251" r="220.5"/>
<polyline fill="none" points="99.791,300.202 99.796,300.204 99.791,300.202 "/>
<polyline fill="none" points="99.778,300.195 99.791,300.202 99.778,300.195 "/>
<path fill="none" d="M97.411,298.878c0,0,1.015,0.564,2.368,1.316C98.08,299.25,97.411,298.878,97.411,298.878"/>
<path fill="none" d="M106.531,303.949c0,0-0.416-0.231-1.069-0.595C106.213,303.773,106.531,303.949,106.531,303.949"/>
<path fill="#23F989" d="M337.612,59.919c-4.905,0-9.316,1.517-12.945,5.058c-7.931,27.762,9.146,74.055,25.5,96.048
c6.699,9.009,12.578,12.377,17.915,12.377c7.906,0,14.623-7.388,21.066-14.776c6.442-7.388,12.609-14.776,19.408-14.776
c1.818,0,3.679,0.527,5.605,1.724c53.736,33.392-18.666,159.777-27.039,210.195c-3.151,18.973-2.259,33.045,7.249,33.045
c4.623,0,11.283-3.326,20.507-11.033c6.21-5.189,11.409-10.881,15.782-16.978c4.759-7.773,9.025-15.872,12.763-24.266
c11.227-29.939,11.15-64.966,14.293-96.686c0.981-9.898,0.979-19.504,0.091-28.832C445.025,144.13,400.642,88.453,340.794,60.12
C339.713,59.987,338.653,59.919,337.612,59.919L337.612,59.919z M209.648,56.667c-7.021,0-14.122,0.964-20.635,2.356
c-19.353,4.136-44.914,12.647-67.527,25.105c-23.729,18.412-43.419,41.78-57.523,68.549c-18.871,54.658-21.116,115.784,37.89,148.67
c-0.712-0.396-1.421-0.79-2.056-1.143c0.594,0.33,1.313,0.73,2.172,1.208l0,0l0,0c39.173,21.779,26.567,85.227,38.65,129.369
c32.037,19.636,69.719,30.954,110.049,30.954c0.739,0,1.471-0.004,2.208-0.011c16.799-6.085,29.972-15.224,33.896-26.794
c10.072-29.697-91.125-84.76-109.682-98.713c-49.417-37.156-74.483-69.395-2.836-108.562c19.88-10.867,75.456-15.07,62.608-50.012
c-9.18-24.969-65.033-47.174-31.991-73.63c9.854-7.89,52.435-8.663,43.061-27.409C240.32,61.379,225.173,56.667,209.648,56.667
L209.648,56.667z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<path fill="#00B4DF" d="M256,55.05c-41.43,0-75.02,33.59-75.02,75.02v100.89l150.04-81.8v-19.09
C331.02,88.64,297.43,55.05,256,55.05z"/>
<path fill="#FFD700" d="M237.46,444.93L237.46,444.93z"/>
<path fill="#FFD700" d="M274.54,444.93L274.54,444.93z"/>
<path fill="#00B4DF" d="M274.54,444.93c62.37-8.99,110.29-62.66,110.29-127.51l-26.71,0.79c0,56.4-45.72,102.12-102.12,102.12
c-44.12,0-81.71-27.98-95.97-67.17l-0.001-0.002l27.46-14.971l0.001,0.003c11.71,26.19,37.98,44.43,68.51,44.43
c41.43,0,75.02-33.59,75.02-75.02l0.001-47.667L481.5,177.89l-22.98-42.14L30.5,369.11l22.98,42.14l83.149-45.333l0.001,0.003
c16.91,41.62,54.96,72.39,100.83,79.01v27.24h-73.4c-10.41,0-18.85,8.44-18.85,18.85v-2.93c0,10.42,8.44,18.86,18.85,18.86h183.88
c10.41,0,18.85-8.44,18.85-18.86v2.93c0-10.41-8.44-18.85-18.85-18.85h-73.4V444.93z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<path opacity="0.9" fill="#13A354" enable-background="new " d="M256.104,59.479c63.393,0,114.783,51.39,114.783,114.783
s-51.39,114.783-114.783,114.783s-114.783-51.39-114.783-114.783S192.711,59.479,256.104,59.479z M256.104,239.852
c102.91,0,186.335,60.066,186.335,134.161s-83.425,134.161-186.335,134.161S69.769,448.108,69.769,374.013
S153.194,239.852,256.104,239.852z"/>
<path opacity="0.9" fill="#13A354" enable-background="new " d="M439.061,251.956l-33.312-22.57
c39.665-56.785,25.166-137.337-26.215-173.23l22.57-32.313C487.432,83.446,499.041,166.086,439.061,251.956z"/>
<path opacity="0.9" fill="#13A354" enable-background="new " d="M111.561,23.827l22.593,32.297
c-51.367,35.93-68.125,116.506-28.431,173.255L73.426,251.97C12.513,164.889,24.48,84.74,111.561,23.827z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,469 @@
@charset "UTF-8";
html, body {
background-color: #2c2c2c;
color: #bbb;
font-family: "Segoe UI", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif;
margin: 0;
overflow: hidden;
height: 100%; }
#container {
height: 100%; }
.channel-root-container {
text-size: 16px;
margin-left: 2px;
background-color: #1c1c1c;
border: 1px solid #555;
float: left;
border-radius: 3px;
overflow-x: hidden;
overflow-y: auto; }
.toolbar-horizontal ~ .channel-root-container {
margin-top: 2px;
width: calc(59% - 6px);
height: calc(98% - 38px); }
.toolbar-vertical ~ .channel-root-container {
margin-top: 1%;
width: calc(59% - 6px);
height: calc(98% - 6px); }
.chat {
margin-right: 2px;
float: left; }
.toolbar-horizontal ~ .chat {
margin-top: 2px;
margin-left: 1%;
width: 39%;
height: calc(98% - 38px); }
.toolbar-vertical ~ .chat {
margin-top: 1%;
margin-left: 2px;
width: calc(39% - 36px);
height: calc(98% - 4px); }
.log {
background-color: #1c1c1c;
height: calc(100% - 42px);
padding: 5px;
border: 1px #555 solid;
border-radius: 3px;
overflow-x: hidden;
overflow-y: scroll; }
.branch img {
height: 19px; }
.branch {
float: left;
padding-top: 3px;
padding-bottom: 3px;
background-color: #1c1c1c; }
.channel-sub {
margin-left: 9px;
border-left: 1px transparent solid;
padding-left: 9px; }
.channel-wrapper:nth-last-child(n + 2) > .branch:not(:empty) + .channel-sub {
border-left: 1px #555 solid; }
.channel-tree,
.user-wrapper {
margin-left: 9px; }
.channel-tree,
.user-tree {
float: left; }
.channel-tree::before,
.user-tree::before {
content: "";
display: block;
position: relative;
width: 9px;
border-left: 1px #555 solid;
border-bottom: 1px #555 solid;
height: 14px; }
.channel-wrapper:nth-last-child(n + 2) > .channel-tree:after,
.user-wrapper:nth-last-child(n + 2) .user-tree:after {
content: "";
display: block;
position: relative;
width: 0px;
border-left: 1px #555 solid;
height: 14px; }
.user {
margin-left: 9px; }
.user-avatar, .user-talk {
vertical-align: middle; }
.user-avatar-talk-on {
filter: drop-shadow(1px 1px 1px green) drop-shadow(1px -1px 1px green) drop-shadow(-1px 1px 1px green) drop-shadow(-1px -1px 1px green); }
.user-avatar-talk-whisper {
filter: drop-shadow(1px 1px 1px purple) drop-shadow(1px -1px 1px purple) drop-shadow(-1px 1px 1px purple) drop-shadow(-1px -1px 1px purple); }
.user-avatar-talk-shout {
filter: drop-shadow(1px 1px 1px cyan) drop-shadow(1px -1px 1px cyan) drop-shadow(-1px 1px 1px cyan) drop-shadow(-1px -1px 1px cyan); }
.user-status, .channel-status {
float: right; }
.user, .channel {
height: 23px;
line-height: 23px;
padding: 2px;
border: 1px solid transparent; }
.selected {
background-color: #557 !important;
border: 1px solid #777;
border-radius: 3px; }
.user:hover, .channel:hover {
background-color: #555; }
.thisClient {
font-weight: bold; }
.currentChannel {
font-weight: bold; }
.user-status img, .channel-status img {
margin-top: 2px;
width: 19px;
height: 19px; }
.channel img, .user img {
width: auto;
height: 19px; }
.channel-name, .user-name {
display: inline; }
.channel:hover .tooltip, .user:hover .tooltip {
visibility: visible;
height: auto;
transition-delay: 1s; }
.tooltip {
visibility: hidden;
height: 0px;
background: #1c1c1c;
border: 1px solid #777;
margin-top: 16px;
margin-left: 30px;
padding: 10px;
position: absolute;
z-index: 100; }
.context-menu {
position: absolute;
z-index: 50;
background: #2c2c2c;
border: 1px solid #555;
margin: 0;
padding: 0;
list-style: none; }
.context-menu > li {
padding: 5px 20px;
padding-left: 10px; }
.context-menu > li::before {
display: inline-block;
width: 10px;
padding-right: 5px;
content: ''; }
.context-menu > li.checked::before {
content: '\2713'; }
.context-menu > li:hover {
background: #557; }
.context-menu > li.disabled {
background: #2c2c2c;
color: #555; }
.avatar-view {
position: absolute;
z-index: 200;
max-width: 90%;
max-height: 90%;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto; }
.toolbar {
display: flex;
align-items: center; }
.toolbar img {
height: 28px;
width: 28px;
padding: 2px;
border: 1px solid transparent;
border-radius: 3px; }
.toolbar img:hover {
border: 1px solid #557;
background-color: #557; }
.toolbar .tb-active {
border: 1px solid #555;
background-color: #555; }
.toolbar-horizontal {
flex-direction: row;
height: 36px;
margin-top: 4px;
margin-left: 1%;
padding-left: 5px; }
.toolbar-vertical {
flex-direction: column;
width: 36px;
margin-top: 1%;
margin-left: 4px;
padding-top: 5px;
float: left; }
.toolbar-horizontal > * {
margin-right: 5px; }
.toolbar-vertical > * {
margin-bottom: 5px; }
.divider {
display: inline-block; }
.toolbar-horizontal .divider {
height: 32px;
border-left: 1px #555 solid; }
.toolbar-vertical .divider {
width: 32px;
border-top: 1px #555 solid; }
.toolbar-horizontal .handle-horizontal {
width: auto !important;
border: none !important;
background-color: #2c2c2c !important; }
.toolbar-horizontal .handle-vertical {
display: none; }
.toolbar-vertical .handle-vertical {
height: auto !important;
border: none !important;
background-color: #2c2c2c !important; }
.toolbar-vertical .handle-horizontal {
display: none; }
.channel-icon .channel-icon-active {
display: none; }
.channel-tag {
font-weight: bold;
color: orange; }
.user-tag {
font-weight: bold;
color: green; }
#message-box {
width: 100%;
border: none;
background: none;
color: #bbb;
margin: 5px 0 5px 0;
padding: 0;
height: 20px; }
form {
margin: 0;
padding: 0; }
.message-content p {
margin: 0; }
.tb-information.disabled, .tb-record, .tb-comment {
filter: grayscale(100%); }
.dialog-header {
height: 20px;
width: calc(100% - 10px);
padding: 5px;
text-align: center;
color: #1c1c1c;
background-color: #777;
border-bottom: 1px solid #555; }
.dialog-footer {
width: calc(100% - 20px);
margin: 10px; }
.dialog-submit {
float: right; }
.dialog-close, .dialog-submit {
width: 45%;
font-size: 15px;
border: 1px #777 solid;
border-radius: 3px;
background-color: #1c1c1c;
color: #bbb;
padding: 1px; }
.connect-dialog table {
text-align: center;
width: 100%; }
.dialog {
position: absolute;
max-height: calc(100% - 20px);
max-width: calc(100% - 20px);
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
overflow: auto;
background-color: #2c2c2c;
color: #bbb;
border: 1px #777 solid;
box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
z-index: 20; }
.settings-dialog table {
width: 100%;
padding: 5px; }
.settings-dialog td {
width: 50%; }
.settings-dialog table select {
width: 100%; }
.settings-dialog table input {
width: 100%;
margin: 0px; }
.settings-dialog table input[type="checkbox"] {
width: auto;
margin: auto; }
.settings-dialog .mic-volume-container {
height: 10px;
border: 3px solid #bbb; }
.settings-dialog .mic-volume {
height: 100%; }
.join-dialog {
width: 100%;
height: 100%;
top: 0px;
left: 0px; }
.join-dialog .dialog-submit {
float: none;
width: 200px;
position: absolute;
top: calc(50% - 10px);
left: calc(50% - 100px); }
.connect-dialog input[type=text], select {
font-size: 15px;
border: 1px #777 solid;
border-radius: 3px;
background-color: #1c1c1c;
color: #bbb;
padding: 2px;
width: calc(100% - 8px); }
.connect-dialog input[type=password] {
font-size: 15px;
border: 1px #777 solid;
border-radius: 3px;
background-color: #1c1c1c;
color: #bbb;
padding: 2px;
width: calc(100% - 8px); }
.connection-info-dialog h3 {
margin-bottom: 5px; }
.connection-info-dialog .dialog-content {
padding-left: 20px; }
/****************/
/* Minimal view */
/****************/
.minimal .toolbar-horizontal ~ .channel-root-container {
width: calc(98% - 6px); }
.minimal .toolbar-vertical ~ .channel-root-container {
width: calc(98% - 42px); }
.minimal .handle-horizontal {
display: none; }
.minimal .handle-vertical {
display: none; }
.minimal .divider {
display: none; }
.minimal .tb-connect {
display: none; }
.minimal .tb-information {
display: none; }
.minimal .tb-record {
display: none; }
.minimal .tb-comment {
display: none; }
.minimal .tb-settings {
display: none; }
.minimal .tb-sourcecode {
display: none; }
.minimal .chat {
display: none; }
.minimal .channel-wrapper {
display: none; }
.minimal .channel {
display: none; }
.minimal .user-tree {
display: none; }
.minimal .user-wrapper {
margin-left: 0px; }
.minimal .user {
margin-left: 0px;
padding-top: 0px;
padding-bottom: 0px;
border: none;
height: 19px;
line-height: 19px; }
.minimal .user-status {
height: 19px; }
.dialog-header {
color: #000;
font-weight: bold; }

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
<path fill="#44A3F2" d="M21.521,10.146c-0.41-0.059-0.846-0.428-0.973-0.82l-0.609-1.481c-0.191-0.365-0.146-0.935,0.1-1.264
l0.99-1.318c0.246-0.33,0.227-0.854-0.047-1.162l-1.084-1.086c-0.309-0.272-0.832-0.293-1.164-0.045l-1.316,0.988
c-0.33,0.248-0.898,0.293-1.264,0.101l-1.48-0.609c-0.395-0.126-0.764-0.562-0.82-0.971L13.62,0.85
c-0.057-0.409-0.441-0.778-0.85-0.822c0,0-0.255-0.026-0.77-0.026c-0.514,0-0.769,0.026-0.769,0.026
c-0.41,0.044-0.794,0.413-0.852,0.822l-0.233,1.629c-0.058,0.409-0.427,0.845-0.82,0.971l-1.48,0.609
C7.48,4.25,6.912,4.206,6.582,3.958L5.264,2.969C4.934,2.721,4.41,2.741,4.101,3.014L3.017,4.1C2.745,4.409,2.723,4.932,2.971,5.262
L3.959,6.58c0.249,0.33,0.293,0.899,0.102,1.264L3.45,9.326c-0.125,0.393-0.562,0.762-0.971,0.82L0.85,10.377
c-0.408,0.059-0.777,0.442-0.82,0.853c0,0-0.027,0.255-0.027,0.77s0.027,0.77,0.027,0.77c0.043,0.411,0.412,0.793,0.82,0.852
l1.629,0.232c0.408,0.059,0.846,0.428,0.971,0.82l0.611,1.48c0.191,0.365,0.146,0.936-0.102,1.264l-0.988,1.318
c-0.248,0.33-0.308,0.779-0.132,0.994c0.175,0.217,0.677,0.752,0.678,0.754c0.001,0.002,0.171,0.156,0.375,0.344
c0.204,0.188,1.042,0.449,1.372,0.203l1.317-0.99c0.33-0.246,0.898-0.293,1.264-0.1l1.48,0.609c0.394,0.125,0.763,0.562,0.82,0.971
l0.233,1.629c0.058,0.408,0.441,0.779,0.852,0.822c0,0,0.255,0.027,0.769,0.027c0.515,0,0.77-0.027,0.77-0.027
c0.409-0.043,0.793-0.414,0.85-0.822l0.234-1.629c0.057-0.408,0.426-0.846,0.82-0.971l1.48-0.611
c0.365-0.191,0.934-0.146,1.264,0.102l1.318,0.99c0.332,0.246,0.854,0.227,1.164-0.047l1.082-1.084
c0.273-0.311,0.293-0.834,0.047-1.164l-0.99-1.318c-0.246-0.328-0.291-0.898-0.1-1.264l0.609-1.48
c0.127-0.393,0.562-0.762,0.973-0.82l1.627-0.232c0.41-0.059,0.779-0.441,0.822-0.852c0,0,0.027-0.255,0.027-0.77
c0-0.515-0.027-0.77-0.027-0.77c-0.043-0.41-0.412-0.794-0.822-0.853C23.147,10.377,21.521,10.146,21.521,10.146z M12,15
c-1.657,0-3-1.344-3-3c0-1.657,1.343-3,3-3s3,1.344,3,3S13.656,15,12,15z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="500px" height="500px" viewBox="0 0 500 500" enable-background="new 0 0 500 500" xml:space="preserve">
<polygon fill="#FFB000" points="183.5,304.5 399.492,171.635 426.925,207.307 165.648,408.365 53.075,261.981 88.747,234.549 "/>
</svg>

After

Width:  |  Height:  |  Size: 603 B

View File

@ -0,0 +1,3 @@
<svg height="1024" width="1024" xmlns="http://www.w3.org/2000/svg">
<path d="M512 0C229.25 0 0 229.25 0 512c0 226.25 146.688 418.125 350.156 485.812 25.594 4.688 34.938-11.125 34.938-24.625 0-12.188-0.469-52.562-0.719-95.312C242 908.812 211.906 817.5 211.906 817.5c-23.312-59.125-56.844-74.875-56.844-74.875-46.531-31.75 3.53-31.125 3.53-31.125 51.406 3.562 78.47 52.75 78.47 52.75 45.688 78.25 119.875 55.625 149 42.5 4.654-33 17.904-55.625 32.5-68.375C304.906 725.438 185.344 681.5 185.344 485.312c0-55.938 19.969-101.562 52.656-137.406-5.219-13-22.844-65.094 5.062-135.562 0 0 42.938-13.75 140.812 52.5 40.812-11.406 84.594-17.031 128.125-17.219 43.5 0.188 87.312 5.875 128.188 17.281 97.688-66.312 140.688-52.5 140.688-52.5 28 70.531 10.375 122.562 5.125 135.5 32.812 35.844 52.625 81.469 52.625 137.406 0 196.688-119.75 240-233.812 252.688 18.438 15.875 34.75 47 34.75 94.75 0 68.438-0.688 123.625-0.688 140.5 0 13.625 9.312 29.562 35.25 24.562C877.438 930 1024 738.125 1024 512 1024 229.25 794.75 0 512 0z" />
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="500px" height="500px" viewBox="0 0 500 500" enable-background="new 0 0 500 500" xml:space="preserve">
<path opacity="0.85" fill="#EA4335" enable-background="new " d="M366.566,249.441c0.229,64.494-51.64,116.898-115.929,117.123
c-64.571,0.227-117.042-51.708-117.203-116.005c-0.162-64.701,51.523-116.88,116.016-117.124
C314.081,133.191,366.336,184.951,366.566,249.441z"/>
<path opacity="0.85" fill="#EA4335" enable-background="new " d="M250,70.443c-99.165,0-179.557,80.392-179.557,179.557
S150.835,429.557,250,429.557S429.557,349.165,429.557,250S349.165,70.443,250,70.443z M250,399.837
c-83.303,0-150.82-67.518-150.82-150.82S166.697,98.196,250,98.196s150.82,67.528,150.82,150.82S333.303,399.837,250,399.837z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,28 @@
.loading-container {
position: absolute;
top: 0;
width: 100%;
height: 100%;
background-color: #2c2c2c;
z-index: 1000; }
.loading-circle {
box-sizing: border-box;
width: 80px;
height: 80px;
position: absolute;
top: calc(50% - 40px);
left: calc(50% - 40px);
border-radius: 100%;
border: 10px solid #222;
border-top-color: #888;
animation: spin 1s infinite linear; }
@keyframes spin {
100% {
transform: rotate(360deg); } }
.loaded {
top: -100%;
transition: top 1s;
transition-delay: 2s; }

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="500px" height="500px" viewBox="0 0 500 500" enable-background="new 0 0 500 500" xml:space="preserve">
<path fill="#FFB000" d="M337.29,101.836c0,46.914-37.998,84.902-84.901,84.902s-84.901-37.986-84.901-84.902
c0-46.903,37.998-84.89,84.901-84.89S337.29,54.933,337.29,101.836z"/>
<g enable-background="new ">
<path fill="#FFB000" d="M226.993,482.412c-28.762,0-52.295-13.074-52.295-41.836v-91.919c0-28.763-13.849-83.48-30.347-99.142
c-16.497-15.661-6.216-15.463,22.418-18.175l38.792-0.537c35.622,0,70.72,0.468,93.525,7.067s31.463,22.459,31.463,35.245
c0,12.785,0,46.779,0,75.542v91.919c0,28.763-23.533,41.836-52.295,41.836H226.993z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1020 B

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="501px" height="500px" viewBox="0 0 501 500" enable-background="new 0 0 501 500" xml:space="preserve">
<g>
<path fill="#00B3DD" d="M454.834,306.256l-56.578,56.578l-39.73-39.73l56.578-56.578c25.283-25.283,16.478-75.227-10.938-102.642
c-27.415-27.415-77.359-36.221-102.642-10.938l-56.578,56.578l-39.73-39.729l56.578-56.578
c45.486-45.486,129.69-35.294,179.012,14.028S500.32,260.77,454.834,306.256z"/>
<path fill="#00B3DD" d="M357.822,403.269l-57.616,57.616c-45.486,45.486-129.69,35.294-179.011-14.028
S61.68,313.332,107.166,267.846l57.616-57.617l39.73,39.73l-57.616,57.616c-25.284,25.284-16.478,75.227,10.938,102.642
c27.415,27.415,77.359,36.221,102.642,10.938l57.616-57.616L357.822,403.269z"/>
<g>
<g>
<g>
<path fill="#00B3DD" d="M199.269,358.123c-7.077-7.077-5.983-19.752,2.431-28.166L323.54,208.119
c8.414-8.414,21.089-9.507,28.166-2.431l10.661,10.661c7.077,7.077,5.983,19.752-2.431,28.166L238.097,366.353
c-8.414,8.414-21.089,9.508-28.166,2.431L199.269,358.123z"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="93a6487986f6662d71baf41fdeaf0196.png"/>
<TileColor>#da532c</TileColor>
</tile>
</msapplication>
</browserconfig>

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="141.732px" height="141.732px" viewBox="0 0 141.732 141.732" enable-background="new 0 0 141.732 141.732"
xml:space="preserve">
<path opacity="0.9" fill="#13A354" enable-background="new " d="M65.466,121.756L65.466,121.756z"/>
<path opacity="0.9" fill="#13A354" enable-background="new " d="M76.266,121.756L76.266,121.756z"/>
<path opacity="0.9" fill="#34A853" enable-background="new " d="M48.816,81.758c0,13.483,9.3,21.85,22.05,21.85
c12.067,0,21.85-9.783,21.85-21.85V67.875V35.612v-5.56c0-12.067-9.783-21.85-21.85-21.85s-22.05,9.783-22.05,21.85v37.689
C48.816,67.741,48.816,81.758,48.816,81.758z"/>
<path opacity="0.9" fill="#34A853" enable-background="new " d="M65.466,121.756v7.934H41.263c-3.032,0-5.49,2.458-5.49,5.49
v-0.941c0,3.035,2.458,5.493,5.49,5.493h59.206c3.032,0,5.49-2.458,5.49-5.493v0.941c0-3.032-2.458-5.49-5.49-5.49H76.266v-7.934
c18.165-2.619,32.122-18.135,32.122-37.023h-7.779c0,16.427-13.316,29.858-29.743,29.858c-16.387,0-29.67-13.431-29.67-29.858h-7.76
c0,18.888,13.923,34.404,32.044,37.023"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<path opacity="0.75" fill="#FF3E3E" enable-background="new " d="M256,55.05c-41.43,0-75.02,33.59-75.02,75.02v100.89
l150.04-81.8v-19.09C331.02,88.64,297.43,55.05,256,55.05z"/>
<path opacity="0.75" fill="#FF3E3E" enable-background="new " d="M237.46,444.93L237.46,444.93z"/>
<path opacity="0.75" fill="#FF3E3E" enable-background="new " d="M274.54,444.93L274.54,444.93z"/>
<path opacity="0.75" fill="#FF3E3E" enable-background="new " d="M274.54,444.93c62.37-8.99,110.29-62.66,110.29-127.51
l-26.71,0.79c0,56.4-45.72,102.12-102.12,102.12c-44.12,0-81.71-27.98-95.97-67.17l-0.001-0.002l27.46-14.971l0.001,0.003
c11.71,26.19,37.98,44.43,68.51,44.43c41.43,0,75.02-33.59,75.02-75.02l0.001-47.667L481.5,177.89l-22.98-42.14L30.5,369.11
l22.98,42.14l83.149-45.333l0.001,0.003c16.91,41.62,54.96,72.39,100.83,79.01v27.24h-73.4c-10.41,0-18.85,8.44-18.85,18.85v-2.93
c0,10.42,8.44,18.86,18.85,18.86h183.88c10.41,0,18.85-8.44,18.85-18.86v2.93c0-10.41-8.44-18.85-18.85-18.85h-73.4V444.93z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="32px" height="32px" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
<polyline fill="#7F7F7F" points="10,4 22,16 10,28 "/>
</svg>

After

Width:  |  Height:  |  Size: 525 B

View File

@ -0,0 +1,465 @@
@charset "UTF-8";
html, body {
background-color: #eee;
color: #000;
font-family: "Segoe UI", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif;
margin: 0;
overflow: hidden;
height: 100%; }
#container {
height: 100%; }
.channel-root-container {
text-size: 16px;
margin-left: 2px;
background-color: #fff;
border: 1px solid #d3d3d3;
float: left;
border-radius: 3px;
overflow-x: hidden;
overflow-y: auto; }
.toolbar-horizontal ~ .channel-root-container {
margin-top: 2px;
width: calc(59% - 6px);
height: calc(98% - 38px); }
.toolbar-vertical ~ .channel-root-container {
margin-top: 1%;
width: calc(59% - 6px);
height: calc(98% - 6px); }
.chat {
margin-right: 2px;
float: left; }
.toolbar-horizontal ~ .chat {
margin-top: 2px;
margin-left: 1%;
width: 39%;
height: calc(98% - 38px); }
.toolbar-vertical ~ .chat {
margin-top: 1%;
margin-left: 2px;
width: calc(39% - 36px);
height: calc(98% - 4px); }
.log {
background-color: #fff;
height: calc(100% - 42px);
padding: 5px;
border: 1px #d3d3d3 solid;
border-radius: 3px;
overflow-x: hidden;
overflow-y: scroll; }
.branch img {
height: 19px; }
.branch {
float: left;
padding-top: 3px;
padding-bottom: 3px;
background-color: #fff; }
.channel-sub {
margin-left: 9px;
border-left: 1px transparent solid;
padding-left: 9px; }
.channel-wrapper:nth-last-child(n + 2) > .branch:not(:empty) + .channel-sub {
border-left: 1px #d3d3d3 solid; }
.channel-tree,
.user-wrapper {
margin-left: 9px; }
.channel-tree,
.user-tree {
float: left; }
.channel-tree::before,
.user-tree::before {
content: "";
display: block;
position: relative;
width: 9px;
border-left: 1px #d3d3d3 solid;
border-bottom: 1px #d3d3d3 solid;
height: 14px; }
.channel-wrapper:nth-last-child(n + 2) > .channel-tree:after,
.user-wrapper:nth-last-child(n + 2) .user-tree:after {
content: "";
display: block;
position: relative;
width: 0px;
border-left: 1px #d3d3d3 solid;
height: 14px; }
.user {
margin-left: 9px; }
.user-avatar, .user-talk {
vertical-align: middle; }
.user-avatar-talk-on {
filter: drop-shadow(1px 1px 1px green) drop-shadow(1px -1px 1px green) drop-shadow(-1px 1px 1px green) drop-shadow(-1px -1px 1px green); }
.user-avatar-talk-whisper {
filter: drop-shadow(1px 1px 1px purple) drop-shadow(1px -1px 1px purple) drop-shadow(-1px 1px 1px purple) drop-shadow(-1px -1px 1px purple); }
.user-avatar-talk-shout {
filter: drop-shadow(1px 1px 1px cyan) drop-shadow(1px -1px 1px cyan) drop-shadow(-1px 1px 1px cyan) drop-shadow(-1px -1px 1px cyan); }
.user-status, .channel-status {
float: right; }
.user, .channel {
height: 23px;
line-height: 23px;
padding: 2px;
border: 1px solid transparent; }
.selected {
background-color: lightblue !important;
border: 1px solid #888;
border-radius: 3px; }
.user:hover, .channel:hover {
background-color: #d3d3d3; }
.thisClient {
font-weight: bold; }
.currentChannel {
font-weight: bold; }
.user-status img, .channel-status img {
margin-top: 2px;
width: 19px;
height: 19px; }
.channel img, .user img {
width: auto;
height: 19px; }
.channel-name, .user-name {
display: inline; }
.channel:hover .tooltip, .user:hover .tooltip {
visibility: visible;
height: auto;
transition-delay: 1s; }
.tooltip {
visibility: hidden;
height: 0px;
background: #fff;
border: 1px solid #888;
margin-top: 16px;
margin-left: 30px;
padding: 10px;
position: absolute;
z-index: 100; }
.context-menu {
position: absolute;
z-index: 50;
background: #eee;
border: 1px solid #d3d3d3;
margin: 0;
padding: 0;
list-style: none; }
.context-menu > li {
padding: 5px 20px;
padding-left: 10px; }
.context-menu > li::before {
display: inline-block;
width: 10px;
padding-right: 5px;
content: ''; }
.context-menu > li.checked::before {
content: '\2713'; }
.context-menu > li:hover {
background: #d3d3d3; }
.context-menu > li.disabled {
background: #eee;
color: #a9a9a9; }
.avatar-view {
position: absolute;
z-index: 200;
max-width: 90%;
max-height: 90%;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto; }
.toolbar {
display: flex;
align-items: center; }
.toolbar img {
height: 28px;
width: 28px;
padding: 2px;
border: 1px solid transparent;
border-radius: 3px; }
.toolbar img:hover {
border: 1px solid #d3d3d3;
background-color: #a9a9a9; }
.toolbar .tb-active {
border: 1px solid #fff;
background-color: #d3d3d3; }
.toolbar-horizontal {
flex-direction: row;
height: 36px;
margin-top: 4px;
margin-left: 1%;
padding-left: 5px; }
.toolbar-vertical {
flex-direction: column;
width: 36px;
margin-top: 1%;
margin-left: 4px;
padding-top: 5px;
float: left; }
.toolbar-horizontal > * {
margin-right: 5px; }
.toolbar-vertical > * {
margin-bottom: 5px; }
.divider {
display: inline-block; }
.toolbar-horizontal .divider {
height: 32px;
border-left: 1px #d3d3d3 solid; }
.toolbar-vertical .divider {
width: 32px;
border-top: 1px #d3d3d3 solid; }
.toolbar-horizontal .handle-horizontal {
width: auto !important;
border: none !important;
background-color: #eee !important; }
.toolbar-horizontal .handle-vertical {
display: none; }
.toolbar-vertical .handle-vertical {
height: auto !important;
border: none !important;
background-color: #eee !important; }
.toolbar-vertical .handle-horizontal {
display: none; }
.channel-icon .channel-icon-active {
display: none; }
.channel-tag {
font-weight: bold;
color: orange; }
.user-tag {
font-weight: bold;
color: green; }
#message-box {
width: 100%;
border: none;
background: none;
color: #000;
margin: 5px 0 5px 0;
padding: 0;
height: 20px; }
form {
margin: 0;
padding: 0; }
.message-content p {
margin: 0; }
.tb-information.disabled, .tb-record, .tb-comment {
filter: grayscale(100%); }
.dialog-header {
height: 20px;
width: calc(100% - 10px);
padding: 5px;
text-align: center;
color: #fff;
background-color: #888;
border-bottom: 1px solid #a9a9a9; }
.dialog-footer {
width: calc(100% - 20px);
margin: 10px; }
.dialog-submit {
float: right; }
.dialog-close, .dialog-submit {
width: 45%;
font-size: 15px;
border: 1px #888 solid;
border-radius: 3px;
background-color: #fff;
color: #000;
padding: 1px; }
.connect-dialog table {
text-align: center;
width: 100%; }
.dialog {
position: absolute;
max-height: calc(100% - 20px);
max-width: calc(100% - 20px);
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
overflow: auto;
background-color: #eee;
color: #000;
border: 1px #888 solid;
box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
z-index: 20; }
.settings-dialog table {
width: 100%;
padding: 5px; }
.settings-dialog td {
width: 50%; }
.settings-dialog table select {
width: 100%; }
.settings-dialog table input {
width: 100%;
margin: 0px; }
.settings-dialog table input[type="checkbox"] {
width: auto;
margin: auto; }
.settings-dialog .mic-volume-container {
height: 10px;
border: 3px solid #000; }
.settings-dialog .mic-volume {
height: 100%; }
.join-dialog {
width: 100%;
height: 100%;
top: 0px;
left: 0px; }
.join-dialog .dialog-submit {
float: none;
width: 200px;
position: absolute;
top: calc(50% - 10px);
left: calc(50% - 100px); }
.connect-dialog input[type=text], select {
font-size: 15px;
border: 1px #888 solid;
border-radius: 3px;
background-color: #fff;
color: #000;
padding: 2px;
width: calc(100% - 8px); }
.connect-dialog input[type=password] {
font-size: 15px;
border: 1px #888 solid;
border-radius: 3px;
background-color: #fff;
color: #000;
padding: 2px;
width: calc(100% - 8px); }
.connection-info-dialog h3 {
margin-bottom: 5px; }
.connection-info-dialog .dialog-content {
padding-left: 20px; }
/****************/
/* Minimal view */
/****************/
.minimal .toolbar-horizontal ~ .channel-root-container {
width: calc(98% - 6px); }
.minimal .toolbar-vertical ~ .channel-root-container {
width: calc(98% - 42px); }
.minimal .handle-horizontal {
display: none; }
.minimal .handle-vertical {
display: none; }
.minimal .divider {
display: none; }
.minimal .tb-connect {
display: none; }
.minimal .tb-information {
display: none; }
.minimal .tb-record {
display: none; }
.minimal .tb-comment {
display: none; }
.minimal .tb-settings {
display: none; }
.minimal .tb-sourcecode {
display: none; }
.minimal .chat {
display: none; }
.minimal .channel-wrapper {
display: none; }
.minimal .channel {
display: none; }
.minimal .user-tree {
display: none; }
.minimal .user-wrapper {
margin-left: 0px; }
.minimal .user {
margin-left: 0px;
padding-top: 0px;
padding-bottom: 0px;
border: none;
height: 19px;
line-height: 19px; }
.minimal .user-status {
height: 19px; }

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="500px" height="200px" viewBox="0 0 500 200" enable-background="new 0 0 500 200" xml:space="preserve">
<g>
<rect x="204" y="55" opacity="0.75" fill="#7F7F7F" enable-background="new " width="90" height="90"/>
<rect x="345" y="55" opacity="0.75" fill="#7F7F7F" enable-background="new " width="90" height="90"/>
<rect x="65" y="55" opacity="0.75" fill="#7F7F7F" enable-background="new " width="90" height="90"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 800 B

View File

@ -0,0 +1,28 @@
.loading-container {
position: absolute;
top: 0;
width: 100%;
height: 100%;
background-color: #eee;
z-index: 1000; }
.loading-circle {
box-sizing: border-box;
width: 80px;
height: 80px;
position: absolute;
top: calc(50% - 40px);
left: calc(50% - 40px);
border-radius: 100%;
border: 10px solid #ddd;
border-top-color: #999;
animation: spin 1s infinite linear; }
@keyframes spin {
100% {
transform: rotate(360deg); } }
.loaded {
top: -100%;
transition: top 1s;
transition-delay: 2s; }

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<path opacity="0.75" fill="#FF3E3E" enable-background="new " d="M256.104,59.479c63.393,0,114.783,51.39,114.783,114.783
s-51.39,114.783-114.783,114.783s-114.783-51.39-114.783-114.783S192.711,59.479,256.104,59.479z M256.104,239.852
c102.91,0,186.335,60.066,186.335,134.161s-83.425,134.161-186.335,134.161S69.769,448.108,69.769,374.013
S153.194,239.852,256.104,239.852z"/>
<path opacity="0.01" fill="#FF3E3E" enable-background="new " d="M439.061,251.956l-33.312-22.57
c39.665-56.785,25.166-137.337-26.215-173.23l22.57-32.313C487.432,83.446,499.041,166.086,439.061,251.956z"/>
<path opacity="0.01" fill="#FF3E3E" enable-background="new " d="M111.561,23.827l22.593,32.297
c-51.367,35.93-68.125,116.506-28.431,173.255L73.426,251.97C12.513,164.889,24.48,84.74,111.561,23.827z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="2px" height="30px" xml:space="preserve">
</svg>

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

92
config.js Normal file
View File

@ -0,0 +1,92 @@
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports) {
'use strict';
// Note: You probably do not want to change any values in here because this
// file might need to be updated with new default values for new
// configuration options. Use the [config.local.js] file instead!
window.mumbleWebConfig = {
// Which fields to show on the Connect to Server dialog
'connectDialog': {
'address': true,
'port': true,
'token': true,
'username': true,
'password': true,
'channelName': false
},
// Default values for user settings
// You can see your current value by typing `localStorage.getItem('mumble.$setting')` in the web console.
'settings': {
'voiceMode': 'vad', // one of 'cont' (Continuous), 'ptt' (Push-to-Talk), 'vad' (Voice Activity Detection)
'pttKey': 'ctrl + shift',
'vadLevel': 0.3,
'toolbarVertical': false,
'showAvatars': 'always', // one of 'always', 'own_channel', 'linked_channel', 'minimal_only', 'never'
'userCountInChannelName': false,
'audioBitrate': 40000, // bits per second
'samplesPerPacket': 960
},
// Default values (can be changed by passing a query parameter of the same name)
'defaults': {
// Connect Dialog
'address': window.location.hostname,
'port': '443',
'token': '',
'username': '',
'password': '',
'joinDialog': false, // replace whole dialog with single "Join Conference" button
'matrix': false, // enable Matrix Widget support (mostly auto-detected; implies 'joinDialog')
'avatarurl': '', // download and set the user's Mumble avatar to the image at this URL
// General
'theme': 'MetroMumbleLight'
}
};
/***/ })
/******/ ]);

9
config.local.js Normal file
View File

@ -0,0 +1,9 @@
// You can overwrite the default configuration values set in [config.js] here.
// There should never be any required changes to this file and you can always
// simply copy it over when updating to a new version.
let config = window.mumbleWebConfig // eslint-disable-line no-unused-vars
// E.g. changing default address and theme:
// config.defaults.address = 'voice.example.com'
// config.defaults.theme = 'MetroMumbleDark'

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="32px" height="32px" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
<polyline fill="#7F7F7F" points="18.5,7.5 18.5,24.5 1.5,24.5 "/>
</svg>

After

Width:  |  Height:  |  Size: 536 B

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<g opacity="0.75">
<path fill="#FF3E3E" d="M168.46,169.386c0-12.6-10.309-22.909-22.909-22.909h-10.19c-12.6,0-22.909,10.309-22.909,22.909v21.048
v53.296l56.008-28.068V169.386z"/>
</g>
<path opacity="0.75" fill="#FF3E3E" enable-background="new " d="M391.982,103.627l-198.147,99.316l-0.001-33.063
c0-12.6,9.309-27.338,20.687-32.751l156.772-74.583c11.379-5.413,20.687,0.079,20.687,12.203L391.982,103.627z"/>
<path opacity="0.75" fill="#FF3E3E" enable-background="new " d="M193.835,297.054v44.058c0,12.6,9.309,27.338,20.687,32.751
l156.771,74.583c11.379,5.413,20.687-0.467,20.687-13.067l0.002-237.018l73.56-35.201l-19.709-39.323L46.46,324.009l19.709,39.323
l46.282-24.613v4.721c0,12.6,10.309,22.909,22.909,22.909h10.19c12.6,0,22.909-10.309,22.909-22.909v-32.799L193.835,297.054z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<path opacity="0.9" fill="#9B59B6" d="M256.104,59.479c63.393,0,114.783,51.39,114.783,114.783s-51.39,114.783-114.783,114.783
s-114.783-51.39-114.783-114.783S192.711,59.479,256.104,59.479z M256.104,239.852c102.91,0,186.335,60.066,186.335,134.161
s-83.425,134.161-186.335,134.161S69.769,448.108,69.769,374.013S153.194,239.852,256.104,239.852z"/>
<path opacity="0.9" fill="#9B59B6" d="M439.061,251.956l-33.312-22.57c39.665-56.785,25.166-137.337-26.215-173.23l22.57-32.313
C487.432,83.446,499.041,166.086,439.061,251.956z"/>
<path opacity="0.9" fill="#9B59B6" d="M111.561,23.827l22.593,32.297c-51.367,35.93-68.125,116.506-28.431,173.255L73.426,251.97
C12.513,164.889,24.48,84.74,111.561,23.827z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<g>
<path fill="#00B4DF" d="M168.46,169.386c0-12.6-10.309-22.909-22.909-22.909h-10.19c-12.6,0-22.909,10.309-22.909,22.909v21.048
v53.296l56.008-28.068V169.386z"/>
</g>
<path fill="#00B4DF" d="M391.982,103.627l-198.147,99.316l-0.001-33.063c0-12.6,9.309-27.338,20.687-32.751l156.772-74.583
c11.379-5.413,20.687,0.079,20.687,12.203L391.982,103.627z"/>
<path fill="#00B4DF" d="M193.835,297.054v44.058c0,12.6,9.309,27.338,20.687,32.751l156.771,74.583
c11.379,5.413,20.687-0.467,20.687-13.067l0.002-237.018l73.56-35.201l-19.709-39.323L46.46,324.009l19.709,39.323l46.282-24.613
v4.721c0,12.6,10.309,22.909,22.909,22.909h10.19c12.6,0,22.909-10.309,22.909-22.909v-32.799L193.835,297.054z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,17 @@
{
"name": "Mumble",
"icons": [
{
"src": "5b70c2cbbd6e9258a632c70b03381627.png",
"sizes": "192x192",
"type": "image\/png"
},
{
"src": "80250154041d2e9f6d50a91181409f21.png",
"sizes": "512x512",
"type": "image\/png"
}
],
"theme_color": "#ffffff",
"display": "standalone"
}

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<path fill="#00B4DF" d="M256.104,59.479c63.393,0,114.783,51.39,114.783,114.783s-51.39,114.783-114.783,114.783
s-114.783-51.39-114.783-114.783S192.711,59.479,256.104,59.479z M256.104,239.852c102.91,0,186.335,60.066,186.335,134.161
s-83.425,134.161-186.335,134.161S69.769,448.108,69.769,374.013S153.194,239.852,256.104,239.852z"/>
<path fill="#00B4DF" d="M439.061,251.956l-33.312-22.57c39.665-56.785,25.166-137.337-26.215-173.23l22.57-32.313
C487.432,83.446,499.041,166.086,439.061,251.956z"/>
<path fill="#00B4DF" d="M111.561,23.827l22.593,32.297c-51.367,35.93-68.125,116.506-28.431,173.255L73.426,251.97
C12.513,164.889,24.48,84.74,111.561,23.827z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="200px" height="500px" viewBox="0 0 200 500" enable-background="new 0 0 200 500" xml:space="preserve">
<g>
<rect x="55" y="206" opacity="0.75" fill="#7F7F7F" enable-background="new " width="90" height="90"/>
<rect x="55" y="65" opacity="0.75" fill="#7F7F7F" enable-background="new " width="90" height="90"/>
<rect x="55" y="345" opacity="0.75" fill="#7F7F7F" enable-background="new " width="90" height="90"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 800 B

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="141.732px" height="141.732px" viewBox="0 0 141.732 141.732" enable-background="new 0 0 141.732 141.732"
xml:space="preserve">
<path opacity="0.75" fill="#FF3E3E" enable-background="new " d="M70.866,8.202c-12.067,0-21.85,9.783-21.85,21.85v29.385
l43.7-23.825v-5.56C92.716,17.985,82.933,8.202,70.866,8.202z"/>
<path opacity="0.75" fill="#FF3E3E" enable-background="new " d="M65.466,121.756L65.466,121.756z"/>
<path opacity="0.75" fill="#FF3E3E" enable-background="new " d="M76.266,121.756L76.266,121.756z"/>
<path opacity="0.75" fill="#FF3E3E" enable-background="new " d="M76.266,121.756c18.165-2.619,32.122-18.25,32.122-37.138
l-7.779,0.23c0,16.427-13.316,29.743-29.743,29.743c-12.851,0-23.799-8.149-27.952-19.563v-0.001l7.998-4.36v0.001
c3.411,7.628,11.062,12.94,19.954,12.94c12.067,0,21.85-9.783,21.85-21.85V67.875l43.827-23.896l-6.693-12.273L5.188,99.673
l6.694,12.273l24.217-13.203v0.001c4.925,12.122,16.007,21.084,29.367,23.012v7.934H41.263c-3.032,0-5.49,2.458-5.49,5.49v-0.941
c0,3.035,2.458,5.493,5.49,5.493h59.206c3.032,0,5.49-2.458,5.49-5.493v0.941c0-3.032-2.458-5.49-5.49-5.49H76.266V121.756z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

605
index.html Normal file
View File

@ -0,0 +1,605 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!-- Favicon as generated by realfavicongenerator.net (slightly modified for webpack) -->
<link rel="apple-touch-icon" sizes="180x180" href="ee7a19054eb87597c4b8e4664823ebfd.png">
<link rel="icon" type="image/png" href="195ad531e2d729dbb80bb4524be18d78.png" sizes="32x32">
<link rel="icon" type="image/png" href="cf02aba975e911ef9823610d908b32f5.png" sizes="16x16">
<link rel="manifest" href="e72996a6d1ed5d1d7962c27c10c08fa6.json">
<link rel="mask-icon" href="18e00168e2eeff800227594e26818681.svg" color="#5bbad5">
<link rel="shortcut icon" href="7e20ba1e3b8980a164c5f557a0470919.ico">
<meta name="apple-mobile-web-app-title" content="Mumble">
<meta name="application-name" content="Mumble">
<meta name="msapplication-config" content="8b61e99b17ef88afd479b3fc990e5b9d.xml">
<meta name="theme-color" content="#ffffff">
<script src="config.js"></script>
<script src="config.local.js"></script>
<script src="theme.js"></script>
<script src="matrix.js"></script>
</head>
<body>
<div class="loading-container" data-bind="css: { loaded: true }">
<div class="loading-circle" data-bind="css: { loaded: true }"></div>
</div>
<div id="container" style="display: none" data-bind="visible: true,
css: { minimal: minimalView }">
<!-- ko with: connectDialog -->
<div class="connect-dialog dialog" data-bind="visible: visible() && !joinOnly()">
<div class="dialog-header">
Connect to Server
</div>
<form data-bind="submit: connect">
<table>
<tr data-bind="if: $root.config.connectDialog.address">
<td>Address</td>
<td><input id="address" type="text" data-bind="value: address" required></td>
</tr>
<tr data-bind="if: $root.config.connectDialog.port">
<td>Port</td>
<td><input id="port" type="text" data-bind="value: port" required></td>
</tr>
<tr data-bind="if: $root.config.connectDialog.username">
<td>Username</td>
<td><input id="username" type="text" data-bind="value: username" required></td>
</tr>
<tr data-bind="if: $root.config.connectDialog.password">
<td>Password</td>
<td><input id="password" type="password" data-bind="value: password"></td>
</tr>
<tr data-bind="if: $root.config.connectDialog.token">
<td>Tokens</td>
<td>
<input type="text" data-bind='value: tokenToAdd, valueUpdate: "afterkeydown"'>
</td>
</tr>
<tr data-bind="if: $root.config.connectDialog.token">
<td></td>
<td>
<button class="dialog-submit" type="button" data-bind="enable: selectedTokens().length > 0, click: removeSelectedTokens()">Remove</button>
<button class="dialog-submit" type="button" data-bind="enable: tokenToAdd().length > 0, click: addToken()">Add</button>
</td>
</tr>
<tr data-bind="if: $root.config.connectDialog.token, visible: tokens().length > 0">
<td></td>
<td><select id="token" multiple="multiple" height="5" data-bind="options:tokens, selectedOptions:selectedTokens"></select></td>
</tr>
<tr data-bind="if: $root.config.connectDialog.channelName">
<td>Channel</td>
<td><input id="channelName" type="text" data-bind="value: channelName"></td>
</tr>
</table>
<div class="dialog-footer">
<input class="dialog-close" type="button" data-bind="click: hide" value="Cancel">
<input class="dialog-submit" type="submit" value="Connect">
</div>
</form>
</div>
<!-- /ko -->
<!-- ko with: connectDialog -->
<div class="join-dialog dialog" data-bind="visible: visible() && joinOnly()">
<div class="dialog-header">
Mumble Voice Conference
</div>
<form data-bind="submit: connect">
<input class="dialog-submit" type="submit" value="Join Conference">
</form>
</div>
<!-- /ko -->
<!-- ko with: connectErrorDialog -->
<div class="connect-dialog error-dialog dialog" data-bind="visible: visible()">
<div class="dialog-header">
Failed to connect
</div>
<form data-bind="submit: connect">
<table>
<tr>
<td colspan=2>
<!-- ko if: type() == 0 || type() == 8 -->
The connection has been refused.
<!-- /ko -->
<!-- ko if: type() == 1 -->
The server uses an incompatible version.
<!-- /ko -->
<!-- ko if: type() == 2 -->
Your user name was rejected. Maybe try a different one?
<!-- /ko -->
<!-- ko if: type() == 3 -->
The given password is incorrect.
The user name you have chosen requires a special one.
<!-- /ko -->
<!-- ko if: type() == 4 -->
The given password is incorrect.
<!-- /ko -->
<!-- ko if: type() == 5 -->
The user name you have chosen is already in use.
<!-- /ko -->
<!-- ko if: type() == 6 -->
The server is full.
<!-- /ko -->
<!-- ko if: type() == 7 -->
The server requires you to provide a client certificate
which is not supported by this web application.
<!-- /ko -->
<br>
The server reports:
<br>
"<span class="connect-error-reason" data-bind="text: reason"></span>"
</td>
</tr>
<tr data-bind="if: type() == 2 || type() == 3 || type() == 5">
<td>Username</td>
<td><input id="username" type="text" data-bind="value: username" required></td>
</tr>
<tr data-bind="if: type() == 3 || type() == 4">
<td>Password</td>
<td><input id="password" type="password" data-bind="value: password" required></td>
</tr>
</table>
<div class="dialog-footer">
<input class="dialog-close" type="button" value="Cancel"
data-bind="click: hide, visible: !joinOnly()">
<input class="dialog-submit" type="submit" value="Retry">
</div>
</form>
</div>
<!-- /ko -->
<!-- ko with: connectionInfo -->
<div class="connection-info-dialog dialog" data-bind="visible: visible">
<div class="dialog-header">
Connection Information
</div>
<div class="dialog-content">
<h3>Version</h3>
<!-- ko with: serverVersion -->
Protocol
<span data-bind="text: major + '.' + minor + '.' + patch"></span>.
<br>
<br>
<span data-bind="text: release"></span>
<br>
<span data-bind="text: os"></span>
<span data-bind="text: osVersion"></span>
<br>
<!-- /ko -->
<!-- ko if: !serverVersion() -->
Unknown
<!-- /ko -->
<h3>Control channel</h3>
<span data-bind="text: latencyMs().toFixed(2)"></span> ms average latency
(<span data-bind="text: latencyDeviation().toFixed(2)"></span> deviation)
<br>
<br>
Remote host <span data-bind="text: remoteHost"></span>
(port <span data-bind="text: remotePort"></span>)
<br>
<h3>Audio bandwidth</h3>
Maximum <span data-bind="text: (maxBitrate()/1000).toFixed(1)"></span> kbits/s
(<span data-bind="text: (maxBandwidth()/1000).toFixed(1)"></span> kbits/s with overhead)
<br>
Current <span data-bind="text: (currentBitrate()/1000).toFixed(1)"></span> kbits/s
(<span data-bind="text: (currentBandwidth()/1000).toFixed(1)"></span> kbits/s with overhead)
<br>
Codec: <span data-bind="text: codec"></span>
</div>
<div class="dialog-footer">
<input class="dialog-close" type="button" data-bind="click: hide" value="OK">
</div>
</div>
<!-- /ko -->
<!-- ko with: settingsDialog -->
<div class="settings-dialog dialog" data-bind="visible: $data">
<div class="dialog-header">
Settings
</div>
<form data-bind="submit: $root.applySettings">
<table>
<tr>
<td>Transmission</td>
<td>
<select data-bind='value: voiceMode'>
<option value="cont">Continuous</option>
<option value="vad">Voice Activity</option>
<option value="ptt">Push To Talk</option>
</td>
</tr>
<tr data-bind="visible: voiceMode() == 'vad'">
<td colspan="2">
<div class="mic-volume-container">
<div class="mic-volume" data-bind="style: {
width: testVadLevel()*100 + '%',
background: testVadActive() ? 'green' : 'red'
}"></div>
</div>
<input type="range" min="0" max="1" step="0.01"
data-bind="value: vadLevel">
</td>
</tr>
<tr data-bind="visible: voiceMode() == 'ptt'">
<td>PTT Key</td>
<td>
<input type="button" data-bind="value: pttKeyDisplay, click: recordPttKey">
</td>
</tr>
<tr>
<td>Audio Quality</td>
<td><span data-bind="text: (audioBitrate()/1000).toFixed(1)"></span> kbit/s</td>
</tr>
<tr>
<td colspan="2">
<input type="range" min="8000" max="96000" step="8"
data-bind="value: audioBitrate, valueUpdate: 'input'">
</td>
</tr>
<tr>
<td>Audio per packet</td>
<td><span data-bind="text: msPerPacket"></span> ms</td>
</tr>
<tr>
<td colspan="2">
<input type="range" min="10" max="60" step="10"
data-bind="value: msPerPacket, valueUpdate: 'input'">
</td>
</tr>
<tr>
<td colspan="2" class="bandwidth-info">
<span data-bind="text: (totalBandwidth()/1000).toFixed(1)"></span>
kbit/s
(Audio
<span data-bind="text: (audioBitrate()/1000).toFixed(1)"></span>,
Position
<span data-bind="text: (positionBandwidth()/1000).toFixed(1)"></span>,
Overhead
<span data-bind="text: (overheadBandwidth()/1000).toFixed(1)"></span>)
</td>
</tr>
<tr>
<td>Show Avatars</td>
<td>
<select data-bind='value: showAvatars'>
<option value="always">Always</option>
<option value="own_channel">Same Channel</option>
<option value="linked_channel">Linked Channels</option>
<option value="minimal_only">Minimal View</option>
<option value="never">Never</option>
</td>
</tr>
<tr>
<td colspan="2">
<input type="checkbox" data-bind="checked: userCountInChannelName">
Show user count after channel name
</td>
</tr>
</table>
<div class="dialog-footer">
<input class="dialog-close" type="button" data-bind="click: $root.closeSettings" value="Cancel">
<input class="dialog-submit" type="submit" value="Apply">
</div>
</form>
</div>
<!-- /ko -->
<img class="avatar-view" data-bind="visible: avatarView, attr: { src: avatarView },
click: function () { avatarView(null) }"></img>
<!-- ko with: userContextMenu -->
<ul class="context-menu" data-bind="if: target,
style: { left: posX() + 'px',
top: posY() + 'px' }">
<!-- ko with: target -->
<li data-bind="css: { disabled: !canChangeMute() }">
Mute
</li>
<li data-bind="css: { disabled: !canChangeDeafen() }">
Deafen
</li>
<li data-bind="css: { disabled: !canChangePrioritySpeaker() }">
Priority Speaker
</li>
<li data-bind="css: { disabled: !canLocalMute() }">
Local Mute
</li>
<li data-bind="css: { disabled: !canIgnoreMessages() }">
Ignore Messages
</li>
<li data-bind="css: { disabled: !canChangeComment() }, visible: comment">
View Comment
</li>
<!-- ko if: $data === $root.thisUser() -->
<li data-bind="css: { disabled: !canChangeComment() }, visible: true">
Change Comment
</li>
<!-- /ko -->
<!-- ko if: $data !== $root.thisUser() -->
<li data-bind="css: { disabled: !canChangeComment() }, visible: comment">
Reset Comment
</li>
<!-- /ko -->
<li data-bind="css: { disabled: !canChangeAvatar() }, visible: texture,
click: viewAvatar">
View Avatar
</li>
<!-- ko if: $data === $root.thisUser() -->
<li data-bind="css: { disabled: !canChangeAvatar() }, visible: true,
click: changeAvatar">
Change Avatar
</li>
<!-- /ko -->
<li data-bind="css: { disabled: !canChangeAvatar() }, visible: texture,
click: removeAvatar">
Reset Avatar
</li>
<li data-bind="css: { disabled: true }, visible: true">
Send Message
</li>
<li data-bind="css: { disabled: true }, visible: true">
Information
</li>
<li data-bind="visible: $data === $root.thisUser(),
css: { checked: selfMute },
click: toggleMute">
Self Mute
</li>
<li data-bind="visible: $data === $root.thisUser(),
css: { checked: selfDeaf },
click: toggleDeaf">
Self Deafen
</li>
<!-- ko if: $data !== $root.thisUser() -->
<li data-bind="css: { disabled: true }, visible: true">
Add Friend
</li>
<li data-bind="css: { disabled: true }, visible: false">
Remove Friend
</li>
<!-- /ko -->
<!-- /ko -->
</ul>
<!-- /ko -->
<!-- ko with: channelContextMenu -->
<ul class="context-menu" data-bind="if: target,
style: { left: posX() + 'px',
top: posY() + 'px' }">
<!-- ko with: target -->
<li data-bind="visible: users.indexOf($root.thisUser()) === -1,
css: { disabled: !canJoin() },
click: $root.requestMove.bind($root, $root.thisUser())">
Join Channel
</li>
<li data-bind="css: { disabled: !canAdd() }">
Add
</li>
<li data-bind="css: { disabled: !canEdit() }">
Edit
</li>
<li data-bind="css: { disabled: !canRemove() }">
Remove
</li>
<li data-bind="css: { disabled: !canLink() }">
Link
</li>
<li data-bind="css: { disabled: !canUnlink() }">
Unlink
</li>
<li data-bind="css: { disabled: !canUnlink() }">
Unlink All
</li>
<li data-bind="css: { disabled: true }">
Copy Mumble URL
</li>
<li data-bind="css: { disabled: true }">
Copy Mumble-Web URL
</li>
<li data-bind="css: { disabled: !canSendMessage() }">
Send Message
</li>
<!-- /ko -->
</ul>
<!-- /ko -->
<script type="text/html" id="user-tag">
<span class="user-tag" data-bind="text: name"></span>
</script>
<script type="text/html" id="channel-tag">
<span class="channel-tag" data-bind="text: name"></span>
</script>
<div class="toolbar" data-bind="css: { 'toolbar-horizontal': toolbarHorizontal(),
'toolbar-vertical': !toolbarHorizontal() }">
<img class="handle-horizontal" src="f2fc230fc7d9a9b8f6f03d342f6e94b2.svg"
data-bind="click: toggleToolbarOrientation">
<img class="handle-vertical" src="9ae3dac014f51d714254cf522602cec0.svg"
data-bind="click: toggleToolbarOrientation">
<img class="tb-connect" data-bind="visible: !connectDialog.joinOnly(),
click: connectDialog.show"
rel="connect" src="22ecf0ecde1ae2a6281265174b7fa355.svg">
<img class="tb-information" rel="information" src="82747b4bbd0cfe92292f74cd27f2763e.svg"
data-bind="click: connectionInfo.show,
css: { disabled: !thisUser() }">
<div class="divider"></div>
<img class="tb-mute" data-bind="visible: !selfMute(),
click: function () { requestMute(thisUser()) }"
rel="mute" src="8f75583a16890ab851fc3f121fc63f89.svg">
<img class="tb-unmute tb-active" data-bind="visible: selfMute,
click: function () { requestUnmute(thisUser()) }"
rel="unmute" src="f54b0be1d559b03ad8d945e988ec8ed4.svg">
<img class="tb-deaf" data-bind="visible: !selfDeaf(),
click: function () { requestDeaf(thisUser()) }"
rel="deaf" src="0ce7650c4d5a52a5323868f75588e1c7.svg">
<img class="tb-undeaf tb-active" data-bind="visible: selfDeaf,
click: function () { requestUndeaf(thisUser()) }"
rel="undeaf" src="d5ba30b381ebc262ba3871eaed9d7102.svg">
<img class="tb-record" data-bind="click: function(){}"
rel="record" src="7b86c879d50808c66816ed3338f26557.svg">
<div class="divider"></div>
<img class="tb-comment" data-bind="click: commentDialog.show"
rel="comment" src="077f1c5bd335be073c48c340b01f58bc.svg">
<div class="divider"></div>
<img class="tb-settings" data-bind="click: openSettings"
rel="settings" src="50dddae19e7bf601b168f46a1303674b.svg">
<div class="divider"></div>
<img class="tb-sourcecode" data-bind="click: openSourceCode"
rel="Source Code" src="71edeaefdc2f5a19dc84298669af6962.svg">
</div>
<div class="chat">
<script type="text/html" id="log-generic">
<span data-bind="text: value"></span>
</script>
<script type="text/html" id="log-welcome-message">
Welcome message: <span data-bind="html: message"></span>
</script>
<script type="text/html" id="log-chat-message">
<span data-bind="visible: channel">
(Channel)
</span>
<span data-bind="template: { name: 'user-tag', data: user }"></span>:
<span class="message-content" data-bind="html: message"></span>
</script>
<script type="text/html" id="log-chat-message-self">
To
<span data-bind="template: { if: $data.channel, name: 'channel-tag', data: $data.channel }">
</span><span data-bind="template: { if: $data.user, name: 'user-tag', data: $data.user }">
</span>:
<span class="message-content" data-bind="html: message"></span>
</script>
<script type="text/html" id="log-disconnect">
</script>
<div class="log" data-bind="foreach: {
data: log,
afterRender: function (e) {
[].forEach.call(e[1].getElementsByTagName('a'), function(e){e.target = '_blank'})
}
}">
<div class="log-entry">
<span class="log-timestamp" data-bind="text: $root.getTimeString()"></span>
<!-- ko template: { data: $data, name: function(l) { return 'log-' + l.type; } } -->
<!-- /ko -->
</div>
</div>
<form data-bind="submit: submitMessageBox">
<input id="message-box" type="text" data-bind="
attr: { placeholder: messageBoxHint }, textInput: messageBox">
</form>
</div>
<script type="text/html" id="channel">
<div class="channel" data-bind="
click: $root.select,
event: {
contextmenu: openContextMenu,
dblclick: $root.requestMove.bind($root, $root.thisUser())
},
css: {
selected: $root.selected() === $data,
currentChannel: users.indexOf($root.thisUser()) !== -1
}">
<div class="channel-status">
<img class="channel-description" data-bind="visible: description"
alt="description" src="077f1c5bd335be073c48c340b01f58bc.svg">
</div>
<div data-bind="if: description">
<div class="channel-description tooltip" data-bind="html: description"></div>
</div>
<img class="channel-icon" src="b78ed441778f2e4ce1201a75af76594e.svg"
data-bind="visible: !linked() && $root.thisUser().channel() !== $data">
<img class="channel-icon-active" src="b78ed441778f2e4ce1201a75af76594e.svg"
data-bind="visible: $root.thisUser().channel() === $data">
<img class="channel-icon-linked" src="86d4f1d7547270ff26f08a9271e7edcb.svg"
data-bind="visible: linked() && $root.thisUser().channel() !== $data">
<div class="channel-name">
<span data-bind="text: name"></span>
<!-- ko if: $root.settings.userCountInChannelName() && userCount() !== 0 -->
&nbsp;(<span data-bind="text: userCount()"></span>)
<!-- /ko -->
</div>
</div>
<!-- ko if: expanded -->
<!-- ko foreach: users -->
<div class="user-wrapper">
<div class="user-tree"></div>
<div class="user" data-bind="
click: $root.select,
event: {
contextmenu: openContextMenu
},
css: {
thisClient: $root.thisUser() === $data,
selected: $root.selected() === $data
}">
<div class="user-status" data-bind="attr: { title: state }">
<img class="user-comment" data-bind="visible: comment"
alt="comment" src="077f1c5bd335be073c48c340b01f58bc.svg">
<img class="user-server-mute" data-bind="visible: mute"
alt="server mute" src="296b612d2847da52749549f73d0c3664.svg">
<img class="user-suppress-mute" data-bind="visible: suppress"
alt="suppressed" src="00fd86fe12871b707998bf7214820fdd.svg">
<img class="user-self-mute" data-bind="visible: selfMute"
alt="self mute" src="9171288d67adc4805412883901d2f180.svg">
<img class="user-server-deaf" data-bind="visible: deaf"
alt="server deaf" src="e0c171776518ab302b54ccc71e59a582.svg">
<img class="user-self-deaf" data-bind="visible: selfDeaf"
alt="self deaf" src="d5ba30b381ebc262ba3871eaed9d7102.svg">
<img class="user-authenticated" data-bind="visible: uid"
alt="authenticated" src="6d73bb785aa06bf0c436ad6f7cc6262a.svg">
</div>
<div data-bind="if: comment">
<div class="user-comment tooltip" data-bind="html: comment"></div>
</div>
<!-- ko if: show_avatar() -->
<img class="user-avatar" alt="avatar"
data-bind="attr: { src: texture },
css: { 'user-avatar-talk-off': talking() == 'off',
'user-avatar-talk-on': talking() == 'on',
'user-avatar-talk-whisper': talking() == 'whisper',
'user-avatar-talk-shout': talking() == 'shout' }">
<!-- /ko -->
<!-- ko ifnot: show_avatar() -->
<img class="user-talk user-talk-off" data-bind="visible: talking() == 'off'"
alt="talk off" src="a65db861eecb8dcc62ad70fec489da3f.svg">
<img class="user-talk user-talk-on" data-bind="visible: talking() == 'on'"
alt="talk on" src="32785c1d21b0050be9168487542b8c3d.svg">
<img class="user-talk user-talk-whisper" data-bind="visible: talking() == 'whisper'"
alt="whisper" src="dbd9efebc73f884c5039cc3192a65dd8.svg">
<img class="user-talk user-talk-shout" data-bind="visible: talking() == 'shout'"
alt="shout" src="ec4d8b884ac39ef8494fb4aca6c6069f.svg">
<!-- /ko -->
<div class="user-name" data-bind="text: name"></div>
</div>
</div>
<!-- /ko -->
<!-- ko foreach: channels -->
<div class="channel-wrapper">
<!-- ko ifnot: users().length || channels().length -->
<div class="channel-tree"></div>
<!-- /ko -->
<div class="branch" data-bind="if: users().length || channels().length">
<img class="branch-open" src="d57d3d2918d0b72f0c24e9dc162c6c4a.svg"
data-bind="click: expanded.bind($data, false), visible: expanded()">
<img class="branch-closed" src="972a0ac8cf8526580a216210a364cc60.svg"
data-bind="click: expanded.bind($data, true), visible: !expanded()">
</div>
<div class="channel-sub" data-bind="template: {name: 'channel', data: $data}"></div>
</div>
<!-- /ko -->
<!-- /ko -->
</script>
<div class="channel-root-container" data-bind="if: root, visible: !minimalView()">
<div class="channel-root" data-bind="template: {name: 'channel', data: root}"></div>
</div>
<div class="channel-root-container" data-bind="if: thisUser, visible: minimalView()">
<div class="channel-root" data-bind="template: {name: 'channel', data: thisUser().channel}"></div>
</div>
</div>
</body>
<script src="index.js"></script>
</html>

52941
index.js Normal file

File diff suppressed because one or more lines are too long

493
matrix.js Normal file
View File

@ -0,0 +1,493 @@
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ({
/***/ 0:
/***/ (function(module, exports, __webpack_require__) {
'use strict';
var _classCallCheck2 = __webpack_require__(82);
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = __webpack_require__(83);
var _createClass3 = _interopRequireDefault(_createClass2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Handle messages coming from [Matrix] client if embedded as a [Widget] in some room.
// [Matrix]: https://matrix.org/
// [Widget]: https://docs.google.com/document/d/1uPF7XWY_dXTKVKV7jZQ2KmsI19wn9-kFRgQ1tFQP7wQ/edit
var MatrixWidget = function () {
function MatrixWidget() {
(0, _classCallCheck3.default)(this, MatrixWidget);
this.widgetId = null;
window.addEventListener('message', this.onMessage.bind(this));
}
(0, _createClass3.default)(MatrixWidget, [{
key: 'onMessage',
value: function onMessage(event) {
this.widgetId = this.widgetId || event.data.widgetId;
switch (event.data.api) {
case 'fromWidget':
break;
case 'toWidget':
switch (event.data.action) {
case 'capabilities':
this.sendResponse(event, {
capabilities: ['m.always_on_screen']
});
break;
}
break;
default:
break;
}
}
}, {
key: 'sendContentLoaded',
value: function sendContentLoaded() {
this.sendMessage({
action: 'content_loaded'
});
}
}, {
key: 'setAlwaysOnScreen',
value: function setAlwaysOnScreen(value) {
// Extension of main spec, see https://github.com/matrix-org/matrix-doc/issues/1354
this.sendMessage({
action: 'set_always_on_screen',
value: value, // once for spec compliance
data: { value: value // and once for Riot
} });
}
}, {
key: 'sendMessage',
value: function sendMessage(message) {
if (!this.widgetId) return;
message.api = message.api || 'fromWidget';
message.widgetId = message.widgetId || this.widgetId;
message.requestId = message.requestId || Math.random().toString(36);
window.parent.postMessage(message, '*');
}
}, {
key: 'sendResponse',
value: function sendResponse(event, response) {
event.data.response = response;
event.source.postMessage(event.data, event.origin);
}
}]);
return MatrixWidget;
}();
window.matrixWidget = new MatrixWidget();
/***/ }),
/***/ 43:
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(44);
var core = __webpack_require__(45);
var ctx = __webpack_require__(46);
var hide = __webpack_require__(48);
var has = __webpack_require__(58);
var PROTOTYPE = 'prototype';
var $export = function (type, name, source) {
var IS_FORCED = type & $export.F;
var IS_GLOBAL = type & $export.G;
var IS_STATIC = type & $export.S;
var IS_PROTO = type & $export.P;
var IS_BIND = type & $export.B;
var IS_WRAP = type & $export.W;
var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
var expProto = exports[PROTOTYPE];
var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
var key, own, out;
if (IS_GLOBAL) source = name;
for (key in source) {
// contains in native
own = !IS_FORCED && target && target[key] !== undefined;
if (own && has(exports, key)) continue;
// export native or passed
out = own ? target[key] : source[key];
// prevent global pollution for namespaces
exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
// bind timers to global for call from export context
: IS_BIND && own ? ctx(out, global)
// wrap global constructors for prevent change them in library
: IS_WRAP && target[key] == out ? (function (C) {
var F = function (a, b, c) {
if (this instanceof C) {
switch (arguments.length) {
case 0: return new C();
case 1: return new C(a);
case 2: return new C(a, b);
} return new C(a, b, c);
} return C.apply(this, arguments);
};
F[PROTOTYPE] = C[PROTOTYPE];
return F;
// make static versions for prototype methods
})(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
// export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
if (IS_PROTO) {
(exports.virtual || (exports.virtual = {}))[key] = out;
// export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
}
}
};
// type bitmap
$export.F = 1; // forced
$export.G = 2; // global
$export.S = 4; // static
$export.P = 8; // proto
$export.B = 16; // bind
$export.W = 32; // wrap
$export.U = 64; // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;
/***/ }),
/***/ 44:
/***/ (function(module, exports) {
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
? window : typeof self != 'undefined' && self.Math == Math ? self
// eslint-disable-next-line no-new-func
: Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
/***/ }),
/***/ 45:
/***/ (function(module, exports) {
var core = module.exports = { version: '2.6.11' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
/***/ }),
/***/ 46:
/***/ (function(module, exports, __webpack_require__) {
// optional / simple context binding
var aFunction = __webpack_require__(47);
module.exports = function (fn, that, length) {
aFunction(fn);
if (that === undefined) return fn;
switch (length) {
case 1: return function (a) {
return fn.call(that, a);
};
case 2: return function (a, b) {
return fn.call(that, a, b);
};
case 3: return function (a, b, c) {
return fn.call(that, a, b, c);
};
}
return function (/* ...args */) {
return fn.apply(that, arguments);
};
};
/***/ }),
/***/ 47:
/***/ (function(module, exports) {
module.exports = function (it) {
if (typeof it != 'function') throw TypeError(it + ' is not a function!');
return it;
};
/***/ }),
/***/ 48:
/***/ (function(module, exports, __webpack_require__) {
var dP = __webpack_require__(49);
var createDesc = __webpack_require__(57);
module.exports = __webpack_require__(53) ? function (object, key, value) {
return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
object[key] = value;
return object;
};
/***/ }),
/***/ 49:
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(50);
var IE8_DOM_DEFINE = __webpack_require__(52);
var toPrimitive = __webpack_require__(56);
var dP = Object.defineProperty;
exports.f = __webpack_require__(53) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
anObject(O);
P = toPrimitive(P, true);
anObject(Attributes);
if (IE8_DOM_DEFINE) try {
return dP(O, P, Attributes);
} catch (e) { /* empty */ }
if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
if ('value' in Attributes) O[P] = Attributes.value;
return O;
};
/***/ }),
/***/ 50:
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(51);
module.exports = function (it) {
if (!isObject(it)) throw TypeError(it + ' is not an object!');
return it;
};
/***/ }),
/***/ 51:
/***/ (function(module, exports) {
module.exports = function (it) {
return typeof it === 'object' ? it !== null : typeof it === 'function';
};
/***/ }),
/***/ 52:
/***/ (function(module, exports, __webpack_require__) {
module.exports = !__webpack_require__(53) && !__webpack_require__(54)(function () {
return Object.defineProperty(__webpack_require__(55)('div'), 'a', { get: function () { return 7; } }).a != 7;
});
/***/ }),
/***/ 53:
/***/ (function(module, exports, __webpack_require__) {
// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(54)(function () {
return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});
/***/ }),
/***/ 54:
/***/ (function(module, exports) {
module.exports = function (exec) {
try {
return !!exec();
} catch (e) {
return true;
}
};
/***/ }),
/***/ 55:
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(51);
var document = __webpack_require__(44).document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
return is ? document.createElement(it) : {};
};
/***/ }),
/***/ 56:
/***/ (function(module, exports, __webpack_require__) {
// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(51);
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
if (!isObject(it)) return it;
var fn, val;
if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
throw TypeError("Can't convert object to primitive value");
};
/***/ }),
/***/ 57:
/***/ (function(module, exports) {
module.exports = function (bitmap, value) {
return {
enumerable: !(bitmap & 1),
configurable: !(bitmap & 2),
writable: !(bitmap & 4),
value: value
};
};
/***/ }),
/***/ 58:
/***/ (function(module, exports) {
var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
return hasOwnProperty.call(it, key);
};
/***/ }),
/***/ 82:
/***/ (function(module, exports) {
"use strict";
exports.__esModule = true;
exports.default = function (instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
};
/***/ }),
/***/ 83:
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
var _defineProperty = __webpack_require__(84);
var _defineProperty2 = _interopRequireDefault(_defineProperty);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = function () {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
(0, _defineProperty2.default)(target, descriptor.key, descriptor);
}
}
return function (Constructor, protoProps, staticProps) {
if (protoProps) defineProperties(Constructor.prototype, protoProps);
if (staticProps) defineProperties(Constructor, staticProps);
return Constructor;
};
}();
/***/ }),
/***/ 84:
/***/ (function(module, exports, __webpack_require__) {
module.exports = { "default": __webpack_require__(85), __esModule: true };
/***/ }),
/***/ 85:
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(86);
var $Object = __webpack_require__(45).Object;
module.exports = function defineProperty(it, key, desc) {
return $Object.defineProperty(it, key, desc);
};
/***/ }),
/***/ 86:
/***/ (function(module, exports, __webpack_require__) {
var $export = __webpack_require__(43);
// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
$export($export.S + $export.F * !__webpack_require__(53), 'Object', { defineProperty: __webpack_require__(49).f });
/***/ })
/******/ });

2658
theme.js Normal file

File diff suppressed because it is too large Load Diff