var ColorPicker, DefaultTheme, Picker, SnowTheme, dom, _, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; _ = require('lodash'); ColorPicker = require('../../lib/color-picker'); DefaultTheme = require('../default'); dom = require('../../lib/dom'); Picker = require('../../lib/picker'); SnowTheme = (function(_super) { __extends(SnowTheme, _super); SnowTheme.COLORS = ["#000000", "#e60000", "#ff9900", "#ffff00", "#008A00", "#0066cc", "#9933ff", "#ffffff", "#facccc", "#ffebcc", "#ffffcc", "#cce8cc", "#cce0f5", "#ebd6ff", "#bbbbbb", "#f06666", "#ffc266", "#ffff66", "#66b966", "#66a3e0", "#c285ff", "#888888", "#a10000", "#b26b00", "#b2b200", "#006100", "#0047b2", "#6b24b2", "#444444", "#5c0000", "#663d00", "#666600", "#003700", "#002966", "#3d1466"]; SnowTheme.OPTIONS = { 'multi-cursor': { template: ' ' } }; SnowTheme.STYLES = { '.snow .image-tooltip-container a': { 'border': '1px solid #06c' }, '.snow .image-tooltip-container a.insert': { 'background-color': '#06c', 'color': '#fff' }, '.snow .cursor-name': { 'border-radius': '4px', 'font-size': '11px', 'font-family': 'Arial', 'margin-left': '-50%', 'padding': '4px 10px' }, '.snow .cursor-triangle': { 'border-left': '4px solid transparent', 'border-right': '4px solid transparent', 'height': '0px', 'margin-left': '-3px', 'width': '0px' }, '.snow .cursor.left .cursor-name': { 'margin-left': '-8px' }, '.snow .cursor.right .cursor-flag': { 'right': 'auto' }, '.snow .cursor.right .cursor-name': { 'margin-left': '-100%', 'margin-right': '-8px' }, '.snow .cursor-triangle.bottom': { 'border-top': '4px solid transparent', 'display': 'block', 'margin-bottom': '-1px' }, '.snow .cursor-triangle.top': { 'border-bottom': '4px solid transparent', 'display': 'none', 'margin-top': '-1px' }, '.snow .cursor.top .cursor-triangle.bottom': { 'display': 'none' }, '.snow .cursor.top .cursor-triangle.top': { 'display': 'block' }, '.snow a': { 'color': '#06c' }, '.snow .tooltip': { 'border': '1px solid #ccc', 'box-shadow': '0px 0px 5px #ddd', 'color': '#222' }, '.snow .tooltip a': { 'color': '#06c' }, '.snow .tooltip .input': { 'border': '1px solid #ccc', 'margin': '0px', 'padding': '5px' }, '.snow .image-tooltip-container .preview': { 'border-color': '#ccc', 'color': '#ccc' }, '.snow .link-tooltip-container a, .snow .link-tooltip-container span': { 'display': 'inline-block', 'line-height': '25px' } }; function SnowTheme(quill) { this.quill = quill; SnowTheme.__super__.constructor.apply(this, arguments); this.quill.addStyles(SnowTheme.STYLES); this.pickers = []; this.quill.on(this.quill.constructor.events.SELECTION_CHANGE, (function(_this) { return function(range) { if (range != null) { return _.invoke(_this.pickers, 'close'); } }; })(this)); dom(this.quill.root.ownerDocument.body).addClass('snow'); this.quill.onModuleLoad('multi-cursor', _.bind(this.extendMultiCursor, this)); this.quill.onModuleLoad('toolbar', _.bind(this.extendToolbar, this)); } SnowTheme.prototype.extendMultiCursor = function(module) { return module.on(module.constructor.events.CURSOR_ADDED, function(cursor) { var bottomTriangle, topTriangle; bottomTriangle = cursor.elem.querySelector('.cursor-triangle.bottom'); topTriangle = cursor.elem.querySelector('.cursor-triangle.top'); return bottomTriangle.style.borderTopColor = topTriangle.style.borderBottomColor = cursor.color; }); }; SnowTheme.prototype.extendToolbar = function(module) { _.each(['color', 'background', 'font', 'size', 'align'], (function(_this) { return function(format) { var picker, select; select = module.container.querySelector(".ql-" + format); if (select == null) { return; } switch (format) { case 'font': case 'size': case 'align': picker = new Picker(select); break; case 'color': case 'background': picker = new ColorPicker(select); _.each(picker.container.querySelectorAll('.ql-picker-item'), function(item, i) { if (i < 7) { return dom(item).addClass('ql-primary-color'); } }); } if (picker != null) { return _this.pickers.push(picker); } }; })(this)); return _.each(dom(module.container).textNodes(), function(node) { if (dom(node).text().trim().length === 0) { return dom(node).remove(); } }); }; return SnowTheme; })(DefaultTheme); module.exports = SnowTheme;