├── Screenshot └── Capture.PNG ├── convo ├── assets │ ├── img │ │ ├── 2.png │ │ ├── Logo.psd │ │ ├── cry.gif │ │ ├── good.gif │ │ ├── hug.gif │ │ ├── laugh.gif │ │ ├── logo.png │ │ ├── love.gif │ │ ├── pro.png │ │ ├── pro_2.png │ │ ├── pro_4.png │ │ ├── pro_5.png │ │ ├── pro_6.png │ │ ├── pro_7.png │ │ ├── zzz.gif │ │ ├── loadcat.gif │ │ ├── logo_blue.png │ │ ├── verified.png │ │ ├── favicomatic │ │ │ ├── icon.png │ │ │ ├── favicon.ico │ │ │ ├── favicon-16x16.png │ │ │ └── favicon-32x32.png │ │ └── fileuploader-dragdrop-background2.png │ ├── fonts │ │ ├── fontello.eot │ │ ├── fontello.ttf │ │ ├── fontello.woff │ │ ├── fontello.woff2 │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── feather │ │ │ ├── feather-webfont.eot │ │ │ ├── feather-webfont.ttf │ │ │ └── feather-webfont.woff │ │ ├── fontawesome-webfont.woff2 │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ ├── glyphicons-halflings-regular.woff2 │ │ └── fontello.svg │ ├── css │ │ ├── responsive.css │ │ ├── reset.min.css │ │ ├── style_two.css │ │ ├── offline-language-english.css │ │ ├── fontello.css │ │ ├── offline-theme-slide.css │ │ ├── emojionearea.min.css │ │ └── style.css │ └── js │ │ ├── search.js │ │ ├── index.js │ │ ├── vue.js │ │ ├── ripple-button.js │ │ ├── emoji.js │ │ ├── chats.js │ │ ├── dashboard.js │ │ ├── offline.min.js │ │ ├── require.min.js │ │ └── tether.min.js └── index.html └── README.md /Screenshot/Capture.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/Screenshot/Capture.PNG -------------------------------------------------------------------------------- /convo/assets/img/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/2.png -------------------------------------------------------------------------------- /convo/assets/img/Logo.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/Logo.psd -------------------------------------------------------------------------------- /convo/assets/img/cry.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/cry.gif -------------------------------------------------------------------------------- /convo/assets/img/good.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/good.gif -------------------------------------------------------------------------------- /convo/assets/img/hug.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/hug.gif -------------------------------------------------------------------------------- /convo/assets/img/laugh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/laugh.gif -------------------------------------------------------------------------------- /convo/assets/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/logo.png -------------------------------------------------------------------------------- /convo/assets/img/love.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/love.gif -------------------------------------------------------------------------------- /convo/assets/img/pro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/pro.png -------------------------------------------------------------------------------- /convo/assets/img/pro_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/pro_2.png -------------------------------------------------------------------------------- /convo/assets/img/pro_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/pro_4.png -------------------------------------------------------------------------------- /convo/assets/img/pro_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/pro_5.png -------------------------------------------------------------------------------- /convo/assets/img/pro_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/pro_6.png -------------------------------------------------------------------------------- /convo/assets/img/pro_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/pro_7.png -------------------------------------------------------------------------------- /convo/assets/img/zzz.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/zzz.gif -------------------------------------------------------------------------------- /convo/assets/img/loadcat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/loadcat.gif -------------------------------------------------------------------------------- /convo/assets/fonts/fontello.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/fontello.eot -------------------------------------------------------------------------------- /convo/assets/fonts/fontello.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/fontello.ttf -------------------------------------------------------------------------------- /convo/assets/img/logo_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/logo_blue.png -------------------------------------------------------------------------------- /convo/assets/img/verified.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/verified.png -------------------------------------------------------------------------------- /convo/assets/fonts/fontello.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/fontello.woff -------------------------------------------------------------------------------- /convo/assets/fonts/fontello.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/fontello.woff2 -------------------------------------------------------------------------------- /convo/assets/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /convo/assets/img/favicomatic/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/favicomatic/icon.png -------------------------------------------------------------------------------- /convo/assets/img/favicomatic/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/favicomatic/favicon.ico -------------------------------------------------------------------------------- /convo/assets/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /convo/assets/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /convo/assets/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /convo/assets/fonts/feather/feather-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/feather/feather-webfont.eot -------------------------------------------------------------------------------- /convo/assets/fonts/feather/feather-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/feather/feather-webfont.ttf -------------------------------------------------------------------------------- /convo/assets/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /convo/assets/img/favicomatic/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/favicomatic/favicon-16x16.png -------------------------------------------------------------------------------- /convo/assets/img/favicomatic/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/favicomatic/favicon-32x32.png -------------------------------------------------------------------------------- /convo/assets/fonts/feather/feather-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/feather/feather-webfont.woff -------------------------------------------------------------------------------- /convo/assets/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /convo/assets/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /convo/assets/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /convo/assets/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /convo/assets/img/fileuploader-dragdrop-background2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Revisto/Convo/master/convo/assets/img/fileuploader-dragdrop-background2.png -------------------------------------------------------------------------------- /convo/assets/css/responsive.css: -------------------------------------------------------------------------------- 1 | /*Sidebar Header*/ 2 | 3 | @media (max-width: 1268px) { 4 | .user-photo { 5 | display: none; 6 | left: 130px; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Convo 2 | Web app chat messenger - Frontend 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /convo/assets/js/search.js: -------------------------------------------------------------------------------- 1 | document.querySelector('[data-search]').addEventListener('keyup', filter) 2 | 3 | function filter() { 4 | var term = document.querySelector('[data-search]').value 5 | var tag = document.querySelectorAll('[data-searchable] li ') 6 | for (i = 0; i < tag.length; i++) { 7 | if (tag[i].innerHTML.indexOf(term) !== -1) { 8 | tag[i].style.display = 'block' 9 | } else { 10 | tag[i].style.display = 'none' 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /convo/assets/js/index.js: -------------------------------------------------------------------------------- 1 | // For clicking/highlight the users on the left sidebar 2 | $('.person[data-chat=person1]').addClass('active'); 3 | 4 | $('.left .person').mousedown(function () { 5 | if ($(this).hasClass('.active')) { 6 | return false; 7 | } else { 8 | var personName = $(this).find('.name').text(); 9 | $('.left .person').removeClass('active'); 10 | $(this).addClass('active'); 11 | } 12 | }); 13 | 14 | 15 | 16 | // Side Panel switch 17 | $(".heading-compose").click(function () { 18 | $(".side-two").css({ 19 | "left": "0" 20 | }); 21 | }); 22 | 23 | $(".newMessage-back").click(function () { 24 | $(".side-two").css({ 25 | "left": "-100%" 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /convo/assets/css/reset.min.css: -------------------------------------------------------------------------------- 1 | html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0} -------------------------------------------------------------------------------- /convo/assets/js/vue.js: -------------------------------------------------------------------------------- 1 | new Vue({ 2 | el: '.container', 3 | data: function data() {return { 4 | users: [], 5 | errors: [], 6 | show: true };}, 7 | 8 | 9 | mounted: function mounted() { 10 | this.getUsers(); 11 | }, 12 | 13 | methods: { 14 | getUsers: function getUsers() {var _this = this; 15 | axios.get('https://randomuser.me/api/?results=3'). 16 | then(function (response) { 17 | console.log(JSON.stringify(response.data.results)); 18 | _this.users = response.data.results; 19 | }). 20 | catch(function (e) { 21 | _this.errors.push(e); 22 | }); 23 | } }, 24 | 25 | 26 | filters: { 27 | capitalize: function capitalize(value) { 28 | if (!value) return ''; 29 | value = value.toString(); 30 | return value.charAt(0).toUpperCase() + value.slice(1); 31 | } } }); -------------------------------------------------------------------------------- /convo/assets/js/ripple-button.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | 3 | $(".ripple").on('click', function(e) { 4 | 5 | if ($(this).find('span').length === 0) { 6 | 7 | $(this).append(''); 8 | 9 | var ripple = $(this).find('span'), 10 | size = ( $(this).innerWidth() > $(this).innerHeight() ) ? $(this).innerWidth()*2 : $(this).innerHeight()*2, 11 | clickY = $(this).offset().top, 12 | clickX = $(this).offset().left, 13 | x = e.pageX - clickX, 14 | y = e.pageY - clickY; 15 | 16 | ripple.css({ 17 | 'top': y +'px', 18 | 'left': x +'px', 19 | }); 20 | 21 | ripple.animate({ 22 | 'width': size +'px', 23 | 'height': size +'px', 24 | 'margin-top': -size/2 +'px', 25 | 'margin-left': -size/2 +'px', 26 | 'opacity': 0, 27 | }, 450, function() { 28 | $(this).remove(); 29 | }); 30 | 31 | } 32 | 33 | }); 34 | 35 | }); -------------------------------------------------------------------------------- /convo/assets/css/style_two.css: -------------------------------------------------------------------------------- 1 | /*User names tags*/ 2 | 3 | .tag { 4 | font-family: "Segoe UI"; 5 | font-size: 0.77rem; 6 | color: #6e7687; 7 | background-color: #f7f7f7; 8 | border-radius: 3px; 9 | padding: 0 .5rem; 10 | line-height: 2em; 11 | display: -ms-inline-flexbox; 12 | display: inline-flex; 13 | cursor: default; 14 | font-weight: 400; 15 | -webkit-user-select: none; 16 | -moz-user-select: none; 17 | -ms-user-select: none; 18 | user-select: none; 19 | } 20 | 21 | a.tag { 22 | text-decoration: none; 23 | cursor: pointer; 24 | transition: .3s color, .3s background; 25 | } 26 | 27 | a.tag:hover { 28 | background-color: rgba(110, 118, 135, 0.2); 29 | color: inherit; 30 | } 31 | 32 | .tag-addon { 33 | display: inline-block; 34 | padding: 0 .5rem; 35 | color: inherit; 36 | text-decoration: none; 37 | background: rgba(0, 0, 0, 0.06); 38 | margin: 0 -.5rem 0 .5rem; 39 | text-align: center; 40 | min-width: 1.5rem; 41 | } 42 | 43 | .tag-addon:last-child { 44 | border-top-right-radius: 3px; 45 | border-bottom-right-radius: 3px; 46 | } 47 | 48 | .tag-addon i { 49 | vertical-align: middle; 50 | margin: 0 -.25rem; 51 | } 52 | 53 | a.tag-addon { 54 | text-decoration: none; 55 | cursor: pointer; 56 | transition: .3s color, .3s background; 57 | } 58 | 59 | a.tag-addon:hover { 60 | background: rgba(0, 0, 0, 0.16); 61 | color: inherit; 62 | } 63 | 64 | .tag-avatar { 65 | width: 1.5rem; 66 | height: 1.5rem; 67 | border-radius: 3px 0 0 3px; 68 | margin: 0 .5rem 0 -.5rem; 69 | } 70 | 71 | .ava { 72 | width: 1.5rem; 73 | height: 1.5rem; 74 | line-height: 2rem; 75 | display: inline-block; 76 | background: #ced4da no-repeat center/cover; 77 | position: relative; 78 | text-align: center; 79 | color: #868e96; 80 | font-weight: 600; 81 | vertical-align: bottom; 82 | font-size: .875rem; 83 | -webkit-user-select: none; 84 | -moz-user-select: none; 85 | -ms-user-select: none; 86 | user-select: none; 87 | } 88 | -------------------------------------------------------------------------------- /convo/assets/js/emoji.js: -------------------------------------------------------------------------------- 1 | var emojis = JSON.parse('[{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":null,"width":"72","height":"72"},{"name":"./assets/img/good.gif","width":"72","height":"72"},{"name":"./assets/img/cry.gif","width":"72","height":"72"},{"name":"./assets/img/hug.gif","width":"72","height":"72"},{"name":"./assets/img/laugh.gif","width":"72","height":"72"},{"name":"./assets/img/love.gif","width":"72","height":"72"},{"name":"./assets/img/zzz.gif","width":"72","height":"72"}]'); 2 | // Not Made to be production level I made this quickly for testing a websocket server and added the emojies for fun! 3 | // Selectors 4 | var messages = document.querySelector('.msg-container') 5 | var btn = document.querySelector('.submit') 6 | var input = document.querySelector('.input input') 7 | var emojiholder = document.querySelector('.emoji-holder') 8 | var emojiwrapper = document.querySelector('.emoji-wrapper') 9 | var emojibtn = document.querySelector('.emoji-btn') 10 | 11 | // Button/Enter Key 12 | btn.addEventListener('click', sendMessage) 13 | input.addEventListener('keyup', function (evt) { 14 | if (evt.keyCode == 13) sendMessage() 15 | }) 16 | emojibtn.addEventListener('click', function (e) { 17 | e.stopPropagation() 18 | this.classList.toggle('open') 19 | }) 20 | document.body.addEventListener('click', function () { 21 | emojibtn.classList.remove('open') 22 | }) 23 | 24 | // Messenger Functions 25 | function sendMessage() { 26 | var msg = input.value; 27 | input.value = '' 28 | writeLine(msg) 29 | } 30 | 31 | function addMessage(evt) { 32 | console.log(evt); 33 | var msg = evt.data ? JSON.parse(evt.data) : evt; 34 | writeLine(`${msg.FROM}: ${msg.MESSAGE}`) 35 | } 36 | 37 | function writeLine(text) { 38 | var message = document.createElement('div') 39 | message.classList.add('emoji-message') 40 | message.innerHTML = ' ' + text 41 | messages.appendChild(message) 42 | messages.scrollTop = messages.scrollHeight; 43 | } 44 | 45 | // Load the Emojies 46 | for (var i = 0; i < emojis.length; i++) { 47 | if (emojis[i].name == null) continue 48 | emojiwrapper.innerHTML += ` 49 | 50 | ` 51 | } 52 | 53 | // Emoji Events 54 | var emojiElements = [] 55 | setTimeout(function () { 56 | emojiElements = document.querySelectorAll('.emoji-popup .emoji-img') 57 | for (var i = 0; i < emojiElements.length; i++) { 58 | emojiElements[i].addEventListener('click', function () { 59 | input.value = `` 60 | sendMessage() 61 | emojibtn.classList.remove('open') 62 | }) 63 | } 64 | }) 65 | -------------------------------------------------------------------------------- /convo/assets/js/chats.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | 3 | var chat = { 4 | messageToSend: '', 5 | messageResponses: [ 6 | 'You remind me of my chinese friend, UG LEE', 7 | 'How do you comfort a JavaScript bug? You console it.', 8 | 'An SQL query enters a bar, approaches two tables and asks: "May I join you?"', 9 | 'What is the most used language in programming? Profanity.', 10 | 'What is the object-oriented way to become wealthy? Inheritance.' 11 | ], 12 | init: function () { 13 | this.cacheDOM(); 14 | this.bindEvents(); 15 | this.render(); 16 | }, 17 | cacheDOM: function () { 18 | this.$chatHistory = $('.msg-single'); 19 | this.$button = $('button'); 20 | this.$textarea = $('#message-to-send'); 21 | this.$chatHistoryList = this.$chatHistory.find('ul'); 22 | }, 23 | bindEvents: function () { 24 | this.$button.on('click', this.addMessage.bind(this)); 25 | this.$textarea.on('keyup', this.addMessageEnter.bind(this)); 26 | }, 27 | render: function () { 28 | this.scrollToBottom(); 29 | if (this.messageToSend.trim() !== '') { 30 | var template = Handlebars.compile($("#message-template").html()); 31 | var context = { 32 | messageOutput: this.messageToSend, 33 | time: this.getCurrentTime() 34 | }; 35 | 36 | this.$chatHistoryList.append(template(context)); 37 | this.scrollToBottom(); 38 | this.$textarea.val(''); 39 | 40 | // responses 41 | var templateResponse = Handlebars.compile($("#message-response-template").html()); 42 | var contextResponse = { 43 | response: this.getRandomItem(this.messageResponses), 44 | time: this.getCurrentTime() 45 | }; 46 | 47 | setTimeout(function () { 48 | this.$chatHistoryList.append(templateResponse(contextResponse)); 49 | this.scrollToBottom(); 50 | }.bind(this), 1500); 51 | 52 | } 53 | 54 | }, 55 | 56 | addMessage: function () { 57 | this.messageToSend = this.$textarea.val() 58 | this.render(); 59 | }, 60 | addMessageEnter: function (event) { 61 | // enter was pressed 62 | if (event.keyCode === 13) { 63 | this.addMessage(); 64 | } 65 | }, 66 | scrollToBottom: function () { 67 | this.$chatHistory.scrollTop(this.$chatHistory[0].scrollHeight); 68 | }, 69 | getCurrentTime: function () { 70 | return new Date().toLocaleTimeString(). 71 | replace(/([\d]+:[\d]{2})(:[\d]{2})(.*)/, "$1$3"); 72 | }, 73 | getRandomItem: function (arr) { 74 | return arr[Math.floor(Math.random() * arr.length)]; 75 | } 76 | 77 | }; 78 | 79 | chat.init(); 80 | 81 | var searchFilter = { 82 | options: { 83 | valueNames: ['name'] 84 | }, 85 | init: function () { 86 | var userList = new List('people-list', this.options); 87 | var noItems = $('
  • No items found
  • '); 88 | 89 | userList.on('updated', function (list) { 90 | if (list.matchingItems.length === 0) { 91 | $(list.list).append(noItems); 92 | } else { 93 | noItems.detach(); 94 | } 95 | }); 96 | } 97 | }; 98 | 99 | searchFilter.init(); 100 | 101 | })(); 102 | -------------------------------------------------------------------------------- /convo/assets/js/dashboard.js: -------------------------------------------------------------------------------- 1 | require.config({ 2 | shim: { 3 | 'bootstrap': ['jquery'], 4 | 'sparkline': ['jquery'], 5 | 'tablesorter': ['jquery'], 6 | 'vector-map': ['jquery'], 7 | 'vector-map-de': ['vector-map', 'jquery'], 8 | 'vector-map-world': ['vector-map', 'jquery'], 9 | 'core': ['bootstrap', 'jquery'], 10 | }, 11 | paths: { 12 | 'core': 'assets/js/core', 13 | 'jquery': 'assets/js/vendors/jquery-3.2.1.min', 14 | 'bootstrap': 'assets/js/vendors/bootstrap.bundle.min', 15 | 'sparkline': 'assets/js/vendors/jquery.sparkline.min', 16 | 'selectize': 'assets/js/vendors/selectize.min', 17 | 'tablesorter': 'assets/js/vendors/jquery.tablesorter.min', 18 | 'vector-map': 'assets/js/vendors/jquery-jvectormap-2.0.3.min', 19 | 'vector-map-de': 'assets/js/vendors/jquery-jvectormap-de-merc', 20 | 'vector-map-world': 'assets/js/vendors/jquery-jvectormap-world-mill', 21 | 'circle-progress': 'assets/js/vendors/circle-progress.min', 22 | } 23 | }); 24 | window.tabler = { 25 | colors: { 26 | 'blue': '#467fcf', 27 | 'blue-darkest': '#0e1929', 28 | 'blue-darker': '#1c3353', 29 | 'blue-dark': '#3866a6', 30 | 'blue-light': '#7ea5dd', 31 | 'blue-lighter': '#c8d9f1', 32 | 'blue-lightest': '#edf2fa', 33 | 'azure': '#45aaf2', 34 | 'azure-darkest': '#0e2230', 35 | 'azure-darker': '#1c4461', 36 | 'azure-dark': '#3788c2', 37 | 'azure-light': '#7dc4f6', 38 | 'azure-lighter': '#c7e6fb', 39 | 'azure-lightest': '#ecf7fe', 40 | 'indigo': '#6574cd', 41 | 'indigo-darkest': '#141729', 42 | 'indigo-darker': '#282e52', 43 | 'indigo-dark': '#515da4', 44 | 'indigo-light': '#939edc', 45 | 'indigo-lighter': '#d1d5f0', 46 | 'indigo-lightest': '#f0f1fa', 47 | 'purple': '#a55eea', 48 | 'purple-darkest': '#21132f', 49 | 'purple-darker': '#42265e', 50 | 'purple-dark': '#844bbb', 51 | 'purple-light': '#c08ef0', 52 | 'purple-lighter': '#e4cff9', 53 | 'purple-lightest': '#f6effd', 54 | 'pink': '#f66d9b', 55 | 'pink-darkest': '#31161f', 56 | 'pink-darker': '#622c3e', 57 | 'pink-dark': '#c5577c', 58 | 'pink-light': '#f999b9', 59 | 'pink-lighter': '#fcd3e1', 60 | 'pink-lightest': '#fef0f5', 61 | 'red': '#e74c3c', 62 | 'red-darkest': '#2e0f0c', 63 | 'red-darker': '#5c1e18', 64 | 'red-dark': '#b93d30', 65 | 'red-light': '#ee8277', 66 | 'red-lighter': '#f8c9c5', 67 | 'red-lightest': '#fdedec', 68 | 'orange': '#fd9644', 69 | 'orange-darkest': '#331e0e', 70 | 'orange-darker': '#653c1b', 71 | 'orange-dark': '#ca7836', 72 | 'orange-light': '#feb67c', 73 | 'orange-lighter': '#fee0c7', 74 | 'orange-lightest': '#fff5ec', 75 | 'yellow': '#f1c40f', 76 | 'yellow-darkest': '#302703', 77 | 'yellow-darker': '#604e06', 78 | 'yellow-dark': '#c19d0c', 79 | 'yellow-light': '#f5d657', 80 | 'yellow-lighter': '#fbedb7', 81 | 'yellow-lightest': '#fef9e7', 82 | 'lime': '#7bd235', 83 | 'lime-darkest': '#192a0b', 84 | 'lime-darker': '#315415', 85 | 'lime-dark': '#62a82a', 86 | 'lime-light': '#a3e072', 87 | 'lime-lighter': '#d7f2c2', 88 | 'lime-lightest': '#f2fbeb', 89 | 'green': '#5eba00', 90 | 'green-darkest': '#132500', 91 | 'green-darker': '#264a00', 92 | 'green-dark': '#4b9500', 93 | 'green-light': '#8ecf4d', 94 | 'green-lighter': '#cfeab3', 95 | 'green-lightest': '#eff8e6', 96 | 'teal': '#2bcbba', 97 | 'teal-darkest': '#092925', 98 | 'teal-darker': '#11514a', 99 | 'teal-dark': '#22a295', 100 | 'teal-light': '#6bdbcf', 101 | 'teal-lighter': '#bfefea', 102 | 'teal-lightest': '#eafaf8', 103 | 'cyan': '#17a2b8', 104 | 'cyan-darkest': '#052025', 105 | 'cyan-darker': '#09414a', 106 | 'cyan-dark': '#128293', 107 | 'cyan-light': '#5dbecd', 108 | 'cyan-lighter': '#b9e3ea', 109 | 'cyan-lightest': '#e8f6f8', 110 | 'gray': '#868e96', 111 | 'gray-darkest': '#1b1c1e', 112 | 'gray-darker': '#36393c', 113 | 'gray-dark': '#6b7278', 114 | 'gray-light': '#aab0b6', 115 | 'gray-lighter': '#dbdde0', 116 | 'gray-lightest': '#f3f4f5', 117 | 'gray-dark': '#343a40', 118 | 'gray-dark-darkest': '#0a0c0d', 119 | 'gray-dark-darker': '#15171a', 120 | 'gray-dark-dark': '#2a2e33', 121 | 'gray-dark-light': '#717579', 122 | 'gray-dark-lighter': '#c2c4c6', 123 | 'gray-dark-lightest': '#ebebec' 124 | } 125 | }; 126 | require(['core']); -------------------------------------------------------------------------------- /convo/assets/css/offline-language-english.css: -------------------------------------------------------------------------------- 1 | /* line 6, ../sass/_content.sass */ 2 | .offline-ui .offline-ui-retry:before { 3 | content: "Reconnect"; 4 | } 5 | /* line 11, ../sass/_content.sass */ 6 | .offline-ui.offline-ui-up .offline-ui-content:before { 7 | content: "Yay! Your computer is connected to the internet."; 8 | } 9 | @media (max-width: 1024px) { 10 | /* line 11, ../sass/_content.sass */ 11 | .offline-ui.offline-ui-up .offline-ui-content:before { 12 | content: "Yay! Your device is connected to the internet."; 13 | } 14 | } 15 | @media (max-width: 568px) { 16 | /* line 11, ../sass/_content.sass */ 17 | .offline-ui.offline-ui-up .offline-ui-content:before { 18 | content: "Your device is connected."; 19 | } 20 | } 21 | /* line 22, ../sass/_content.sass */ 22 | .offline-ui.offline-ui-down .offline-ui-content:before { 23 | content: "Oh oh! Your computer lost its internet connection."; 24 | } 25 | @media (max-width: 1024px) { 26 | /* line 22, ../sass/_content.sass */ 27 | .offline-ui.offline-ui-down .offline-ui-content:before { 28 | content: "Oh oh! Your device lost its internet connection."; 29 | } 30 | } 31 | @media (max-width: 568px) { 32 | /* line 22, ../sass/_content.sass */ 33 | .offline-ui.offline-ui-down .offline-ui-content:before { 34 | content: "Oops! Your device isn't connected."; 35 | } 36 | } 37 | /* line 33, ../sass/_content.sass */ 38 | .offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before { 39 | content: "Attempting to reconnect..."; 40 | } 41 | /* line 42, ../sass/_content.sass */ 42 | .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { 43 | content: "Connection seems lost. Reconnecting in " attr(data-retry-in-value) " seconds..."; 44 | } 45 | @media (max-width: 568px) { 46 | /* line 42, ../sass/_content.sass */ 47 | .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before { 48 | content: "Reconnecting in " attr(data-retry-in-value) "s..."; 49 | } 50 | } 51 | /* line 50, ../sass/_content.sass */ 52 | .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { 53 | content: "Connection seems lost. Reconnecting in " attr(data-retry-in-value) " second..."; 54 | } 55 | @media (max-width: 568px) { 56 | /* line 50, ../sass/_content.sass */ 57 | .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before { 58 | content: "Reconnecting in " attr(data-retry-in-value) "s..."; 59 | } 60 | } 61 | /* line 58, ../sass/_content.sass */ 62 | .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { 63 | content: "Connection seems lost. Reconnecting in " attr(data-retry-in-value) " minutes..."; 64 | } 65 | @media (max-width: 568px) { 66 | /* line 58, ../sass/_content.sass */ 67 | .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before { 68 | content: "Reconnecting in " attr(data-retry-in-value) "m..."; 69 | } 70 | } 71 | /* line 66, ../sass/_content.sass */ 72 | .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { 73 | content: "Connection seems lost. Reconnecting in " attr(data-retry-in-value) " minute..."; 74 | } 75 | @media (max-width: 568px) { 76 | /* line 66, ../sass/_content.sass */ 77 | .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before { 78 | content: "Reconnecting in " attr(data-retry-in-value) "m..."; 79 | } 80 | } 81 | /* line 74, ../sass/_content.sass */ 82 | .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { 83 | content: "Connection seems lost. Reconnecting in " attr(data-retry-in-value) " hours..."; 84 | } 85 | @media (max-width: 568px) { 86 | /* line 74, ../sass/_content.sass */ 87 | .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before { 88 | content: "Reconnecting in " attr(data-retry-in-value) "h..."; 89 | } 90 | } 91 | /* line 82, ../sass/_content.sass */ 92 | .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { 93 | content: "Connection seems lost. Reconnecting in " attr(data-retry-in-value) " hour..."; 94 | } 95 | @media (max-width: 568px) { 96 | /* line 82, ../sass/_content.sass */ 97 | .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before { 98 | content: "Reconnecting in " attr(data-retry-in-value) "h..."; 99 | } 100 | } 101 | /* line 90, ../sass/_content.sass */ 102 | .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { 103 | display: none; 104 | } 105 | /* line 93, ../sass/_content.sass */ 106 | .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before { 107 | content: "Connection attempt failed."; 108 | } 109 | -------------------------------------------------------------------------------- /convo/assets/css/fontello.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'fontello'; 3 | src: url('../fonts/fontello.eot?85119985'); 4 | src: url('../fonts/fontello.eot?85119985#iefix') format('embedded-opentype'), 5 | url('../fonts/fontello.woff2?85119985') format('woff2'), 6 | url('../fonts/fontello.woff?85119985') format('woff'), 7 | url('../fonts/fontello.ttf?85119985') format('truetype'), 8 | url('../fonts/fontello.svg?85119985#fontello') format('svg'); 9 | font-weight: normal; 10 | font-style: normal; 11 | } 12 | /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ 13 | /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ 14 | /* 15 | @media screen and (-webkit-min-device-pixel-ratio:0) { 16 | @font-face { 17 | font-family: 'fontello'; 18 | src: url('../font/fontello.svg?85119985#fontello') format('svg'); 19 | } 20 | } 21 | */ 22 | 23 | [class^="icon-"]:before, [class*=" icon-"]:before { 24 | font-family: "fontello"; 25 | font-style: normal; 26 | font-weight: normal; 27 | speak: none; 28 | 29 | display: inline-block; 30 | text-decoration: inherit; 31 | width: 1em; 32 | margin-right: .2em; 33 | text-align: center; 34 | /* opacity: .8; */ 35 | 36 | /* For safety - reset parent styles, that can break glyph codes*/ 37 | font-variant: normal; 38 | text-transform: none; 39 | 40 | /* fix buttons height, for twitter bootstrap */ 41 | line-height: 1em; 42 | 43 | /* Animation center compensation - margins should be symmetric */ 44 | /* remove if not needed */ 45 | margin-left: .2em; 46 | 47 | /* you can be more comfortable with increased icons size */ 48 | /* font-size: 120%; */ 49 | 50 | /* Font smoothing. That was taken from TWBS */ 51 | -webkit-font-smoothing: antialiased; 52 | -moz-osx-font-smoothing: grayscale; 53 | 54 | /* Uncomment for 3D effect */ 55 | /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ 56 | } 57 | 58 | .icon-bell:before { content: '\e800'; } /* '' */ 59 | .icon-search:before { content: '\e801'; } /* '' */ 60 | .icon-comment:before { content: '\e802'; } /* '' */ 61 | .icon-comment-inv:before { content: '\e803'; } /* '' */ 62 | .icon-flow-merge:before { content: '\e804'; } /* '' */ 63 | .icon-flow-split:before { content: '\e805'; } /* '' */ 64 | .icon-flow-parallel:before { content: '\e806'; } /* '' */ 65 | .icon-flow-cross:before { content: '\e807'; } /* '' */ 66 | .icon-article:before { content: '\e808'; } /* '' */ 67 | .icon-article-alt:before { content: '\e809'; } /* '' */ 68 | .icon-folder:before { content: '\e80a'; } /* '' */ 69 | .icon-list:before { content: '\e80b'; } /* '' */ 70 | .icon-cloud:before { content: '\e80c'; } /* '' */ 71 | .icon-layers:before { content: '\e80d'; } /* '' */ 72 | .icon-doc-inv:before { content: '\e80e'; } /* '' */ 73 | .icon-doc:before { content: '\e80f'; } /* '' */ 74 | .icon-home:before { content: '\e810'; } /* '' */ 75 | .icon-link:before { content: '\e811'; } /* '' */ 76 | .icon-attach:before { content: '\e812'; } /* '' */ 77 | .icon-lock:before { content: '\e813'; } /* '' */ 78 | .icon-lock-open:before { content: '\e814'; } /* '' */ 79 | .icon-lock-empty:before { content: '\e815'; } /* '' */ 80 | .icon-heart:before { content: '\e816'; } /* '' */ 81 | .icon-user:before { content: '\e817'; } /* '' */ 82 | .icon-comment-alt:before { content: '\e818'; } /* '' */ 83 | .icon-comment-inv-alt:before { content: '\e819'; } /* '' */ 84 | .icon-comment-alt2:before { content: '\e81a'; } /* '' */ 85 | .icon-comment-inv-alt2:before { content: '\e81b'; } /* '' */ 86 | .icon-chat:before { content: '\e81c'; } /* '' */ 87 | .icon-chat-inv:before { content: '\e81d'; } /* '' */ 88 | .icon-tag:before { content: '\e81e'; } /* '' */ 89 | .icon-tag-empty:before { content: '\e81f'; } /* '' */ 90 | .icon-lock-open-empty:before { content: '\e820'; } /* '' */ 91 | .icon-download-cloud:before { content: '\e821'; } /* '' */ 92 | .icon-upload-cloud:before { content: '\e822'; } /* '' */ 93 | .icon-pencil-neg:before { content: '\e823'; } /* '' */ 94 | .icon-pencil:before { content: '\e824'; } /* '' */ 95 | .icon-undo:before { content: '\e825'; } /* '' */ 96 | .icon-box:before { content: '\e826'; } /* '' */ 97 | .icon-cog:before { content: '\e827'; } /* '' */ 98 | .icon-calendar-alt:before { content: '\e828'; } /* '' */ 99 | .icon-mic:before { content: '\e829'; } /* '' */ 100 | .icon-volume-off:before { content: '\e82a'; } /* '' */ 101 | .icon-headphones:before { content: '\e82b'; } /* '' */ 102 | .icon-clock:before { content: '\e82c'; } /* '' */ 103 | .icon-lamp:before { content: '\e82d'; } /* '' */ 104 | .icon-resize-full:before { content: '\e82e'; } /* '' */ 105 | .icon-resize-small:before { content: '\e82f'; } /* '' */ 106 | .icon-popup:before { content: '\e830'; } /* '' */ 107 | .icon-play-circle2:before { content: '\e831'; } /* '' */ 108 | .icon-equalizer:before { content: '\e832'; } /* '' */ 109 | .icon-rain:before { content: '\e833'; } /* '' */ 110 | .icon-flash:before { content: '\e834'; } /* '' */ 111 | .icon-loop:before { content: '\e835'; } /* '' */ 112 | .icon-loop-alt:before { content: '\e836'; } /* '' */ 113 | .icon-cw:before { content: '\e837'; } /* '' */ 114 | .icon-key:before { content: '\e838'; } /* '' */ 115 | .icon-hash:before { content: '\e839'; } /* '' */ 116 | .icon-at:before { content: '\e83a'; } /* '' */ 117 | .icon-dial:before { content: '\e83b'; } /* '' */ 118 | .icon-book:before { content: '\e83c'; } /* '' */ 119 | .icon-book-alt:before { content: '\e83d'; } /* '' */ 120 | .icon-infinity:before { content: '\e83e'; } /* '' */ 121 | .icon-check:before { content: '\e83f'; } /* '' */ 122 | .icon-flash-1:before { content: '\e840'; } /* '' */ 123 | .icon-flash-outline:before { content: '\e841'; } /* '' */ 124 | .icon-globe:before { content: '\e842'; } /* '' */ 125 | .icon-flag-filled:before { content: '\e843'; } /* '' */ 126 | .icon-heart-1:before { content: '\e844'; } /* '' */ 127 | .icon-heart-filled:before { content: '\e845'; } /* '' */ 128 | .icon-user-1:before { content: '\e846'; } /* '' */ 129 | .icon-user-add-outline:before { content: '\e847'; } /* '' */ 130 | .icon-user-add:before { content: '\e848'; } /* '' */ 131 | .icon-user-delete-outline:before { content: '\e849'; } /* '' */ 132 | .icon-user-delete:before { content: '\e84a'; } /* '' */ 133 | .icon-videocam:before { content: '\e84b'; } /* '' */ 134 | .icon-picture:before { content: '\e84c'; } /* '' */ 135 | .icon-th-large-outline:before { content: '\e84d'; } /* '' */ 136 | .icon-th:before { content: '\e84e'; } /* '' */ 137 | .icon-th-list:before { content: '\e84f'; } /* '' */ 138 | .icon-ok:before { content: '\e850'; } /* '' */ 139 | .icon-bell-1:before { content: '\e851'; } /* '' */ 140 | .icon-location:before { content: '\e852'; } /* '' */ 141 | .icon-direction:before { content: '\e853'; } /* '' */ 142 | .icon-trash:before { content: '\e854'; } /* '' */ 143 | .icon-doc-1:before { content: '\e855'; } /* '' */ 144 | .icon-doc-add:before { content: '\e856'; } /* '' */ 145 | .icon-coffee:before { content: '\e857'; } /* '' */ 146 | .icon-fire-station:before { content: '\e858'; } /* '' */ 147 | .icon-twitter:before { content: '\e859'; } /* '' */ 148 | .icon-terminal:before { content: '\e85a'; } /* '' */ 149 | .icon-github:before { content: '\e85b'; } /* '' */ 150 | .icon-youtube:before { content: '\e85c'; } /* '' */ 151 | .icon-call:before { content: '\e85d'; } /* '' */ 152 | .icon-doc-new:before { content: '\e85e'; } /* '' */ 153 | .icon-videocam-1:before { content: '\e85f'; } /* '' */ 154 | .icon-bell-alt:before { content: '\f0f3'; } /* '' */ 155 | .icon-facebook-rect:before { content: '\f301'; } /* '' */ 156 | .icon-github-1:before { content: '\f308'; } /* '' */ 157 | .icon-instagram-filled:before { content: '\f31f'; } /* '' */ 158 | .icon-logout:before { content: '\e800'; } /* '' */ 159 | .icon-emo-grin:before { content: '\e80c'; } /* '' */ -------------------------------------------------------------------------------- /convo/assets/js/offline.min.js: -------------------------------------------------------------------------------- 1 | /*! offline-js 0.7.13 */ 2 | (function(){var a,b,c,d,e,f,g;d=function(a,b){var c,d,e,f;e=[];for(d in b.prototype)try{f=b.prototype[d],null==a[d]&&"function"!=typeof f?e.push(a[d]=f):e.push(void 0)}catch(g){c=g}return e},a={},null==a.options&&(a.options={}),c={checks:{xhr:{url:function(){return"/favicon.ico?_="+Math.floor(1e9*Math.random())},timeout:5e3},image:{url:function(){return"/favicon.ico?_="+Math.floor(1e9*Math.random())}},active:"xhr"},checkOnLoad:!1,interceptRequests:!0,reconnect:!0},e=function(a,b){var c,d,e,f,g,h;for(c=a,h=b.split("."),d=e=0,f=h.length;f>e&&(g=h[d],c=c[g],"object"==typeof c);d=++e);return d===h.length-1?c:void 0},a.getOption=function(b){var d,f;return f=null!=(d=e(a.options,b))?d:e(c,b),"function"==typeof f?f():f},"function"==typeof window.addEventListener&&window.addEventListener("online",function(){return setTimeout(a.confirmUp,100)},!1),"function"==typeof window.addEventListener&&window.addEventListener("offline",function(){return a.confirmDown()},!1),a.state="up",a.markUp=function(){return a.trigger("confirmed-up"),"up"!==a.state?(a.state="up",a.trigger("up")):void 0},a.markDown=function(){return a.trigger("confirmed-down"),"down"!==a.state?(a.state="down",a.trigger("down")):void 0},f={},a.on=function(b,c,d){var e,g,h,i,j;if(g=b.split(" "),g.length>1){for(j=[],h=0,i=g.length;i>h;h++)e=g[h],j.push(a.on(e,c,d));return j}return null==f[b]&&(f[b]=[]),f[b].push([d,c])},a.off=function(a,b){var c,d,e,g,h;if(null!=f[a]){if(b){for(e=0,h=[];ed;d++)h=g[d],b=h[0],c=h[1],i.push(c.call(b));return i}},b=function(a,b,c){var d,e,f,g,h;return h=function(){return a.status&&a.status<12e3?b():c()},null===a.onprogress?(d=a.onerror,a.onerror=function(){return c(),"function"==typeof d?d.apply(null,arguments):void 0},g=a.ontimeout,a.ontimeout=function(){return c(),"function"==typeof g?g.apply(null,arguments):void 0},e=a.onload,a.onload=function(){return h(),"function"==typeof e?e.apply(null,arguments):void 0}):(f=a.onreadystatechange,a.onreadystatechange=function(){return 4===a.readyState?h():0===a.readyState&&c(),"function"==typeof f?f.apply(null,arguments):void 0})},a.checks={},a.checks.xhr=function(){var c,d;d=new XMLHttpRequest,d.offline=!1,d.open("HEAD",a.getOption("checks.xhr.url"),!0),null!=d.timeout&&(d.timeout=a.getOption("checks.xhr.timeout")),b(d,a.markUp,a.markDown);try{d.send()}catch(e){c=e,a.markDown()}return d},a.checks.image=function(){var b;return b=document.createElement("img"),b.onerror=a.markDown,b.onload=a.markUp,void(b.src=a.getOption("checks.image.url"))},a.checks.down=a.markDown,a.checks.up=a.markUp,a.check=function(){return a.trigger("checking"),a.checks[a.getOption("checks.active")]()},a.confirmUp=a.confirmDown=a.check,a.onXHR=function(a){var b,c,e;return e=function(b,c){var d;return d=b.open,b.open=function(e,f,g,h,i){return a({type:e,url:f,async:g,flags:c,user:h,password:i,xhr:b}),d.apply(b,arguments)}},c=window.XMLHttpRequest,window.XMLHttpRequest=function(a){var b,d,f;return f=new c(a),e(f,a),d=f.setRequestHeader,f.headers={},f.setRequestHeader=function(a,b){return f.headers[a]=b,d.call(f,a,b)},b=f.overrideMimeType,f.overrideMimeType=function(a){return f.mimeType=a,b.call(f,a)},f},d(window.XMLHttpRequest,c),null!=window.XDomainRequest?(b=window.XDomainRequest,window.XDomainRequest=function(){var a;return a=new b,e(a),a},d(window.XDomainRequest,b)):void 0},g=function(){return a.getOption("interceptRequests")&&a.onXHR(function(c){var d;return d=c.xhr,d.offline!==!1?b(d,a.markUp,a.confirmDown):void 0}),a.getOption("checkOnLoad")?a.check():void 0},setTimeout(g,0),window.Offline=a}).call(this),function(){var a,b,c,d,e,f,g,h,i;if(!window.Offline)throw new Error("Offline Reconnect brought in without offline.js");d=Offline.reconnect={},f=null,e=function(){var a;return null!=d.state&&"inactive"!==d.state&&Offline.trigger("reconnect:stopped"),d.state="inactive",d.remaining=d.delay=null!=(a=Offline.getOption("reconnect.initialDelay"))?a:3},b=function(){var a,b;return a=null!=(b=Offline.getOption("reconnect.delay"))?b:Math.min(Math.ceil(1.5*d.delay),3600),d.remaining=d.delay=a},g=function(){return"connecting"!==d.state?(d.remaining-=1,Offline.trigger("reconnect:tick"),0===d.remaining?h():void 0):void 0},h=function(){return"waiting"===d.state?(Offline.trigger("reconnect:connecting"),d.state="connecting",Offline.check()):void 0},a=function(){return Offline.getOption("reconnect")?(e(),d.state="waiting",Offline.trigger("reconnect:started"),f=setInterval(g,1e3)):void 0},i=function(){return null!=f&&clearInterval(f),e()},c=function(){return Offline.getOption("reconnect")&&"connecting"===d.state?(Offline.trigger("reconnect:failure"),d.state="waiting",b()):void 0},d.tryNow=h,e(),Offline.on("down",a),Offline.on("confirmed-down",c),Offline.on("up",i)}.call(this),function(){var a,b,c,d,e,f;if(!window.Offline)throw new Error("Requests module brought in without offline.js");c=[],f=!1,d=function(a){return Offline.trigger("requests:capture"),"down"!==Offline.state&&(f=!0),c.push(a)},e=function(a){var b,c,d,e,f,g,h,i,j;j=a.xhr,g=a.url,f=a.type,h=a.user,d=a.password,b=a.body,j.abort(),j.open(f,g,!0,h,d),e=j.headers;for(c in e)i=e[c],j.setRequestHeader(c,i);return j.mimeType&&j.overrideMimeType(j.mimeType),j.send(b)},a=function(){return c=[]},b=function(){var b,d,f,g,h,i;for(Offline.trigger("requests:flush"),h={},b=0,f=c.length;f>b;b++)g=c[b],i=g.url.replace(/(\?|&)_=[0-9]+/,function(a,b){return"?"===b?b:""}),h[g.type.toUpperCase()+" - "+i]=g;for(d in h)g=h[d],e(g);return a()},setTimeout(function(){return Offline.getOption("requests")!==!1?(Offline.on("confirmed-up",function(){return f?(f=!1,a()):void 0}),Offline.on("up",b),Offline.on("down",function(){return f=!1}),Offline.onXHR(function(a){var b,c,e,f,g;return g=a.xhr,e=a.async,g.offline!==!1&&(f=function(){return d(a)},c=g.send,g.send=function(b){return a.body=b,c.apply(g,arguments)},e)?null===g.onprogress?(g.addEventListener("error",f,!1),g.addEventListener("timeout",f,!1)):(b=g.onreadystatechange,g.onreadystatechange=function(){return 0===g.readyState?f():4===g.readyState&&(0===g.status||g.status>=12e3)&&f(),"function"==typeof b?b.apply(null,arguments):void 0}):void 0}),Offline.requests={flush:b,clear:a}):void 0},0)}.call(this),function(){var a,b,c,d,e;if(!Offline)throw new Error("Offline simulate brought in without offline.js");for(d=["up","down"],b=0,c=d.length;c>b;b++)e=d[b],(document.querySelector("script[data-simulate='"+e+"']")||localStorage.OFFLINE_SIMULATE===e)&&(null==Offline.options&&(Offline.options={}),null==(a=Offline.options).checks&&(a.checks={}),Offline.options.checks.active=e)}.call(this),function(){var a,b,c,d,e,f,g,h,i,j,k,l,m;if(!window.Offline)throw new Error("Offline UI brought in without offline.js");b='
    ',a='',f=function(a){var b;return b=document.createElement("div"),b.innerHTML=a,b.children[0]},g=e=null,d=function(a){return k(a),g.className+=" "+a},k=function(a){return g.className=g.className.replace(new RegExp("(^| )"+a.split(" ").join("|")+"( |$)","gi")," ")},i={},h=function(a,b){return d(a),null!=i[a]&&clearTimeout(i[a]),i[a]=setTimeout(function(){return k(a),delete i[a]},1e3*b)},m=function(a){var b,c,d,e;d={day:86400,hour:3600,minute:60,second:1};for(c in d)if(b=d[c],a>=b)return e=Math.floor(a/b),[e,c];return["now",""]},l=function(){var c,h;return g=f(b),document.body.appendChild(g),null!=Offline.reconnect&&Offline.getOption("reconnect")&&(g.appendChild(f(a)),c=g.querySelector(".offline-ui-retry"),h=function(a){return a.preventDefault(),Offline.reconnect.tryNow()},null!=c.addEventListener?c.addEventListener("click",h,!1):c.attachEvent("click",h)),d("offline-ui-"+Offline.state),e=g.querySelector(".offline-ui-content")},j=function(){return l(),Offline.on("up",function(){return k("offline-ui-down"),d("offline-ui-up"),h("offline-ui-up-2s",2),h("offline-ui-up-5s",5)}),Offline.on("down",function(){return k("offline-ui-up"),d("offline-ui-down"),h("offline-ui-down-2s",2),h("offline-ui-down-5s",5)}),Offline.on("reconnect:connecting",function(){return d("offline-ui-connecting"),k("offline-ui-waiting")}),Offline.on("reconnect:tick",function(){var a,b,c;return d("offline-ui-waiting"),k("offline-ui-connecting"),a=m(Offline.reconnect.remaining),b=a[0],c=a[1],e.setAttribute("data-retry-in-value",b),e.setAttribute("data-retry-in-unit",c)}),Offline.on("reconnect:stopped",function(){return k("offline-ui-connecting offline-ui-waiting"),e.setAttribute("data-retry-in-value",null),e.setAttribute("data-retry-in-unit",null)}),Offline.on("reconnect:failure",function(){return h("offline-ui-reconnect-failed-2s",2),h("offline-ui-reconnect-failed-5s",5)}),Offline.on("reconnect:success",function(){return h("offline-ui-reconnect-succeeded-2s",2),h("offline-ui-reconnect-succeeded-5s",5)})},"complete"===document.readyState?j():null!=document.addEventListener?document.addEventListener("DOMContentLoaded",j,!1):(c=document.onreadystatechange,document.onreadystatechange=function(){return"complete"===document.readyState&&j(),"function"==typeof c?c.apply(null,arguments):void 0})}.call(this); -------------------------------------------------------------------------------- /convo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | convo 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 |
    43 | 44 | 45 | 56 | 57 | 58 |
    59 | 60 |
    61 | 62 | 63 |
    64 | 65 | 66 |
    67 | 68 |
    69 | 70 |
    71 | 72 | 73 |
    74 |
    75 |
    76 |
    77 |
    78 | 79 | 80 |
    81 | 82 |
    83 |
    84 |
    85 |
    86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 |
    97 | 98 |
    99 | 100 | 101 | 102 | 103 |
    104 | 105 | 108 | 109 |
    110 |
    111 |
      112 |
    • 113 |
      114 | 115 | kevin minion 116 | Just now 117 | Are you there bro? 118 |
    • 119 |
    • 120 |
      121 | 122 | bo jackson 123 | 124 | 3:52 AM 125 | It disappear all by itself? Dude you lying 126 |
    • 127 |
    • 128 |
      129 | 130 | michael jordan 131 | 132 | 7:08 PM 133 | Yo bro, you won't believe what amma bout 134 | to tellyou 135 |
    • 136 |
    • 137 |
      138 | 139 | jane doe 140 | 141 | 2:09 PM 142 | This is that, you know the drill 143 | 144 |
    • 145 |
    • 146 |
      147 | 148 | scrat 149 | Yesterday 150 | Where is my nut? 151 |
    • 152 |
    • 153 |
      154 | 155 | jane doe 156 | 157 | 2:09 PM 158 | This is that, you know the drill 159 | 160 |
    • 161 |
    162 |
    163 |
    164 |
    165 |
    166 | 167 | 168 |
    169 | 170 | 171 | 172 | 173 | 174 |
    175 | 176 |
    177 | 178 |
    179 | 180 | bo jackson 181 |
    182 |
    183 | Typing… 184 |
    185 |
    186 | 187 |
    188 | 189 |
    190 | 191 |
    192 | 193 |
    194 | 195 |
    196 |
    197 | 198 |
    199 | 200 | 203 | 204 |
    205 |
    206 | 207 |
      208 | 209 | 210 |
      211 | 212 |
      213 | DP 214 |
      215 | 216 |
      217 |
      218 | Dude are you up?!! 219 |
      9:55 pm
      220 |
      221 | 222 | 223 | 224 | 225 | 226 | 227 |
      228 | 229 | 230 | 244 | 245 |
    246 | 247 |
    248 |
    249 | 250 | 253 | 254 | 255 | 256 |
    257 | 258 | 259 | 260 |
    261 |
    262 |
    263 |
    264 |
    265 | 266 |
    267 | 268 |
    269 |
    270 |
    271 |
    272 |
    273 | 274 |
    275 | 276 | 277 | 278 | 279 | 280 | 293 | 294 | 312 | 313 | 314 | 315 | 325 | 326 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | -------------------------------------------------------------------------------- /convo/assets/js/require.min.js: -------------------------------------------------------------------------------- 1 | /** vim: et:ts=4:sw=4:sts=4 2 | * @license RequireJS 2.3.5 Copyright jQuery Foundation and other contributors. 3 | * Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE 4 | */ 5 | var requirejs,require,define;!function(global,setTimeout){function commentReplace(e,t){return t||""}function isFunction(e){return"[object Function]"===ostring.call(e)}function isArray(e){return"[object Array]"===ostring.call(e)}function each(e,t){if(e){var i;for(i=0;i-1&&(!e[i]||!t(e[i],i,e));i-=1);}}function hasProp(e,t){return hasOwn.call(e,t)}function getOwn(e,t){return hasProp(e,t)&&e[t]}function eachProp(e,t){var i;for(i in e)if(hasProp(e,i)&&t(e[i],i))break}function mixin(e,t,i,r){return t&&eachProp(t,function(t,n){!i&&hasProp(e,n)||(!r||"object"!=typeof t||!t||isArray(t)||isFunction(t)||t instanceof RegExp?e[n]=t:(e[n]||(e[n]={}),mixin(e[n],t,i,r)))}),e}function bind(e,t){return function(){return t.apply(e,arguments)}}function scripts(){return document.getElementsByTagName("script")}function defaultOnError(e){throw e}function getGlobal(e){if(!e)return e;var t=global;return each(e.split("."),function(e){t=t[e]}),t}function makeError(e,t,i,r){var n=new Error(t+"\nhttp://requirejs.org/docs/errors.html#"+e);return n.requireType=e,n.requireModules=r,i&&(n.originalError=i),n}function newContext(e){function t(e){var t,i;for(t=0;t0&&(e.splice(t-1,2),t-=2)}}function i(e,i,r){var n,o,a,s,u,c,d,p,f,l,h=i&&i.split("/"),m=y.map,g=m&&m["*"];if(e&&(c=(e=e.split("/")).length-1,y.nodeIdCompat&&jsSuffixRegExp.test(e[c])&&(e[c]=e[c].replace(jsSuffixRegExp,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),t(e),e=e.join("/")),r&&m&&(h||g)){e:for(a=(o=e.split("/")).length;a>0;a-=1){if(u=o.slice(0,a).join("/"),h)for(s=h.length;s>0;s-=1)if((n=getOwn(m,h.slice(0,s).join("/")))&&(n=getOwn(n,u))){d=n,p=a;break e}!f&&g&&getOwn(g,u)&&(f=getOwn(g,u),l=a)}!d&&f&&(d=f,p=l),d&&(o.splice(0,p,d),e=o.join("/"))}return getOwn(y.pkgs,e)||e}function r(e){isBrowser&&each(scripts(),function(t){if(t.getAttribute("data-requiremodule")===e&&t.getAttribute("data-requirecontext")===q.contextName)return t.parentNode.removeChild(t),!0})}function n(e){var t=getOwn(y.paths,e);if(t&&isArray(t)&&t.length>1)return t.shift(),q.require.undef(e),q.makeRequire(null,{skipMap:!0})([e]),!0}function o(e){var t,i=e?e.indexOf("!"):-1;return i>-1&&(t=e.substring(0,i),e=e.substring(i+1,e.length)),[t,e]}function a(e,t,r,n){var a,s,u,c,d=null,p=t?t.name:null,f=e,l=!0,h="";return e||(l=!1,e="_@r"+(T+=1)),c=o(e),d=c[0],e=c[1],d&&(d=i(d,p,n),s=getOwn(j,d)),e&&(d?h=r?e:s&&s.normalize?s.normalize(e,function(e){return i(e,p,n)}):-1===e.indexOf("!")?i(e,p,n):e:(d=(c=o(h=i(e,p,n)))[0],h=c[1],r=!0,a=q.nameToUrl(h))),u=!d||s||r?"":"_unnormalized"+(A+=1),{prefix:d,name:h,parentMap:t,unnormalized:!!u,url:a,originalName:f,isDefine:l,id:(d?d+"!"+h:h)+u}}function s(e){var t=e.id,i=getOwn(S,t);return i||(i=S[t]=new q.Module(e)),i}function u(e,t,i){var r=e.id,n=getOwn(S,r);!hasProp(j,r)||n&&!n.defineEmitComplete?(n=s(e)).error&&"error"===t?i(n.error):n.on(t,i):"defined"===t&&i(j[r])}function c(e,t){var i=e.requireModules,r=!1;t?t(e):(each(i,function(t){var i=getOwn(S,t);i&&(i.error=e,i.events.error&&(r=!0,i.emit("error",e)))}),r||req.onError(e))}function d(){globalDefQueue.length&&(each(globalDefQueue,function(e){var t=e[0];"string"==typeof t&&(q.defQueueMap[t]=!0),O.push(e)}),globalDefQueue=[])}function p(e){delete S[e],delete k[e]}function f(e,t,i){var r=e.map.id;e.error?e.emit("error",e.error):(t[r]=!0,each(e.depMaps,function(r,n){var o=r.id,a=getOwn(S,o);!a||e.depMatched[n]||i[o]||(getOwn(t,o)?(e.defineDep(n,j[o]),e.check()):f(a,t,i))}),i[r]=!0)}function l(){var e,t,i=1e3*y.waitSeconds,o=i&&q.startTime+i<(new Date).getTime(),a=[],s=[],u=!1,d=!0;if(!x){if(x=!0,eachProp(k,function(e){var i=e.map,c=i.id;if(e.enabled&&(i.isDefine||s.push(e),!e.error))if(!e.inited&&o)n(c)?(t=!0,u=!0):(a.push(c),r(c));else if(!e.inited&&e.fetched&&i.isDefine&&(u=!0,!i.prefix))return d=!1}),o&&a.length)return e=makeError("timeout","Load timeout for modules: "+a,null,a),e.contextName=q.contextName,c(e);d&&each(s,function(e){f(e,{},{})}),o&&!t||!u||!isBrowser&&!isWebWorker||w||(w=setTimeout(function(){w=0,l()},50)),x=!1}}function h(e){hasProp(j,e[0])||s(a(e[0],null,!0)).init(e[1],e[2])}function m(e,t,i,r){e.detachEvent&&!isOpera?r&&e.detachEvent(r,t):e.removeEventListener(i,t,!1)}function g(e){var t=e.currentTarget||e.srcElement;return m(t,q.onScriptLoad,"load","onreadystatechange"),m(t,q.onScriptError,"error"),{node:t,id:t&&t.getAttribute("data-requiremodule")}}function v(){var e;for(d();O.length;){if(null===(e=O.shift())[0])return c(makeError("mismatch","Mismatched anonymous define() module: "+e[e.length-1]));h(e)}q.defQueueMap={}}var x,b,q,E,w,y={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},S={},k={},M={},O=[],j={},P={},R={},T=1,A=1;return E={require:function(e){return e.require?e.require:e.require=q.makeRequire(e.map)},exports:function(e){if(e.usingExports=!0,e.map.isDefine)return e.exports?j[e.map.id]=e.exports:e.exports=j[e.map.id]={}},module:function(e){return e.module?e.module:e.module={id:e.map.id,uri:e.map.url,config:function(){return getOwn(y.config,e.map.id)||{}},exports:e.exports||(e.exports={})}}},b=function(e){this.events=getOwn(M,e.id)||{},this.map=e,this.shim=getOwn(y.shim,e.id),this.depExports=[],this.depMaps=[],this.depMatched=[],this.pluginMaps={},this.depCount=0},b.prototype={init:function(e,t,i,r){r=r||{},this.inited||(this.factory=t,i?this.on("error",i):this.events.error&&(i=bind(this,function(e){this.emit("error",e)})),this.depMaps=e&&e.slice(0),this.errback=i,this.inited=!0,this.ignore=r.ignore,r.enabled||this.enabled?this.enable():this.check())},defineDep:function(e,t){this.depMatched[e]||(this.depMatched[e]=!0,this.depCount-=1,this.depExports[e]=t)},fetch:function(){if(!this.fetched){this.fetched=!0,q.startTime=(new Date).getTime();var e=this.map;if(!this.shim)return e.prefix?this.callPlugin():this.load();q.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],bind(this,function(){return e.prefix?this.callPlugin():this.load()}))}},load:function(){var e=this.map.url;P[e]||(P[e]=!0,q.load(this.map.id,e))},check:function(){if(this.enabled&&!this.enabling){var e,t,i=this.map.id,r=this.depExports,n=this.exports,o=this.factory;if(this.inited){if(this.error)this.emit("error",this.error);else if(!this.defining){if(this.defining=!0,this.depCount<1&&!this.defined){if(isFunction(o)){if(this.events.error&&this.map.isDefine||req.onError!==defaultOnError)try{n=q.execCb(i,o,r,n)}catch(t){e=t}else n=q.execCb(i,o,r,n);if(this.map.isDefine&&void 0===n&&((t=this.module)?n=t.exports:this.usingExports&&(n=this.exports)),e)return e.requireMap=this.map,e.requireModules=this.map.isDefine?[this.map.id]:null,e.requireType=this.map.isDefine?"define":"require",c(this.error=e)}else n=o;if(this.exports=n,this.map.isDefine&&!this.ignore&&(j[i]=n,req.onResourceLoad)){var a=[];each(this.depMaps,function(e){a.push(e.normalizedMap||e)}),req.onResourceLoad(q,this.map,a)}p(i),this.defined=!0}this.defining=!1,this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else hasProp(q.defQueueMap,i)||this.fetch()}},callPlugin:function(){var e=this.map,t=e.id,r=a(e.prefix);this.depMaps.push(r),u(r,"defined",bind(this,function(r){var n,o,d,f=getOwn(R,this.map.id),l=this.map.name,h=this.map.parentMap?this.map.parentMap.name:null,m=q.makeRequire(e.parentMap,{enableBuildCallback:!0});return this.map.unnormalized?(r.normalize&&(l=r.normalize(l,function(e){return i(e,h,!0)})||""),o=a(e.prefix+"!"+l,this.map.parentMap,!0),u(o,"defined",bind(this,function(e){this.map.normalizedMap=o,this.init([],function(){return e},null,{enabled:!0,ignore:!0})})),void((d=getOwn(S,o.id))&&(this.depMaps.push(o),this.events.error&&d.on("error",bind(this,function(e){this.emit("error",e)})),d.enable()))):f?(this.map.url=q.nameToUrl(f),void this.load()):((n=bind(this,function(e){this.init([],function(){return e},null,{enabled:!0})})).error=bind(this,function(e){this.inited=!0,this.error=e,e.requireModules=[t],eachProp(S,function(e){0===e.map.id.indexOf(t+"_unnormalized")&&p(e.map.id)}),c(e)}),n.fromText=bind(this,function(i,r){var o=e.name,u=a(o),d=useInteractive;r&&(i=r),d&&(useInteractive=!1),s(u),hasProp(y.config,t)&&(y.config[o]=y.config[t]);try{req.exec(i)}catch(e){return c(makeError("fromtexteval","fromText eval for "+t+" failed: "+e,e,[t]))}d&&(useInteractive=!0),this.depMaps.push(u),q.completeLoad(o),m([o],n)}),void r.load(e.name,m,n,y))})),q.enable(r,this),this.pluginMaps[r.id]=r},enable:function(){k[this.map.id]=this,this.enabled=!0,this.enabling=!0,each(this.depMaps,bind(this,function(e,t){var i,r,n;if("string"==typeof e){if(e=a(e,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap),this.depMaps[t]=e,n=getOwn(E,e.id))return void(this.depExports[t]=n(this));this.depCount+=1,u(e,"defined",bind(this,function(e){this.undefed||(this.defineDep(t,e),this.check())})),this.errback?u(e,"error",bind(this,this.errback)):this.events.error&&u(e,"error",bind(this,function(e){this.emit("error",e)}))}i=e.id,r=S[i],hasProp(E,i)||!r||r.enabled||q.enable(e,this)})),eachProp(this.pluginMaps,bind(this,function(e){var t=getOwn(S,e.id);t&&!t.enabled&&q.enable(e,this)})),this.enabling=!1,this.check()},on:function(e,t){var i=this.events[e];i||(i=this.events[e]=[]),i.push(t)},emit:function(e,t){each(this.events[e],function(e){e(t)}),"error"===e&&delete this.events[e]}},q={config:y,contextName:e,registry:S,defined:j,urlFetched:P,defQueue:O,defQueueMap:{},Module:b,makeModuleMap:a,nextTick:req.nextTick,onError:c,configure:function(e){if(e.baseUrl&&"/"!==e.baseUrl.charAt(e.baseUrl.length-1)&&(e.baseUrl+="/"),"string"==typeof e.urlArgs){var t=e.urlArgs;e.urlArgs=function(e,i){return(-1===i.indexOf("?")?"?":"&")+t}}var i=y.shim,r={paths:!0,bundles:!0,config:!0,map:!0};eachProp(e,function(e,t){r[t]?(y[t]||(y[t]={}),mixin(y[t],e,!0,!0)):y[t]=e}),e.bundles&&eachProp(e.bundles,function(e,t){each(e,function(e){e!==t&&(R[e]=t)})}),e.shim&&(eachProp(e.shim,function(e,t){isArray(e)&&(e={deps:e}),!e.exports&&!e.init||e.exportsFn||(e.exportsFn=q.makeShimExports(e)),i[t]=e}),y.shim=i),e.packages&&each(e.packages,function(e){var t;t=(e="string"==typeof e?{name:e}:e).name,e.location&&(y.paths[t]=e.location),y.pkgs[t]=e.name+"/"+(e.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}),eachProp(S,function(e,t){e.inited||e.map.unnormalized||(e.map=a(t,null,!0))}),(e.deps||e.callback)&&q.require(e.deps||[],e.callback)},makeShimExports:function(e){return function(){var t;return e.init&&(t=e.init.apply(global,arguments)),t||e.exports&&getGlobal(e.exports)}},makeRequire:function(t,n){function o(i,r,u){var d,p,f;return n.enableBuildCallback&&r&&isFunction(r)&&(r.__requireJsBuild=!0),"string"==typeof i?isFunction(r)?c(makeError("requireargs","Invalid require call"),u):t&&hasProp(E,i)?E[i](S[t.id]):req.get?req.get(q,i,t,o):(p=a(i,t,!1,!0),d=p.id,hasProp(j,d)?j[d]:c(makeError("notloaded",'Module name "'+d+'" has not been loaded yet for context: '+e+(t?"":". Use require([])")))):(v(),q.nextTick(function(){v(),(f=s(a(null,t))).skipMap=n.skipMap,f.init(i,r,u,{enabled:!0}),l()}),o)}return n=n||{},mixin(o,{isBrowser:isBrowser,toUrl:function(e){var r,n=e.lastIndexOf("."),o=e.split("/")[0],a="."===o||".."===o;return-1!==n&&(!a||n>1)&&(r=e.substring(n,e.length),e=e.substring(0,n)),q.nameToUrl(i(e,t&&t.id,!0),r,!0)},defined:function(e){return hasProp(j,a(e,t,!1,!0).id)},specified:function(e){return e=a(e,t,!1,!0).id,hasProp(j,e)||hasProp(S,e)}}),t||(o.undef=function(e){d();var i=a(e,t,!0),n=getOwn(S,e);n.undefed=!0,r(e),delete j[e],delete P[i.url],delete M[e],eachReverse(O,function(t,i){t[0]===e&&O.splice(i,1)}),delete q.defQueueMap[e],n&&(n.events.defined&&(M[e]=n.events),p(e))}),o},enable:function(e){getOwn(S,e.id)&&s(e).enable()},completeLoad:function(e){var t,i,r,o=getOwn(y.shim,e)||{},a=o.exports;for(d();O.length;){if(null===(i=O.shift())[0]){if(i[0]=e,t)break;t=!0}else i[0]===e&&(t=!0);h(i)}if(q.defQueueMap={},r=getOwn(S,e),!t&&!hasProp(j,e)&&r&&!r.inited){if(!(!y.enforceDefine||a&&getGlobal(a)))return n(e)?void 0:c(makeError("nodefine","No define call for "+e,null,[e]));h([e,o.deps||[],o.exportsFn])}l()},nameToUrl:function(e,t,i){var r,n,o,a,s,u,c,d=getOwn(y.pkgs,e);if(d&&(e=d),c=getOwn(R,e))return q.nameToUrl(c,t,i);if(req.jsExtRegExp.test(e))s=e+(t||"");else{for(r=y.paths,o=(n=e.split("/")).length;o>0;o-=1)if(a=n.slice(0,o).join("/"),u=getOwn(r,a)){isArray(u)&&(u=u[0]),n.splice(0,o,u);break}s=n.join("/"),s=("/"===(s+=t||(/^data\:|^blob\:|\?/.test(s)||i?"":".js")).charAt(0)||s.match(/^[\w\+\.\-]+:/)?"":y.baseUrl)+s}return y.urlArgs&&!/^blob\:/.test(s)?s+y.urlArgs(e,s):s},load:function(e,t){req.load(q,e,t)},execCb:function(e,t,i,r){return t.apply(r,i)},onScriptLoad:function(e){if("load"===e.type||readyRegExp.test((e.currentTarget||e.srcElement).readyState)){interactiveScript=null;var t=g(e);q.completeLoad(t.id)}},onScriptError:function(e){var t=g(e);if(!n(t.id)){var i=[];return eachProp(S,function(e,r){0!==r.indexOf("_@r")&&each(e.depMaps,function(e){if(e.id===t.id)return i.push(r),!0})}),c(makeError("scripterror",'Script error for "'+t.id+(i.length?'", needed by: '+i.join(", "):'"'),e,[t.id]))}}},q.require=q.makeRequire(),q}function getInteractiveScript(){return interactiveScript&&"interactive"===interactiveScript.readyState?interactiveScript:(eachReverse(scripts(),function(e){if("interactive"===e.readyState)return interactiveScript=e}),interactiveScript)}var req,s,head,baseElement,dataMain,src,interactiveScript,currentlyAddingScript,mainScript,subPath,version="2.3.5",commentRegExp=/\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/gm,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,currDirRegExp=/^\.\//,op=Object.prototype,ostring=op.toString,hasOwn=op.hasOwnProperty,isBrowser=!("undefined"==typeof window||"undefined"==typeof navigator||!window.document),isWebWorker=!isBrowser&&"undefined"!=typeof importScripts,readyRegExp=isBrowser&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,defContextName="_",isOpera="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),contexts={},cfg={},globalDefQueue=[],useInteractive=!1;if(void 0===define){if(void 0!==requirejs){if(isFunction(requirejs))return;cfg=requirejs,requirejs=void 0}void 0===require||isFunction(require)||(cfg=require,require=void 0),req=requirejs=function(e,t,i,r){var n,o,a=defContextName;return isArray(e)||"string"==typeof e||(o=e,isArray(t)?(e=t,t=i,i=r):e=[]),o&&o.context&&(a=o.context),(n=getOwn(contexts,a))||(n=contexts[a]=req.s.newContext(a)),o&&n.configure(o),n.require(e,t,i)},req.config=function(e){return req(e)},req.nextTick=void 0!==setTimeout?function(e){setTimeout(e,4)}:function(e){e()},require||(require=req),req.version=version,req.jsExtRegExp=/^\/|:|\?|\.js$/,req.isBrowser=isBrowser,s=req.s={contexts:contexts,newContext:newContext},req({}),each(["toUrl","undef","defined","specified"],function(e){req[e]=function(){var t=contexts[defContextName];return t.require[e].apply(t,arguments)}}),isBrowser&&(head=s.head=document.getElementsByTagName("head")[0],(baseElement=document.getElementsByTagName("base")[0])&&(head=s.head=baseElement.parentNode)),req.onError=defaultOnError,req.createNode=function(e,t,i){var r=e.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");return r.type=e.scriptType||"text/javascript",r.charset="utf-8",r.async=!0,r},req.load=function(e,t,i){var r,n=e&&e.config||{};if(isBrowser)return(r=req.createNode(n,t,i)).setAttribute("data-requirecontext",e.contextName),r.setAttribute("data-requiremodule",t),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||isOpera?(r.addEventListener("load",e.onScriptLoad,!1),r.addEventListener("error",e.onScriptError,!1)):(useInteractive=!0,r.attachEvent("onreadystatechange",e.onScriptLoad)),r.src=i,n.onNodeCreated&&n.onNodeCreated(r,n,t,i),currentlyAddingScript=r,baseElement?head.insertBefore(r,baseElement):head.appendChild(r),currentlyAddingScript=null,r;if(isWebWorker)try{setTimeout(function(){},0),importScripts(i),e.completeLoad(t)}catch(r){e.onError(makeError("importscripts","importScripts failed for "+t+" at "+i,r,[t]))}},isBrowser&&!cfg.skipDataMain&&eachReverse(scripts(),function(e){if(head||(head=e.parentNode),dataMain=e.getAttribute("data-main"))return mainScript=dataMain,cfg.baseUrl||-1!==mainScript.indexOf("!")||(src=mainScript.split("/"),mainScript=src.pop(),subPath=src.length?src.join("/")+"/":"./",cfg.baseUrl=subPath),mainScript=mainScript.replace(jsSuffixRegExp,""),req.jsExtRegExp.test(mainScript)&&(mainScript=dataMain),cfg.deps=cfg.deps?cfg.deps.concat(mainScript):[mainScript],!0}),define=function(e,t,i){var r,n;"string"!=typeof e&&(i=t,t=e,e=null),isArray(t)||(i=t,t=null),!t&&isFunction(i)&&(t=[],i.length&&(i.toString().replace(commentRegExp,commentReplace).replace(cjsRequireRegExp,function(e,i){t.push(i)}),t=(1===i.length?["require"]:["require","exports","module"]).concat(t))),useInteractive&&(r=currentlyAddingScript||getInteractiveScript())&&(e||(e=r.getAttribute("data-requiremodule")),n=contexts[r.getAttribute("data-requirecontext")]),n?(n.defQueue.push([e,t,i]),n.defQueueMap[e]=!0):globalDefQueue.push([e,t,i])},define.amd={jQuery:!0},req.exec=function(text){return eval(text)},req(cfg)}}(this,"undefined"==typeof setTimeout?void 0:setTimeout); -------------------------------------------------------------------------------- /convo/assets/css/offline-theme-slide.css: -------------------------------------------------------------------------------- 1 | /* line 4, ../sass/_offline-theme-base.sass */ 2 | .offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offline-ui *:before, .offline-ui *:after { 3 | -webkit-box-sizing: border-box; 4 | -moz-box-sizing: border-box; 5 | box-sizing: border-box; 6 | } 7 | 8 | /* line 7, ../sass/_offline-theme-base.sass */ 9 | .offline-ui { 10 | display: none; 11 | position: fixed; 12 | background: white; 13 | z-index: 2000; 14 | margin: auto; 15 | top: 0; 16 | left: 0; 17 | right: 0; 18 | } 19 | /* line 17, ../sass/_offline-theme-base.sass */ 20 | .offline-ui .offline-ui-content:before { 21 | display: inline; 22 | } 23 | /* line 20, ../sass/_offline-theme-base.sass */ 24 | .offline-ui .offline-ui-retry { 25 | -webkit-user-select: none; 26 | -moz-user-select: none; 27 | user-select: none; 28 | display: none; 29 | } 30 | /* line 24, ../sass/_offline-theme-base.sass */ 31 | .offline-ui .offline-ui-retry:before { 32 | display: inline; 33 | } 34 | /* line 29, ../sass/_offline-theme-base.sass */ 35 | .offline-ui.offline-ui-up.offline-ui-up-5s { 36 | display: block; 37 | } 38 | /* line 32, ../sass/_offline-theme-base.sass */ 39 | .offline-ui.offline-ui-down { 40 | display: block; 41 | } 42 | /* line 37, ../sass/_offline-theme-base.sass */ 43 | .offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-retry { 44 | display: block; 45 | } 46 | /* line 42, ../sass/_offline-theme-base.sass */ 47 | .offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry { 48 | display: none; 49 | } 50 | 51 | @-webkit-keyframes offline-dropin { 52 | /* line 40, ../sass/_keyframes.sass */ 53 | 0% { 54 | transform: translateY(0); 55 | -webkit-transform: translateY(0); 56 | -moz-transform: translateY(0); 57 | -ms-transform: translateY(0); 58 | -o-transform: translateY(0); 59 | opacity: 0; 60 | } 61 | 62 | /* line 43, ../sass/_keyframes.sass */ 63 | 1% { 64 | transform: translateY(-800px); 65 | -webkit-transform: translateY(-800px); 66 | -moz-transform: translateY(-800px); 67 | -ms-transform: translateY(-800px); 68 | -o-transform: translateY(-800px); 69 | opacity: 0; 70 | } 71 | 72 | /* line 48, ../sass/_keyframes.sass */ 73 | 2% { 74 | transform: translateY(-800px); 75 | -webkit-transform: translateY(-800px); 76 | -moz-transform: translateY(-800px); 77 | -ms-transform: translateY(-800px); 78 | -o-transform: translateY(-800px); 79 | opacity: 1; 80 | } 81 | 82 | /* line 51, ../sass/_keyframes.sass */ 83 | 100% { 84 | transform: translateY(0); 85 | -webkit-transform: translateY(0); 86 | -moz-transform: translateY(0); 87 | -ms-transform: translateY(0); 88 | -o-transform: translateY(0); 89 | opacity: 1; 90 | } 91 | } 92 | 93 | @-moz-keyframes offline-dropin { 94 | /* line 40, ../sass/_keyframes.sass */ 95 | 0% { 96 | transform: translateY(0); 97 | -webkit-transform: translateY(0); 98 | -moz-transform: translateY(0); 99 | -ms-transform: translateY(0); 100 | -o-transform: translateY(0); 101 | opacity: 0; 102 | } 103 | 104 | /* line 43, ../sass/_keyframes.sass */ 105 | 1% { 106 | transform: translateY(-800px); 107 | -webkit-transform: translateY(-800px); 108 | -moz-transform: translateY(-800px); 109 | -ms-transform: translateY(-800px); 110 | -o-transform: translateY(-800px); 111 | opacity: 0; 112 | } 113 | 114 | /* line 48, ../sass/_keyframes.sass */ 115 | 2% { 116 | transform: translateY(-800px); 117 | -webkit-transform: translateY(-800px); 118 | -moz-transform: translateY(-800px); 119 | -ms-transform: translateY(-800px); 120 | -o-transform: translateY(-800px); 121 | opacity: 1; 122 | } 123 | 124 | /* line 51, ../sass/_keyframes.sass */ 125 | 100% { 126 | transform: translateY(0); 127 | -webkit-transform: translateY(0); 128 | -moz-transform: translateY(0); 129 | -ms-transform: translateY(0); 130 | -o-transform: translateY(0); 131 | opacity: 1; 132 | } 133 | } 134 | 135 | @-ms-keyframes offline-dropin { 136 | /* line 40, ../sass/_keyframes.sass */ 137 | 0% { 138 | transform: translateY(0); 139 | -webkit-transform: translateY(0); 140 | -moz-transform: translateY(0); 141 | -ms-transform: translateY(0); 142 | -o-transform: translateY(0); 143 | opacity: 0; 144 | } 145 | 146 | /* line 43, ../sass/_keyframes.sass */ 147 | 1% { 148 | transform: translateY(-800px); 149 | -webkit-transform: translateY(-800px); 150 | -moz-transform: translateY(-800px); 151 | -ms-transform: translateY(-800px); 152 | -o-transform: translateY(-800px); 153 | opacity: 0; 154 | } 155 | 156 | /* line 48, ../sass/_keyframes.sass */ 157 | 2% { 158 | transform: translateY(-800px); 159 | -webkit-transform: translateY(-800px); 160 | -moz-transform: translateY(-800px); 161 | -ms-transform: translateY(-800px); 162 | -o-transform: translateY(-800px); 163 | opacity: 1; 164 | } 165 | 166 | /* line 51, ../sass/_keyframes.sass */ 167 | 100% { 168 | transform: translateY(0); 169 | -webkit-transform: translateY(0); 170 | -moz-transform: translateY(0); 171 | -ms-transform: translateY(0); 172 | -o-transform: translateY(0); 173 | opacity: 1; 174 | } 175 | } 176 | 177 | @-o-keyframes offline-dropin { 178 | /* line 40, ../sass/_keyframes.sass */ 179 | 0% { 180 | transform: translateY(0); 181 | -webkit-transform: translateY(0); 182 | -moz-transform: translateY(0); 183 | -ms-transform: translateY(0); 184 | -o-transform: translateY(0); 185 | opacity: 0; 186 | } 187 | 188 | /* line 43, ../sass/_keyframes.sass */ 189 | 1% { 190 | transform: translateY(-800px); 191 | -webkit-transform: translateY(-800px); 192 | -moz-transform: translateY(-800px); 193 | -ms-transform: translateY(-800px); 194 | -o-transform: translateY(-800px); 195 | opacity: 0; 196 | } 197 | 198 | /* line 48, ../sass/_keyframes.sass */ 199 | 2% { 200 | transform: translateY(-800px); 201 | -webkit-transform: translateY(-800px); 202 | -moz-transform: translateY(-800px); 203 | -ms-transform: translateY(-800px); 204 | -o-transform: translateY(-800px); 205 | opacity: 1; 206 | } 207 | 208 | /* line 51, ../sass/_keyframes.sass */ 209 | 100% { 210 | transform: translateY(0); 211 | -webkit-transform: translateY(0); 212 | -moz-transform: translateY(0); 213 | -ms-transform: translateY(0); 214 | -o-transform: translateY(0); 215 | opacity: 1; 216 | } 217 | } 218 | 219 | @keyframes offline-dropin { 220 | /* line 40, ../sass/_keyframes.sass */ 221 | 0% { 222 | transform: translateY(0); 223 | -webkit-transform: translateY(0); 224 | -moz-transform: translateY(0); 225 | -ms-transform: translateY(0); 226 | -o-transform: translateY(0); 227 | opacity: 0; 228 | } 229 | 230 | /* line 43, ../sass/_keyframes.sass */ 231 | 1% { 232 | transform: translateY(-800px); 233 | -webkit-transform: translateY(-800px); 234 | -moz-transform: translateY(-800px); 235 | -ms-transform: translateY(-800px); 236 | -o-transform: translateY(-800px); 237 | opacity: 0; 238 | } 239 | 240 | /* line 48, ../sass/_keyframes.sass */ 241 | 2% { 242 | transform: translateY(-800px); 243 | -webkit-transform: translateY(-800px); 244 | -moz-transform: translateY(-800px); 245 | -ms-transform: translateY(-800px); 246 | -o-transform: translateY(-800px); 247 | opacity: 1; 248 | } 249 | 250 | /* line 51, ../sass/_keyframes.sass */ 251 | 100% { 252 | transform: translateY(0); 253 | -webkit-transform: translateY(0); 254 | -moz-transform: translateY(0); 255 | -ms-transform: translateY(0); 256 | -o-transform: translateY(0); 257 | opacity: 1; 258 | } 259 | } 260 | 261 | @-webkit-keyframes offline-dropout { 262 | /* line 57, ../sass/_keyframes.sass */ 263 | 0% { 264 | transform: translateY(0); 265 | -webkit-transform: translateY(0); 266 | -moz-transform: translateY(0); 267 | -ms-transform: translateY(0); 268 | -o-transform: translateY(0); 269 | } 270 | 271 | /* line 59, ../sass/_keyframes.sass */ 272 | 100% { 273 | transform: translateY(-800px); 274 | -webkit-transform: translateY(-800px); 275 | -moz-transform: translateY(-800px); 276 | -ms-transform: translateY(-800px); 277 | -o-transform: translateY(-800px); 278 | } 279 | } 280 | 281 | @-moz-keyframes offline-dropout { 282 | /* line 57, ../sass/_keyframes.sass */ 283 | 0% { 284 | transform: translateY(0); 285 | -webkit-transform: translateY(0); 286 | -moz-transform: translateY(0); 287 | -ms-transform: translateY(0); 288 | -o-transform: translateY(0); 289 | } 290 | 291 | /* line 59, ../sass/_keyframes.sass */ 292 | 100% { 293 | transform: translateY(-800px); 294 | -webkit-transform: translateY(-800px); 295 | -moz-transform: translateY(-800px); 296 | -ms-transform: translateY(-800px); 297 | -o-transform: translateY(-800px); 298 | } 299 | } 300 | 301 | @-ms-keyframes offline-dropout { 302 | /* line 57, ../sass/_keyframes.sass */ 303 | 0% { 304 | transform: translateY(0); 305 | -webkit-transform: translateY(0); 306 | -moz-transform: translateY(0); 307 | -ms-transform: translateY(0); 308 | -o-transform: translateY(0); 309 | } 310 | 311 | /* line 59, ../sass/_keyframes.sass */ 312 | 100% { 313 | transform: translateY(-800px); 314 | -webkit-transform: translateY(-800px); 315 | -moz-transform: translateY(-800px); 316 | -ms-transform: translateY(-800px); 317 | -o-transform: translateY(-800px); 318 | } 319 | } 320 | 321 | @-o-keyframes offline-dropout { 322 | /* line 57, ../sass/_keyframes.sass */ 323 | 0% { 324 | transform: translateY(0); 325 | -webkit-transform: translateY(0); 326 | -moz-transform: translateY(0); 327 | -ms-transform: translateY(0); 328 | -o-transform: translateY(0); 329 | } 330 | 331 | /* line 59, ../sass/_keyframes.sass */ 332 | 100% { 333 | transform: translateY(-800px); 334 | -webkit-transform: translateY(-800px); 335 | -moz-transform: translateY(-800px); 336 | -ms-transform: translateY(-800px); 337 | -o-transform: translateY(-800px); 338 | } 339 | } 340 | 341 | @keyframes offline-dropout { 342 | /* line 57, ../sass/_keyframes.sass */ 343 | 0% { 344 | transform: translateY(0); 345 | -webkit-transform: translateY(0); 346 | -moz-transform: translateY(0); 347 | -ms-transform: translateY(0); 348 | -o-transform: translateY(0); 349 | } 350 | 351 | /* line 59, ../sass/_keyframes.sass */ 352 | 100% { 353 | transform: translateY(-800px); 354 | -webkit-transform: translateY(-800px); 355 | -moz-transform: translateY(-800px); 356 | -ms-transform: translateY(-800px); 357 | -o-transform: translateY(-800px); 358 | } 359 | } 360 | 361 | @-webkit-keyframes offline-rotation { 362 | /* line 64, ../sass/_keyframes.sass */ 363 | 0% { 364 | transform: rotate(0deg); 365 | -webkit-transform: rotate(0deg); 366 | -moz-transform: rotate(0deg); 367 | -ms-transform: rotate(0deg); 368 | -o-transform: rotate(0deg); 369 | } 370 | 371 | /* line 66, ../sass/_keyframes.sass */ 372 | 100% { 373 | transform: rotate(359deg); 374 | -webkit-transform: rotate(359deg); 375 | -moz-transform: rotate(359deg); 376 | -ms-transform: rotate(359deg); 377 | -o-transform: rotate(359deg); 378 | } 379 | } 380 | 381 | @-moz-keyframes offline-rotation { 382 | /* line 64, ../sass/_keyframes.sass */ 383 | 0% { 384 | transform: rotate(0deg); 385 | -webkit-transform: rotate(0deg); 386 | -moz-transform: rotate(0deg); 387 | -ms-transform: rotate(0deg); 388 | -o-transform: rotate(0deg); 389 | } 390 | 391 | /* line 66, ../sass/_keyframes.sass */ 392 | 100% { 393 | transform: rotate(359deg); 394 | -webkit-transform: rotate(359deg); 395 | -moz-transform: rotate(359deg); 396 | -ms-transform: rotate(359deg); 397 | -o-transform: rotate(359deg); 398 | } 399 | } 400 | 401 | @-ms-keyframes offline-rotation { 402 | /* line 64, ../sass/_keyframes.sass */ 403 | 0% { 404 | transform: rotate(0deg); 405 | -webkit-transform: rotate(0deg); 406 | -moz-transform: rotate(0deg); 407 | -ms-transform: rotate(0deg); 408 | -o-transform: rotate(0deg); 409 | } 410 | 411 | /* line 66, ../sass/_keyframes.sass */ 412 | 100% { 413 | transform: rotate(359deg); 414 | -webkit-transform: rotate(359deg); 415 | -moz-transform: rotate(359deg); 416 | -ms-transform: rotate(359deg); 417 | -o-transform: rotate(359deg); 418 | } 419 | } 420 | 421 | @-o-keyframes offline-rotation { 422 | /* line 64, ../sass/_keyframes.sass */ 423 | 0% { 424 | transform: rotate(0deg); 425 | -webkit-transform: rotate(0deg); 426 | -moz-transform: rotate(0deg); 427 | -ms-transform: rotate(0deg); 428 | -o-transform: rotate(0deg); 429 | } 430 | 431 | /* line 66, ../sass/_keyframes.sass */ 432 | 100% { 433 | transform: rotate(359deg); 434 | -webkit-transform: rotate(359deg); 435 | -moz-transform: rotate(359deg); 436 | -ms-transform: rotate(359deg); 437 | -o-transform: rotate(359deg); 438 | } 439 | } 440 | 441 | @keyframes offline-rotation { 442 | /* line 64, ../sass/_keyframes.sass */ 443 | 0% { 444 | transform: rotate(0deg); 445 | -webkit-transform: rotate(0deg); 446 | -moz-transform: rotate(0deg); 447 | -ms-transform: rotate(0deg); 448 | -o-transform: rotate(0deg); 449 | } 450 | 451 | /* line 66, ../sass/_keyframes.sass */ 452 | 100% { 453 | transform: rotate(359deg); 454 | -webkit-transform: rotate(359deg); 455 | -moz-transform: rotate(359deg); 456 | -ms-transform: rotate(359deg); 457 | -o-transform: rotate(359deg); 458 | } 459 | } 460 | 461 | /* line 21, ../sass/offline-theme-slide.sass */ 462 | .offline-ui { 463 | -webkit-border-radius: 0 0 4px 4px; 464 | -moz-border-radius: 0 0 4px 4px; 465 | -ms-border-radius: 0 0 4px 4px; 466 | -o-border-radius: 0 0 4px 4px; 467 | border-radius: 0 0 4px 4px; 468 | font-family: "Helvetica Neue", sans-serif; 469 | padding: 1em; 470 | width: 38em; 471 | max-width: 100%; 472 | overflow: hidden; 473 | } 474 | @media (max-width: 38em) { 475 | /* line 21, ../sass/offline-theme-slide.sass */ 476 | .offline-ui { 477 | -webkit-border-radius: 0; 478 | -moz-border-radius: 0; 479 | -ms-border-radius: 0; 480 | -o-border-radius: 0; 481 | border-radius: 0; 482 | } 483 | } 484 | /* line 32, ../sass/offline-theme-slide.sass */ 485 | .offline-ui .offline-ui-retry { 486 | position: absolute; 487 | right: 3em; 488 | top: 0; 489 | bottom: 0; 490 | background: rgba(0, 0, 0, 0.1); 491 | text-decoration: none; 492 | color: inherit; 493 | line-height: 3.5em; 494 | height: 3.5em; 495 | margin: auto; 496 | padding: 0 1em; 497 | } 498 | /* line 45, ../sass/offline-theme-slide.sass */ 499 | .offline-ui.offline-ui-up { 500 | -webkit-animation: offline-dropout forwards 0.5s 2s; 501 | -moz-animation: offline-dropout forwards 0.5s 2s; 502 | -ms-animation: offline-dropout forwards 0.5s 2s; 503 | -o-animation: offline-dropout forwards 0.5s 2s; 504 | animation: offline-dropout forwards 0.5s 2s; 505 | -webkit-backface-visibility: hidden; 506 | background: #d6e9c6; 507 | color: #468847; 508 | } 509 | /* line 50, ../sass/offline-theme-slide.sass */ 510 | .offline-ui.offline-ui-down { 511 | -webkit-animation: offline-dropin 0.5s; 512 | -moz-animation: offline-dropin 0.5s; 513 | -ms-animation: offline-dropin 0.5s; 514 | -o-animation: offline-dropin 0.5s; 515 | animation: offline-dropin 0.5s; 516 | -webkit-backface-visibility: hidden; 517 | background: #ec8787; 518 | color: #551313; 519 | } 520 | /* line 55, ../sass/offline-theme-slide.sass */ 521 | .offline-ui.offline-ui-down.offline-ui-connecting, .offline-ui.offline-ui-down.offline-ui-waiting { 522 | background: #f8ecad; 523 | color: #7c6d1f; 524 | padding-right: 3em; 525 | } 526 | /* line 60, ../sass/offline-theme-slide.sass */ 527 | .offline-ui.offline-ui-down.offline-ui-connecting:after, .offline-ui.offline-ui-down.offline-ui-waiting:after { 528 | -webkit-animation: offline-rotation 0.7s linear infinite; 529 | -moz-animation: offline-rotation 0.7s linear infinite; 530 | -ms-animation: offline-rotation 0.7s linear infinite; 531 | -o-animation: offline-rotation 0.7s linear infinite; 532 | animation: offline-rotation 0.7s linear infinite; 533 | -webkit-backface-visibility: hidden; 534 | -webkit-border-radius: 50%; 535 | -moz-border-radius: 50%; 536 | -ms-border-radius: 50%; 537 | -o-border-radius: 50%; 538 | border-radius: 50%; 539 | content: " "; 540 | display: block; 541 | position: absolute; 542 | right: 1em; 543 | top: 0; 544 | bottom: 0; 545 | margin: auto; 546 | height: 1em; 547 | width: 1em; 548 | border: 2px solid rgba(0, 0, 0, 0); 549 | border-top-color: #7c6d1f; 550 | border-left-color: #7c6d1f; 551 | opacity: 0.7; 552 | } 553 | /* line 77, ../sass/offline-theme-slide.sass */ 554 | .offline-ui.offline-ui-down.offline-ui-waiting { 555 | padding-right: 11em; 556 | } 557 | /* line 80, ../sass/offline-theme-slide.sass */ 558 | .offline-ui.offline-ui-down.offline-ui-waiting.offline-ui-reconnect-failed-2s { 559 | padding-right: 0; 560 | } 561 | -------------------------------------------------------------------------------- /convo/assets/js/tether.min.js: -------------------------------------------------------------------------------- 1 | !function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e(require,exports,module):t.Tether=e()}(this,function(t,e,o){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t){var e=t.getBoundingClientRect(),o={};for(var n in e)o[n]=e[n];if(t.ownerDocument!==document){var r=t.ownerDocument.defaultView.frameElement;if(r){var s=i(r);o.top+=s.top,o.bottom+=s.top,o.left+=s.left,o.right+=s.left}}return o}function r(t){var e=getComputedStyle(t)||{},o=e.position,n=[];if("fixed"===o)return[t];for(var i=t;(i=i.parentNode)&&i&&1===i.nodeType;){var r=void 0;try{r=getComputedStyle(i)}catch(s){}if("undefined"==typeof r||null===r)return n.push(i),n;var a=r,f=a.overflow,l=a.overflowX,h=a.overflowY;/(auto|scroll)/.test(f+h+l)&&("absolute"!==o||["relative","absolute","fixed"].indexOf(r.position)>=0)&&n.push(i)}return n.push(t.ownerDocument.body),t.ownerDocument!==document&&n.push(t.ownerDocument.defaultView),n}function s(){A&&document.body.removeChild(A),A=null}function a(t){var e=void 0;t===document?(e=document,t=document.documentElement):e=t.ownerDocument;var o=e.documentElement,n=i(t),r=P();return n.top-=r.top,n.left-=r.left,"undefined"==typeof n.width&&(n.width=document.body.scrollWidth-n.left-n.right),"undefined"==typeof n.height&&(n.height=document.body.scrollHeight-n.top-n.bottom),n.top=n.top-o.clientTop,n.left=n.left-o.clientLeft,n.right=e.body.clientWidth-n.width-n.left,n.bottom=e.body.clientHeight-n.height-n.top,n}function f(t){return t.offsetParent||document.documentElement}function l(){var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");h(e.style,{position:"absolute",top:0,left:0,pointerEvents:"none",visibility:"hidden",width:"200px",height:"150px",overflow:"hidden"}),e.appendChild(t),document.body.appendChild(e);var o=t.offsetWidth;e.style.overflow="scroll";var n=t.offsetWidth;o===n&&(n=e.clientWidth),document.body.removeChild(e);var i=o-n;return{width:i,height:i}}function h(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=[];return Array.prototype.push.apply(e,arguments),e.slice(1).forEach(function(e){if(e)for(var o in e)({}).hasOwnProperty.call(e,o)&&(t[o]=e[o])}),t}function u(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.remove(e)});else{var o=new RegExp("(^| )"+e.split(" ").join("|")+"( |$)","gi"),n=c(t).replace(o," ");g(t,n)}}function d(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.add(e)});else{u(t,e);var o=c(t)+(" "+e);g(t,o)}}function p(t,e){if("undefined"!=typeof t.classList)return t.classList.contains(e);var o=c(t);return new RegExp("(^| )"+e+"( |$)","gi").test(o)}function c(t){return t.className instanceof t.ownerDocument.defaultView.SVGAnimatedString?t.className.baseVal:t.className}function g(t,e){t.setAttribute("class",e)}function m(t,e,o){o.forEach(function(o){-1===e.indexOf(o)&&p(t,o)&&u(t,o)}),e.forEach(function(e){p(t,e)||d(t,e)})}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function y(t,e){var o=arguments.length<=2||void 0===arguments[2]?1:arguments[2];return t+o>=e&&e>=t-o}function b(){return"undefined"!=typeof performance&&"undefined"!=typeof performance.now?performance.now():+new Date}function w(){for(var t={top:0,left:0},e=arguments.length,o=Array(e),n=0;e>n;n++)o[n]=arguments[n];return o.forEach(function(e){var o=e.top,n=e.left;"string"==typeof o&&(o=parseFloat(o,10)),"string"==typeof n&&(n=parseFloat(n,10)),t.top+=o,t.left+=n}),t}function C(t,e){return"string"==typeof t.left&&-1!==t.left.indexOf("%")&&(t.left=parseFloat(t.left,10)/100*e.width),"string"==typeof t.top&&-1!==t.top.indexOf("%")&&(t.top=parseFloat(t.top,10)/100*e.height),t}function O(t,e){return"scrollParent"===e?e=t.scrollParents[0]:"window"===e&&(e=[pageXOffset,pageYOffset,innerWidth+pageXOffset,innerHeight+pageYOffset]),e===document&&(e=e.documentElement),"undefined"!=typeof e.nodeType&&!function(){var t=e,o=a(e),n=o,i=getComputedStyle(e);if(e=[n.left,n.top,o.width+n.left,o.height+n.top],t.ownerDocument!==document){var r=t.ownerDocument.defaultView;e[0]+=r.pageXOffset,e[1]+=r.pageYOffset,e[2]+=r.pageXOffset,e[3]+=r.pageYOffset}$.forEach(function(t,o){t=t[0].toUpperCase()+t.substr(1),"Top"===t||"Left"===t?e[o]+=parseFloat(i["border"+t+"Width"]):e[o]-=parseFloat(i["border"+t+"Width"])})}(),e}var E=function(){function t(t,e){for(var o=0;o1?o-1:0),i=1;o>i;i++)n[i-1]=arguments[i];for(;e16?(e=Math.min(e-16,250),void(o=setTimeout(i,250))):void("undefined"!=typeof t&&b()-t<10||(null!=o&&(clearTimeout(o),o=null),t=b(),D(),e=b()-t))};"undefined"!=typeof window&&"undefined"!=typeof window.addEventListener&&["resize","scroll","touchmove"].forEach(function(t){window.addEventListener(t,n)})}();var X={center:"center",left:"right",right:"left"},F={middle:"middle",top:"bottom",bottom:"top"},H={top:0,left:0,middle:"50%",center:"50%",bottom:"100%",right:"100%"},N=function(t,e){var o=t.left,n=t.top;return"auto"===o&&(o=X[e.left]),"auto"===n&&(n=F[e.top]),{left:o,top:n}},U=function(t){var e=t.left,o=t.top;return"undefined"!=typeof H[t.left]&&(e=H[t.left]),"undefined"!=typeof H[t.top]&&(o=H[t.top]),{left:e,top:o}},V=function(t){var e=t.split(" "),o=B(e,2),n=o[0],i=o[1];return{top:n,left:i}},R=V,q=function(t){function e(t){var o=this;n(this,e),z(Object.getPrototypeOf(e.prototype),"constructor",this).call(this),this.position=this.position.bind(this),L.push(this),this.history=[],this.setOptions(t,!1),x.modules.forEach(function(t){"undefined"!=typeof t.initialize&&t.initialize.call(o)}),this.position()}return v(e,t),E(e,[{key:"getClass",value:function(){var t=arguments.length<=0||void 0===arguments[0]?"":arguments[0],e=this.options.classes;return"undefined"!=typeof e&&e[t]?this.options.classes[t]:this.options.classPrefix?this.options.classPrefix+"-"+t:t}},{key:"setOptions",value:function(t){var e=this,o=arguments.length<=1||void 0===arguments[1]?!0:arguments[1],n={offset:"0 0",targetOffset:"0 0",targetAttachment:"auto auto",classPrefix:"tether"};this.options=h(n,t);var i=this.options,s=i.element,a=i.target,f=i.targetModifier;if(this.element=s,this.target=a,this.targetModifier=f,"viewport"===this.target?(this.target=document.body,this.targetModifier="visible"):"scroll-handle"===this.target&&(this.target=document.body,this.targetModifier="scroll-handle"),["element","target"].forEach(function(t){if("undefined"==typeof e[t])throw new Error("Tether Error: Both element and target must be defined");"undefined"!=typeof e[t].jquery?e[t]=e[t][0]:"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),d(this.element,this.getClass("element")),this.options.addTargetClasses!==!1&&d(this.target,this.getClass("target")),!this.options.attachment)throw new Error("Tether Error: You must provide an attachment");this.targetAttachment=R(this.options.targetAttachment),this.attachment=R(this.options.attachment),this.offset=V(this.options.offset),this.targetOffset=V(this.options.targetOffset),"undefined"!=typeof this.scrollParents&&this.disable(),"scroll-handle"===this.targetModifier?this.scrollParents=[this.target]:this.scrollParents=r(this.target),this.options.enabled!==!1&&this.enable(o)}},{key:"getTargetBounds",value:function(){if("undefined"==typeof this.targetModifier)return a(this.target);if("visible"===this.targetModifier){if(this.target===document.body)return{top:pageYOffset,left:pageXOffset,height:innerHeight,width:innerWidth};var t=a(this.target),e={height:t.height,width:t.width,top:t.top,left:t.left};return e.height=Math.min(e.height,t.height-(pageYOffset-t.top)),e.height=Math.min(e.height,t.height-(t.top+t.height-(pageYOffset+innerHeight))),e.height=Math.min(innerHeight,e.height),e.height-=2,e.width=Math.min(e.width,t.width-(pageXOffset-t.left)),e.width=Math.min(e.width,t.width-(t.left+t.width-(pageXOffset+innerWidth))),e.width=Math.min(innerWidth,e.width),e.width-=2,e.topo.clientWidth||[n.overflow,n.overflowX].indexOf("scroll")>=0||this.target!==document.body,r=0;i&&(r=15);var s=t.height-parseFloat(n.borderTopWidth)-parseFloat(n.borderBottomWidth)-r,e={width:15,height:.975*s*(s/o.scrollHeight),left:t.left+t.width-parseFloat(n.borderLeftWidth)-15},f=0;408>s&&this.target===document.body&&(f=-11e-5*Math.pow(s,2)-.00727*s+22.58),this.target!==document.body&&(e.height=Math.max(e.height,24));var l=this.target.scrollTop/(o.scrollHeight-s);return e.top=l*(s-e.height-f)+t.top+parseFloat(n.borderTopWidth),this.target===document.body&&(e.height=Math.max(e.height,24)),e}}},{key:"clearCache",value:function(){this._cache={}}},{key:"cache",value:function(t,e){return"undefined"==typeof this._cache&&(this._cache={}),"undefined"==typeof this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]}},{key:"enable",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];this.options.addTargetClasses!==!1&&d(this.target,this.getClass("enabled")),d(this.element,this.getClass("enabled")),this.enabled=!0,this.scrollParents.forEach(function(e){e!==t.target.ownerDocument&&e.addEventListener("scroll",t.position)}),e&&this.position()}},{key:"disable",value:function(){var t=this;u(this.target,this.getClass("enabled")),u(this.element,this.getClass("enabled")),this.enabled=!1,"undefined"!=typeof this.scrollParents&&this.scrollParents.forEach(function(e){e.removeEventListener("scroll",t.position)})}},{key:"destroy",value:function(){var t=this;this.disable(),L.forEach(function(e,o){e===t&&L.splice(o,1)}),0===L.length&&s()}},{key:"updateAttachClasses",value:function(t,e){var o=this;t=t||this.attachment,e=e||this.targetAttachment;var n=["left","top","bottom","right","middle","center"];"undefined"!=typeof this._addAttachClasses&&this._addAttachClasses.length&&this._addAttachClasses.splice(0,this._addAttachClasses.length),"undefined"==typeof this._addAttachClasses&&(this._addAttachClasses=[]);var i=this._addAttachClasses;t.top&&i.push(this.getClass("element-attached")+"-"+t.top),t.left&&i.push(this.getClass("element-attached")+"-"+t.left),e.top&&i.push(this.getClass("target-attached")+"-"+e.top),e.left&&i.push(this.getClass("target-attached")+"-"+e.left);var r=[];n.forEach(function(t){r.push(o.getClass("element-attached")+"-"+t),r.push(o.getClass("target-attached")+"-"+t)}),M(function(){"undefined"!=typeof o._addAttachClasses&&(m(o.element,o._addAttachClasses,r),o.options.addTargetClasses!==!1&&m(o.target,o._addAttachClasses,r),delete o._addAttachClasses)})}},{key:"position",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];if(this.enabled){this.clearCache();var o=N(this.targetAttachment,this.attachment);this.updateAttachClasses(this.attachment,o);var n=this.cache("element-bounds",function(){return a(t.element)}),i=n.width,r=n.height;if(0===i&&0===r&&"undefined"!=typeof this.lastSize){var s=this.lastSize;i=s.width,r=s.height}else this.lastSize={width:i,height:r};var h=this.cache("target-bounds",function(){return t.getTargetBounds()}),u=h,d=C(U(this.attachment),{width:i,height:r}),p=C(U(o),u),c=C(this.offset,{width:i,height:r}),g=C(this.targetOffset,u);d=w(d,c),p=w(p,g);for(var m=h.left+p.left-d.left,v=h.top+p.top-d.top,y=0;yT.innerWidth&&(S=this.cache("scrollbar-size",l),E.viewport.bottom-=S.height),A.body.scrollHeight>T.innerHeight&&(S=this.cache("scrollbar-size",l),E.viewport.right-=S.width),(-1===["","static"].indexOf(A.body.style.position)||-1===["","static"].indexOf(A.body.parentElement.style.position))&&(E.page.bottom=A.body.scrollHeight-v-r,E.page.right=A.body.scrollWidth-m-i),"undefined"!=typeof this.options.optimizations&&this.options.optimizations.moveElement!==!1&&"undefined"==typeof this.targetModifier&&!function(){var e=t.cache("target-offsetparent",function(){return f(t.target)}),o=t.cache("target-offsetparent-bounds",function(){return a(e)}),n=getComputedStyle(e),i=o,r={};if(["Top","Left","Bottom","Right"].forEach(function(t){r[t.toLowerCase()]=parseFloat(n["border"+t+"Width"])}),o.right=A.body.scrollWidth-o.left-i.width+r.right,o.bottom=A.body.scrollHeight-o.top-i.height+r.bottom,E.page.top>=o.top+r.top&&E.page.bottom>=o.bottom&&E.page.left>=o.left+r.left&&E.page.right>=o.right){var s=e.scrollTop,l=e.scrollLeft;E.offset={top:E.page.top-o.top+s-r.top,left:E.page.left-o.left+l-r.left}}}(),this.move(E),this.history.unshift(E),this.history.length>3&&this.history.pop(),e&&_(),!0}}},{key:"move",value:function(t){var e=this;if("undefined"!=typeof this.element.parentNode){var o={};for(var n in t){o[n]={};for(var i in t[n]){for(var r=!1,s=0;s=0){var c=a.split(" "),m=B(c,2);u=m[0],h=m[1]}else h=u=a;var b=O(e,r);("target"===u||"both"===u)&&(ob[3]&&"bottom"===v.top&&(o-=d,v.top="top")),"together"===u&&("top"===v.top&&("bottom"===y.top&&ob[3]&&o-(s-d)>=b[1]&&(o-=s-d,v.top="bottom",y.top="bottom")),"bottom"===v.top&&("top"===y.top&&o+s>b[3]?(o-=d,v.top="top",o-=s,y.top="bottom"):"bottom"===y.top&&ob[3]&&"top"===y.top?(o-=s,y.top="bottom"):ob[2]&&"right"===v.left&&(n-=p,v.left="left")),"together"===h&&(nb[2]&&"right"===v.left?"left"===y.left?(n-=p,v.left="left",n-=f,y.left="right"):"right"===y.left&&(n-=p,v.left="left",n+=f,y.left="left"):"center"===v.left&&(n+f>b[2]&&"left"===y.left?(n-=f,y.left="right"):nb[3]&&"top"===y.top&&(o-=s,y.top="bottom")),("element"===h||"both"===h)&&(nb[2]&&("left"===y.left?(n-=f,y.left="right"):"center"===y.left&&(n-=f/2,y.left="right"))),"string"==typeof l?l=l.split(",").map(function(t){return t.trim()}):l===!0&&(l=["top","left","right","bottom"]),l=l||[];var w=[],C=[];o=0?(o=b[1],w.push("top")):C.push("top")),o+s>b[3]&&(l.indexOf("bottom")>=0?(o=b[3]-s,w.push("bottom")):C.push("bottom")),n=0?(n=b[0],w.push("left")):C.push("left")),n+f>b[2]&&(l.indexOf("right")>=0?(n=b[2]-f,w.push("right")):C.push("right")),w.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.pinnedClass?e.options.pinnedClass:e.getClass("pinned"),g.push(t),w.forEach(function(e){g.push(t+"-"+e)})}(),C.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.outOfBoundsClass?e.options.outOfBoundsClass:e.getClass("out-of-bounds"),g.push(t),C.forEach(function(e){g.push(t+"-"+e)})}(),(w.indexOf("left")>=0||w.indexOf("right")>=0)&&(y.left=v.left=!1),(w.indexOf("top")>=0||w.indexOf("bottom")>=0)&&(y.top=v.top=!1),(v.top!==i.top||v.left!==i.left||y.top!==e.attachment.top||y.left!==e.attachment.left)&&(e.updateAttachClasses(y,v),e.trigger("update",{attachment:y,targetAttachment:v}))}),M(function(){e.options.addTargetClasses!==!1&&m(e.target,g,c),m(e.element,g,c)}),{top:o,left:n}}});var j=x.Utils,a=j.getBounds,m=j.updateClasses,M=j.defer;x.modules.push({position:function(t){var e=this,o=t.top,n=t.left,i=this.cache("element-bounds",function(){return a(e.element)}),r=i.height,s=i.width,f=this.getTargetBounds(),l=o+r,h=n+s,u=[];o<=f.bottom&&l>=f.top&&["left","right"].forEach(function(t){var e=f[t];(e===n||e===h)&&u.push(t)}),n<=f.right&&h>=f.left&&["top","bottom"].forEach(function(t){var e=f[t];(e===o||e===l)&&u.push(t)});var d=[],p=[],c=["left","top","right","bottom"];return d.push(this.getClass("abutted")),c.forEach(function(t){d.push(e.getClass("abutted")+"-"+t)}),u.length&&p.push(this.getClass("abutted")),u.forEach(function(t){p.push(e.getClass("abutted")+"-"+t)}),M(function(){e.options.addTargetClasses!==!1&&m(e.target,p,d),m(e.element,p,d)}),!0}});var B=function(){function t(t,e){var o=[],n=!0,i=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(n=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);n=!0);}catch(f){i=!0,r=f}finally{try{!n&&a["return"]&&a["return"]()}finally{if(i)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();return x.modules.push({position:function(t){var e=t.top,o=t.left;if(this.options.shift){var n=this.options.shift;"function"==typeof this.options.shift&&(n=this.options.shift.call(this,{top:e,left:o}));var i=void 0,r=void 0;if("string"==typeof n){n=n.split(" "),n[1]=n[1]||n[0];var s=n,a=B(s,2);i=a[0],r=a[1],i=parseFloat(i,10),r=parseFloat(r,10)}else i=n.top,r=n.left;return e+=i,o+=r,{top:e,left:o}}}}),I}); -------------------------------------------------------------------------------- /convo/assets/css/emojionearea.min.css: -------------------------------------------------------------------------------- 1 | .dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] { 2 | position: absolute; 3 | z-index: 1000; 4 | min-width: 160px; 5 | padding: 5px 0; 6 | margin: 2px 0 0; 7 | font-size: 14px; 8 | text-align: left; 9 | list-style: none; 10 | background-color: #fff; 11 | -webkit-background-clip: padding-box; 12 | background-clip: padding-box; 13 | border: 1px solid #ccc; 14 | border: 1px solid rgba(0, 0, 0, .15); 15 | -moz-border-radius: 4px; 16 | -webkit-border-radius: 4px; 17 | border-radius: 4px; 18 | -moz-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); 19 | -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); 20 | box-shadow: 0 6px 12px rgba(0, 0, 0, .175) 21 | } 22 | 23 | .dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item { 24 | font-size: 14px; 25 | padding: 1px 3px; 26 | border: 0 27 | } 28 | 29 | .dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item a { 30 | text-decoration: none; 31 | display: block; 32 | height: 100%; 33 | line-height: 1.8em; 34 | padding: 0 1.54em 0 .615em; 35 | color: #4f4f4f 36 | } 37 | 38 | .dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item.active, 39 | .dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item:hover { 40 | background-color: #e4e4e4 41 | } 42 | 43 | .dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item.active a, 44 | .dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item:hover a { 45 | color: #333 46 | } 47 | 48 | .dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item .emojioneemoji { 49 | font-size: inherit; 50 | height: 2ex; 51 | width: 2.1ex; 52 | min-height: 20px; 53 | min-width: 20px; 54 | display: inline-block; 55 | margin: 0 5px .2ex 0; 56 | line-height: normal; 57 | vertical-align: middle; 58 | max-width: 100%; 59 | top: 0 60 | } 61 | 62 | .emojionearea-text .emojioneemoji, 63 | .emojionearea-text [class*=emojione-] { 64 | font-size: inherit; 65 | height: 2ex; 66 | width: 2.1ex; 67 | min-height: 20px; 68 | min-width: 20px; 69 | display: inline-block; 70 | margin: -.2ex .15em .2ex; 71 | line-height: normal; 72 | vertical-align: middle; 73 | max-width: 100%; 74 | top: 0 75 | } 76 | 77 | .emojionearea, 78 | .emojionearea * { 79 | -moz-box-sizing: border-box; 80 | -webkit-box-sizing: border-box; 81 | box-sizing: border-box 82 | } 83 | 84 | .emojionearea, 85 | .emojionearea.form-control { 86 | font-family: "Segoe UI", sans-serif; 87 | display: block; 88 | position: relative!important; 89 | /* width: 85%;*/ 90 | height: auto; 91 | padding: 0; 92 | font-size: 1em; 93 | background-color: #FFF; 94 | /* border: 1px solid #CCC;*/ 95 | -moz-border-radius: 3px; 96 | -webkit-border-radius: 3px; 97 | border-radius: 0px; 98 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); 99 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); 100 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); 101 | -moz-transition: border-color .15s ease-in-out, -moz-box-shadow .15s ease-in-out; 102 | -o-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; 103 | -webkit-transition: border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; 104 | transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out 105 | } 106 | 107 | .emojionearea.focused { 108 | 109 | border-color: #66AFE9; 110 | outline: 0; 111 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); 112 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); 113 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6) 114 | 115 | } 116 | 117 | 118 | /*ORIGINAL MIN-HEIGHT:8em | MAX HEIGHT:15em*/ 119 | .emojionearea .emojionearea-editor { 120 | display: block; 121 | height: auto; 122 | min-height: 4.5em; 123 | max-height: 2em; 124 | overflow: auto; 125 | padding: 6px 24px 6px 12px; 126 | line-height: 1.42857143; 127 | font-size: inherit; 128 | color: #555; 129 | background-color: transparent; 130 | border: 0; 131 | cursor: text; 132 | margin-right: 1px; 133 | -moz-border-radius: 0; 134 | -webkit-border-radius: 0; 135 | border-radius: 0; 136 | -moz-box-shadow: none; 137 | -webkit-box-shadow: none; 138 | box-shadow: none 139 | } 140 | 141 | .emojionearea .emojionearea-editor:empty:before { 142 | content: attr(placeholder); 143 | display: block; 144 | color: #BBB 145 | } 146 | 147 | .emojionearea .emojionearea-editor:focus { 148 | border: 0; 149 | outline: 0; 150 | -moz-box-shadow: none; 151 | -webkit-box-shadow: none; 152 | box-shadow: none 153 | } 154 | 155 | .emojionearea .emojionearea-editor .emojioneemoji, 156 | .emojionearea .emojionearea-editor [class*=emojione-] { 157 | font-size: inherit; 158 | height: 2ex; 159 | width: 2.1ex; 160 | min-height: 20px; 161 | min-width: 20px; 162 | display: inline-block; 163 | margin: -.2ex .15em .2ex; 164 | line-height: normal; 165 | vertical-align: middle; 166 | max-width: 100%; 167 | top: 0 168 | } 169 | 170 | .emojionearea.emojionearea-inline { 171 | /* height: 34px*/ 172 | } 173 | 174 | .emojionearea.emojionearea-inline > .emojionearea-editor { 175 | height: 32px; 176 | min-height: 20px; 177 | overflow: hidden; 178 | white-space: nowrap; 179 | position: absolute; 180 | top: 0; 181 | left: 12px; 182 | right: 24px; 183 | padding: 6px 0 184 | } 185 | 186 | .emojionearea.emojionearea-inline > .emojionearea-button { 187 | top: 4px 188 | } 189 | 190 | 191 | /* Original right: 3px; | top: 3px; */ 192 | .emojionearea .emojionearea-button { 193 | z-index: 5; 194 | position: absolute; 195 | right: 3px; 196 | top: 3px; 197 | width: 24px; 198 | height: 24px; 199 | opacity: .6; 200 | cursor: pointer; 201 | -moz-transition: opacity .3s ease-in-out; 202 | -o-transition: opacity .3s ease-in-out; 203 | -webkit-transition: opacity .3s ease-in-out; 204 | transition: opacity .3s ease-in-out 205 | } 206 | 207 | .emojionearea .emojionearea-button:hover { 208 | opacity: 1 209 | } 210 | 211 | .emojionearea .emojionearea-button > div { 212 | display: block; 213 | width: 24px; 214 | height: 24px; 215 | position: absolute; 216 | -moz-transition: all .4s ease-in-out; 217 | -o-transition: all .4s ease-in-out; 218 | -webkit-transition: all .4s ease-in-out; 219 | transition: all .4s ease-in-out 220 | } 221 | 222 | .emojionearea .emojionearea-button > div.emojionearea-button-open { 223 | background-position: 0 -24px; 224 | filter: alpha(enabled=false); 225 | opacity: 1 226 | } 227 | 228 | .emojionearea .emojionearea-button > div.emojionearea-button-close { 229 | background-position: 0 0; 230 | -webkit-transform: rotate(-45deg); 231 | -o-transform: rotate(-45deg); 232 | transform: rotate(-45deg); 233 | filter: alpha(Opacity=0); 234 | opacity: 0 235 | } 236 | 237 | .emojionearea .emojionearea-button.active > div.emojionearea-button-open { 238 | -webkit-transform: rotate(45deg); 239 | -o-transform: rotate(45deg); 240 | transform: rotate(45deg); 241 | filter: alpha(Opacity=0); 242 | opacity: 0 243 | } 244 | 245 | .emojionearea .emojionearea-button.active > div.emojionearea-button-close { 246 | -webkit-transform: rotate(0); 247 | -o-transform: rotate(0); 248 | transform: rotate(0); 249 | filter: alpha(enabled=false); 250 | opacity: 1 251 | } 252 | 253 | .emojionearea .emojionearea-picker { 254 | background: #FFF; 255 | position: absolute; 256 | -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, .32); 257 | -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, .32); 258 | box-shadow: 0 1px 5px rgba(0, 0, 0, .32); 259 | -moz-border-radius: 5px; 260 | -webkit-border-radius: 5px; 261 | border-radius: 5px; 262 | height: 276px; 263 | width: 348px; 264 | top: -15px; 265 | right: -15px; 266 | z-index: 90; 267 | -moz-transition: all .25s ease-in-out; 268 | -o-transition: all .25s ease-in-out; 269 | -webkit-transition: all .25s ease-in-out; 270 | transition: all .25s ease-in-out; 271 | filter: alpha(Opacity=0); 272 | opacity: 0; 273 | -moz-user-select: -moz-none; 274 | -ms-user-select: none; 275 | -webkit-user-select: none; 276 | user-select: none 277 | } 278 | 279 | .emojionearea .emojionearea-picker.hidden { 280 | display: none 281 | } 282 | 283 | .emojionearea .emojionearea-picker .emojionearea-wrapper { 284 | position: relative; 285 | height: 276px; 286 | width: 348px 287 | } 288 | 289 | .emojionearea .emojionearea-picker .emojionearea-wrapper:after { 290 | content: ""; 291 | display: block; 292 | position: absolute; 293 | background-repeat: no-repeat; 294 | z-index: 91 295 | } 296 | 297 | .emojionearea .emojionearea-picker .emojionearea-filters, 298 | .emojionearea .emojionearea-picker .emojionearea-search { 299 | width: 100%; 300 | position: absolute; 301 | z-index: 95 302 | } 303 | 304 | .emojionearea .emojionearea-picker .emojionearea-search { 305 | padding: 5px 0 0 10px; 306 | height: 40px 307 | } 308 | 309 | .emojionearea .emojionearea-picker .emojionearea-filters { 310 | background: #F5F7F9; 311 | padding: 0 0 0 7px; 312 | height: 40px 313 | } 314 | 315 | .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter { 316 | display: block; 317 | float: left; 318 | height: 40px; 319 | width: 32px; 320 | padding: 7px 1px 0; 321 | cursor: pointer; 322 | -webkit-filter: grayscale(1); 323 | filter: grayscale(1) 324 | } 325 | 326 | .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter.active { 327 | background: #fff 328 | } 329 | 330 | .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter.active, 331 | .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter:hover { 332 | -webkit-filter: grayscale(0); 333 | filter: grayscale(0) 334 | } 335 | 336 | .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter > i { 337 | width: 24px; 338 | height: 24px; 339 | top: 0 340 | } 341 | 342 | .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter > img { 343 | width: 24px; 344 | height: 24px; 345 | margin: 0 3px 346 | } 347 | 348 | .emojionearea .emojionearea-picker .emojionearea-tones { 349 | position: absolute; 350 | top: 46px; 351 | right: 10px; 352 | height: 22px; 353 | z-index: 95 354 | } 355 | 356 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone { 357 | display: inline-block; 358 | padding: 0; 359 | border: 0; 360 | vertical-align: middle; 361 | outline: 0; 362 | background: 0 0; 363 | cursor: pointer; 364 | position: relative 365 | } 366 | 367 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-0, 368 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-0:after { 369 | background-color: #ffcf3e 370 | } 371 | 372 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-1, 373 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-1:after { 374 | background-color: #fae3c5 375 | } 376 | 377 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-2, 378 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-2:after { 379 | background-color: #e2cfa5 380 | } 381 | 382 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-3, 383 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-3:after { 384 | background-color: #daa478 385 | } 386 | 387 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-4, 388 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-4:after { 389 | background-color: #a78058 390 | } 391 | 392 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-5, 393 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-5:after { 394 | background-color: #5e4d43 395 | } 396 | 397 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet > .btn-tone, 398 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square > .btn-tone { 399 | width: 20px; 400 | height: 20px; 401 | margin: 0; 402 | background-color: transparent 403 | } 404 | 405 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet > .btn-tone:after, 406 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square > .btn-tone:after { 407 | content: ""; 408 | position: absolute; 409 | display: block; 410 | top: 4px; 411 | left: 4px; 412 | width: 12px; 413 | height: 12px 414 | } 415 | 416 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet > .btn-tone.active:after, 417 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square > .btn-tone.active:after { 418 | top: 0; 419 | left: 0; 420 | width: 20px; 421 | height: 20px 422 | } 423 | 424 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox > .btn-tone, 425 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio > .btn-tone { 426 | width: 16px; 427 | height: 16px; 428 | margin: 0 2px 429 | } 430 | 431 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox > .btn-tone.active:after, 432 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio > .btn-tone.active:after { 433 | content: ""; 434 | position: absolute; 435 | display: block; 436 | background-color: transparent; 437 | border: 2px solid #fff; 438 | width: 8px; 439 | height: 8px; 440 | top: 2px; 441 | left: 2px; 442 | box-sizing: initial 443 | } 444 | 445 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category:after, 446 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category:before, 447 | .emojionearea .emojionearea-picker .emojionearea-scroll-area h1:after, 448 | .emojionearea .emojionearea-picker .emojionearea-scroll-area h1:before { 449 | content: " "; 450 | clear: both; 451 | display: block 452 | } 453 | 454 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet > .btn-tone, 455 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet > .btn-tone:after, 456 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio > .btn-tone, 457 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio > .btn-tone:after { 458 | -moz-border-radius: 100%; 459 | -webkit-border-radius: 100%; 460 | border-radius: 100% 461 | } 462 | 463 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox > .btn-tone, 464 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox > .btn-tone:after, 465 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square > .btn-tone, 466 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square > .btn-tone:after { 467 | -moz-border-radius: 1px; 468 | -webkit-border-radius: 1px; 469 | border-radius: 1px 470 | } 471 | 472 | .emojionearea .emojionearea-picker .emojionearea-scroll-area { 473 | height: 196px; 474 | overflow: auto; 475 | overflow-x: hidden; 476 | width: 100%; 477 | position: absolute; 478 | padding: 0 0 5px 479 | } 480 | 481 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-emojis-list { 482 | z-index: 1 483 | } 484 | 485 | .emojionearea .emojionearea-picker .emojionearea-scroll-area h1 { 486 | display: block; 487 | font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; 488 | font-size: 13px; 489 | font-weight: 400; 490 | color: #b2b2b2; 491 | background: #FFF; 492 | line-height: 20px; 493 | margin: 0; 494 | padding: 7px 0 5px 6px 495 | } 496 | 497 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category { 498 | padding: 0 0 0 7px 499 | } 500 | 501 | .emojionearea .emojionearea-picker .emojionearea-scroll-area [class*=emojione-] { 502 | -moz-box-sizing: content-box; 503 | -webkit-box-sizing: content-box; 504 | box-sizing: content-box; 505 | margin: 0; 506 | width: 24px; 507 | height: 24px; 508 | top: 0 509 | } 510 | 511 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn { 512 | -moz-box-sizing: content-box; 513 | -webkit-box-sizing: content-box; 514 | box-sizing: content-box; 515 | width: 24px; 516 | height: 24px; 517 | float: left; 518 | display: block; 519 | margin: 1px; 520 | padding: 3px 521 | } 522 | 523 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn:hover { 524 | -moz-border-radius: 4px; 525 | -webkit-border-radius: 4px; 526 | border-radius: 4px; 527 | background-color: #e4e4e4; 528 | cursor: pointer 529 | } 530 | 531 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn i, 532 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn img { 533 | float: left; 534 | display: block; 535 | width: 24px; 536 | height: 24px 537 | } 538 | 539 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn img.lazy-emoji { 540 | filter: alpha(Opacity=0); 541 | opacity: 0 542 | } 543 | 544 | .emojionearea .emojionearea-picker.emojionearea-filters-position-top .emojionearea-filters { 545 | top: 0; 546 | -moz-border-radius-topleft: 5px; 547 | -webkit-border-top-left-radius: 5px; 548 | border-top-left-radius: 5px; 549 | -moz-border-radius-topright: 5px; 550 | -webkit-border-top-right-radius: 5px; 551 | border-top-right-radius: 5px 552 | } 553 | 554 | .emojionearea .emojionearea-picker.emojionearea-filters-position-top .emojionearea-search { 555 | top: 40px 556 | } 557 | 558 | .emojionearea .emojionearea-picker.emojionearea-filters-position-top .emojionearea-scroll-area { 559 | bottom: 0 560 | } 561 | 562 | .emojionearea .emojionearea-picker.emojionearea-filters-position-bottom .emojionearea-filters { 563 | bottom: 0; 564 | -moz-border-radius-bottomleft: 5px; 565 | -webkit-border-bottom-left-radius: 5px; 566 | border-bottom-left-radius: 5px; 567 | -moz-border-radius-bottomright: 5px; 568 | -webkit-border-bottom-right-radius: 5px; 569 | border-bottom-right-radius: 5px 570 | } 571 | 572 | .emojionearea .emojionearea-picker.emojionearea-filters-position-bottom .emojionearea-search { 573 | bottom: 40px 574 | } 575 | 576 | .emojionearea .emojionearea-picker.emojionearea-filters-position-bottom .emojionearea-scroll-area { 577 | top: 0 578 | } 579 | 580 | .emojionearea .emojionearea-picker.emojionearea-picker-position-top { 581 | margin-top: -286px; 582 | right: -14px 583 | } 584 | 585 | .emojionearea .emojionearea-picker.emojionearea-picker-position-top .emojionearea-wrapper:after { 586 | width: 19px; 587 | height: 10px; 588 | background-position: -2px -49px; 589 | bottom: -10px; 590 | right: 20px 591 | } 592 | 593 | .emojionearea .emojionearea-picker.emojionearea-picker-position-top.emojionearea-filters-position-bottom .emojionearea-wrapper:after { 594 | background-position: -2px -80px 595 | } 596 | 597 | .emojionearea .emojionearea-picker.emojionearea-picker-position-left, 598 | .emojionearea .emojionearea-picker.emojionearea-picker-position-right { 599 | margin-right: -358px; 600 | top: -8px 601 | } 602 | 603 | .emojionearea .emojionearea-picker.emojionearea-picker-position-left .emojionearea-wrapper:after, 604 | .emojionearea .emojionearea-picker.emojionearea-picker-position-right .emojionearea-wrapper:after { 605 | width: 10px; 606 | height: 19px; 607 | background-position: 0 -60px; 608 | top: 13px; 609 | left: -10px 610 | } 611 | 612 | .emojionearea .emojionearea-picker.emojionearea-picker-position-left.emojionearea-filters-position-bottom .emojionearea-wrapper:after, 613 | .emojionearea .emojionearea-picker.emojionearea-picker-position-right.emojionearea-filters-position-bottom .emojionearea-wrapper:after { 614 | background-position: right -60px 615 | } 616 | 617 | .emojionearea .emojionearea-picker.emojionearea-picker-position-bottom { 618 | margin-top: 10px; 619 | right: -14px; 620 | top: 47px 621 | } 622 | 623 | .emojionearea .emojionearea-picker.emojionearea-picker-position-bottom .emojionearea-wrapper:after { 624 | width: 19px; 625 | height: 10px; 626 | background-position: -2px -100px; 627 | top: -10px; 628 | right: 20px 629 | } 630 | 631 | .emojionearea .emojionearea-picker.emojionearea-picker-position-bottom.emojionearea-filters-position-bottom .emojionearea-wrapper:after { 632 | background-position: -2px -90px 633 | } 634 | 635 | .emojionearea .emojionearea-button.active + .emojionearea-picker { 636 | filter: alpha(enabled=false); 637 | opacity: 1 638 | } 639 | 640 | .emojionearea .emojionearea-button.active + .emojionearea-picker-position-top { 641 | margin-top: -269px 642 | } 643 | 644 | .emojionearea .emojionearea-button.active + .emojionearea-picker-position-left, 645 | .emojionearea .emojionearea-button.active + .emojionearea-picker-position-right { 646 | margin-right: -341px 647 | } 648 | 649 | .emojionearea .emojionearea-button.active + .emojionearea-picker-position-bottom { 650 | margin-top: -7px 651 | } 652 | 653 | .emojionearea.emojionearea-standalone { 654 | display: inline-block; 655 | width: auto; 656 | box-shadow: none 657 | } 658 | 659 | .emojionearea.emojionearea-standalone .emojionearea-editor { 660 | min-height: 33px; 661 | position: relative; 662 | padding: 6px 42px 6px 6px 663 | } 664 | 665 | .emojionearea.emojionearea-standalone .emojionearea-editor::before { 666 | content: ""; 667 | position: absolute; 668 | top: 4px; 669 | left: 50%; 670 | bottom: 4px; 671 | border-left: 1px solid #e6e6e6 672 | } 673 | 674 | .emojionearea.emojionearea-standalone .emojionearea-editor.has-placeholder .emojioneemoji { 675 | opacity: .4 676 | } 677 | 678 | .emojionearea.emojionearea-standalone .emojionearea-button { 679 | top: 0; 680 | right: 0; 681 | bottom: 0; 682 | left: 0; 683 | width: auto; 684 | height: auto 685 | } 686 | 687 | .emojionearea.emojionearea-standalone .emojionearea-button > div { 688 | right: 6px; 689 | top: 5px 690 | } 691 | 692 | .emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-bottom .emojionearea-wrapper:after, 693 | .emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-top .emojionearea-wrapper:after { 694 | right: 23px 695 | } 696 | 697 | .emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-left .emojionearea-wrapper:after, 698 | .emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-right .emojionearea-wrapper:after { 699 | top: 15px 700 | } 701 | 702 | .emojionearea .emojionearea-button > div, 703 | .emojionearea .emojionearea-picker .emojionearea-wrapper:after { 704 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAABuCAYAAADMB4ipAAAHfElEQVRo3u1XS1NT2Rb+9uOcQF4YlAJzLymFUHaLrdxKULvEUNpdTnRqD532f+AHMLMc94gqR1Zbt8rBnUh3YXipPGKwRDoWgXvrYiFUlEdIkPPYZ/dAkwox5yQCVt/bzRrBPnt9e+211/etFeDQDu3ArL+/X37OeqmRWoH7+vpItfWawStF1tfXR+zW9xW5ne0p8loOcAKuCdwpRft60C8a+X5zTvebCqcAvmidf1GGHtqhHdpf1qqKzsrKipyensbi4iKWl5cBAMFgEG1tbYhGo2hpadlbmxseHpaDg4MAgI6ODng8HgBAPp/H/Pw8AODatWvo7e2tvUHrui7v3r2L+fl5XL58GVeuXIHH49m1N5/Py0ePHmF0dBQdHR24desWVFXdtYdXAn/48CHm5+dx8+ZNRKPRigEUDpuenpb3799H4YaOnWh5eVmOj48jFoshGo0STdPkwMCAXF5elqV7BgYGpKZpMhqNklgshrGxMbx580Y6gicSCTDGEIvFAADpdBqpVArJZLK4J5lMIpVKIZ1OAwBisRgYY0gkEs6Rp1IphMNh+Hw+AgCGYQAANE0r7in8Xfjm8/lIOBzGq1evnMHX19fR1NRU/D8UCoFzjnA4XFwLh8PgnCMUChXXmpqakM1mUfVBS62xsZHk83lZWi1nz579ZA0AhBDO4A0NDchkMsWSJIRAURRiVy26rktVVUkmk0EgEHAGP3XqFKamppDP56Vpmrhz5w5u374t/X4/OP+w3TRNZLNZ6LoO0zSRz+dlf38/Ll686Jzz8+fPQwiBeDwOt9tNrl+/jkwmU6yaQpVkMhncuHEDbrebxONxCCEQiUScIw8Gg+TBgwdyZGQEyWRSdnV1kVQqJYeGhrC6ugrGGEKhEHp7e3Hy5EmSTCblvXv30NPTg2AwSA6M/vF4HCMjI7b0/yzh8vv9AIBsNrt34aokuQsLC7skt729varkHtqftUFf++FHsrq0QN3eBvp68Tfvf9Mv12oFCYU7G//e9nVuO7dpNbe2W4M//yQr0p8yRvyBo1Zr++lwLcCt7afD/sBRizJGavrB1dDYYh47Htrq+Kb7jBNwxzfdZ44dD201NLaYVUkU7ozQpuAJBkARwnRZpunN5zaa5hJjiXLH05GeiMd7JEM5zzHGNQBGZvk/Iv0yYVWMvK0zKk1Dl6ahW5RQobjqdjy+wEZn9PKF0n2d0csXPL7AhuKq26GECtPQLdPQZVtn1LlB69p7yRVVSEiDEGJwRd12e4+8PR3piRQidnuPvOWKuk0IMSSkwRVV6Np7WVVbSqvGsgSnlKkAFNPQXdrOtuKqcxtcUTUAhmUJnVJmlleJo3CVHmAaOlPUOmYJkxFKibQsSRkXhr4juKIKO2BHVSwcoLrqCVdUYho6K3YYRRWmoUtdey/tgKtK7rUffiQAsLq08MnbNLe2WwBgB/zHzueFyD8nwlIfbvdx8eU0WV1aKD1cVAMs9+F2j9gUPEEKemEJIe3AnXy4XfkBoNKSZHNthWfX31EA69VKttyHVyIOY1wRwmS6tqNsrr31vXo5k/bUu4gT2cp9lhbm0rzCJpeUUrE0vS63+c7/6uXMbDUWl/ssLczNFrVFddUT09AZpUy1LKvO0DVfPrfR9HxqfNbuEe185l9MFX3o6tIC5YpKFLWOfdQQ93Zu49j0+FDCDtjOp1yaOQCYhs4Y40wI05XfWj8yPT40Ua2ey33mEmMTtp2IUEq0nW3FKeJPGPjRp1Iz2QUuLUu66txG9NLVSK3gBZ+C1lcE54oqKOOCK6rm8QU2unu+u1ANuNynvFsBAG1ubbdMQ5eGviMAFDuP0w3sfMpvQEtb24fOQncU1bXl8R7JnOu+ZNv97XxKJwY6+PNPsrm13drObVqUMlMIU5OWpVHOc96Go5lTnV2fzC/VfAozD7HTCa6olBBa1Imlhbmq2lLuQ5xaW6nCPfnln0Yt7bDUhzhps8cfKH5//uTXmvS81OeLdqI/ZoROzSZrHqG/OvOPzxuhK5VgJTvV2bW3EdqJRABwrvvS/kfoSkoZvXT1YEbociHr7vnuYEfogpBFL109HKH/h0fomnXg3Lff79r7/MmvVbWG7gX4QObzc99+Tz7mHKah05KcW6ahQ9feS6cbMCdgt7eBWJagjCuUAC5tZzuouuo0Spm0hElc9R4cbf4bVl8v1p6WUmCuqEwIs34ruxaeeTy4uJVd67As08UVlVmWoG5vA7FLG3WMmHEupVTyW+vh2cn4DADMTsaTuc21LiGEhzHOnQ6gNtMrJSBMCKHkNt999WLi0S7hejEZH81n174WpukiIMw0dKq66p3Bw50RwhUVXFGJKUy28Xal48VkfKrSlWenhsc23q2cEB9SR7iiItwZIbbgHn8AlDFCCMW7laXjqZnHjkNpaubJzNuVpWZCKChjxOMPVH/QlaW0f/G3ZLqWWl6ce/bvlddp7yFD/w8Z+njoX1+GoZMjgzMAMDkyeLAMnRh+uKveJ0YGD4ahEyODFRk6OfrL/hj67GnckaHPng7vjaGzyYmaGDr77KktQ38H8tqx8Wja+WIAAAAASUVORK5CYII=)!important 705 | } 706 | 707 | .emojionearea.emojionearea-standalone .emojionearea-editor.has-placeholder { 708 | background-repeat: no-repeat; 709 | background-position: 20px 4px; 710 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAABlBMVEUAAAC/v79T5hyIAAAAAXRSTlMAQObYZgAAABNJREFUCNdjYGNgQEb/P4AQqiAASiUEG6Vit44AAAAASUVORK5CYII=)!important 711 | } 712 | -------------------------------------------------------------------------------- /convo/assets/css/style.css: -------------------------------------------------------------------------------- 1 | /* ============================================== 2 | ================================================= 3 | ~ General ~ 4 | ================================================= 5 | ============================================== */ 6 | 7 | body { 8 | font-size: 12px; 9 | font-family: "Segoe UI", 10 | "Roboto", 11 | "Helvetica", 12 | "Arial", 13 | sans-serif, 14 | "Apple Color Emoji", 15 | "Segoe UI Emoji", 16 | "Segoe UISymbol"; 17 | overflow: hidden; 18 | image-rendering: crisp-edges; 19 | } 20 | 21 | .body *::-webkit-scrollbar { 22 | width: 5px; 23 | background: transparent; 24 | position: absolute; 25 | left: 0; 26 | } 27 | 28 | .body *::-webkit-scrollbar-thumb { 29 | background-color: rgba(0, 0, 0, 0); 30 | border-radius: 5px; 31 | } 32 | 33 | .body *:hover::-webkit-scrollbar-thumb { 34 | background-color: rgba(0, 0, 0, .3); 35 | border-radius: 5px; 36 | } 37 | 38 | 39 | /* ============================================== 40 | ================================================= 41 | ~ Start Side Panel ~ 42 | ================================================= 43 | ============================================== */ 44 | 45 | .side-panel { 46 | position: fixed; 47 | left: 0; 48 | top: 0; 49 | bottom: 0; 50 | background-color: #5769fe; 51 | color: white; 52 | width: 405px; 53 | z-index: 182; 54 | } 55 | 56 | 57 | 58 | 59 | /*---------------------------------- 60 | Side panel header 61 | ------------------------------------*/ 62 | 63 | .side-panel-header { 64 | height: 90px; 65 | background: #4f60f3; 66 | 67 | } 68 | 69 | .side-panel-header-two { 70 | height: 90px; 71 | background: #5a40d1; 72 | 73 | } 74 | 75 | 76 | .logo { 77 | position: absolute; 78 | left: 30px; 79 | top: 25px; 80 | width: 120px; 81 | z-index: 146; 82 | float: left; 83 | } 84 | 85 | 86 | .icons { 87 | position: absolute; 88 | right: 0%; 89 | float: right; 90 | font-size: 20px; 91 | padding: 30px; 92 | } 93 | 94 | .icon-more2 { 95 | float: right; 96 | padding: 35px 35px; 97 | cursor: pointer; 98 | } 99 | 100 | .icon-more2 a { 101 | color: #fff; 102 | padding: 18px; 103 | 104 | } 105 | 106 | .icon-more2 span { 107 | font-size: 23px; 108 | } 109 | 110 | .icon-more a { 111 | color: #f75f5e; 112 | } 113 | 114 | .icon-more a:hover { 115 | color: #f75f5e; 116 | } 117 | 118 | 119 | 120 | /**************************** 121 | 122 | Notification Status 123 | 124 | *****************************/ 125 | 126 | .noti-status { 127 | width: 12px; 128 | height: 12px; 129 | -webkit-border-radius: 100%; 130 | -moz-border-radius: 100%; 131 | -ms-border-radius: 100%; 132 | border-radius: 100%; 133 | position: absolute; 134 | border: 2px solid #4f60f3; 135 | background: #40EDA1; 136 | margin-left: 93px; 137 | } 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | /*---------------------------------- 148 | Side panel profile 149 | ------------------------------------*/ 150 | 151 | .user-photo { 152 | position: absolute; 153 | left: 200px; 154 | top: 20px; 155 | z-index: 146; 156 | float: right; 157 | cursor: pointer; 158 | } 159 | 160 | .user-photo .avatar { 161 | width: 50px; 162 | height: 50px; 163 | border-radius: 50%; 164 | background: url('../img/pro.png') no-repeat white; 165 | background-position: center; 166 | background-size: contain; 167 | } 168 | 169 | 170 | 171 | 172 | /* User Status */ 173 | 174 | .status { 175 | width: 13px; 176 | height: 13px; 177 | -webkit-border-radius: 100%; 178 | -moz-border-radius: 100%; 179 | -ms-border-radius: 100%; 180 | border-radius: 100%; 181 | position: absolute; 182 | 183 | border: 2px solid #4f60f3; 184 | } 185 | 186 | .user-photo .online { 187 | background: #40EDA1; 188 | } 189 | 190 | .user-photo .offline { 191 | background: #E74C3C; 192 | } 193 | 194 | /* Status Ends */ 195 | 196 | /* Search Starts */ 197 | 198 | .side-panel .search-box { 199 | float: left; 200 | width: 230px; 201 | height: 40px; 202 | position: relative; 203 | margin: 40px 50px; 204 | } 205 | 206 | .side-panel .search-box input, 207 | .side-panel .search-box .icon { 208 | transition-duration: .3s; 209 | } 210 | 211 | .side-panel .search-box input { 212 | font-family: 'Segoe UI', sans-serif; 213 | position: absolute; 214 | top: 0; 215 | left: 0; 216 | bottom: 0; 217 | width: 100%; 218 | border: 0; 219 | padding: 0; 220 | text-indent: 15px; 221 | font-size: 13px; 222 | height: 50px; 223 | z-index: 2; 224 | outline: none; 225 | color: #fff; 226 | background-color: transparent; 227 | border: 2px solid #fff; 228 | border-radius: 100px; 229 | transition-timing-function: cubic-bezier(0.3, 1.5, 0.6, 1); 230 | } 231 | 232 | .search-box ::-webkit-input-placeholder { 233 | /* Chrome */ 234 | color: #fff; 235 | opacity: 1; 236 | } 237 | 238 | .search-box :-ms-input-placeholder { 239 | /* IE 10+ */ 240 | color: #fff; 241 | opacity: 1; 242 | } 243 | 244 | .search-box ::-moz-placeholder { 245 | /* Firefox 19+ */ 246 | color: #fff; 247 | opacity: 1; 248 | } 249 | 250 | .search-box :-moz-placeholder { 251 | /* Firefox 4 - 18 */ 252 | color: #fff; 253 | opacity: 1; 254 | } 255 | 256 | 257 | 258 | .side-panel .search-box input:focus { 259 | width: 118%; 260 | } 261 | 262 | .side-panel .search-box input:focus ~ .icon { 263 | opacity: 1; 264 | z-index: 3; 265 | width: 0px; 266 | } 267 | 268 | .side-panel .search-box .icon { 269 | position: absolute; 270 | top: 13px; 271 | right: 0; 272 | bottom: 0; 273 | width: 40px; 274 | text-align: center; 275 | line-height: 50px; 276 | z-index: 1; 277 | cursor: pointer; 278 | opacity: .5; 279 | transition-timing-function: cubic-bezier(0.3, 1.5, 0.6, 1); 280 | } 281 | 282 | 283 | 284 | /*---------------------------------- 285 | Left Panel Sides 286 | ------------------------------------*/ 287 | 288 | .side-one { 289 | padding: 0; 290 | margin: 0; 291 | height: 100%; 292 | width: 100%; 293 | z-index: 1; 294 | position: relative; 295 | display: block; 296 | top: 0; 297 | } 298 | 299 | .side-two { 300 | padding: 0 !important; 301 | margin: 0 !important; 302 | height: 100%; 303 | width: 100%; 304 | z-index: 2; 305 | position: relative; 306 | top: -100%; 307 | left: -100%; 308 | -webkit-transition: left 0.3s ease; 309 | transition: left 0.3s ease; 310 | background: #4f60f3; 311 | 312 | } 313 | 314 | 315 | 316 | /*---------------------------------- 317 | Temporary Users Starts | Chats 318 | ------------------------------------*/ 319 | 320 | .side-panel { 321 | line-height: 19px; 322 | } 323 | 324 | .side-panel .people { 325 | margin-left: -1px; 326 | font-family: 'Segoe UI', sans-serif; 327 | overflow-y: auto; 328 | height: calc(100% - 200px); 329 | width: 100%; 330 | margin-top: 25px; 331 | } 332 | 333 | .counter { 334 | padding: 13%; 335 | font-size: 14px; 336 | line-height: 22px; 337 | color: #fff; 338 | font-family: 'Segoe UI', sans-serif; 339 | } 340 | 341 | 342 | .side-panel .people .person { 343 | position: relative; 344 | width: 100%; 345 | padding: 15px 25% 25px; 346 | cursor: pointer; 347 | list-style: none; 348 | padding-left: calc(10% + 1px); 349 | margin-top: -1px; 350 | margin-left: -1px; 351 | } 352 | 353 | .person .user-status { 354 | width: 13px; 355 | height: 13px; 356 | -webkit-border-radius: 100%; 357 | -moz-border-radius: 100%; 358 | -ms-border-radius: 100%; 359 | border-radius: 100%; 360 | position: absolute; 361 | /*left: 36px;*/ 362 | border: 2px solid #5769fe; 363 | } 364 | 365 | 366 | .online { 367 | background: #40EDA1; 368 | } 369 | 370 | .offline { 371 | background: #E74C3C; 372 | } 373 | 374 | 375 | .person .verified-badge { 376 | display: inline-block; 377 | margin-left: 10px; 378 | margin-bottom: -10; 379 | width: 20px; 380 | height: 27px; 381 | background-size: 20px 20px; 382 | background: url(../img/verified.png) no-repeat 0 3px; 383 | 384 | 385 | } 386 | 387 | .side-panel .people .person:after { 388 | position: absolute; 389 | bottom: 0; 390 | left: 50%; 391 | display: block; 392 | width: 100%; 393 | height: 1.8px; 394 | content: ''; 395 | background-color: #5f70fe; 396 | -webkit-transform: translate(-50%, 0); 397 | transform: translate(-50%, 0); 398 | } 399 | 400 | .side-panel .people .person img { 401 | float: left; 402 | width: 50px; 403 | /*! height: 50px; */ 404 | margin-right: 12px; 405 | border-radius: 50%; 406 | } 407 | 408 | .side-panel .people .person .name { 409 | font-size: 14px; 410 | line-height: 22px; 411 | color: #fff; 412 | font-weight: 600; 413 | text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); 414 | } 415 | 416 | .side-panel .people .person .time { 417 | /* 418 | font-size: 14px; 419 | position: absolute; 420 | right: 10%; 421 | padding: 0 0 5px 5px; 422 | color: #fff; 423 | */ 424 | position: absolute; 425 | right: 10%; 426 | font-size: 11px; 427 | padding: 3px 8px; 428 | 429 | border: 1px solid #E5E5E5; 430 | border-radius: 15px; 431 | 432 | } 433 | 434 | .side-panel .people .person .preview { 435 | font-size: 14px; 436 | display: inline-block; 437 | overflow: hidden !important; 438 | width: 70%; 439 | white-space: nowrap; 440 | text-overflow: ellipsis; 441 | color: #f3f3f3; 442 | margin-top: 5px; 443 | } 444 | 445 | .side-panel .people .person.active, 446 | .people .person:hover { 447 | background-color: #4f60f3; 448 | } 449 | 450 | .side-panel .people .person.active span, 451 | .people .person:hover span { 452 | color: #fff; 453 | background: transparent; 454 | } 455 | 456 | .side-panel .people .person.active:after, 457 | .container .left .people .person:hover:after { 458 | display: none; 459 | } 460 | 461 | 462 | 463 | /* ============================================== 464 | ================================================= 465 | ~ Message Wrapper / Container Starts ~ 466 | ================================================= 467 | ============================================== */ 468 | 469 | .msg-wrapper { 470 | height: 100%; 471 | padding: 0px; 472 | border-left: solid 1px rgba(0, 0, 0, 0.3); 473 | } 474 | 475 | .msg-wrapper-header { 476 | /*! padding: 10px; */ 477 | /*! position: absolute; */ 478 | height: 90px; 479 | background: #fff; 480 | /*! z-index: -9; */ 481 | width: 100%; 482 | z-index: 9999; 483 | border: solid 1px #d8d7ff; 484 | } 485 | 486 | .chat-user-meta { 487 | float: left; 488 | height: 100%; 489 | padding: 25px 12px; 490 | margin-left: 1.2em; 491 | display: inline-block; 492 | line-height: 1.5em; 493 | } 494 | 495 | 496 | .usr_name { 497 | width: 100%; 498 | display: flex; 499 | font-family: 'Segoe UI', sans-serif; 500 | font-size: 16px; 501 | font-weight: 600; 502 | color: #5769fe; 503 | text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); 504 | } 505 | 506 | .usr_name__online { 507 | display: block; 508 | background: #00c853; 509 | height: 10px; 510 | width: 10px; 511 | border-radius: 10px; 512 | margin-left: 5px; 513 | margin-top: 8px; 514 | animation-name: blinking; 515 | animation-duration: 1.5s; 516 | animation-iteration-count: infinite; 517 | } 518 | 519 | 520 | 521 | 522 | .user-typing { 523 | font-family: 'Segoe UI', sans-serif; 524 | font-size: 14px; 525 | display: block; 526 | color: #888; 527 | } 528 | 529 | .icon-video { 530 | float: right; 531 | height: 100%; 532 | padding: 35px 35px; 533 | color: #cccccc; 534 | } 535 | 536 | .icon-video .more { 537 | cursor: pointer; 538 | } 539 | 540 | .icon-info { 541 | float: right; 542 | height: 100%; 543 | padding: 35px 10px; 544 | color: #cccccc; 545 | } 546 | 547 | .icon-info .more { 548 | cursor: pointer; 549 | } 550 | 551 | .icon-more { 552 | float: right; 553 | height: 100%; 554 | padding: 35px 35px; 555 | color: #cccccc; 556 | } 557 | 558 | 559 | 560 | .icon-more .more { 561 | cursor: pointer; 562 | } 563 | 564 | 565 | 566 | 567 | .icons-more a { 568 | text-decoration: none; 569 | font-family: 'Segoe UI', sans-serif; 570 | margin-right: 20px; 571 | cursor: pointer; 572 | } 573 | 574 | .msg-wrapper-body { 575 | height: 100%; 576 | padding: 0px; 577 | width: 100%; 578 | } 579 | 580 | .msg-container { 581 | height: 80%; 582 | width: 100%; 583 | overflow-y: scroll; 584 | } 585 | 586 | .msg-container { 587 | height: calc(100% - 160px); 588 | width: 100%; 589 | overflow-y: scroll; 590 | padding-top: 15px; 591 | padding-left: 15px; 592 | padding-right: 15px; 593 | border-bottom: solid 1px rgba(0, 0, 0, .075); 594 | background: url(../img/fileuploader-dragdrop-background2.png) #f9fafb; 595 | } 596 | 597 | .msg-single { 598 | clear: both; 599 | margin-bottom: 10px; 600 | text-decoration: none; 601 | list-style-type: none; 602 | margin: 20px 0px 0px 20px; 603 | } 604 | 605 | .msg-conatiner { 606 | font-size: 15.5px; 607 | font-family: "Segoe UI", sans-serif; 608 | float: left; 609 | display: inline-block; 610 | margin: 5px; 611 | min-width: 160px; 612 | min-height: 10px; 613 | max-width: 400px; 614 | line-height: 1.4; 615 | word-wrap: break-word; 616 | padding: 20px 25px; 617 | border-radius: 2px 10px 10px 10px; 618 | display: inline-block; 619 | color: #717171; 620 | background: #FFF; 621 | box-shadow: 0 5px 7px 0 rgba(194, 193, 255, 0.3); 622 | cursor: pointer; 623 | border: solid 1px #d8d7ff; 624 | } 625 | 626 | .msg-container .table-content-cell:first-child img { 627 | border-radius: 50%; 628 | width: 40px; 629 | } 630 | 631 | .message-seen { 632 | color: #cccdd6; 633 | font-size: 12px; 634 | margin-top: 10px; 635 | text-transform: lowercase; 636 | left: 190px; 637 | } 638 | 639 | .like-true { 640 | display: block; 641 | float: left; 642 | color: #ff3a3a; 643 | cursor: pointer; 644 | margin-top: 45px; 645 | margin-left: 10px; 646 | } 647 | 648 | .like-false { 649 | display: block; 650 | float: left; 651 | color: #bfbfbf; 652 | cursor: pointer; 653 | margin-top: 45px; 654 | margin-left: 10px; 655 | } 656 | 657 | 658 | 659 | .fa-heart:before { 660 | font-size: 15px; 661 | } 662 | 663 | .msg-container .sender-message-line .table-content-cell:first-child { 664 | vertical-align: top; 665 | width: 50px; 666 | } 667 | 668 | 669 | .msg-conatiner-two { 670 | font-size: 15.5px; 671 | font-family: "Segoe UI", sans-serif; 672 | float: right; 673 | display: inline-block; 674 | margin: 5px; 675 | min-width: 160px; 676 | min-height: 10px; 677 | max-width: 400px; 678 | line-height: 1.4; 679 | word-wrap: break-word; 680 | padding: 20px 25px; 681 | border-top-left-radius: 20px; 682 | border-bottom-right-radius: 20px; 683 | border-bottom-left-radius: 20px; 684 | display: inline-block; 685 | color: #fff; 686 | background: #5769fe; 687 | border-radius: 10px 2px 10px 10px; 688 | border: solid 1px #d8d7ff; 689 | box-shadow: 0 5px 7px 0 rgba(194, 193, 255, 0.3); 690 | cursor: pointer 691 | } 692 | 693 | 694 | .msg-conatiner-two .message-seen { 695 | color: #9ca7ff; 696 | font-size: 14px; 697 | margin-top: 5px; 698 | text-transform: lowercase; 699 | } 700 | 701 | 702 | 703 | /*********************** 704 | 705 | Empty State 706 | 707 | ************************/ 708 | 709 | * { 710 | font-family: 'Lato'; 711 | } 712 | 713 | .empty_state { 714 | position: relative; 715 | top: -20px; 716 | width: 100%; 717 | height: 90%; 718 | display: flex; 719 | flex-direction: column; 720 | 721 | } 722 | 723 | .empty_state i { 724 | margin: auto; 725 | margin-bottom: 0px; 726 | font-size: 90px; 727 | } 728 | 729 | 730 | .empty_state h3 { 731 | margin: 8px 0px; 732 | text-align: center; 733 | font-weight: normal; 734 | } 735 | 736 | .empty_state p { 737 | font-size: 14px; 738 | margin: 0px; 739 | color: #999; 740 | text-align: center; 741 | } 742 | 743 | .empty_state button { 744 | outline: none; 745 | border: none; 746 | border-radius: 3px; 747 | padding: 8px 8px; 748 | margin: 20px auto auto auto; 749 | width: 50%; 750 | max-width: 200px; 751 | background: #5769fe; 752 | color: white; 753 | letter-spacing: 0.8px; 754 | text-transform: uppercase; 755 | font-size: 12px; 756 | cursor: pointer; 757 | } 758 | 759 | 760 | /*********************** 761 | 762 | Empty State Ends 763 | 764 | ************************/ 765 | 766 | .close-modal { 767 | color: #000; 768 | text-decoration: none; 769 | float: right; 770 | position: absolute; 771 | top: 10px; 772 | right: 20px; 773 | font-size: 20px; 774 | 775 | } 776 | 777 | 778 | 779 | /*Users List*/ 780 | 781 | .list-wrapper { 782 | max-width: 400px; 783 | margin: 20px auto; 784 | } 785 | 786 | 787 | 788 | .list-item { 789 | background: #fff; 790 | border-radius: 3px; 791 | list-style: none; 792 | padding: 20px 20px; 793 | display: -webkit-box; 794 | display: -ms-flexbox; 795 | display: flex; 796 | margin-top: 13px; 797 | 798 | } 799 | 800 | .list-item-image { 801 | border-radius: 50%; 802 | width: 50px; 803 | } 804 | 805 | .list-item-content { 806 | margin-left: 20px; 807 | } 808 | 809 | .list-item-content h4, 810 | .list-item-content p { 811 | margin: 0; 812 | } 813 | 814 | .list-item-content .button { 815 | margin-top: 10px; 816 | } 817 | 818 | .list-item-content h4 { 819 | margin-top: 10px; 820 | font-size: 16px; 821 | font-weight: 600; 822 | } 823 | 824 | .list-item-content p { 825 | margin-top: 5px; 826 | color: #aaa; 827 | font-size: 14px; 828 | 829 | } 830 | 831 | .list-item-content a { 832 | position: absolute; 833 | margin-top: -30px; 834 | margin-left: 200px; 835 | color: #efefef; 836 | font-size: 30px; 837 | 838 | } 839 | 840 | .list-item-content a:hover { 841 | color: #5769fe; 842 | 843 | } 844 | 845 | .list-item-content a:focus { 846 | color: #5769fe; 847 | 848 | } 849 | 850 | 851 | /*********************** 852 | 853 | Add Chat Modal Ends 854 | 855 | ************************/ 856 | 857 | .table-content { 858 | display: table; 859 | width: 100%; 860 | margin: 0; 861 | } 862 | 863 | .table-content .table-content-cell { 864 | display: table-cell; 865 | vertical-align: middle; 866 | } 867 | 868 | 869 | 870 | .message-input { 871 | bottom: 0; 872 | width: 100%; 873 | z-index: 99; 874 | } 875 | 876 | .message-input .wrap { 877 | position: relative; 878 | } 879 | 880 | .message-input .wrap input { 881 | font-family: "Segoe UI", sans-serif; 882 | float: left; 883 | border: none; 884 | width: calc(100% - 130px); 885 | padding: 22px 32px 10px 8px; 886 | padding-bottom: 20px; 887 | font-size: 1em; 888 | background-color: transparent; 889 | } 890 | 891 | @media screen and (max-width: 735px) { 892 | .message-input .wrap input { 893 | padding: 15px 32px 16px 8px; 894 | } 895 | } 896 | 897 | .message-input .wrap input:focus { 898 | outline: none; 899 | } 900 | 901 | .message-input .wrap .paperclip { 902 | position: absolute; 903 | right: 90px; 904 | z-index: 4; 905 | margin-top: 25px; 906 | font-size: 1.3em; 907 | color: #CCCCCC; 908 | cursor: pointer; 909 | } 910 | 911 | 912 | @media screen and (max-width: 735px) { 913 | .message-input .wrap .paperclip .emoji { 914 | margin-top: 17px; 915 | right: 65px; 916 | } 917 | } 918 | 919 | .message-input .wrap .paperclip:hover { 920 | color: #40EDA1; 921 | } 922 | 923 | .message-input .wrap .emoji { 924 | position: absolute; 925 | right: 125px; 926 | z-index: 4; 927 | margin-top: 25px; 928 | font-size: 1.3em; 929 | color: #CCCCCC; 930 | cursor: pointer; 931 | } 932 | 933 | .message-input .wrap .emoji:hover { 934 | color: #EEB44F; 935 | } 936 | 937 | 938 | .message-input .wrap button { 939 | float: right; 940 | border: none; 941 | width: 60px; 942 | padding: 25px 0; 943 | background-color: #5769fe; 944 | cursor: pointer; 945 | color: #fff; 946 | font-size: 1.5em; 947 | } 948 | 949 | @media screen and (max-width: 735px) { 950 | .message-input .wrap button { 951 | padding: 16px 0; 952 | } 953 | } 954 | 955 | .message-input .wrap button:hover { 956 | color: #f1f1f1; 957 | } 958 | 959 | .message-input .wrap button:focus { 960 | outline: none; 961 | color: #f1f1f1; 962 | } 963 | 964 | 965 | 966 | 967 | /*Emoji One Custom CSS*/ 968 | 969 | .span6 { 970 | float: left; 971 | width: 85%; 972 | } 973 | 974 | 975 | 976 | /* ============================================== 977 | ================================================= 978 | ~ Message Wrapper / Container Ends ~ 979 | ================================================= 980 | ============================================== */ 981 | 982 | .msg-container { 983 | overflow-y: scroll; 984 | 985 | } 986 | 987 | .msg-container { 988 | padding: 10px; 989 | animation: fade 0.25s; 990 | border-bottom: 1px solid rgba(0, 0, 0, 0.1); 991 | } 992 | 993 | 994 | .msg-wrapper-body .input { 995 | display: flex; 996 | } 997 | 998 | .msg-wrapper-body .input .btn, 999 | .msg-wrapper-body .input .emoji-btn { 1000 | line-height: 40px; 1001 | width: 75px; 1002 | padding: 25px 0; 1003 | text-align: center; 1004 | margin-left: 10px; 1005 | position: relative; 1006 | cursor: pointer; 1007 | color: #c3c3c3; 1008 | } 1009 | 1010 | .emoji-message { 1011 | margin-left: 700px; 1012 | } 1013 | 1014 | 1015 | 1016 | .msg-wrapper-body .input input { 1017 | font-size: 15px; 1018 | font-family: "Segoe UI", sans-serif; 1019 | border-radius: 2px; 1020 | margin-right: 0px; 1021 | border: none; 1022 | width: 100%; 1023 | flex: 1; 1024 | padding: 0px 20px; 1025 | font-weight: 600; 1026 | outline: none; 1027 | } 1028 | 1029 | @keyframes fade { 1030 | from { 1031 | opacity: 0; 1032 | } 1033 | to { 1034 | opacity: 1; 1035 | } 1036 | } 1037 | 1038 | @keyframes flyin { 1039 | from { 1040 | transform: translateY(400px); 1041 | opacity: 0; 1042 | } 1043 | to { 1044 | transform: translateY(0px); 1045 | opacity: 1; 1046 | } 1047 | } 1048 | 1049 | 1050 | .emoji-popup { 1051 | position: absolute; 1052 | top: -190px; 1053 | left: -143px; 1054 | height: 180px; 1055 | width: 200px; 1056 | background: #fff; 1057 | box-shadow: 0 1px 4px 0 rgba(0, 0, 0, .1); 1058 | border-radius: 2px; 1059 | text-align: center; 1060 | overflow-y: auto; 1061 | opacity: 0; 1062 | pointer-events: none; 1063 | transition: all 0.25s; 1064 | box-sizing: border-box; 1065 | } 1066 | 1067 | .emoji-wrapper { 1068 | overflow: hidden; 1069 | padding: 10px; 1070 | box-sizing: border-box; 1071 | border: solid 1px #d8d7ff; 1072 | } 1073 | 1074 | .emoji-popup .emoji-img { 1075 | margin: auto; 1076 | width: 80px; 1077 | height: 80px; 1078 | text-align: center; 1079 | border-radius: 5px; 1080 | } 1081 | 1082 | .emoji-popup .emoji-img:hover { 1083 | background: rgba(0, 0, 0, 0.25); 1084 | } 1085 | 1086 | 1087 | /* 1088 | .emoji-btn:after { 1089 | content: ''; 1090 | position: absolute; 1091 | border: 10px solid transparent; 1092 | border-top: 10px solid #999; 1093 | top: -10px; 1094 | left: 30px; 1095 | transition: all 0.25s; 1096 | opacity: 0; 1097 | } 1098 | */ 1099 | 1100 | .emoji-btn.open:after { 1101 | opacity: 1; 1102 | } 1103 | 1104 | .emoji-btn.open .emoji-popup { 1105 | opacity: 1; 1106 | pointer-events: initial; 1107 | } 1108 | 1109 | 1110 | /* ============================================== 1111 | ================================================= 1112 | ~ Buttons ~ 1113 | ================================================= 1114 | ============================================== */ 1115 | 1116 | .button-container { 1117 | display: -webkit-box; 1118 | display: -ms-flexbox; 1119 | display: flex; 1120 | margin: 60px auto; 1121 | -ms-flex-wrap: wrap; 1122 | flex-wrap: wrap; 1123 | -webkit-box-pack: center; 1124 | -ms-flex-pack: center; 1125 | justify-content: center; 1126 | } 1127 | 1128 | .button { 1129 | font-family: "Segoe UI", sans-serif; 1130 | display: -webkit-box; 1131 | display: -ms-flexbox; 1132 | display: flex; 1133 | color: #000; 1134 | overflow: hidden; 1135 | padding: 12px 12px; 1136 | cursor: pointer; 1137 | -webkit-user-select: none; 1138 | -moz-user-select: none; 1139 | -ms-user-select: none; 1140 | user-select: none; 1141 | -webkit-transition: all 60ms ease-in-out; 1142 | transition: all 60ms ease-in-out; 1143 | text-align: center; 1144 | white-space: nowrap; 1145 | text-decoration: none !important; 1146 | color: #5769fe; 1147 | border-radius: 4px; 1148 | font-size: 13px; 1149 | font-weight: 500; 1150 | line-height: 1.3; 1151 | -webkit-appearance: none; 1152 | -moz-appearance: none; 1153 | appearance: none; 1154 | -webkit-box-pack: center; 1155 | -ms-flex-pack: center; 1156 | justify-content: center; 1157 | -webkit-box-align: center; 1158 | -ms-flex-align: center; 1159 | align-items: center; 1160 | -webkit-box-flex: 0; 1161 | -ms-flex: 0 0 160px; 1162 | flex: 0 0 160px; 1163 | } 1164 | 1165 | .button:hover { 1166 | -webkit-transition: all 60ms ease; 1167 | transition: all 60ms ease; 1168 | } 1169 | 1170 | .button:active { 1171 | -webkit-transition: all 60ms ease; 1172 | transition: all 60ms ease; 1173 | } 1174 | 1175 | .button:focus { 1176 | outline: 1px dotted #959595; 1177 | outline-offset: -4px; 1178 | } 1179 | 1180 | .button.-regular { 1181 | color: #202129; 1182 | background-color: #f2f2f2; 1183 | } 1184 | 1185 | .button.-regular:hover { 1186 | color: #202129; 1187 | background-color: #e1e2e2; 1188 | opacity: 1; 1189 | } 1190 | 1191 | .button.-regular:active { 1192 | background-color: #d5d6d6; 1193 | opacity: 1; 1194 | } 1195 | 1196 | .button.-dark { 1197 | color: #FFFFFF; 1198 | background: #161616; 1199 | } 1200 | 1201 | .button.-dark:focus { 1202 | outline: 1px dotted white; 1203 | outline-offset: -4px; 1204 | } 1205 | 1206 | .button.-green { 1207 | color: #FFFFFF; 1208 | background: #3dd28d; 1209 | } 1210 | 1211 | .button.-blue { 1212 | color: #FFFFFF; 1213 | background: #4f60f3; 1214 | } 1215 | 1216 | 1217 | .button.-blueish { 1218 | color: #FFFFFF; 1219 | background: #5769fe; 1220 | } 1221 | 1222 | 1223 | .-blueish:active { 1224 | background: #4c5de8; 1225 | } 1226 | 1227 | 1228 | .button.-salmon { 1229 | color: #FFFFFF; 1230 | background: #F32C52; 1231 | } 1232 | 1233 | .button.-sun { 1234 | color: #f15c5c; 1235 | background: #feee7d; 1236 | } 1237 | 1238 | .button.-alge { 1239 | color: #e7ff20; 1240 | background: #7999a9; 1241 | } 1242 | 1243 | .button.-flower { 1244 | color: #FE8CDF; 1245 | background: #353866; 1246 | } 1247 | 1248 | 1249 | /*********************** 1250 | 1251 | Ripple Effect For Buttons 1252 | 1253 | ************************/ 1254 | 1255 | .ripple { 1256 | display: block; 1257 | box-shadow: 0 0 12px 2px rgba(0, 0, 0, .1); 1258 | position: relative; 1259 | overflow: hidden; 1260 | } 1261 | 1262 | .ripple span { 1263 | position: absolute; 1264 | display: block; 1265 | border-radius: 100%; 1266 | } 1267 | 1268 | 1269 | /* Button #4 */ 1270 | 1271 | button { 1272 | background-color: #5769fe; 1273 | } 1274 | 1275 | button span { 1276 | background-color: #495cff; 1277 | } 1278 | -------------------------------------------------------------------------------- /convo/assets/fonts/fontello.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Copyright (C) 2017 by original authors @ fontello.com 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | --------------------------------------------------------------------------------