PageSourceSearch

https://buxtar.co/wp-content/plugins/eroom-zoom-meetings-webinar/n…/trumbowyg/color-trumbowyg.js?ver=7.1

js buxtar.co collected 2026-09-24 12:52:12 UTC 7,906 bytes, 281 lines download raw bytes

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.