vendor: 7,906 bytes, lines 1-281
1/* =========================================================== 2 * trumbowyg.colors.js v1.2 3 * Colors picker plugin for Trumbowyg 4 * http://alex-d.github.com/Trumbowyg 5 * =========================================================== 6 * Author : Alexandre Demode (Alex-D) 7 * Twitter : @AlexandreDemode 8 * Website : alex-d.fr 9 */ 10 11(function ($) { 12 'use strict'; 13 14 $.extend(true, $.trumbowyg, { 15 langs: { 16 // jshint camelcase:false 17 en: { 18 foreColor: 'Text color', 19 backColor: 'Background color', 20 foreColorRemove: 'Remove text color', 21 backColorRemove: 'Remove background color' 22 }, 23 sl: { 24 foreColor: 'Barva teksta', 25 backColor: 'Barva ozadja', 26 foreColorRemove: 'Ponastavi barvo teksta', 27 backColorRemove: 'Ponastavi barvo ozadja', 28 }, 29 by: { 30 foreColor: 'ÐÐ¾Ð»ÐµÑ ÑÑкÑÑÑ', 31 backColor: 'ÐÐ¾Ð»ÐµÑ ÑÐ¾Ð½Ñ ÑÑкÑÑÑ', 32 foreColorRemove: 'ÐÑдалÑÑÑ ÐºÐ¾Ð»ÐµÑ ÑÑкÑÑÑ', 33 backColorRemove: 'ÐÑдалÑÑÑ ÐºÐ¾Ð»ÐµÑ ÑÐ¾Ð½Ñ ÑÑкÑÑÑ' 34 }, 35 cs: { 36 foreColor: 'Barva textu', 37 backColor: 'Barva pozadÃ' 38 }, 39 da: { 40 foreColor: 'Tekstfarve', 41 backColor: 'Baggrundsfarve' 42 }, 43 de: { 44 foreColor: 'Textfarbe', 45 backColor: 'Hintergrundfarbe' 46 }, 47 et: { 48 foreColor: 'Teksti värv', 49 backColor: 'Taustavärv', 50 foreColorRemove: 'Eemalda teksti värv', 51 backColorRemove: 'Eemalda taustavärv' 52 }, 53 fr: { 54 foreColor: 'Couleur du texte', 55 backColor: 'Couleur de fond', 56 foreColorRemove: 'Supprimer la couleur du texte', 57 backColorRemove: 'Supprimer la couleur de fond' 58 }, 59 hu: { 60 foreColor: 'Betű szÃn', 61 backColor: 'Háttér szÃn', 62 foreColorRemove: 'Betű szÃn eltávolÃtása', 63 backColorRemove: 'Háttér szÃn eltávolÃtása' 64 }, 65 ja: { 66 foreColor: 'æåè²', 67 backColor: 'èæ¯è²' 68 }, 69 ko: { 70 foreColor: 'ê¸ìì', 71 backColor: 'ë°°ê²½ì', 72 foreColorRemove: 'ê¸ìì ì§ì°ê¸°', 73 backColorRemove: 'ë°°ê²½ì ì§ì°ê¸°' 74 }, 75 nl: { 76 foreColor: 'Tekstkleur', 77 backColor: 'Achtergrondkleur' 78 }, 79 pt_br: { 80 foreColor: 'Cor de fonte', 81 backColor: 'Cor de fundo' 82 }, 83 ru: { 84 foreColor: 'Ð¦Ð²ÐµÑ ÑекÑÑа', 85 backColor: 'Ð¦Ð²ÐµÑ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑекÑÑа', 86 foreColorRemove: 'ÐÑиÑÑиÑÑ ÑÐ²ÐµÑ ÑекÑÑа', 87 backColorRemove: 'ÐÑиÑÑиÑÑ ÑÐ²ÐµÑ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑекÑÑа' 88 }, 89 sk: { 90 foreColor: 'Farba textu', 91 backColor: 'Farba pozadia' 92 }, 93 tr: { 94 foreColor: 'Yazı rengi', 95 backColor: 'Arka plan rengi', 96 foreColorRemove: 'Yazı rengini kaldır', 97 backColorRemove: 'Arka plan rengini kaldır' 98 }, 99 zh_cn: { 100 foreColor: 'æåé¢è²', 101 backColor: 'èæ¯é¢è²' 102 }, 103 zh_tw: { 104 foreColor: 'æåé¡è²', 105 backColor: 'èæ¯é¡è²' 106 }, 107 } 108 }); 109 110 // jshint camelcase:true 111 112 113 function hex(x) { 114 return ('0' + parseInt(x).toString(16)).slice(-2); 115 } 116 117 function colorToHex(rgb) { 118 if (rgb.search('rgb') === -1) { 119 return rgb.replace('#', ''); 120 } else if (rgb === 'rgba(0, 0, 0, 0)') { 121 return 'transparent'; 122 } else { 123 rgb = rgb.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d?(.\d+)))?\)$/); 124 if (rgb == null) { 125 return 'transparent'; // No match, return transparent as unkown color 126 } 127 return hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]); 128 } 129 } 130 131 function colorTagHandler(element, trumbowyg) { 132 var tags = []; 133 134 if (!element.style) { 135 return tags; 136 } 137 138 // background color 139 if (element.style.backgroundColor !== '') { 140 var backColor = colorToHex(element.style.backgroundColor); 141 if (trumbowyg.o.plugins.colors.colorList.indexOf(backColor) >= 0) { 142 tags.push('backColor' + backColor); 143 } else { 144 tags.push('backColorFree'); 145 } 146 } 147 148 // text color 149 var foreColor; 150 if (element.style.color !== '') { 151 foreColor = colorToHex(element.style.color); 152 } else if (element.hasAttribute('color')) { 153 foreColor = colorToHex(element.getAttribute('color')); 154 } 155 if (foreColor) { 156 if (trumbowyg.o.plugins.colors.colorList.indexOf(foreColor) >= 0) { 157 tags.push('foreColor' + foreColor); 158 } else { 159 tags.push('foreColorFree'); 160 } 161 } 162 163 return tags; 164 } 165 166 var defaultOptions = { 167 colorList: [ 168 'ffffff', '000000', 'eeece1', '1f497d', '4f81bd', 'c0504d', '9bbb59', '8064a2', '4bacc6', 'f79646', 'ffff00', 169 'f2f2f2', '7f7f7f', 'ddd9c3', 'c6d9f0', 'dbe5f1', 'f2dcdb', 'ebf1dd', 'e5e0ec', 'dbeef3', 'fdeada', 'fff2ca', 170 'd8d8d8', '595959', 'c4bd97', '8db3e2', 'b8cce4', 'e5b9b7', 'd7e3bc', 'ccc1d9', 'b7dde8', 'fbd5b5', 'ffe694', 171 'bfbfbf', '3f3f3f', '938953', '548dd4', '95b3d7', 'd99694', 'c3d69b', 'b2a2c7', 'b7dde8', 'fac08f', 'f2c314', 172 'a5a5a5', '262626', '494429', '17365d', '366092', '953734', '76923c', '5f497a', '92cddc', 'e36c09', 'c09100', 173 '7f7f7f', '0c0c0c', '1d1b10', '0f243e', '244061', '632423', '4f6128', '3f3151', '31859b', '974806', '7f6000' 174 ], 175 foreColorList: null, // fallbacks on colorList 176 backColorList: null, // fallbacks on colorList 177 allowCustomForeColor: true, 178 allowCustomBackColor: true, 179 displayAsList: false, 180 }; 181 182 // Add all colors in two dropdowns 183 $.extend(true, $.trumbowyg, { 184 plugins: { 185 color: { 186 init: function (trumbowyg) { 187 trumbowyg.o.plugins.colors = trumbowyg.o.plugins.colors || defaultOptions; 188 var dropdownClass = trumbowyg.o.plugins.colors.displayAsList ? trumbowyg.o.prefix + 'dropdown--color-list' : ''; 189 190 var foreColorBtnDef = { 191 dropdown: buildDropdown('foreColor', trumbowyg), 192 dropdownClass: dropdownClass, 193 }, 194 backColorBtnDef = { 195 dropdown: buildDropdown('backColor', trumbowyg), 196 dropdownClass: dropdownClass, 197 }; 198 199 trumbowyg.addBtnDef('foreColor', foreColorBtnDef); 200 trumbowyg.addBtnDef('backColor', backColorBtnDef); 201 }, 202 tagHandler: colorTagHandler 203 } 204 } 205 }); 206 207 function buildDropdown(fn, trumbowyg) { 208 var dropdown = [], 209 trumbowygColorOptions = trumbowyg.o.plugins.colors, 210 colorList = trumbowygColorOptions[fn + 'List'] || trumbowygColorOptions.colorList; 211 212 $.each(colorList, function (i, color) { 213 var btn = fn + color, 214 btnDef = { 215 fn: fn, 216 forceCss: true, 217 hasIcon: false, 218 text: trumbowyg.lang['#' + color] || ('#' + color), 219 param: '#' + color, 220 style: 'background-color: #' + color + ';' 221 }; 222 223 if (trumbowygColorOptions.displayAsList && fn === 'foreColor') { 224 btnDef.style = 'color: #' + color + ' !important;'; 225 } 226 227 trumbowyg.addBtnDef(btn, btnDef); 228 dropdown.push(btn); 229 }); 230 231 // Remove color 232 var removeColorButtonName = fn + 'Remove', 233 removeColorBtnDef = { 234 fn: 'removeFormat', 235 hasIcon: false, 236 param: fn, 237 style: 'background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAG0lEQVQIW2NkQAAfEJMRmwBYhoGBYQtMBYoAADziAp0jtJTgAAAAAElFTkSuQmCC);' 238 }; 239 240 if (trumbowygColorOptions.displayAsList) { 241 removeColorBtnDef.style = ''; 242 } 243 244 trumbowyg.addBtnDef(removeColorButtonName, removeColorBtnDef); 245 dropdown.push(removeColorButtonName); 246 247 // Custom color 248 if (trumbowygColorOptions['allowCustom' + fn.charAt(0).toUpperCase() + fn.substr(1)]) { 249 // add free color btn 250 var freeColorButtonName = fn + 'Free', 251 freeColorBtnDef = { 252 fn: function () { 253 trumbowyg.openModalInsert(trumbowyg.lang[fn], 254 { 255 color: { 256 label: fn, 257 forceCss: true, 258 type: 'color', 259 value: '#FFFFFF' 260 } 261 }, 262 // callback 263 function (values) { 264 trumbowyg.execCmd(fn, values.color); 265 return true; 266 } 267 ); 268 }, 269 hasIcon: false, 270 text: '#', 271 // style adjust for displaying the text 272 style: 'text-indent: 0; line-height: 20px; padding: 0 5px;' 273 }; 274 275 trumbowyg.addBtnDef(freeColorButtonName, freeColorBtnDef); 276 dropdown.push(freeColorButtonName); 277 } 278 279 return dropdown; 280 } 281})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.