Gitter migration: Point people to app.gitter.im (rollout pt. 1)
[gitter.git] / public / js / views / fast-attach-mixin.js
bloba04d711e1e54a12b2a89979901bd24f3c9d0b98e
1 'use strict';
3 function isWhitespace(char) {
4   return char === '\n' || char === ' ' || char === '\t';
7 module.exports = {
8   attachElContent: function fastAttachElContent(html) {
9     var el = this.el;
10     if (typeof html === 'string') {
11       el.innerHTML = html;
12       return this;
13     }
15     if (html.length) {
16       el.innerHTML = '';
17       var len = html.length;
18       for (var i = 0; i < len; i++) {
19         var chunk = html[i];
20         /* Ignore empty text chunks */
21         if (
22           chunk.nodeType === 3 &&
23           chunk.textContent.length === 1 &&
24           isWhitespace(chunk.textContent[0])
25         )
26           continue;
27         el.appendChild(chunk);
28       }
29       return this;
30     }
32     if (html.nodeType === 1) {
33       el.innerHTML = '';
34       el.appendChild(html);
35       return this;
36     }
38     this.$el.html(html);
39     return this;
40   }