@kolkov/angular-editor 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +4 -2
  3. package/esm2020/kolkov-angular-editor.mjs +5 -0
  4. package/esm2020/lib/ae-select/ae-select.component.mjs +185 -0
  5. package/esm2020/lib/angular-editor-toolbar.component.mjs +363 -0
  6. package/esm2020/lib/angular-editor.component.mjs +410 -0
  7. package/esm2020/lib/angular-editor.module.mjs +25 -0
  8. package/esm2020/lib/angular-editor.service.mjs +274 -0
  9. package/{esm2015/lib/config.js → esm2020/lib/config.mjs} +0 -0
  10. package/{esm2015/lib/utils.js → esm2020/lib/utils.mjs} +0 -0
  11. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  12. package/fesm2015/kolkov-angular-editor.mjs +1288 -0
  13. package/fesm2015/kolkov-angular-editor.mjs.map +1 -0
  14. package/fesm2020/kolkov-angular-editor.mjs +1282 -0
  15. package/fesm2020/kolkov-angular-editor.mjs.map +1 -0
  16. package/kolkov-angular-editor.d.ts +1 -1
  17. package/lib/ae-select/ae-select.component.d.ts +3 -0
  18. package/lib/angular-editor-toolbar.component.d.ts +3 -0
  19. package/lib/angular-editor.component.d.ts +3 -0
  20. package/lib/angular-editor.module.d.ts +9 -0
  21. package/lib/angular-editor.service.d.ts +3 -0
  22. package/package.json +23 -14
  23. package/bundles/kolkov-angular-editor.umd.js +0 -1603
  24. package/bundles/kolkov-angular-editor.umd.js.map +0 -1
  25. package/esm2015/kolkov-angular-editor.js +0 -6
  26. package/esm2015/lib/ae-select/ae-select.component.js +0 -173
  27. package/esm2015/lib/angular-editor-toolbar.component.js +0 -353
  28. package/esm2015/lib/angular-editor.component.js +0 -383
  29. package/esm2015/lib/angular-editor.module.js +0 -18
  30. package/esm2015/lib/angular-editor.service.js +0 -272
  31. package/fesm2015/kolkov-angular-editor.js +0 -1233
  32. package/fesm2015/kolkov-angular-editor.js.map +0 -1
  33. package/kolkov-angular-editor.metadata.json +0 -1
@@ -1,1603 +0,0 @@
1
- (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common/http'), require('@angular/common'), require('@angular/forms'), require('@angular/platform-browser')) :
3
- typeof define === 'function' && define.amd ? define('@kolkov/angular-editor', ['exports', '@angular/core', '@angular/common/http', '@angular/common', '@angular/forms', '@angular/platform-browser'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.kolkov = global.kolkov || {}, global.kolkov['angular-editor'] = {}), global.ng.core, global.ng.common.http, global.ng.common, global.ng.forms, global.ng.platformBrowser));
5
- }(this, (function (exports, core, http, common, forms, platformBrowser) { 'use strict';
6
-
7
- var AngularEditorService = /** @class */ (function () {
8
- function AngularEditorService(http, doc) {
9
- var _this = this;
10
- this.http = http;
11
- this.doc = doc;
12
- /**
13
- * save selection when the editor is focussed out
14
- */
15
- this.saveSelection = function () {
16
- if (_this.doc.getSelection) {
17
- var sel = _this.doc.getSelection();
18
- if (sel.getRangeAt && sel.rangeCount) {
19
- _this.savedSelection = sel.getRangeAt(0);
20
- _this.selectedText = sel.toString();
21
- }
22
- }
23
- else if (_this.doc.getSelection && _this.doc.createRange) {
24
- _this.savedSelection = document.createRange();
25
- }
26
- else {
27
- _this.savedSelection = null;
28
- }
29
- };
30
- }
31
- /**
32
- * Executed command from editor header buttons exclude toggleEditorMode
33
- * @param command string from triggerCommand
34
- */
35
- AngularEditorService.prototype.executeCommand = function (command) {
36
- var commands = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'pre'];
37
- if (commands.includes(command)) {
38
- this.doc.execCommand('formatBlock', false, command);
39
- return;
40
- }
41
- this.doc.execCommand(command, false, null);
42
- };
43
- /**
44
- * Create URL link
45
- * @param url string from UI prompt
46
- */
47
- AngularEditorService.prototype.createLink = function (url) {
48
- if (!url.includes('http')) {
49
- this.doc.execCommand('createlink', false, url);
50
- }
51
- else {
52
- var newUrl = '<a href="' + url + '" target="_blank">' + this.selectedText + '</a>';
53
- this.insertHtml(newUrl);
54
- }
55
- };
56
- /**
57
- * insert color either font or background
58
- *
59
- * @param color color to be inserted
60
- * @param where where the color has to be inserted either text/background
61
- */
62
- AngularEditorService.prototype.insertColor = function (color, where) {
63
- var restored = this.restoreSelection();
64
- if (restored) {
65
- if (where === 'textColor') {
66
- this.doc.execCommand('foreColor', false, color);
67
- }
68
- else {
69
- this.doc.execCommand('hiliteColor', false, color);
70
- }
71
- }
72
- };
73
- /**
74
- * Set font name
75
- * @param fontName string
76
- */
77
- AngularEditorService.prototype.setFontName = function (fontName) {
78
- this.doc.execCommand('fontName', false, fontName);
79
- };
80
- /**
81
- * Set font size
82
- * @param fontSize string
83
- */
84
- AngularEditorService.prototype.setFontSize = function (fontSize) {
85
- this.doc.execCommand('fontSize', false, fontSize);
86
- };
87
- /**
88
- * Create raw HTML
89
- * @param html HTML string
90
- */
91
- AngularEditorService.prototype.insertHtml = function (html) {
92
- var isHTMLInserted = this.doc.execCommand('insertHTML', false, html);
93
- if (!isHTMLInserted) {
94
- throw new Error('Unable to perform the operation');
95
- }
96
- };
97
- /**
98
- * restore selection when the editor is focused in
99
- *
100
- * saved selection when the editor is focused out
101
- */
102
- AngularEditorService.prototype.restoreSelection = function () {
103
- if (this.savedSelection) {
104
- if (this.doc.getSelection) {
105
- var sel = this.doc.getSelection();
106
- sel.removeAllRanges();
107
- sel.addRange(this.savedSelection);
108
- return true;
109
- }
110
- else if (this.doc.getSelection /*&& this.savedSelection.select*/) {
111
- // this.savedSelection.select();
112
- return true;
113
- }
114
- }
115
- else {
116
- return false;
117
- }
118
- };
119
- /**
120
- * setTimeout used for execute 'saveSelection' method in next event loop iteration
121
- */
122
- AngularEditorService.prototype.executeInNextQueueIteration = function (callbackFn, timeout) {
123
- if (timeout === void 0) { timeout = 1e2; }
124
- setTimeout(callbackFn, timeout);
125
- };
126
- /** check any selection is made or not */
127
- AngularEditorService.prototype.checkSelection = function () {
128
- var selectedText = this.savedSelection.toString();
129
- if (selectedText.length === 0) {
130
- throw new Error('No Selection Made');
131
- }
132
- return true;
133
- };
134
- /**
135
- * Upload file to uploadUrl
136
- * @param file The file
137
- */
138
- AngularEditorService.prototype.uploadImage = function (file) {
139
- var uploadData = new FormData();
140
- uploadData.append('file', file, file.name);
141
- return this.http.post(this.uploadUrl, uploadData, {
142
- reportProgress: true,
143
- observe: 'events',
144
- withCredentials: this.uploadWithCredentials,
145
- });
146
- };
147
- /**
148
- * Insert image with Url
149
- * @param imageUrl The imageUrl.
150
- */
151
- AngularEditorService.prototype.insertImage = function (imageUrl) {
152
- this.doc.execCommand('insertImage', false, imageUrl);
153
- };
154
- AngularEditorService.prototype.setDefaultParagraphSeparator = function (separator) {
155
- this.doc.execCommand('defaultParagraphSeparator', false, separator);
156
- };
157
- AngularEditorService.prototype.createCustomClass = function (customClass) {
158
- var newTag = this.selectedText;
159
- if (customClass) {
160
- var tagName = customClass.tag ? customClass.tag : 'span';
161
- newTag = '<' + tagName + ' class="' + customClass.class + '">' + this.selectedText + '</' + tagName + '>';
162
- }
163
- this.insertHtml(newTag);
164
- };
165
- AngularEditorService.prototype.insertVideo = function (videoUrl) {
166
- if (videoUrl.match('www.youtube.com')) {
167
- this.insertYouTubeVideoTag(videoUrl);
168
- }
169
- if (videoUrl.match('vimeo.com')) {
170
- this.insertVimeoVideoTag(videoUrl);
171
- }
172
- };
173
- AngularEditorService.prototype.insertYouTubeVideoTag = function (videoUrl) {
174
- var id = videoUrl.split('v=')[1];
175
- var imageUrl = "https://img.youtube.com/vi/" + id + "/0.jpg";
176
- var thumbnail = "\n <div style='position: relative'>\n <a href='" + videoUrl + "' target='_blank'>\n <img src=\"" + imageUrl + "\" alt=\"click to watch\"/>\n <img style='position: absolute; left:200px; top:140px'\n src=\"https://img.icons8.com/color/96/000000/youtube-play.png\"/>\n </a>\n </div>";
177
- this.insertHtml(thumbnail);
178
- };
179
- AngularEditorService.prototype.insertVimeoVideoTag = function (videoUrl) {
180
- var _this = this;
181
- var sub = this.http.get("https://vimeo.com/api/oembed.json?url=" + videoUrl).subscribe(function (data) {
182
- var imageUrl = data.thumbnail_url_with_play_button;
183
- var thumbnail = "<div>\n <a href='" + videoUrl + "' target='_blank'>\n <img src=\"" + imageUrl + "\" alt=\"" + data.title + "\"/>\n </a>\n </div>";
184
- _this.insertHtml(thumbnail);
185
- sub.unsubscribe();
186
- });
187
- };
188
- AngularEditorService.prototype.nextNode = function (node) {
189
- if (node.hasChildNodes()) {
190
- return node.firstChild;
191
- }
192
- else {
193
- while (node && !node.nextSibling) {
194
- node = node.parentNode;
195
- }
196
- if (!node) {
197
- return null;
198
- }
199
- return node.nextSibling;
200
- }
201
- };
202
- AngularEditorService.prototype.getRangeSelectedNodes = function (range, includePartiallySelectedContainers) {
203
- var node = range.startContainer;
204
- var endNode = range.endContainer;
205
- var rangeNodes = [];
206
- // Special case for a range that is contained within a single node
207
- if (node === endNode) {
208
- rangeNodes = [node];
209
- }
210
- else {
211
- // Iterate nodes until we hit the end container
212
- while (node && node !== endNode) {
213
- rangeNodes.push(node = this.nextNode(node));
214
- }
215
- // Add partially selected nodes at the start of the range
216
- node = range.startContainer;
217
- while (node && node !== range.commonAncestorContainer) {
218
- rangeNodes.unshift(node);
219
- node = node.parentNode;
220
- }
221
- }
222
- // Add ancestors of the range container, if required
223
- if (includePartiallySelectedContainers) {
224
- node = range.commonAncestorContainer;
225
- while (node) {
226
- rangeNodes.push(node);
227
- node = node.parentNode;
228
- }
229
- }
230
- return rangeNodes;
231
- };
232
- AngularEditorService.prototype.getSelectedNodes = function () {
233
- var nodes = [];
234
- if (this.doc.getSelection) {
235
- var sel = this.doc.getSelection();
236
- for (var i = 0, len = sel.rangeCount; i < len; ++i) {
237
- nodes.push.apply(nodes, this.getRangeSelectedNodes(sel.getRangeAt(i), true));
238
- }
239
- }
240
- return nodes;
241
- };
242
- AngularEditorService.prototype.replaceWithOwnChildren = function (el) {
243
- var parent = el.parentNode;
244
- while (el.hasChildNodes()) {
245
- parent.insertBefore(el.firstChild, el);
246
- }
247
- parent.removeChild(el);
248
- };
249
- AngularEditorService.prototype.removeSelectedElements = function (tagNames) {
250
- var _this = this;
251
- var tagNamesArray = tagNames.toLowerCase().split(',');
252
- this.getSelectedNodes().forEach(function (node) {
253
- if (node.nodeType === 1 &&
254
- tagNamesArray.indexOf(node.tagName.toLowerCase()) > -1) {
255
- // Remove the node and replace it with its children
256
- _this.replaceWithOwnChildren(node);
257
- }
258
- });
259
- };
260
- return AngularEditorService;
261
- }());
262
- AngularEditorService.decorators = [
263
- { type: core.Injectable }
264
- ];
265
- AngularEditorService.ctorParameters = function () { return [
266
- { type: http.HttpClient },
267
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] }
268
- ]; };
269
-
270
- var angularEditorConfig = {
271
- editable: true,
272
- spellcheck: true,
273
- height: 'auto',
274
- minHeight: '0',
275
- maxHeight: 'auto',
276
- width: 'auto',
277
- minWidth: '0',
278
- translate: 'yes',
279
- enableToolbar: true,
280
- showToolbar: true,
281
- placeholder: 'Enter text here...',
282
- defaultParagraphSeparator: '',
283
- defaultFontName: '',
284
- defaultFontSize: '',
285
- fonts: [
286
- { class: 'arial', name: 'Arial' },
287
- { class: 'times-new-roman', name: 'Times New Roman' },
288
- { class: 'calibri', name: 'Calibri' },
289
- { class: 'comic-sans-ms', name: 'Comic Sans MS' }
290
- ],
291
- uploadUrl: 'v1/image',
292
- uploadWithCredentials: false,
293
- sanitize: true,
294
- toolbarPosition: 'top',
295
- outline: true,
296
- /*toolbarHiddenButtons: [
297
- ['bold', 'italic', 'underline', 'strikeThrough', 'superscript', 'subscript'],
298
- ['heading', 'fontName', 'fontSize', 'color'],
299
- ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', 'indent', 'outdent'],
300
- ['cut', 'copy', 'delete', 'removeFormat', 'undo', 'redo'],
301
- ['paragraph', 'blockquote', 'removeBlockquote', 'horizontalLine', 'orderedList', 'unorderedList'],
302
- ['link', 'unlink', 'image', 'video']
303
- ]*/
304
- };
305
-
306
- function isDefined(value) {
307
- return value !== undefined && value !== null;
308
- }
309
-
310
- var AngularEditorComponent = /** @class */ (function () {
311
- function AngularEditorComponent(r, editorService, doc, sanitizer, cdRef, defaultTabIndex, autoFocus) {
312
- this.r = r;
313
- this.editorService = editorService;
314
- this.doc = doc;
315
- this.sanitizer = sanitizer;
316
- this.cdRef = cdRef;
317
- this.autoFocus = autoFocus;
318
- this.modeVisual = true;
319
- this.showPlaceholder = false;
320
- this.disabled = false;
321
- this.focused = false;
322
- this.touched = false;
323
- this.changed = false;
324
- this.id = '';
325
- this.config = angularEditorConfig;
326
- this.placeholder = '';
327
- this.viewMode = new core.EventEmitter();
328
- /** emits `blur` event when focused out from the textarea */
329
- // eslint-disable-next-line @angular-eslint/no-output-native, @angular-eslint/no-output-rename
330
- this.blurEvent = new core.EventEmitter();
331
- /** emits `focus` event when focused in to the textarea */
332
- // eslint-disable-next-line @angular-eslint/no-output-rename, @angular-eslint/no-output-native
333
- this.focusEvent = new core.EventEmitter();
334
- this.tabindex = -1;
335
- var parsedTabIndex = Number(defaultTabIndex);
336
- this.tabIndex = (parsedTabIndex || parsedTabIndex === 0) ? parsedTabIndex : null;
337
- }
338
- AngularEditorComponent.prototype.onFocus = function () {
339
- this.focus();
340
- };
341
- AngularEditorComponent.prototype.ngOnInit = function () {
342
- this.config.toolbarPosition = this.config.toolbarPosition ? this.config.toolbarPosition : angularEditorConfig.toolbarPosition;
343
- };
344
- AngularEditorComponent.prototype.ngAfterViewInit = function () {
345
- if (isDefined(this.autoFocus)) {
346
- this.focus();
347
- }
348
- };
349
- AngularEditorComponent.prototype.onPaste = function (event) {
350
- if (this.config.rawPaste) {
351
- event.preventDefault();
352
- var text = event.clipboardData.getData('text/plain');
353
- document.execCommand('insertHTML', false, text);
354
- return text;
355
- }
356
- };
357
- /**
358
- * Executed command from editor header buttons
359
- * @param command string from triggerCommand
360
- */
361
- AngularEditorComponent.prototype.executeCommand = function (command) {
362
- this.focus();
363
- if (command === 'focus') {
364
- return;
365
- }
366
- if (command === 'toggleEditorMode') {
367
- this.toggleEditorMode(this.modeVisual);
368
- }
369
- else if (command !== '') {
370
- if (command === 'clear') {
371
- this.editorService.removeSelectedElements(this.getCustomTags());
372
- this.onContentChange(this.textArea.nativeElement);
373
- }
374
- else if (command === 'default') {
375
- this.editorService.removeSelectedElements('h1,h2,h3,h4,h5,h6,p,pre');
376
- this.onContentChange(this.textArea.nativeElement);
377
- }
378
- else {
379
- this.editorService.executeCommand(command);
380
- }
381
- this.exec();
382
- }
383
- };
384
- /**
385
- * focus event
386
- */
387
- AngularEditorComponent.prototype.onTextAreaFocus = function (event) {
388
- var _this = this;
389
- if (this.focused) {
390
- event.stopPropagation();
391
- return;
392
- }
393
- this.focused = true;
394
- this.focusEvent.emit(event);
395
- if (!this.touched || !this.changed) {
396
- this.editorService.executeInNextQueueIteration(function () {
397
- _this.configure();
398
- _this.touched = true;
399
- });
400
- }
401
- };
402
- /**
403
- * @description fires when cursor leaves textarea
404
- */
405
- AngularEditorComponent.prototype.onTextAreaMouseOut = function (event) {
406
- this.editorService.saveSelection();
407
- };
408
- /**
409
- * blur event
410
- */
411
- AngularEditorComponent.prototype.onTextAreaBlur = function (event) {
412
- /**
413
- * save selection if focussed out
414
- */
415
- this.editorService.executeInNextQueueIteration(this.editorService.saveSelection);
416
- if (typeof this.onTouched === 'function') {
417
- this.onTouched();
418
- }
419
- if (event.relatedTarget !== null) {
420
- var parent = event.relatedTarget.parentElement;
421
- if (!parent.classList.contains('angular-editor-toolbar-set') && !parent.classList.contains('ae-picker')) {
422
- this.blurEvent.emit(event);
423
- this.focused = false;
424
- }
425
- }
426
- };
427
- /**
428
- * focus the text area when the editor is focused
429
- */
430
- AngularEditorComponent.prototype.focus = function () {
431
- if (this.modeVisual) {
432
- this.textArea.nativeElement.focus();
433
- }
434
- else {
435
- var sourceText = this.doc.getElementById('sourceText' + this.id);
436
- sourceText.focus();
437
- this.focused = true;
438
- }
439
- };
440
- /**
441
- * Executed from the contenteditable section while the input property changes
442
- * @param element html element from contenteditable
443
- */
444
- AngularEditorComponent.prototype.onContentChange = function (element) {
445
- var html = '';
446
- if (this.modeVisual) {
447
- html = element.innerHTML;
448
- }
449
- else {
450
- html = element.innerText;
451
- }
452
- if ((!html || html === '<br>')) {
453
- html = '';
454
- }
455
- if (typeof this.onChange === 'function') {
456
- this.onChange(this.config.sanitize || this.config.sanitize === undefined ?
457
- this.sanitizer.sanitize(core.SecurityContext.HTML, html) : html);
458
- if ((!html) !== this.showPlaceholder) {
459
- this.togglePlaceholder(this.showPlaceholder);
460
- }
461
- }
462
- this.changed = true;
463
- };
464
- /**
465
- * Set the function to be called
466
- * when the control receives a change event.
467
- *
468
- * @param fn a function
469
- */
470
- AngularEditorComponent.prototype.registerOnChange = function (fn) {
471
- this.onChange = function (e) { return (e === '<br>' ? fn('') : fn(e)); };
472
- };
473
- /**
474
- * Set the function to be called
475
- * when the control receives a touch event.
476
- *
477
- * @param fn a function
478
- */
479
- AngularEditorComponent.prototype.registerOnTouched = function (fn) {
480
- this.onTouched = fn;
481
- };
482
- /**
483
- * Write a new value to the element.
484
- *
485
- * @param value value to be executed when there is a change in contenteditable
486
- */
487
- AngularEditorComponent.prototype.writeValue = function (value) {
488
- if ((!value || value === '<br>' || value === '') !== this.showPlaceholder) {
489
- this.togglePlaceholder(this.showPlaceholder);
490
- }
491
- if (value === undefined || value === '' || value === '<br>') {
492
- value = null;
493
- }
494
- this.refreshView(value);
495
- };
496
- /**
497
- * refresh view/HTML of the editor
498
- *
499
- * @param value html string from the editor
500
- */
501
- AngularEditorComponent.prototype.refreshView = function (value) {
502
- var normalizedValue = value === null ? '' : value;
503
- this.r.setProperty(this.textArea.nativeElement, 'innerHTML', normalizedValue);
504
- return;
505
- };
506
- /**
507
- * toggles placeholder based on input string
508
- *
509
- * @param value A HTML string from the editor
510
- */
511
- AngularEditorComponent.prototype.togglePlaceholder = function (value) {
512
- if (!value) {
513
- this.r.addClass(this.editorWrapper.nativeElement, 'show-placeholder');
514
- this.showPlaceholder = true;
515
- }
516
- else {
517
- this.r.removeClass(this.editorWrapper.nativeElement, 'show-placeholder');
518
- this.showPlaceholder = false;
519
- }
520
- };
521
- /**
522
- * Implements disabled state for this element
523
- *
524
- * @param isDisabled Disabled flag
525
- */
526
- AngularEditorComponent.prototype.setDisabledState = function (isDisabled) {
527
- var div = this.textArea.nativeElement;
528
- var action = isDisabled ? 'addClass' : 'removeClass';
529
- this.r[action](div, 'disabled');
530
- this.disabled = isDisabled;
531
- };
532
- /**
533
- * toggles editor mode based on bToSource bool
534
- *
535
- * @param bToSource A boolean value from the editor
536
- */
537
- AngularEditorComponent.prototype.toggleEditorMode = function (bToSource) {
538
- var _this = this;
539
- var oContent;
540
- var editableElement = this.textArea.nativeElement;
541
- if (bToSource) {
542
- oContent = this.r.createText(editableElement.innerHTML);
543
- this.r.setProperty(editableElement, 'innerHTML', '');
544
- this.r.setProperty(editableElement, 'contentEditable', false);
545
- var oPre = this.r.createElement('pre');
546
- this.r.setStyle(oPre, 'margin', '0');
547
- this.r.setStyle(oPre, 'outline', 'none');
548
- var oCode = this.r.createElement('code');
549
- this.r.setProperty(oCode, 'id', 'sourceText' + this.id);
550
- this.r.setStyle(oCode, 'display', 'block');
551
- this.r.setStyle(oCode, 'white-space', 'pre-wrap');
552
- this.r.setStyle(oCode, 'word-break', 'keep-all');
553
- this.r.setStyle(oCode, 'outline', 'none');
554
- this.r.setStyle(oCode, 'margin', '0');
555
- this.r.setStyle(oCode, 'background-color', '#fff5b9');
556
- this.r.setProperty(oCode, 'contentEditable', true);
557
- this.r.appendChild(oCode, oContent);
558
- this.focusInstance = this.r.listen(oCode, 'focus', function (event) { return _this.onTextAreaFocus(event); });
559
- this.blurInstance = this.r.listen(oCode, 'blur', function (event) { return _this.onTextAreaBlur(event); });
560
- this.r.appendChild(oPre, oCode);
561
- this.r.appendChild(editableElement, oPre);
562
- // ToDo move to service
563
- this.doc.execCommand('defaultParagraphSeparator', false, 'div');
564
- this.modeVisual = false;
565
- this.viewMode.emit(false);
566
- oCode.focus();
567
- }
568
- else {
569
- if (this.doc.querySelectorAll) {
570
- this.r.setProperty(editableElement, 'innerHTML', editableElement.innerText);
571
- }
572
- else {
573
- oContent = this.doc.createRange();
574
- oContent.selectNodeContents(editableElement.firstChild);
575
- this.r.setProperty(editableElement, 'innerHTML', oContent.toString());
576
- }
577
- this.r.setProperty(editableElement, 'contentEditable', true);
578
- this.modeVisual = true;
579
- this.viewMode.emit(true);
580
- this.onContentChange(editableElement);
581
- editableElement.focus();
582
- }
583
- this.editorToolbar.setEditorMode(!this.modeVisual);
584
- };
585
- /**
586
- * toggles editor buttons when cursor moved or positioning
587
- *
588
- * Send a node array from the contentEditable of the editor
589
- */
590
- AngularEditorComponent.prototype.exec = function () {
591
- this.editorToolbar.triggerButtons();
592
- var userSelection;
593
- if (this.doc.getSelection) {
594
- userSelection = this.doc.getSelection();
595
- this.editorService.executeInNextQueueIteration(this.editorService.saveSelection);
596
- }
597
- var a = userSelection.focusNode;
598
- var els = [];
599
- while (a && a.id !== 'editor') {
600
- els.unshift(a);
601
- a = a.parentNode;
602
- }
603
- this.editorToolbar.triggerBlocks(els);
604
- };
605
- AngularEditorComponent.prototype.configure = function () {
606
- this.editorService.uploadUrl = this.config.uploadUrl;
607
- this.editorService.uploadWithCredentials = this.config.uploadWithCredentials;
608
- if (this.config.defaultParagraphSeparator) {
609
- this.editorService.setDefaultParagraphSeparator(this.config.defaultParagraphSeparator);
610
- }
611
- if (this.config.defaultFontName) {
612
- this.editorService.setFontName(this.config.defaultFontName);
613
- }
614
- if (this.config.defaultFontSize) {
615
- this.editorService.setFontSize(this.config.defaultFontSize);
616
- }
617
- };
618
- AngularEditorComponent.prototype.getFonts = function () {
619
- var fonts = this.config.fonts ? this.config.fonts : angularEditorConfig.fonts;
620
- return fonts.map(function (x) {
621
- return { label: x.name, value: x.name };
622
- });
623
- };
624
- AngularEditorComponent.prototype.getCustomTags = function () {
625
- var tags = ['span'];
626
- this.config.customClasses.forEach(function (x) {
627
- if (x.tag !== undefined) {
628
- if (!tags.includes(x.tag)) {
629
- tags.push(x.tag);
630
- }
631
- }
632
- });
633
- return tags.join(',');
634
- };
635
- AngularEditorComponent.prototype.ngOnDestroy = function () {
636
- if (this.blurInstance) {
637
- this.blurInstance();
638
- }
639
- if (this.focusInstance) {
640
- this.focusInstance();
641
- }
642
- };
643
- AngularEditorComponent.prototype.filterStyles = function (html) {
644
- html = html.replace('position: fixed;', '');
645
- return html;
646
- };
647
- return AngularEditorComponent;
648
- }());
649
- AngularEditorComponent.decorators = [
650
- { type: core.Component, args: [{
651
- selector: 'angular-editor',
652
- template: "<div\n class=\"angular-editor\"\n #angularEditor\n [style.width]=\"config.width\"\n [style.minWidth]=\"config.minWidth\"\n>\n <angular-editor-toolbar\n *ngIf=\"config.toolbarPosition === 'top'\"\n #editorToolbar\n [id]=\"id\"\n [uploadUrl]=\"config.uploadUrl\"\n [upload]=\"config.upload\"\n [showToolbar]=\"config.showToolbar !== undefined ? config.showToolbar : true\"\n [fonts]=\"getFonts()\"\n [customClasses]=\"config.customClasses\"\n [defaultFontName]=\"config.defaultFontName\"\n [defaultFontSize]=\"config.defaultFontSize\"\n [hiddenButtons]=\"config.toolbarHiddenButtons\"\n (execute)=\"executeCommand($event)\"\n ></angular-editor-toolbar>\n\n <div\n class=\"angular-editor-wrapper\"\n #editorWrapper\n >\n <div\n #editor\n class=\"angular-editor-textarea\"\n [attr.contenteditable]=\"config.editable\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [attr.translate]=\"config.translate\"\n [attr.spellcheck]=\"config.spellcheck\"\n [style.height]=\"config.height\"\n [style.minHeight]=\"config.minHeight\"\n [style.maxHeight]=\"config.maxHeight\"\n [style.outline]=\"config.outline === false ? 'none': undefined\"\n (input)=\"onContentChange($event.target)\"\n (focus)=\"onTextAreaFocus($event)\"\n (blur)=\"onTextAreaBlur($event)\"\n (click)=\"exec()\"\n (keyup)=\"exec()\"\n (mouseout)=\"onTextAreaMouseOut($event)\"\n (paste)=\"onPaste($event)\"\n >\n </div>\n <span class=\"angular-editor-placeholder\">{{ placeholder || config['placeholder'] }}</span>\n </div>\n <angular-editor-toolbar\n *ngIf=\"config.toolbarPosition === 'bottom'\"\n #editorToolbar\n [id]=\"id\"\n [uploadUrl]=\"config.uploadUrl\"\n [upload]=\"config.upload\"\n [showToolbar]=\"config.showToolbar !== undefined ? config.showToolbar : true\"\n [fonts]=\"getFonts()\"\n [customClasses]=\"config.customClasses\"\n [defaultFontName]=\"config.defaultFontName\"\n [defaultFontSize]=\"config.defaultFontSize\"\n [hiddenButtons]=\"config.toolbarHiddenButtons\"\n (execute)=\"executeCommand($event)\"\n ></angular-editor-toolbar>\n</div>\n",
653
- providers: [
654
- {
655
- provide: forms.NG_VALUE_ACCESSOR,
656
- useExisting: core.forwardRef(function () { return AngularEditorComponent; }),
657
- multi: true
658
- },
659
- AngularEditorService
660
- ],
661
- styles: ["@charset \"UTF-8\";\n/*!\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */@font-face{font-family:FontAwesome;src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot#iefix&v=4.7.0) format(\"embedded-opentype\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0) format(\"woff2\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0) format(\"woff\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0) format(\"truetype\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format(\"svg\");font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:\"\uF000\"}.fa-music:before{content:\"\uF001\"}.fa-search:before{content:\"\uF002\"}.fa-envelope-o:before{content:\"\uF003\"}.fa-heart:before{content:\"\uF004\"}.fa-star:before{content:\"\uF005\"}.fa-star-o:before{content:\"\uF006\"}.fa-user:before{content:\"\uF007\"}.fa-film:before{content:\"\uF008\"}.fa-th-large:before{content:\"\uF009\"}.fa-th:before{content:\"\uF00A\"}.fa-th-list:before{content:\"\uF00B\"}.fa-check:before{content:\"\uF00C\"}.fa-close:before,.fa-remove:before,.fa-times:before{content:\"\uF00D\"}.fa-search-plus:before{content:\"\uF00E\"}.fa-search-minus:before{content:\"\uF010\"}.fa-power-off:before{content:\"\uF011\"}.fa-signal:before{content:\"\uF012\"}.fa-cog:before,.fa-gear:before{content:\"\uF013\"}.fa-trash-o:before{content:\"\uF014\"}.fa-home:before{content:\"\uF015\"}.fa-file-o:before{content:\"\uF016\"}.fa-clock-o:before{content:\"\uF017\"}.fa-road:before{content:\"\uF018\"}.fa-download:before{content:\"\uF019\"}.fa-arrow-circle-o-down:before{content:\"\uF01A\"}.fa-arrow-circle-o-up:before{content:\"\uF01B\"}.fa-inbox:before{content:\"\uF01C\"}.fa-play-circle-o:before{content:\"\uF01D\"}.fa-repeat:before,.fa-rotate-right:before{content:\"\uF01E\"}.fa-refresh:before{content:\"\uF021\"}.fa-list-alt:before{content:\"\uF022\"}.fa-lock:before{content:\"\uF023\"}.fa-flag:before{content:\"\uF024\"}.fa-headphones:before{content:\"\uF025\"}.fa-volume-off:before{content:\"\uF026\"}.fa-volume-down:before{content:\"\uF027\"}.fa-volume-up:before{content:\"\uF028\"}.fa-qrcode:before{content:\"\uF029\"}.fa-barcode:before{content:\"\uF02A\"}.fa-tag:before{content:\"\uF02B\"}.fa-tags:before{content:\"\uF02C\"}.fa-book:before{content:\"\uF02D\"}.fa-bookmark:before{content:\"\uF02E\"}.fa-print:before{content:\"\uF02F\"}.fa-camera:before{content:\"\uF030\"}.fa-font:before{content:\"\uF031\"}.fa-bold:before{content:\"\uF032\"}.fa-italic:before{content:\"\uF033\"}.fa-text-height:before{content:\"\uF034\"}.fa-text-width:before{content:\"\uF035\"}.fa-align-left:before{content:\"\uF036\"}.fa-align-center:before{content:\"\uF037\"}.fa-align-right:before{content:\"\uF038\"}.fa-align-justify:before{content:\"\uF039\"}.fa-list:before{content:\"\uF03A\"}.fa-dedent:before,.fa-outdent:before{content:\"\uF03B\"}.fa-indent:before{content:\"\uF03C\"}.fa-video-camera:before{content:\"\uF03D\"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:\"\uF03E\"}.fa-pencil:before{content:\"\uF040\"}.fa-map-marker:before{content:\"\uF041\"}.fa-adjust:before{content:\"\uF042\"}.fa-tint:before{content:\"\uF043\"}.fa-edit:before,.fa-pencil-square-o:before{content:\"\uF044\"}.fa-share-square-o:before{content:\"\uF045\"}.fa-check-square-o:before{content:\"\uF046\"}.fa-arrows:before{content:\"\uF047\"}.fa-step-backward:before{content:\"\uF048\"}.fa-fast-backward:before{content:\"\uF049\"}.fa-backward:before{content:\"\uF04A\"}.fa-play:before{content:\"\uF04B\"}.fa-pause:before{content:\"\uF04C\"}.fa-stop:before{content:\"\uF04D\"}.fa-forward:before{content:\"\uF04E\"}.fa-fast-forward:before{content:\"\uF050\"}.fa-step-forward:before{content:\"\uF051\"}.fa-eject:before{content:\"\uF052\"}.fa-chevron-left:before{content:\"\uF053\"}.fa-chevron-right:before{content:\"\uF054\"}.fa-plus-circle:before{content:\"\uF055\"}.fa-minus-circle:before{content:\"\uF056\"}.fa-times-circle:before{content:\"\uF057\"}.fa-check-circle:before{content:\"\uF058\"}.fa-question-circle:before{content:\"\uF059\"}.fa-info-circle:before{content:\"\uF05A\"}.fa-crosshairs:before{content:\"\uF05B\"}.fa-times-circle-o:before{content:\"\uF05C\"}.fa-check-circle-o:before{content:\"\uF05D\"}.fa-ban:before{content:\"\uF05E\"}.fa-arrow-left:before{content:\"\uF060\"}.fa-arrow-right:before{content:\"\uF061\"}.fa-arrow-up:before{content:\"\uF062\"}.fa-arrow-down:before{content:\"\uF063\"}.fa-mail-forward:before,.fa-share:before{content:\"\uF064\"}.fa-expand:before{content:\"\uF065\"}.fa-compress:before{content:\"\uF066\"}.fa-plus:before{content:\"\uF067\"}.fa-minus:before{content:\"\uF068\"}.fa-asterisk:before{content:\"\uF069\"}.fa-exclamation-circle:before{content:\"\uF06A\"}.fa-gift:before{content:\"\uF06B\"}.fa-leaf:before{content:\"\uF06C\"}.fa-fire:before{content:\"\uF06D\"}.fa-eye:before{content:\"\uF06E\"}.fa-eye-slash:before{content:\"\uF070\"}.fa-exclamation-triangle:before,.fa-warning:before{content:\"\uF071\"}.fa-plane:before{content:\"\uF072\"}.fa-calendar:before{content:\"\uF073\"}.fa-random:before{content:\"\uF074\"}.fa-comment:before{content:\"\uF075\"}.fa-magnet:before{content:\"\uF076\"}.fa-chevron-up:before{content:\"\uF077\"}.fa-chevron-down:before{content:\"\uF078\"}.fa-retweet:before{content:\"\uF079\"}.fa-shopping-cart:before{content:\"\uF07A\"}.fa-folder:before{content:\"\uF07B\"}.fa-folder-open:before{content:\"\uF07C\"}.fa-arrows-v:before{content:\"\uF07D\"}.fa-arrows-h:before{content:\"\uF07E\"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:\"\uF080\"}.fa-twitter-square:before{content:\"\uF081\"}.fa-facebook-square:before{content:\"\uF082\"}.fa-camera-retro:before{content:\"\uF083\"}.fa-key:before{content:\"\uF084\"}.fa-cogs:before,.fa-gears:before{content:\"\uF085\"}.fa-comments:before{content:\"\uF086\"}.fa-thumbs-o-up:before{content:\"\uF087\"}.fa-thumbs-o-down:before{content:\"\uF088\"}.fa-star-half:before{content:\"\uF089\"}.fa-heart-o:before{content:\"\uF08A\"}.fa-sign-out:before{content:\"\uF08B\"}.fa-linkedin-square:before{content:\"\uF08C\"}.fa-thumb-tack:before{content:\"\uF08D\"}.fa-external-link:before{content:\"\uF08E\"}.fa-sign-in:before{content:\"\uF090\"}.fa-trophy:before{content:\"\uF091\"}.fa-github-square:before{content:\"\uF092\"}.fa-upload:before{content:\"\uF093\"}.fa-lemon-o:before{content:\"\uF094\"}.fa-phone:before{content:\"\uF095\"}.fa-square-o:before{content:\"\uF096\"}.fa-bookmark-o:before{content:\"\uF097\"}.fa-phone-square:before{content:\"\uF098\"}.fa-twitter:before{content:\"\uF099\"}.fa-facebook-f:before,.fa-facebook:before{content:\"\uF09A\"}.fa-github:before{content:\"\uF09B\"}.fa-unlock:before{content:\"\uF09C\"}.fa-credit-card:before{content:\"\uF09D\"}.fa-feed:before,.fa-rss:before{content:\"\uF09E\"}.fa-hdd-o:before{content:\"\uF0A0\"}.fa-bullhorn:before{content:\"\uF0A1\"}.fa-bell:before{content:\"\uF0F3\"}.fa-certificate:before{content:\"\uF0A3\"}.fa-hand-o-right:before{content:\"\uF0A4\"}.fa-hand-o-left:before{content:\"\uF0A5\"}.fa-hand-o-up:before{content:\"\uF0A6\"}.fa-hand-o-down:before{content:\"\uF0A7\"}.fa-arrow-circle-left:before{content:\"\uF0A8\"}.fa-arrow-circle-right:before{content:\"\uF0A9\"}.fa-arrow-circle-up:before{content:\"\uF0AA\"}.fa-arrow-circle-down:before{content:\"\uF0AB\"}.fa-globe:before{content:\"\uF0AC\"}.fa-wrench:before{content:\"\uF0AD\"}.fa-tasks:before{content:\"\uF0AE\"}.fa-filter:before{content:\"\uF0B0\"}.fa-briefcase:before{content:\"\uF0B1\"}.fa-arrows-alt:before{content:\"\uF0B2\"}.fa-group:before,.fa-users:before{content:\"\uF0C0\"}.fa-chain:before,.fa-link:before{content:\"\uF0C1\"}.fa-cloud:before{content:\"\uF0C2\"}.fa-flask:before{content:\"\uF0C3\"}.fa-cut:before,.fa-scissors:before{content:\"\uF0C4\"}.fa-copy:before,.fa-files-o:before{content:\"\uF0C5\"}.fa-paperclip:before{content:\"\uF0C6\"}.fa-floppy-o:before,.fa-save:before{content:\"\uF0C7\"}.fa-square:before{content:\"\uF0C8\"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:\"\uF0C9\"}.fa-list-ul:before{content:\"\uF0CA\"}.fa-list-ol:before{content:\"\uF0CB\"}.fa-strikethrough:before{content:\"\uF0CC\"}.fa-underline:before{content:\"\uF0CD\"}.fa-table:before{content:\"\uF0CE\"}.fa-magic:before{content:\"\uF0D0\"}.fa-truck:before{content:\"\uF0D1\"}.fa-pinterest:before{content:\"\uF0D2\"}.fa-pinterest-square:before{content:\"\uF0D3\"}.fa-google-plus-square:before{content:\"\uF0D4\"}.fa-google-plus:before{content:\"\uF0D5\"}.fa-money:before{content:\"\uF0D6\"}.fa-caret-down:before{content:\"\uF0D7\"}.fa-caret-up:before{content:\"\uF0D8\"}.fa-caret-left:before{content:\"\uF0D9\"}.fa-caret-right:before{content:\"\uF0DA\"}.fa-columns:before{content:\"\uF0DB\"}.fa-sort:before,.fa-unsorted:before{content:\"\uF0DC\"}.fa-sort-desc:before,.fa-sort-down:before{content:\"\uF0DD\"}.fa-sort-asc:before,.fa-sort-up:before{content:\"\uF0DE\"}.fa-envelope:before{content:\"\uF0E0\"}.fa-linkedin:before{content:\"\uF0E1\"}.fa-rotate-left:before,.fa-undo:before{content:\"\uF0E2\"}.fa-gavel:before,.fa-legal:before{content:\"\uF0E3\"}.fa-dashboard:before,.fa-tachometer:before{content:\"\uF0E4\"}.fa-comment-o:before{content:\"\uF0E5\"}.fa-comments-o:before{content:\"\uF0E6\"}.fa-bolt:before,.fa-flash:before{content:\"\uF0E7\"}.fa-sitemap:before{content:\"\uF0E8\"}.fa-umbrella:before{content:\"\uF0E9\"}.fa-clipboard:before,.fa-paste:before{content:\"\uF0EA\"}.fa-lightbulb-o:before{content:\"\uF0EB\"}.fa-exchange:before{content:\"\uF0EC\"}.fa-cloud-download:before{content:\"\uF0ED\"}.fa-cloud-upload:before{content:\"\uF0EE\"}.fa-user-md:before{content:\"\uF0F0\"}.fa-stethoscope:before{content:\"\uF0F1\"}.fa-suitcase:before{content:\"\uF0F2\"}.fa-bell-o:before{content:\"\uF0A2\"}.fa-coffee:before{content:\"\uF0F4\"}.fa-cutlery:before{content:\"\uF0F5\"}.fa-file-text-o:before{content:\"\uF0F6\"}.fa-building-o:before{content:\"\uF0F7\"}.fa-hospital-o:before{content:\"\uF0F8\"}.fa-ambulance:before{content:\"\uF0F9\"}.fa-medkit:before{content:\"\uF0FA\"}.fa-fighter-jet:before{content:\"\uF0FB\"}.fa-beer:before{content:\"\uF0FC\"}.fa-h-square:before{content:\"\uF0FD\"}.fa-plus-square:before{content:\"\uF0FE\"}.fa-angle-double-left:before{content:\"\uF100\"}.fa-angle-double-right:before{content:\"\uF101\"}.fa-angle-double-up:before{content:\"\uF102\"}.fa-angle-double-down:before{content:\"\uF103\"}.fa-angle-left:before{content:\"\uF104\"}.fa-angle-right:before{content:\"\uF105\"}.fa-angle-up:before{content:\"\uF106\"}.fa-angle-down:before{content:\"\uF107\"}.fa-desktop:before{content:\"\uF108\"}.fa-laptop:before{content:\"\uF109\"}.fa-tablet:before{content:\"\uF10A\"}.fa-mobile-phone:before,.fa-mobile:before{content:\"\uF10B\"}.fa-circle-o:before{content:\"\uF10C\"}.fa-quote-left:before{content:\"\uF10D\"}.fa-quote-right:before{content:\"\uF10E\"}.fa-spinner:before{content:\"\uF110\"}.fa-circle:before{content:\"\uF111\"}.fa-mail-reply:before,.fa-reply:before{content:\"\uF112\"}.fa-github-alt:before{content:\"\uF113\"}.fa-folder-o:before{content:\"\uF114\"}.fa-folder-open-o:before{content:\"\uF115\"}.fa-smile-o:before{content:\"\uF118\"}.fa-frown-o:before{content:\"\uF119\"}.fa-meh-o:before{content:\"\uF11A\"}.fa-gamepad:before{content:\"\uF11B\"}.fa-keyboard-o:before{content:\"\uF11C\"}.fa-flag-o:before{content:\"\uF11D\"}.fa-flag-checkered:before{content:\"\uF11E\"}.fa-terminal:before{content:\"\uF120\"}.fa-code:before{content:\"\uF121\"}.fa-mail-reply-all:before,.fa-reply-all:before{content:\"\uF122\"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:\"\uF123\"}.fa-location-arrow:before{content:\"\uF124\"}.fa-crop:before{content:\"\uF125\"}.fa-code-fork:before{content:\"\uF126\"}.fa-chain-broken:before,.fa-unlink:before{content:\"\uF127\"}.fa-question:before{content:\"\uF128\"}.fa-info:before{content:\"\uF129\"}.fa-exclamation:before{content:\"\uF12A\"}.fa-superscript:before{content:\"\uF12B\"}.fa-subscript:before{content:\"\uF12C\"}.fa-eraser:before{content:\"\uF12D\"}.fa-puzzle-piece:before{content:\"\uF12E\"}.fa-microphone:before{content:\"\uF130\"}.fa-microphone-slash:before{content:\"\uF131\"}.fa-shield:before{content:\"\uF132\"}.fa-calendar-o:before{content:\"\uF133\"}.fa-fire-extinguisher:before{content:\"\uF134\"}.fa-rocket:before{content:\"\uF135\"}.fa-maxcdn:before{content:\"\uF136\"}.fa-chevron-circle-left:before{content:\"\uF137\"}.fa-chevron-circle-right:before{content:\"\uF138\"}.fa-chevron-circle-up:before{content:\"\uF139\"}.fa-chevron-circle-down:before{content:\"\uF13A\"}.fa-html5:before{content:\"\uF13B\"}.fa-css3:before{content:\"\uF13C\"}.fa-anchor:before{content:\"\uF13D\"}.fa-unlock-alt:before{content:\"\uF13E\"}.fa-bullseye:before{content:\"\uF140\"}.fa-ellipsis-h:before{content:\"\uF141\"}.fa-ellipsis-v:before{content:\"\uF142\"}.fa-rss-square:before{content:\"\uF143\"}.fa-play-circle:before{content:\"\uF144\"}.fa-ticket:before{content:\"\uF145\"}.fa-minus-square:before{content:\"\uF146\"}.fa-minus-square-o:before{content:\"\uF147\"}.fa-level-up:before{content:\"\uF148\"}.fa-level-down:before{content:\"\uF149\"}.fa-check-square:before{content:\"\uF14A\"}.fa-pencil-square:before{content:\"\uF14B\"}.fa-external-link-square:before{content:\"\uF14C\"}.fa-share-square:before{content:\"\uF14D\"}.fa-compass:before{content:\"\uF14E\"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:\"\uF150\"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:\"\uF151\"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:\"\uF152\"}.fa-eur:before,.fa-euro:before{content:\"\uF153\"}.fa-gbp:before{content:\"\uF154\"}.fa-dollar:before,.fa-usd:before{content:\"\uF155\"}.fa-inr:before,.fa-rupee:before{content:\"\uF156\"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:\"\uF157\"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:\"\uF158\"}.fa-krw:before,.fa-won:before{content:\"\uF159\"}.fa-bitcoin:before,.fa-btc:before{content:\"\uF15A\"}.fa-file:before{content:\"\uF15B\"}.fa-file-text:before{content:\"\uF15C\"}.fa-sort-alpha-asc:before{content:\"\uF15D\"}.fa-sort-alpha-desc:before{content:\"\uF15E\"}.fa-sort-amount-asc:before{content:\"\uF160\"}.fa-sort-amount-desc:before{content:\"\uF161\"}.fa-sort-numeric-asc:before{content:\"\uF162\"}.fa-sort-numeric-desc:before{content:\"\uF163\"}.fa-thumbs-up:before{content:\"\uF164\"}.fa-thumbs-down:before{content:\"\uF165\"}.fa-youtube-square:before{content:\"\uF166\"}.fa-youtube:before{content:\"\uF167\"}.fa-xing:before{content:\"\uF168\"}.fa-xing-square:before{content:\"\uF169\"}.fa-youtube-play:before{content:\"\uF16A\"}.fa-dropbox:before{content:\"\uF16B\"}.fa-stack-overflow:before{content:\"\uF16C\"}.fa-instagram:before{content:\"\uF16D\"}.fa-flickr:before{content:\"\uF16E\"}.fa-adn:before{content:\"\uF170\"}.fa-bitbucket:before{content:\"\uF171\"}.fa-bitbucket-square:before{content:\"\uF172\"}.fa-tumblr:before{content:\"\uF173\"}.fa-tumblr-square:before{content:\"\uF174\"}.fa-long-arrow-down:before{content:\"\uF175\"}.fa-long-arrow-up:before{content:\"\uF176\"}.fa-long-arrow-left:before{content:\"\uF177\"}.fa-long-arrow-right:before{content:\"\uF178\"}.fa-apple:before{content:\"\uF179\"}.fa-windows:before{content:\"\uF17A\"}.fa-android:before{content:\"\uF17B\"}.fa-linux:before{content:\"\uF17C\"}.fa-dribbble:before{content:\"\uF17D\"}.fa-skype:before{content:\"\uF17E\"}.fa-foursquare:before{content:\"\uF180\"}.fa-trello:before{content:\"\uF181\"}.fa-female:before{content:\"\uF182\"}.fa-male:before{content:\"\uF183\"}.fa-gittip:before,.fa-gratipay:before{content:\"\uF184\"}.fa-sun-o:before{content:\"\uF185\"}.fa-moon-o:before{content:\"\uF186\"}.fa-archive:before{content:\"\uF187\"}.fa-bug:before{content:\"\uF188\"}.fa-vk:before{content:\"\uF189\"}.fa-weibo:before{content:\"\uF18A\"}.fa-renren:before{content:\"\uF18B\"}.fa-pagelines:before{content:\"\uF18C\"}.fa-stack-exchange:before{content:\"\uF18D\"}.fa-arrow-circle-o-right:before{content:\"\uF18E\"}.fa-arrow-circle-o-left:before{content:\"\uF190\"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:\"\uF191\"}.fa-dot-circle-o:before{content:\"\uF192\"}.fa-wheelchair:before{content:\"\uF193\"}.fa-vimeo-square:before{content:\"\uF194\"}.fa-try:before,.fa-turkish-lira:before{content:\"\uF195\"}.fa-plus-square-o:before{content:\"\uF196\"}.fa-space-shuttle:before{content:\"\uF197\"}.fa-slack:before{content:\"\uF198\"}.fa-envelope-square:before{content:\"\uF199\"}.fa-wordpress:before{content:\"\uF19A\"}.fa-openid:before{content:\"\uF19B\"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:\"\uF19C\"}.fa-graduation-cap:before,.fa-mortar-board:before{content:\"\uF19D\"}.fa-yahoo:before{content:\"\uF19E\"}.fa-google:before{content:\"\uF1A0\"}.fa-reddit:before{content:\"\uF1A1\"}.fa-reddit-square:before{content:\"\uF1A2\"}.fa-stumbleupon-circle:before{content:\"\uF1A3\"}.fa-stumbleupon:before{content:\"\uF1A4\"}.fa-delicious:before{content:\"\uF1A5\"}.fa-digg:before{content:\"\uF1A6\"}.fa-pied-piper-pp:before{content:\"\uF1A7\"}.fa-pied-piper-alt:before{content:\"\uF1A8\"}.fa-drupal:before{content:\"\uF1A9\"}.fa-joomla:before{content:\"\uF1AA\"}.fa-language:before{content:\"\uF1AB\"}.fa-fax:before{content:\"\uF1AC\"}.fa-building:before{content:\"\uF1AD\"}.fa-child:before{content:\"\uF1AE\"}.fa-paw:before{content:\"\uF1B0\"}.fa-spoon:before{content:\"\uF1B1\"}.fa-cube:before{content:\"\uF1B2\"}.fa-cubes:before{content:\"\uF1B3\"}.fa-behance:before{content:\"\uF1B4\"}.fa-behance-square:before{content:\"\uF1B5\"}.fa-steam:before{content:\"\uF1B6\"}.fa-steam-square:before{content:\"\uF1B7\"}.fa-recycle:before{content:\"\uF1B8\"}.fa-automobile:before,.fa-car:before{content:\"\uF1B9\"}.fa-cab:before,.fa-taxi:before{content:\"\uF1BA\"}.fa-tree:before{content:\"\uF1BB\"}.fa-spotify:before{content:\"\uF1BC\"}.fa-deviantart:before{content:\"\uF1BD\"}.fa-soundcloud:before{content:\"\uF1BE\"}.fa-database:before{content:\"\uF1C0\"}.fa-file-pdf-o:before{content:\"\uF1C1\"}.fa-file-word-o:before{content:\"\uF1C2\"}.fa-file-excel-o:before{content:\"\uF1C3\"}.fa-file-powerpoint-o:before{content:\"\uF1C4\"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:\"\uF1C5\"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:\"\uF1C6\"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:\"\uF1C7\"}.fa-file-movie-o:before,.fa-file-video-o:before{content:\"\uF1C8\"}.fa-file-code-o:before{content:\"\uF1C9\"}.fa-vine:before{content:\"\uF1CA\"}.fa-codepen:before{content:\"\uF1CB\"}.fa-jsfiddle:before{content:\"\uF1CC\"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:\"\uF1CD\"}.fa-circle-o-notch:before{content:\"\uF1CE\"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:\"\uF1D0\"}.fa-empire:before,.fa-ge:before{content:\"\uF1D1\"}.fa-git-square:before{content:\"\uF1D2\"}.fa-git:before{content:\"\uF1D3\"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:\"\uF1D4\"}.fa-tencent-weibo:before{content:\"\uF1D5\"}.fa-qq:before{content:\"\uF1D6\"}.fa-wechat:before,.fa-weixin:before{content:\"\uF1D7\"}.fa-paper-plane:before,.fa-send:before{content:\"\uF1D8\"}.fa-paper-plane-o:before,.fa-send-o:before{content:\"\uF1D9\"}.fa-history:before{content:\"\uF1DA\"}.fa-circle-thin:before{content:\"\uF1DB\"}.fa-header:before{content:\"\uF1DC\"}.fa-paragraph:before{content:\"\uF1DD\"}.fa-sliders:before{content:\"\uF1DE\"}.fa-share-alt:before{content:\"\uF1E0\"}.fa-share-alt-square:before{content:\"\uF1E1\"}.fa-bomb:before{content:\"\uF1E2\"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:\"\uF1E3\"}.fa-tty:before{content:\"\uF1E4\"}.fa-binoculars:before{content:\"\uF1E5\"}.fa-plug:before{content:\"\uF1E6\"}.fa-slideshare:before{content:\"\uF1E7\"}.fa-twitch:before{content:\"\uF1E8\"}.fa-yelp:before{content:\"\uF1E9\"}.fa-newspaper-o:before{content:\"\uF1EA\"}.fa-wifi:before{content:\"\uF1EB\"}.fa-calculator:before{content:\"\uF1EC\"}.fa-paypal:before{content:\"\uF1ED\"}.fa-google-wallet:before{content:\"\uF1EE\"}.fa-cc-visa:before{content:\"\uF1F0\"}.fa-cc-mastercard:before{content:\"\uF1F1\"}.fa-cc-discover:before{content:\"\uF1F2\"}.fa-cc-amex:before{content:\"\uF1F3\"}.fa-cc-paypal:before{content:\"\uF1F4\"}.fa-cc-stripe:before{content:\"\uF1F5\"}.fa-bell-slash:before{content:\"\uF1F6\"}.fa-bell-slash-o:before{content:\"\uF1F7\"}.fa-trash:before{content:\"\uF1F8\"}.fa-copyright:before{content:\"\uF1F9\"}.fa-at:before{content:\"\uF1FA\"}.fa-eyedropper:before{content:\"\uF1FB\"}.fa-paint-brush:before{content:\"\uF1FC\"}.fa-birthday-cake:before{content:\"\uF1FD\"}.fa-area-chart:before{content:\"\uF1FE\"}.fa-pie-chart:before{content:\"\uF200\"}.fa-line-chart:before{content:\"\uF201\"}.fa-lastfm:before{content:\"\uF202\"}.fa-lastfm-square:before{content:\"\uF203\"}.fa-toggle-off:before{content:\"\uF204\"}.fa-toggle-on:before{content:\"\uF205\"}.fa-bicycle:before{content:\"\uF206\"}.fa-bus:before{content:\"\uF207\"}.fa-ioxhost:before{content:\"\uF208\"}.fa-angellist:before{content:\"\uF209\"}.fa-cc:before{content:\"\uF20A\"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:\"\uF20B\"}.fa-meanpath:before{content:\"\uF20C\"}.fa-buysellads:before{content:\"\uF20D\"}.fa-connectdevelop:before{content:\"\uF20E\"}.fa-dashcube:before{content:\"\uF210\"}.fa-forumbee:before{content:\"\uF211\"}.fa-leanpub:before{content:\"\uF212\"}.fa-sellsy:before{content:\"\uF213\"}.fa-shirtsinbulk:before{content:\"\uF214\"}.fa-simplybuilt:before{content:\"\uF215\"}.fa-skyatlas:before{content:\"\uF216\"}.fa-cart-plus:before{content:\"\uF217\"}.fa-cart-arrow-down:before{content:\"\uF218\"}.fa-diamond:before{content:\"\uF219\"}.fa-ship:before{content:\"\uF21A\"}.fa-user-secret:before{content:\"\uF21B\"}.fa-motorcycle:before{content:\"\uF21C\"}.fa-street-view:before{content:\"\uF21D\"}.fa-heartbeat:before{content:\"\uF21E\"}.fa-venus:before{content:\"\uF221\"}.fa-mars:before{content:\"\uF222\"}.fa-mercury:before{content:\"\uF223\"}.fa-intersex:before,.fa-transgender:before{content:\"\uF224\"}.fa-transgender-alt:before{content:\"\uF225\"}.fa-venus-double:before{content:\"\uF226\"}.fa-mars-double:before{content:\"\uF227\"}.fa-venus-mars:before{content:\"\uF228\"}.fa-mars-stroke:before{content:\"\uF229\"}.fa-mars-stroke-v:before{content:\"\uF22A\"}.fa-mars-stroke-h:before{content:\"\uF22B\"}.fa-neuter:before{content:\"\uF22C\"}.fa-genderless:before{content:\"\uF22D\"}.fa-facebook-official:before{content:\"\uF230\"}.fa-pinterest-p:before{content:\"\uF231\"}.fa-whatsapp:before{content:\"\uF232\"}.fa-server:before{content:\"\uF233\"}.fa-user-plus:before{content:\"\uF234\"}.fa-user-times:before{content:\"\uF235\"}.fa-bed:before,.fa-hotel:before{content:\"\uF236\"}.fa-viacoin:before{content:\"\uF237\"}.fa-train:before{content:\"\uF238\"}.fa-subway:before{content:\"\uF239\"}.fa-medium:before{content:\"\uF23A\"}.fa-y-combinator:before,.fa-yc:before{content:\"\uF23B\"}.fa-optin-monster:before{content:\"\uF23C\"}.fa-opencart:before{content:\"\uF23D\"}.fa-expeditedssl:before{content:\"\uF23E\"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:\"\uF240\"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:\"\uF241\"}.fa-battery-2:before,.fa-battery-half:before{content:\"\uF242\"}.fa-battery-1:before,.fa-battery-quarter:before{content:\"\uF243\"}.fa-battery-0:before,.fa-battery-empty:before{content:\"\uF244\"}.fa-mouse-pointer:before{content:\"\uF245\"}.fa-i-cursor:before{content:\"\uF246\"}.fa-object-group:before{content:\"\uF247\"}.fa-object-ungroup:before{content:\"\uF248\"}.fa-sticky-note:before{content:\"\uF249\"}.fa-sticky-note-o:before{content:\"\uF24A\"}.fa-cc-jcb:before{content:\"\uF24B\"}.fa-cc-diners-club:before{content:\"\uF24C\"}.fa-clone:before{content:\"\uF24D\"}.fa-balance-scale:before{content:\"\uF24E\"}.fa-hourglass-o:before{content:\"\uF250\"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:\"\uF251\"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:\"\uF252\"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:\"\uF253\"}.fa-hourglass:before{content:\"\uF254\"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:\"\uF255\"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:\"\uF256\"}.fa-hand-scissors-o:before{content:\"\uF257\"}.fa-hand-lizard-o:before{content:\"\uF258\"}.fa-hand-spock-o:before{content:\"\uF259\"}.fa-hand-pointer-o:before{content:\"\uF25A\"}.fa-hand-peace-o:before{content:\"\uF25B\"}.fa-trademark:before{content:\"\uF25C\"}.fa-registered:before{content:\"\uF25D\"}.fa-creative-commons:before{content:\"\uF25E\"}.fa-gg:before{content:\"\uF260\"}.fa-gg-circle:before{content:\"\uF261\"}.fa-tripadvisor:before{content:\"\uF262\"}.fa-odnoklassniki:before{content:\"\uF263\"}.fa-odnoklassniki-square:before{content:\"\uF264\"}.fa-get-pocket:before{content:\"\uF265\"}.fa-wikipedia-w:before{content:\"\uF266\"}.fa-safari:before{content:\"\uF267\"}.fa-chrome:before{content:\"\uF268\"}.fa-firefox:before{content:\"\uF269\"}.fa-opera:before{content:\"\uF26A\"}.fa-internet-explorer:before{content:\"\uF26B\"}.fa-television:before,.fa-tv:before{content:\"\uF26C\"}.fa-contao:before{content:\"\uF26D\"}.fa-500px:before{content:\"\uF26E\"}.fa-amazon:before{content:\"\uF270\"}.fa-calendar-plus-o:before{content:\"\uF271\"}.fa-calendar-minus-o:before{content:\"\uF272\"}.fa-calendar-times-o:before{content:\"\uF273\"}.fa-calendar-check-o:before{content:\"\uF274\"}.fa-industry:before{content:\"\uF275\"}.fa-map-pin:before{content:\"\uF276\"}.fa-map-signs:before{content:\"\uF277\"}.fa-map-o:before{content:\"\uF278\"}.fa-map:before{content:\"\uF279\"}.fa-commenting:before{content:\"\uF27A\"}.fa-commenting-o:before{content:\"\uF27B\"}.fa-houzz:before{content:\"\uF27C\"}.fa-vimeo:before{content:\"\uF27D\"}.fa-black-tie:before{content:\"\uF27E\"}.fa-fonticons:before{content:\"\uF280\"}.fa-reddit-alien:before{content:\"\uF281\"}.fa-edge:before{content:\"\uF282\"}.fa-credit-card-alt:before{content:\"\uF283\"}.fa-codiepie:before{content:\"\uF284\"}.fa-modx:before{content:\"\uF285\"}.fa-fort-awesome:before{content:\"\uF286\"}.fa-usb:before{content:\"\uF287\"}.fa-product-hunt:before{content:\"\uF288\"}.fa-mixcloud:before{content:\"\uF289\"}.fa-scribd:before{content:\"\uF28A\"}.fa-pause-circle:before{content:\"\uF28B\"}.fa-pause-circle-o:before{content:\"\uF28C\"}.fa-stop-circle:before{content:\"\uF28D\"}.fa-stop-circle-o:before{content:\"\uF28E\"}.fa-shopping-bag:before{content:\"\uF290\"}.fa-shopping-basket:before{content:\"\uF291\"}.fa-hashtag:before{content:\"\uF292\"}.fa-bluetooth:before{content:\"\uF293\"}.fa-bluetooth-b:before{content:\"\uF294\"}.fa-percent:before{content:\"\uF295\"}.fa-gitlab:before{content:\"\uF296\"}.fa-wpbeginner:before{content:\"\uF297\"}.fa-wpforms:before{content:\"\uF298\"}.fa-envira:before{content:\"\uF299\"}.fa-universal-access:before{content:\"\uF29A\"}.fa-wheelchair-alt:before{content:\"\uF29B\"}.fa-question-circle-o:before{content:\"\uF29C\"}.fa-blind:before{content:\"\uF29D\"}.fa-audio-description:before{content:\"\uF29E\"}.fa-volume-control-phone:before{content:\"\uF2A0\"}.fa-braille:before{content:\"\uF2A1\"}.fa-assistive-listening-systems:before{content:\"\uF2A2\"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:\"\uF2A3\"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:\"\uF2A4\"}.fa-glide:before{content:\"\uF2A5\"}.fa-glide-g:before{content:\"\uF2A6\"}.fa-sign-language:before,.fa-signing:before{content:\"\uF2A7\"}.fa-low-vision:before{content:\"\uF2A8\"}.fa-viadeo:before{content:\"\uF2A9\"}.fa-viadeo-square:before{content:\"\uF2AA\"}.fa-snapchat:before{content:\"\uF2AB\"}.fa-snapchat-ghost:before{content:\"\uF2AC\"}.fa-snapchat-square:before{content:\"\uF2AD\"}.fa-pied-piper:before{content:\"\uF2AE\"}.fa-first-order:before{content:\"\uF2B0\"}.fa-yoast:before{content:\"\uF2B1\"}.fa-themeisle:before{content:\"\uF2B2\"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:\"\uF2B3\"}.fa-fa:before,.fa-font-awesome:before{content:\"\uF2B4\"}.fa-handshake-o:before{content:\"\uF2B5\"}.fa-envelope-open:before{content:\"\uF2B6\"}.fa-envelope-open-o:before{content:\"\uF2B7\"}.fa-linode:before{content:\"\uF2B8\"}.fa-address-book:before{content:\"\uF2B9\"}.fa-address-book-o:before{content:\"\uF2BA\"}.fa-address-card:before,.fa-vcard:before{content:\"\uF2BB\"}.fa-address-card-o:before,.fa-vcard-o:before{content:\"\uF2BC\"}.fa-user-circle:before{content:\"\uF2BD\"}.fa-user-circle-o:before{content:\"\uF2BE\"}.fa-user-o:before{content:\"\uF2C0\"}.fa-id-badge:before{content:\"\uF2C1\"}.fa-drivers-license:before,.fa-id-card:before{content:\"\uF2C2\"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:\"\uF2C3\"}.fa-quora:before{content:\"\uF2C4\"}.fa-free-code-camp:before{content:\"\uF2C5\"}.fa-telegram:before{content:\"\uF2C6\"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:\"\uF2C7\"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:\"\uF2C8\"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:\"\uF2C9\"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:\"\uF2CA\"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:\"\uF2CB\"}.fa-shower:before{content:\"\uF2CC\"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:\"\uF2CD\"}.fa-podcast:before{content:\"\uF2CE\"}.fa-window-maximize:before{content:\"\uF2D0\"}.fa-window-minimize:before{content:\"\uF2D1\"}.fa-window-restore:before{content:\"\uF2D2\"}.fa-times-rectangle:before,.fa-window-close:before{content:\"\uF2D3\"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:\"\uF2D4\"}.fa-bandcamp:before{content:\"\uF2D5\"}.fa-grav:before{content:\"\uF2D6\"}.fa-etsy:before{content:\"\uF2D7\"}.fa-imdb:before{content:\"\uF2D8\"}.fa-ravelry:before{content:\"\uF2D9\"}.fa-eercast:before{content:\"\uF2DA\"}.fa-microchip:before{content:\"\uF2DB\"}.fa-snowflake-o:before{content:\"\uF2DC\"}.fa-superpowers:before{content:\"\uF2DD\"}.fa-wpexplorer:before{content:\"\uF2DE\"}.fa-meetup:before{content:\"\uF2E0\"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}a{cursor:pointer}.angular-editor-textarea{min-height:150px;overflow:auto;margin-top:5px;resize:vertical}.angular-editor-textarea:after{content:\"\";position:absolute;bottom:0;right:0;display:block;width:8px;height:8px;cursor:nwse-resize;background-color:hsla(0,0%,100%,.5)}.angular-editor-toolbar{font:100 14px/15px Roboto,Arial,sans-serif;background-color:#f5f5f5;font-size:.8rem;padding:.2rem;border:1px solid #ddd}.angular-editor-toolbar .angular-editor-toolbar-set{display:none;margin-right:5px;vertical-align:baseline}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button{background-color:#fff;vertical-align:middle;border:1px solid #ddd;padding:.4rem;min-width:2rem;float:left}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.focus,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:focus{outline:0}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label{pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.background,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.foreground :after{background:#555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active{background:#fff5b9}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active:hover{background-color:#fffa98}.angular-editor-toolbar .angular-editor-toolbar-set select{font-size:11px;width:90px;vertical-align:middle;background-color:transparent;border:.5px solid hsla(0,0%,100%,0);border-radius:5px;outline:none;padding:.4rem;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading{display:inline-block;width:90px}@supports not (-moz-appearance:none){.angular-editor-toolbar .angular-editor-toolbar-set .select-heading optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .default{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h1{font-size:24px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h2{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h3{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h4{font-size:15px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h5{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h6{font-size:13px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .div,.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .pre{font-size:12px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font{display:inline-block;width:90px}@supports not (-moz-appearance:none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size{display:inline-block;width:50px}@supports not (-moz-appearance:none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size1{font-size:10px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size2{font-size:12px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size3{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size4{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size5{font-size:18px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size6{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size7{font-size:22px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style{display:inline-block;width:90px}@supports not (-moz-appearance:none){.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .color-label{position:relative;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .background{font-size:smaller;background:#1b1b1b;color:#fff;padding:3px}.angular-editor-toolbar .angular-editor-toolbar-set .foreground :after{position:absolute;content:\"\";left:-1px;top:auto;bottom:-3px;right:auto;width:15px;height:2px;z-index:0;background:#1b1b1b}.angular-editor-toolbar .angular-editor-toolbar-set:not([style*=\"display:none\"]):not([style*=\"display: none\"]){display:inline-block}.angular-editor{position:relative}.angular-editor ::ng-deep [contenteditable=true]:empty:before{content:attr(placeholder);color:#868e96;opacity:1}.angular-editor .angular-editor-wrapper{position:relative}.angular-editor .angular-editor-wrapper .angular-editor-textarea{min-height:5rem;padding:.5rem .8rem 1rem;border:1px solid #ddd;background-color:transparent;overflow-x:hidden;overflow-y:auto;position:relative}.angular-editor .angular-editor-wrapper .angular-editor-textarea ::ng-deep blockquote{margin-left:1rem;border-left:.2em solid #dfe2e5;padding-left:.5rem}.angular-editor .angular-editor-wrapper ::ng-deep p{margin-bottom:0}.angular-editor .angular-editor-wrapper .angular-editor-placeholder{display:none;position:absolute;top:0;padding:.5rem .8rem 1rem .9rem;color:#6c757d;opacity:.75}.angular-editor .angular-editor-wrapper.show-placeholder .angular-editor-placeholder{display:block}.angular-editor .angular-editor-wrapper.disabled{cursor:not-allowed;opacity:.5;pointer-events:none}"]
662
- },] }
663
- ];
664
- AngularEditorComponent.ctorParameters = function () { return [
665
- { type: core.Renderer2 },
666
- { type: AngularEditorService },
667
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
668
- { type: platformBrowser.DomSanitizer },
669
- { type: core.ChangeDetectorRef },
670
- { type: String, decorators: [{ type: core.Attribute, args: ['tabindex',] }] },
671
- { type: undefined, decorators: [{ type: core.Attribute, args: ['autofocus',] }] }
672
- ]; };
673
- AngularEditorComponent.propDecorators = {
674
- id: [{ type: core.Input }],
675
- config: [{ type: core.Input }],
676
- placeholder: [{ type: core.Input }],
677
- tabIndex: [{ type: core.Input }],
678
- html: [{ type: core.Output }],
679
- textArea: [{ type: core.ViewChild, args: ['editor', { static: true },] }],
680
- editorWrapper: [{ type: core.ViewChild, args: ['editorWrapper', { static: true },] }],
681
- editorToolbar: [{ type: core.ViewChild, args: ['editorToolbar',] }],
682
- viewMode: [{ type: core.Output }],
683
- blurEvent: [{ type: core.Output, args: ['blur',] }],
684
- focusEvent: [{ type: core.Output, args: ['focus',] }],
685
- tabindex: [{ type: core.HostBinding, args: ['attr.tabindex',] }],
686
- onFocus: [{ type: core.HostListener, args: ['focus',] }]
687
- };
688
-
689
- /*! *****************************************************************************
690
- Copyright (c) Microsoft Corporation.
691
-
692
- Permission to use, copy, modify, and/or distribute this software for any
693
- purpose with or without fee is hereby granted.
694
-
695
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
696
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
697
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
698
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
699
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
700
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
701
- PERFORMANCE OF THIS SOFTWARE.
702
- ***************************************************************************** */
703
- /* global Reflect, Promise */
704
- var extendStatics = function (d, b) {
705
- extendStatics = Object.setPrototypeOf ||
706
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
707
- function (d, b) { for (var p in b)
708
- if (Object.prototype.hasOwnProperty.call(b, p))
709
- d[p] = b[p]; };
710
- return extendStatics(d, b);
711
- };
712
- function __extends(d, b) {
713
- if (typeof b !== "function" && b !== null)
714
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
715
- extendStatics(d, b);
716
- function __() { this.constructor = d; }
717
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
718
- }
719
- var __assign = function () {
720
- __assign = Object.assign || function __assign(t) {
721
- for (var s, i = 1, n = arguments.length; i < n; i++) {
722
- s = arguments[i];
723
- for (var p in s)
724
- if (Object.prototype.hasOwnProperty.call(s, p))
725
- t[p] = s[p];
726
- }
727
- return t;
728
- };
729
- return __assign.apply(this, arguments);
730
- };
731
- function __rest(s, e) {
732
- var t = {};
733
- for (var p in s)
734
- if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
735
- t[p] = s[p];
736
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
737
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
738
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
739
- t[p[i]] = s[p[i]];
740
- }
741
- return t;
742
- }
743
- function __decorate(decorators, target, key, desc) {
744
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
745
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
746
- r = Reflect.decorate(decorators, target, key, desc);
747
- else
748
- for (var i = decorators.length - 1; i >= 0; i--)
749
- if (d = decorators[i])
750
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
751
- return c > 3 && r && Object.defineProperty(target, key, r), r;
752
- }
753
- function __param(paramIndex, decorator) {
754
- return function (target, key) { decorator(target, key, paramIndex); };
755
- }
756
- function __metadata(metadataKey, metadataValue) {
757
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
758
- return Reflect.metadata(metadataKey, metadataValue);
759
- }
760
- function __awaiter(thisArg, _arguments, P, generator) {
761
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
762
- return new (P || (P = Promise))(function (resolve, reject) {
763
- function fulfilled(value) { try {
764
- step(generator.next(value));
765
- }
766
- catch (e) {
767
- reject(e);
768
- } }
769
- function rejected(value) { try {
770
- step(generator["throw"](value));
771
- }
772
- catch (e) {
773
- reject(e);
774
- } }
775
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
776
- step((generator = generator.apply(thisArg, _arguments || [])).next());
777
- });
778
- }
779
- function __generator(thisArg, body) {
780
- var _ = { label: 0, sent: function () { if (t[0] & 1)
781
- throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
782
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
783
- function verb(n) { return function (v) { return step([n, v]); }; }
784
- function step(op) {
785
- if (f)
786
- throw new TypeError("Generator is already executing.");
787
- while (_)
788
- try {
789
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
790
- return t;
791
- if (y = 0, t)
792
- op = [op[0] & 2, t.value];
793
- switch (op[0]) {
794
- case 0:
795
- case 1:
796
- t = op;
797
- break;
798
- case 4:
799
- _.label++;
800
- return { value: op[1], done: false };
801
- case 5:
802
- _.label++;
803
- y = op[1];
804
- op = [0];
805
- continue;
806
- case 7:
807
- op = _.ops.pop();
808
- _.trys.pop();
809
- continue;
810
- default:
811
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
812
- _ = 0;
813
- continue;
814
- }
815
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
816
- _.label = op[1];
817
- break;
818
- }
819
- if (op[0] === 6 && _.label < t[1]) {
820
- _.label = t[1];
821
- t = op;
822
- break;
823
- }
824
- if (t && _.label < t[2]) {
825
- _.label = t[2];
826
- _.ops.push(op);
827
- break;
828
- }
829
- if (t[2])
830
- _.ops.pop();
831
- _.trys.pop();
832
- continue;
833
- }
834
- op = body.call(thisArg, _);
835
- }
836
- catch (e) {
837
- op = [6, e];
838
- y = 0;
839
- }
840
- finally {
841
- f = t = 0;
842
- }
843
- if (op[0] & 5)
844
- throw op[1];
845
- return { value: op[0] ? op[1] : void 0, done: true };
846
- }
847
- }
848
- var __createBinding = Object.create ? (function (o, m, k, k2) {
849
- if (k2 === undefined)
850
- k2 = k;
851
- Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
852
- }) : (function (o, m, k, k2) {
853
- if (k2 === undefined)
854
- k2 = k;
855
- o[k2] = m[k];
856
- });
857
- function __exportStar(m, o) {
858
- for (var p in m)
859
- if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
860
- __createBinding(o, m, p);
861
- }
862
- function __values(o) {
863
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
864
- if (m)
865
- return m.call(o);
866
- if (o && typeof o.length === "number")
867
- return {
868
- next: function () {
869
- if (o && i >= o.length)
870
- o = void 0;
871
- return { value: o && o[i++], done: !o };
872
- }
873
- };
874
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
875
- }
876
- function __read(o, n) {
877
- var m = typeof Symbol === "function" && o[Symbol.iterator];
878
- if (!m)
879
- return o;
880
- var i = m.call(o), r, ar = [], e;
881
- try {
882
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
883
- ar.push(r.value);
884
- }
885
- catch (error) {
886
- e = { error: error };
887
- }
888
- finally {
889
- try {
890
- if (r && !r.done && (m = i["return"]))
891
- m.call(i);
892
- }
893
- finally {
894
- if (e)
895
- throw e.error;
896
- }
897
- }
898
- return ar;
899
- }
900
- /** @deprecated */
901
- function __spread() {
902
- for (var ar = [], i = 0; i < arguments.length; i++)
903
- ar = ar.concat(__read(arguments[i]));
904
- return ar;
905
- }
906
- /** @deprecated */
907
- function __spreadArrays() {
908
- for (var s = 0, i = 0, il = arguments.length; i < il; i++)
909
- s += arguments[i].length;
910
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
911
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
912
- r[k] = a[j];
913
- return r;
914
- }
915
- function __spreadArray(to, from, pack) {
916
- if (pack || arguments.length === 2)
917
- for (var i = 0, l = from.length, ar; i < l; i++) {
918
- if (ar || !(i in from)) {
919
- if (!ar)
920
- ar = Array.prototype.slice.call(from, 0, i);
921
- ar[i] = from[i];
922
- }
923
- }
924
- return to.concat(ar || from);
925
- }
926
- function __await(v) {
927
- return this instanceof __await ? (this.v = v, this) : new __await(v);
928
- }
929
- function __asyncGenerator(thisArg, _arguments, generator) {
930
- if (!Symbol.asyncIterator)
931
- throw new TypeError("Symbol.asyncIterator is not defined.");
932
- var g = generator.apply(thisArg, _arguments || []), i, q = [];
933
- return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
934
- function verb(n) { if (g[n])
935
- i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
936
- function resume(n, v) { try {
937
- step(g[n](v));
938
- }
939
- catch (e) {
940
- settle(q[0][3], e);
941
- } }
942
- function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
943
- function fulfill(value) { resume("next", value); }
944
- function reject(value) { resume("throw", value); }
945
- function settle(f, v) { if (f(v), q.shift(), q.length)
946
- resume(q[0][0], q[0][1]); }
947
- }
948
- function __asyncDelegator(o) {
949
- var i, p;
950
- return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
951
- function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
952
- }
953
- function __asyncValues(o) {
954
- if (!Symbol.asyncIterator)
955
- throw new TypeError("Symbol.asyncIterator is not defined.");
956
- var m = o[Symbol.asyncIterator], i;
957
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
958
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
959
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
960
- }
961
- function __makeTemplateObject(cooked, raw) {
962
- if (Object.defineProperty) {
963
- Object.defineProperty(cooked, "raw", { value: raw });
964
- }
965
- else {
966
- cooked.raw = raw;
967
- }
968
- return cooked;
969
- }
970
- ;
971
- var __setModuleDefault = Object.create ? (function (o, v) {
972
- Object.defineProperty(o, "default", { enumerable: true, value: v });
973
- }) : function (o, v) {
974
- o["default"] = v;
975
- };
976
- function __importStar(mod) {
977
- if (mod && mod.__esModule)
978
- return mod;
979
- var result = {};
980
- if (mod != null)
981
- for (var k in mod)
982
- if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
983
- __createBinding(result, mod, k);
984
- __setModuleDefault(result, mod);
985
- return result;
986
- }
987
- function __importDefault(mod) {
988
- return (mod && mod.__esModule) ? mod : { default: mod };
989
- }
990
- function __classPrivateFieldGet(receiver, state, kind, f) {
991
- if (kind === "a" && !f)
992
- throw new TypeError("Private accessor was defined without a getter");
993
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
994
- throw new TypeError("Cannot read private member from an object whose class did not declare it");
995
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
996
- }
997
- function __classPrivateFieldSet(receiver, state, value, kind, f) {
998
- if (kind === "m")
999
- throw new TypeError("Private method is not writable");
1000
- if (kind === "a" && !f)
1001
- throw new TypeError("Private accessor was defined without a setter");
1002
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
1003
- throw new TypeError("Cannot write private member to an object whose class did not declare it");
1004
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
1005
- }
1006
-
1007
- var AngularEditorToolbarComponent = /** @class */ (function () {
1008
- function AngularEditorToolbarComponent(r, editorService, er, doc) {
1009
- this.r = r;
1010
- this.editorService = editorService;
1011
- this.er = er;
1012
- this.doc = doc;
1013
- this.htmlMode = false;
1014
- this.linkSelected = false;
1015
- this.block = 'default';
1016
- this.fontName = 'Times New Roman';
1017
- this.fontSize = '3';
1018
- this.headings = [
1019
- {
1020
- label: 'Heading 1',
1021
- value: 'h1',
1022
- },
1023
- {
1024
- label: 'Heading 2',
1025
- value: 'h2',
1026
- },
1027
- {
1028
- label: 'Heading 3',
1029
- value: 'h3',
1030
- },
1031
- {
1032
- label: 'Heading 4',
1033
- value: 'h4',
1034
- },
1035
- {
1036
- label: 'Heading 5',
1037
- value: 'h5',
1038
- },
1039
- {
1040
- label: 'Heading 6',
1041
- value: 'h6',
1042
- },
1043
- {
1044
- label: 'Heading 7',
1045
- value: 'h7',
1046
- },
1047
- {
1048
- label: 'Paragraph',
1049
- value: 'p',
1050
- },
1051
- {
1052
- label: 'Predefined',
1053
- value: 'pre'
1054
- },
1055
- {
1056
- label: 'Standard',
1057
- value: 'div'
1058
- },
1059
- {
1060
- label: 'default',
1061
- value: 'default'
1062
- }
1063
- ];
1064
- this.fontSizes = [
1065
- {
1066
- label: '1',
1067
- value: '1',
1068
- },
1069
- {
1070
- label: '2',
1071
- value: '2',
1072
- },
1073
- {
1074
- label: '3',
1075
- value: '3',
1076
- },
1077
- {
1078
- label: '4',
1079
- value: '4',
1080
- },
1081
- {
1082
- label: '5',
1083
- value: '5',
1084
- },
1085
- {
1086
- label: '6',
1087
- value: '6',
1088
- },
1089
- {
1090
- label: '7',
1091
- value: '7',
1092
- }
1093
- ];
1094
- this.customClassId = '-1';
1095
- this.customClassList = [{ label: '', value: '' }];
1096
- // uploadUrl: string;
1097
- this.tagMap = {
1098
- BLOCKQUOTE: 'indent',
1099
- A: 'link'
1100
- };
1101
- this.select = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P', 'PRE', 'DIV'];
1102
- this.buttons = ['bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'justifyLeft', 'justifyCenter',
1103
- 'justifyRight', 'justifyFull', 'indent', 'outdent', 'insertUnorderedList', 'insertOrderedList', 'link'];
1104
- this.fonts = [{ label: '', value: '' }];
1105
- this.execute = new core.EventEmitter();
1106
- }
1107
- Object.defineProperty(AngularEditorToolbarComponent.prototype, "customClasses", {
1108
- set: function (classes) {
1109
- if (classes) {
1110
- this._customClasses = classes;
1111
- this.customClassList = this._customClasses.map(function (x, i) { return ({ label: x.name, value: i.toString() }); });
1112
- this.customClassList.unshift({ label: 'Clear Class', value: '-1' });
1113
- }
1114
- },
1115
- enumerable: false,
1116
- configurable: true
1117
- });
1118
- Object.defineProperty(AngularEditorToolbarComponent.prototype, "defaultFontName", {
1119
- set: function (value) {
1120
- if (value) {
1121
- this.fontName = value;
1122
- }
1123
- },
1124
- enumerable: false,
1125
- configurable: true
1126
- });
1127
- Object.defineProperty(AngularEditorToolbarComponent.prototype, "defaultFontSize", {
1128
- set: function (value) {
1129
- if (value) {
1130
- this.fontSize = value;
1131
- }
1132
- },
1133
- enumerable: false,
1134
- configurable: true
1135
- });
1136
- Object.defineProperty(AngularEditorToolbarComponent.prototype, "isLinkButtonDisabled", {
1137
- get: function () {
1138
- return this.htmlMode || !Boolean(this.editorService.selectedText);
1139
- },
1140
- enumerable: false,
1141
- configurable: true
1142
- });
1143
- /**
1144
- * Trigger command from editor header buttons
1145
- * @param command string from toolbar buttons
1146
- */
1147
- AngularEditorToolbarComponent.prototype.triggerCommand = function (command) {
1148
- this.execute.emit(command);
1149
- };
1150
- /**
1151
- * highlight editor buttons when cursor moved or positioning
1152
- */
1153
- AngularEditorToolbarComponent.prototype.triggerButtons = function () {
1154
- var _this = this;
1155
- if (!this.showToolbar) {
1156
- return;
1157
- }
1158
- this.buttons.forEach(function (e) {
1159
- var result = _this.doc.queryCommandState(e);
1160
- var elementById = _this.doc.getElementById(e + '-' + _this.id);
1161
- if (result) {
1162
- _this.r.addClass(elementById, 'active');
1163
- }
1164
- else {
1165
- _this.r.removeClass(elementById, 'active');
1166
- }
1167
- });
1168
- };
1169
- /**
1170
- * trigger highlight editor buttons when cursor moved or positioning in block
1171
- */
1172
- AngularEditorToolbarComponent.prototype.triggerBlocks = function (nodes) {
1173
- var _this = this;
1174
- if (!this.showToolbar) {
1175
- return;
1176
- }
1177
- this.linkSelected = nodes.findIndex(function (x) { return x.nodeName === 'A'; }) > -1;
1178
- var found = false;
1179
- this.select.forEach(function (y) {
1180
- var node = nodes.find(function (x) { return x.nodeName === y; });
1181
- if (node !== undefined && y === node.nodeName) {
1182
- if (found === false) {
1183
- _this.block = node.nodeName.toLowerCase();
1184
- found = true;
1185
- }
1186
- }
1187
- else if (found === false) {
1188
- _this.block = 'default';
1189
- }
1190
- });
1191
- found = false;
1192
- if (this._customClasses) {
1193
- this._customClasses.forEach(function (y, index) {
1194
- var node = nodes.find(function (x) {
1195
- if (x instanceof Element) {
1196
- return x.className === y.class;
1197
- }
1198
- });
1199
- if (node !== undefined) {
1200
- if (found === false) {
1201
- _this.customClassId = index.toString();
1202
- found = true;
1203
- }
1204
- }
1205
- else if (found === false) {
1206
- _this.customClassId = '-1';
1207
- }
1208
- });
1209
- }
1210
- Object.keys(this.tagMap).map(function (e) {
1211
- var elementById = _this.doc.getElementById(_this.tagMap[e] + '-' + _this.id);
1212
- var node = nodes.find(function (x) { return x.nodeName === e; });
1213
- if (node !== undefined && e === node.nodeName) {
1214
- _this.r.addClass(elementById, 'active');
1215
- }
1216
- else {
1217
- _this.r.removeClass(elementById, 'active');
1218
- }
1219
- });
1220
- this.foreColour = this.doc.queryCommandValue('ForeColor');
1221
- this.fontSize = this.doc.queryCommandValue('FontSize');
1222
- this.fontName = this.doc.queryCommandValue('FontName').replace(/"/g, '');
1223
- this.backColor = this.doc.queryCommandValue('backColor');
1224
- };
1225
- /**
1226
- * insert URL link
1227
- */
1228
- AngularEditorToolbarComponent.prototype.insertUrl = function () {
1229
- var url = 'https:\/\/';
1230
- var selection = this.editorService.savedSelection;
1231
- if (selection && selection.commonAncestorContainer.parentElement.nodeName === 'A') {
1232
- var parent = selection.commonAncestorContainer.parentElement;
1233
- if (parent.href !== '') {
1234
- url = parent.href;
1235
- }
1236
- }
1237
- url = prompt('Insert URL link', url);
1238
- if (url && url !== '' && url !== 'https://') {
1239
- this.editorService.createLink(url);
1240
- }
1241
- };
1242
- /**
1243
- * insert Video link
1244
- */
1245
- AngularEditorToolbarComponent.prototype.insertVideo = function () {
1246
- this.execute.emit('');
1247
- var url = prompt('Insert Video link', "https://");
1248
- if (url && url !== '' && url !== "https://") {
1249
- this.editorService.insertVideo(url);
1250
- }
1251
- };
1252
- /** insert color */
1253
- AngularEditorToolbarComponent.prototype.insertColor = function (color, where) {
1254
- this.editorService.insertColor(color, where);
1255
- this.execute.emit('');
1256
- };
1257
- /**
1258
- * set font Name/family
1259
- * @param foreColor string
1260
- */
1261
- AngularEditorToolbarComponent.prototype.setFontName = function (foreColor) {
1262
- this.editorService.setFontName(foreColor);
1263
- this.execute.emit('');
1264
- };
1265
- /**
1266
- * set font Size
1267
- * @param fontSize string
1268
- */
1269
- AngularEditorToolbarComponent.prototype.setFontSize = function (fontSize) {
1270
- this.editorService.setFontSize(fontSize);
1271
- this.execute.emit('');
1272
- };
1273
- /**
1274
- * toggle editor mode (WYSIWYG or SOURCE)
1275
- * @param m boolean
1276
- */
1277
- AngularEditorToolbarComponent.prototype.setEditorMode = function (m) {
1278
- var toggleEditorModeButton = this.doc.getElementById('toggleEditorMode' + '-' + this.id);
1279
- if (m) {
1280
- this.r.addClass(toggleEditorModeButton, 'active');
1281
- }
1282
- else {
1283
- this.r.removeClass(toggleEditorModeButton, 'active');
1284
- }
1285
- this.htmlMode = m;
1286
- };
1287
- /**
1288
- * Upload image when file is selected.
1289
- */
1290
- AngularEditorToolbarComponent.prototype.onFileChanged = function (event) {
1291
- var _this = this;
1292
- var file = event.target.files[0];
1293
- if (file.type.includes('image/')) {
1294
- if (this.upload) {
1295
- this.upload(file).subscribe(function () { return _this.watchUploadImage; });
1296
- }
1297
- else if (this.uploadUrl) {
1298
- this.editorService.uploadImage(file).subscribe(function () { return _this.watchUploadImage; });
1299
- }
1300
- else {
1301
- var reader = new FileReader();
1302
- reader.onload = function (e) {
1303
- var fr = e.currentTarget;
1304
- _this.editorService.insertImage(fr.result.toString());
1305
- };
1306
- reader.readAsDataURL(file);
1307
- }
1308
- }
1309
- };
1310
- AngularEditorToolbarComponent.prototype.watchUploadImage = function (response, event) {
1311
- var imageUrl = response.body.imageUrl;
1312
- this.editorService.insertImage(imageUrl);
1313
- event.srcElement.value = null;
1314
- };
1315
- /**
1316
- * Set custom class
1317
- */
1318
- AngularEditorToolbarComponent.prototype.setCustomClass = function (classId) {
1319
- if (classId === '-1') {
1320
- this.execute.emit('clear');
1321
- }
1322
- else {
1323
- this.editorService.createCustomClass(this._customClasses[+classId]);
1324
- }
1325
- };
1326
- AngularEditorToolbarComponent.prototype.isButtonHidden = function (name) {
1327
- var e_1, _a;
1328
- if (!name) {
1329
- return false;
1330
- }
1331
- if (!(this.hiddenButtons instanceof Array)) {
1332
- return false;
1333
- }
1334
- var result;
1335
- try {
1336
- for (var _b = __values(this.hiddenButtons), _c = _b.next(); !_c.done; _c = _b.next()) {
1337
- var arr = _c.value;
1338
- if (arr instanceof Array) {
1339
- result = arr.find(function (item) { return item === name; });
1340
- }
1341
- if (result) {
1342
- break;
1343
- }
1344
- }
1345
- }
1346
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
1347
- finally {
1348
- try {
1349
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1350
- }
1351
- finally { if (e_1) throw e_1.error; }
1352
- }
1353
- return result !== undefined;
1354
- };
1355
- AngularEditorToolbarComponent.prototype.focus = function () {
1356
- this.execute.emit('focus');
1357
- console.log('focused');
1358
- };
1359
- return AngularEditorToolbarComponent;
1360
- }());
1361
- AngularEditorToolbarComponent.decorators = [
1362
- { type: core.Component, args: [{
1363
- selector: 'angular-editor-toolbar',
1364
- template: "<div class=\"angular-editor-toolbar\" *ngIf=\"showToolbar\">\n <div class=\"angular-editor-toolbar-set\">\n <button type=\"button\" title=\"Undo\" class=\"angular-editor-button\" (click)=\"triggerCommand('undo')\"\n [hidden]=\"isButtonHidden('undo')\" tabindex=\"-1\"><i\n class='fa fa-undo'></i></button>\n <button type=\"button\" title=\"Redo\" class=\"angular-editor-button\" (click)=\"triggerCommand('redo')\"\n [hidden]=\"isButtonHidden('redo')\" tabindex=\"-1\"><i\n class='fa fa-repeat'></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'bold-'+id\" type=\"button\" title=\"Bold\" class=\"angular-editor-button\" (click)=\"triggerCommand('bold')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('bold')\" tabindex=\"-1\"><i class='fa fa-bold'></i></button>\n <button [id]=\"'italic-'+id\" type=\"button\" title=\"Italic\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('italic')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('italic')\" tabindex=\"-1\"><i class='fa fa-italic'></i>\n </button>\n <button [id]=\"'underline-'+id\" type=\"button\" title=\"Underline\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('underline')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('underline')\"\n tabindex=\"-1\"><i class='fa fa-underline'></i></button>\n <button [id]=\"'strikeThrough-'+id\" type=\"button\" title=\"Strikethrough\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('strikeThrough')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('strikeThrough')\"\n tabindex=\"-1\"><i class='fa fa-strikethrough'></i></button>\n <button [id]=\"'subscript-'+id\" type=\"button\" title=\"Subscript\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('subscript')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('subscript')\"\n tabindex=\"-1\"><i class='fa fa-subscript'></i></button>\n <button [id]=\"'superscript-'+id\" type=\"button\" title=\"Superscript\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('superscript')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('superscript')\"\n tabindex=\"-1\"><i class='fa fa-superscript'></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'justifyLeft-'+id\" type=\"button\" title=\"Justify Left\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('justifyLeft')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyLeft')\"\n tabindex=\"-1\"><i\n class='fa fa-align-left'></i></button>\n <button [id]=\"'justifyCenter-'+id\" type=\"button\" title=\"Justify Center\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('justifyCenter')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyCenter')\"\n tabindex=\"-1\"><i\n class='fa fa-align-center'></i></button>\n <button [id]=\"'justifyRight-'+id\" type=\"button\" title=\"Justify Right\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('justifyRight')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyRight')\"\n tabindex=\"-1\">\n <i class='fa fa-align-right'></i></button>\n <button [id]=\"'justifyFull-'+id\" type=\"button\" title=\"Justify Full\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('justifyFull')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyFull')\"\n tabindex=\"-1\"><i\n class='fa fa-align-justify'></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'indent-'+id\" type=\"button\" title=\"Indent\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('indent')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('indent')\" tabindex=\"-1\"><i\n class='fa fa-indent'></i></button>\n <button [id]=\"'outdent-'+id\" type=\"button\" title=\"Outdent\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('outdent')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('outdent')\" tabindex=\"-1\"><i\n class='fa fa-outdent'></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'insertUnorderedList-'+id\" type=\"button\" title=\"Unordered List\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('insertUnorderedList')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertUnorderedList')\" tabindex=\"-1\"><i\n class='fa fa-list-ul'></i></button>\n <button [id]=\"'insertOrderedList-'+id\" type=\"button\" title=\"Ordered List\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('insertOrderedList')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertOrderedList')\" tabindex=\"-1\"><i\n class='fa fa-list-ol'></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n\n <ae-select class=\"select-heading\" [options]=\"headings\"\n [(ngModel)]=\"block\"\n (change)=\"triggerCommand(block)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('heading')\"\n tabindex=\"-1\"></ae-select>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n\n <ae-select class=\"select-font\" [options]=\"fonts\"\n [(ngModel)]=\"fontName\"\n (change)=\"setFontName(fontName)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('fontName')\"\n tabindex=\"-1\"></ae-select>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n\n <ae-select class=\"select-font-size\" [options]=\"fontSizes\"\n [(ngModel)]=\"fontSize\"\n (change)=\"setFontSize(fontSize)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('fontSize')\"\n tabindex=\"-1\">\n </ae-select>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <input\n style=\"display: none\"\n type=\"color\" (change)=\"insertColor(fgInput.value, 'textColor')\"\n #fgInput>\n <button [id]=\"'foregroundColorPicker-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"focus(); ; fgInput.click()\"\n title=\"Text Color\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('textColor')\" tabindex=\"-1\"><span\n class=\"color-label foreground\"><i class=\"fa fa-font\"></i></span>\n </button>\n <input\n style=\"display: none\"\n type=\"color\" (change)=\"insertColor(bgInput.value, 'backgroundColor')\"\n #bgInput>\n <button [id]=\"'backgroundColorPicker-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"focus(); ; bgInput.click()\"\n title=\"Background Color\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('backgroundColor')\" tabindex=\"-1\"><span\n class=\"color-label background\"><i class=\"fa fa-font\"></i></span>\n </button>\n </div>\n <div *ngIf=\"_customClasses\" class=\"angular-editor-toolbar-set\">\n <ae-select class=\"select-custom-style\" [options]=\"customClassList\"\n [(ngModel)]=\"customClassId\"\n (change)=\"setCustomClass(customClassId)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('customClasses')\"\n tabindex=\"-1\"></ae-select>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'link-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"insertUrl()\"\n title=\"Insert Link\" [disabled]=\"isLinkButtonDisabled\" [hidden]=\"isButtonHidden('link')\" tabindex=\"-1\">\n <i class=\"fa fa-link\"></i>\n </button>\n <button [id]=\"'unlink-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"triggerCommand('unlink')\"\n title=\"Unlink\" [disabled]=\"htmlMode || !linkSelected\" [hidden]=\"isButtonHidden('unlink')\" tabindex=\"-1\">\n <i class=\"fa fa-chain-broken\"></i>\n </button>\n <input\n style=\"display: none\"\n accept=\"image/*\"\n type=\"file\" (change)=\"onFileChanged($event)\"\n #fileInput>\n <button [id]=\"'insertImage-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"focus(); fileInput.click()\"\n title=\"Insert Image\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('insertImage')\" tabindex=\"-1\"><i class=\"fa fa-image\"></i>\n </button>\n <button [id]=\"'insertVideo-'+id\" type=\"button\" class=\"angular-editor-button\"\n (click)=\"insertVideo()\" title=\"Insert Video\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('insertVideo')\"\n tabindex=\"-1\"><i\n class=\"fa fa-video-camera\"></i></button>\n <button [id]=\"'insertHorizontalRule-'+id\" type=\"button\" title=\"Horizontal Line\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('insertHorizontalRule')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertHorizontalRule')\" tabindex=\"-1\"><i\n class=\"fa fa-minus\"></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'clearFormatting-'+id\" type=\"button\" title=\"Clear Formatting\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('removeFormat')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('removeFormat')\"\n tabindex=\"-1\"><i class='fa fa-remove'></i>\n </button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'toggleEditorMode-'+id\" type=\"button\" title=\"HTML Code\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('toggleEditorMode')\" [hidden]=\"isButtonHidden('toggleEditorMode')\" tabindex=\"-1\"><i\n class='fa fa-code'></i></button>\n </div>\n</div>\n",
1365
- styles: ["@charset \"UTF-8\";\n/*!\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */@font-face{font-family:FontAwesome;src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot#iefix&v=4.7.0) format(\"embedded-opentype\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0) format(\"woff2\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0) format(\"woff\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0) format(\"truetype\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format(\"svg\");font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:\"\uF000\"}.fa-music:before{content:\"\uF001\"}.fa-search:before{content:\"\uF002\"}.fa-envelope-o:before{content:\"\uF003\"}.fa-heart:before{content:\"\uF004\"}.fa-star:before{content:\"\uF005\"}.fa-star-o:before{content:\"\uF006\"}.fa-user:before{content:\"\uF007\"}.fa-film:before{content:\"\uF008\"}.fa-th-large:before{content:\"\uF009\"}.fa-th:before{content:\"\uF00A\"}.fa-th-list:before{content:\"\uF00B\"}.fa-check:before{content:\"\uF00C\"}.fa-close:before,.fa-remove:before,.fa-times:before{content:\"\uF00D\"}.fa-search-plus:before{content:\"\uF00E\"}.fa-search-minus:before{content:\"\uF010\"}.fa-power-off:before{content:\"\uF011\"}.fa-signal:before{content:\"\uF012\"}.fa-cog:before,.fa-gear:before{content:\"\uF013\"}.fa-trash-o:before{content:\"\uF014\"}.fa-home:before{content:\"\uF015\"}.fa-file-o:before{content:\"\uF016\"}.fa-clock-o:before{content:\"\uF017\"}.fa-road:before{content:\"\uF018\"}.fa-download:before{content:\"\uF019\"}.fa-arrow-circle-o-down:before{content:\"\uF01A\"}.fa-arrow-circle-o-up:before{content:\"\uF01B\"}.fa-inbox:before{content:\"\uF01C\"}.fa-play-circle-o:before{content:\"\uF01D\"}.fa-repeat:before,.fa-rotate-right:before{content:\"\uF01E\"}.fa-refresh:before{content:\"\uF021\"}.fa-list-alt:before{content:\"\uF022\"}.fa-lock:before{content:\"\uF023\"}.fa-flag:before{content:\"\uF024\"}.fa-headphones:before{content:\"\uF025\"}.fa-volume-off:before{content:\"\uF026\"}.fa-volume-down:before{content:\"\uF027\"}.fa-volume-up:before{content:\"\uF028\"}.fa-qrcode:before{content:\"\uF029\"}.fa-barcode:before{content:\"\uF02A\"}.fa-tag:before{content:\"\uF02B\"}.fa-tags:before{content:\"\uF02C\"}.fa-book:before{content:\"\uF02D\"}.fa-bookmark:before{content:\"\uF02E\"}.fa-print:before{content:\"\uF02F\"}.fa-camera:before{content:\"\uF030\"}.fa-font:before{content:\"\uF031\"}.fa-bold:before{content:\"\uF032\"}.fa-italic:before{content:\"\uF033\"}.fa-text-height:before{content:\"\uF034\"}.fa-text-width:before{content:\"\uF035\"}.fa-align-left:before{content:\"\uF036\"}.fa-align-center:before{content:\"\uF037\"}.fa-align-right:before{content:\"\uF038\"}.fa-align-justify:before{content:\"\uF039\"}.fa-list:before{content:\"\uF03A\"}.fa-dedent:before,.fa-outdent:before{content:\"\uF03B\"}.fa-indent:before{content:\"\uF03C\"}.fa-video-camera:before{content:\"\uF03D\"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:\"\uF03E\"}.fa-pencil:before{content:\"\uF040\"}.fa-map-marker:before{content:\"\uF041\"}.fa-adjust:before{content:\"\uF042\"}.fa-tint:before{content:\"\uF043\"}.fa-edit:before,.fa-pencil-square-o:before{content:\"\uF044\"}.fa-share-square-o:before{content:\"\uF045\"}.fa-check-square-o:before{content:\"\uF046\"}.fa-arrows:before{content:\"\uF047\"}.fa-step-backward:before{content:\"\uF048\"}.fa-fast-backward:before{content:\"\uF049\"}.fa-backward:before{content:\"\uF04A\"}.fa-play:before{content:\"\uF04B\"}.fa-pause:before{content:\"\uF04C\"}.fa-stop:before{content:\"\uF04D\"}.fa-forward:before{content:\"\uF04E\"}.fa-fast-forward:before{content:\"\uF050\"}.fa-step-forward:before{content:\"\uF051\"}.fa-eject:before{content:\"\uF052\"}.fa-chevron-left:before{content:\"\uF053\"}.fa-chevron-right:before{content:\"\uF054\"}.fa-plus-circle:before{content:\"\uF055\"}.fa-minus-circle:before{content:\"\uF056\"}.fa-times-circle:before{content:\"\uF057\"}.fa-check-circle:before{content:\"\uF058\"}.fa-question-circle:before{content:\"\uF059\"}.fa-info-circle:before{content:\"\uF05A\"}.fa-crosshairs:before{content:\"\uF05B\"}.fa-times-circle-o:before{content:\"\uF05C\"}.fa-check-circle-o:before{content:\"\uF05D\"}.fa-ban:before{content:\"\uF05E\"}.fa-arrow-left:before{content:\"\uF060\"}.fa-arrow-right:before{content:\"\uF061\"}.fa-arrow-up:before{content:\"\uF062\"}.fa-arrow-down:before{content:\"\uF063\"}.fa-mail-forward:before,.fa-share:before{content:\"\uF064\"}.fa-expand:before{content:\"\uF065\"}.fa-compress:before{content:\"\uF066\"}.fa-plus:before{content:\"\uF067\"}.fa-minus:before{content:\"\uF068\"}.fa-asterisk:before{content:\"\uF069\"}.fa-exclamation-circle:before{content:\"\uF06A\"}.fa-gift:before{content:\"\uF06B\"}.fa-leaf:before{content:\"\uF06C\"}.fa-fire:before{content:\"\uF06D\"}.fa-eye:before{content:\"\uF06E\"}.fa-eye-slash:before{content:\"\uF070\"}.fa-exclamation-triangle:before,.fa-warning:before{content:\"\uF071\"}.fa-plane:before{content:\"\uF072\"}.fa-calendar:before{content:\"\uF073\"}.fa-random:before{content:\"\uF074\"}.fa-comment:before{content:\"\uF075\"}.fa-magnet:before{content:\"\uF076\"}.fa-chevron-up:before{content:\"\uF077\"}.fa-chevron-down:before{content:\"\uF078\"}.fa-retweet:before{content:\"\uF079\"}.fa-shopping-cart:before{content:\"\uF07A\"}.fa-folder:before{content:\"\uF07B\"}.fa-folder-open:before{content:\"\uF07C\"}.fa-arrows-v:before{content:\"\uF07D\"}.fa-arrows-h:before{content:\"\uF07E\"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:\"\uF080\"}.fa-twitter-square:before{content:\"\uF081\"}.fa-facebook-square:before{content:\"\uF082\"}.fa-camera-retro:before{content:\"\uF083\"}.fa-key:before{content:\"\uF084\"}.fa-cogs:before,.fa-gears:before{content:\"\uF085\"}.fa-comments:before{content:\"\uF086\"}.fa-thumbs-o-up:before{content:\"\uF087\"}.fa-thumbs-o-down:before{content:\"\uF088\"}.fa-star-half:before{content:\"\uF089\"}.fa-heart-o:before{content:\"\uF08A\"}.fa-sign-out:before{content:\"\uF08B\"}.fa-linkedin-square:before{content:\"\uF08C\"}.fa-thumb-tack:before{content:\"\uF08D\"}.fa-external-link:before{content:\"\uF08E\"}.fa-sign-in:before{content:\"\uF090\"}.fa-trophy:before{content:\"\uF091\"}.fa-github-square:before{content:\"\uF092\"}.fa-upload:before{content:\"\uF093\"}.fa-lemon-o:before{content:\"\uF094\"}.fa-phone:before{content:\"\uF095\"}.fa-square-o:before{content:\"\uF096\"}.fa-bookmark-o:before{content:\"\uF097\"}.fa-phone-square:before{content:\"\uF098\"}.fa-twitter:before{content:\"\uF099\"}.fa-facebook-f:before,.fa-facebook:before{content:\"\uF09A\"}.fa-github:before{content:\"\uF09B\"}.fa-unlock:before{content:\"\uF09C\"}.fa-credit-card:before{content:\"\uF09D\"}.fa-feed:before,.fa-rss:before{content:\"\uF09E\"}.fa-hdd-o:before{content:\"\uF0A0\"}.fa-bullhorn:before{content:\"\uF0A1\"}.fa-bell:before{content:\"\uF0F3\"}.fa-certificate:before{content:\"\uF0A3\"}.fa-hand-o-right:before{content:\"\uF0A4\"}.fa-hand-o-left:before{content:\"\uF0A5\"}.fa-hand-o-up:before{content:\"\uF0A6\"}.fa-hand-o-down:before{content:\"\uF0A7\"}.fa-arrow-circle-left:before{content:\"\uF0A8\"}.fa-arrow-circle-right:before{content:\"\uF0A9\"}.fa-arrow-circle-up:before{content:\"\uF0AA\"}.fa-arrow-circle-down:before{content:\"\uF0AB\"}.fa-globe:before{content:\"\uF0AC\"}.fa-wrench:before{content:\"\uF0AD\"}.fa-tasks:before{content:\"\uF0AE\"}.fa-filter:before{content:\"\uF0B0\"}.fa-briefcase:before{content:\"\uF0B1\"}.fa-arrows-alt:before{content:\"\uF0B2\"}.fa-group:before,.fa-users:before{content:\"\uF0C0\"}.fa-chain:before,.fa-link:before{content:\"\uF0C1\"}.fa-cloud:before{content:\"\uF0C2\"}.fa-flask:before{content:\"\uF0C3\"}.fa-cut:before,.fa-scissors:before{content:\"\uF0C4\"}.fa-copy:before,.fa-files-o:before{content:\"\uF0C5\"}.fa-paperclip:before{content:\"\uF0C6\"}.fa-floppy-o:before,.fa-save:before{content:\"\uF0C7\"}.fa-square:before{content:\"\uF0C8\"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:\"\uF0C9\"}.fa-list-ul:before{content:\"\uF0CA\"}.fa-list-ol:before{content:\"\uF0CB\"}.fa-strikethrough:before{content:\"\uF0CC\"}.fa-underline:before{content:\"\uF0CD\"}.fa-table:before{content:\"\uF0CE\"}.fa-magic:before{content:\"\uF0D0\"}.fa-truck:before{content:\"\uF0D1\"}.fa-pinterest:before{content:\"\uF0D2\"}.fa-pinterest-square:before{content:\"\uF0D3\"}.fa-google-plus-square:before{content:\"\uF0D4\"}.fa-google-plus:before{content:\"\uF0D5\"}.fa-money:before{content:\"\uF0D6\"}.fa-caret-down:before{content:\"\uF0D7\"}.fa-caret-up:before{content:\"\uF0D8\"}.fa-caret-left:before{content:\"\uF0D9\"}.fa-caret-right:before{content:\"\uF0DA\"}.fa-columns:before{content:\"\uF0DB\"}.fa-sort:before,.fa-unsorted:before{content:\"\uF0DC\"}.fa-sort-desc:before,.fa-sort-down:before{content:\"\uF0DD\"}.fa-sort-asc:before,.fa-sort-up:before{content:\"\uF0DE\"}.fa-envelope:before{content:\"\uF0E0\"}.fa-linkedin:before{content:\"\uF0E1\"}.fa-rotate-left:before,.fa-undo:before{content:\"\uF0E2\"}.fa-gavel:before,.fa-legal:before{content:\"\uF0E3\"}.fa-dashboard:before,.fa-tachometer:before{content:\"\uF0E4\"}.fa-comment-o:before{content:\"\uF0E5\"}.fa-comments-o:before{content:\"\uF0E6\"}.fa-bolt:before,.fa-flash:before{content:\"\uF0E7\"}.fa-sitemap:before{content:\"\uF0E8\"}.fa-umbrella:before{content:\"\uF0E9\"}.fa-clipboard:before,.fa-paste:before{content:\"\uF0EA\"}.fa-lightbulb-o:before{content:\"\uF0EB\"}.fa-exchange:before{content:\"\uF0EC\"}.fa-cloud-download:before{content:\"\uF0ED\"}.fa-cloud-upload:before{content:\"\uF0EE\"}.fa-user-md:before{content:\"\uF0F0\"}.fa-stethoscope:before{content:\"\uF0F1\"}.fa-suitcase:before{content:\"\uF0F2\"}.fa-bell-o:before{content:\"\uF0A2\"}.fa-coffee:before{content:\"\uF0F4\"}.fa-cutlery:before{content:\"\uF0F5\"}.fa-file-text-o:before{content:\"\uF0F6\"}.fa-building-o:before{content:\"\uF0F7\"}.fa-hospital-o:before{content:\"\uF0F8\"}.fa-ambulance:before{content:\"\uF0F9\"}.fa-medkit:before{content:\"\uF0FA\"}.fa-fighter-jet:before{content:\"\uF0FB\"}.fa-beer:before{content:\"\uF0FC\"}.fa-h-square:before{content:\"\uF0FD\"}.fa-plus-square:before{content:\"\uF0FE\"}.fa-angle-double-left:before{content:\"\uF100\"}.fa-angle-double-right:before{content:\"\uF101\"}.fa-angle-double-up:before{content:\"\uF102\"}.fa-angle-double-down:before{content:\"\uF103\"}.fa-angle-left:before{content:\"\uF104\"}.fa-angle-right:before{content:\"\uF105\"}.fa-angle-up:before{content:\"\uF106\"}.fa-angle-down:before{content:\"\uF107\"}.fa-desktop:before{content:\"\uF108\"}.fa-laptop:before{content:\"\uF109\"}.fa-tablet:before{content:\"\uF10A\"}.fa-mobile-phone:before,.fa-mobile:before{content:\"\uF10B\"}.fa-circle-o:before{content:\"\uF10C\"}.fa-quote-left:before{content:\"\uF10D\"}.fa-quote-right:before{content:\"\uF10E\"}.fa-spinner:before{content:\"\uF110\"}.fa-circle:before{content:\"\uF111\"}.fa-mail-reply:before,.fa-reply:before{content:\"\uF112\"}.fa-github-alt:before{content:\"\uF113\"}.fa-folder-o:before{content:\"\uF114\"}.fa-folder-open-o:before{content:\"\uF115\"}.fa-smile-o:before{content:\"\uF118\"}.fa-frown-o:before{content:\"\uF119\"}.fa-meh-o:before{content:\"\uF11A\"}.fa-gamepad:before{content:\"\uF11B\"}.fa-keyboard-o:before{content:\"\uF11C\"}.fa-flag-o:before{content:\"\uF11D\"}.fa-flag-checkered:before{content:\"\uF11E\"}.fa-terminal:before{content:\"\uF120\"}.fa-code:before{content:\"\uF121\"}.fa-mail-reply-all:before,.fa-reply-all:before{content:\"\uF122\"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:\"\uF123\"}.fa-location-arrow:before{content:\"\uF124\"}.fa-crop:before{content:\"\uF125\"}.fa-code-fork:before{content:\"\uF126\"}.fa-chain-broken:before,.fa-unlink:before{content:\"\uF127\"}.fa-question:before{content:\"\uF128\"}.fa-info:before{content:\"\uF129\"}.fa-exclamation:before{content:\"\uF12A\"}.fa-superscript:before{content:\"\uF12B\"}.fa-subscript:before{content:\"\uF12C\"}.fa-eraser:before{content:\"\uF12D\"}.fa-puzzle-piece:before{content:\"\uF12E\"}.fa-microphone:before{content:\"\uF130\"}.fa-microphone-slash:before{content:\"\uF131\"}.fa-shield:before{content:\"\uF132\"}.fa-calendar-o:before{content:\"\uF133\"}.fa-fire-extinguisher:before{content:\"\uF134\"}.fa-rocket:before{content:\"\uF135\"}.fa-maxcdn:before{content:\"\uF136\"}.fa-chevron-circle-left:before{content:\"\uF137\"}.fa-chevron-circle-right:before{content:\"\uF138\"}.fa-chevron-circle-up:before{content:\"\uF139\"}.fa-chevron-circle-down:before{content:\"\uF13A\"}.fa-html5:before{content:\"\uF13B\"}.fa-css3:before{content:\"\uF13C\"}.fa-anchor:before{content:\"\uF13D\"}.fa-unlock-alt:before{content:\"\uF13E\"}.fa-bullseye:before{content:\"\uF140\"}.fa-ellipsis-h:before{content:\"\uF141\"}.fa-ellipsis-v:before{content:\"\uF142\"}.fa-rss-square:before{content:\"\uF143\"}.fa-play-circle:before{content:\"\uF144\"}.fa-ticket:before{content:\"\uF145\"}.fa-minus-square:before{content:\"\uF146\"}.fa-minus-square-o:before{content:\"\uF147\"}.fa-level-up:before{content:\"\uF148\"}.fa-level-down:before{content:\"\uF149\"}.fa-check-square:before{content:\"\uF14A\"}.fa-pencil-square:before{content:\"\uF14B\"}.fa-external-link-square:before{content:\"\uF14C\"}.fa-share-square:before{content:\"\uF14D\"}.fa-compass:before{content:\"\uF14E\"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:\"\uF150\"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:\"\uF151\"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:\"\uF152\"}.fa-eur:before,.fa-euro:before{content:\"\uF153\"}.fa-gbp:before{content:\"\uF154\"}.fa-dollar:before,.fa-usd:before{content:\"\uF155\"}.fa-inr:before,.fa-rupee:before{content:\"\uF156\"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:\"\uF157\"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:\"\uF158\"}.fa-krw:before,.fa-won:before{content:\"\uF159\"}.fa-bitcoin:before,.fa-btc:before{content:\"\uF15A\"}.fa-file:before{content:\"\uF15B\"}.fa-file-text:before{content:\"\uF15C\"}.fa-sort-alpha-asc:before{content:\"\uF15D\"}.fa-sort-alpha-desc:before{content:\"\uF15E\"}.fa-sort-amount-asc:before{content:\"\uF160\"}.fa-sort-amount-desc:before{content:\"\uF161\"}.fa-sort-numeric-asc:before{content:\"\uF162\"}.fa-sort-numeric-desc:before{content:\"\uF163\"}.fa-thumbs-up:before{content:\"\uF164\"}.fa-thumbs-down:before{content:\"\uF165\"}.fa-youtube-square:before{content:\"\uF166\"}.fa-youtube:before{content:\"\uF167\"}.fa-xing:before{content:\"\uF168\"}.fa-xing-square:before{content:\"\uF169\"}.fa-youtube-play:before{content:\"\uF16A\"}.fa-dropbox:before{content:\"\uF16B\"}.fa-stack-overflow:before{content:\"\uF16C\"}.fa-instagram:before{content:\"\uF16D\"}.fa-flickr:before{content:\"\uF16E\"}.fa-adn:before{content:\"\uF170\"}.fa-bitbucket:before{content:\"\uF171\"}.fa-bitbucket-square:before{content:\"\uF172\"}.fa-tumblr:before{content:\"\uF173\"}.fa-tumblr-square:before{content:\"\uF174\"}.fa-long-arrow-down:before{content:\"\uF175\"}.fa-long-arrow-up:before{content:\"\uF176\"}.fa-long-arrow-left:before{content:\"\uF177\"}.fa-long-arrow-right:before{content:\"\uF178\"}.fa-apple:before{content:\"\uF179\"}.fa-windows:before{content:\"\uF17A\"}.fa-android:before{content:\"\uF17B\"}.fa-linux:before{content:\"\uF17C\"}.fa-dribbble:before{content:\"\uF17D\"}.fa-skype:before{content:\"\uF17E\"}.fa-foursquare:before{content:\"\uF180\"}.fa-trello:before{content:\"\uF181\"}.fa-female:before{content:\"\uF182\"}.fa-male:before{content:\"\uF183\"}.fa-gittip:before,.fa-gratipay:before{content:\"\uF184\"}.fa-sun-o:before{content:\"\uF185\"}.fa-moon-o:before{content:\"\uF186\"}.fa-archive:before{content:\"\uF187\"}.fa-bug:before{content:\"\uF188\"}.fa-vk:before{content:\"\uF189\"}.fa-weibo:before{content:\"\uF18A\"}.fa-renren:before{content:\"\uF18B\"}.fa-pagelines:before{content:\"\uF18C\"}.fa-stack-exchange:before{content:\"\uF18D\"}.fa-arrow-circle-o-right:before{content:\"\uF18E\"}.fa-arrow-circle-o-left:before{content:\"\uF190\"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:\"\uF191\"}.fa-dot-circle-o:before{content:\"\uF192\"}.fa-wheelchair:before{content:\"\uF193\"}.fa-vimeo-square:before{content:\"\uF194\"}.fa-try:before,.fa-turkish-lira:before{content:\"\uF195\"}.fa-plus-square-o:before{content:\"\uF196\"}.fa-space-shuttle:before{content:\"\uF197\"}.fa-slack:before{content:\"\uF198\"}.fa-envelope-square:before{content:\"\uF199\"}.fa-wordpress:before{content:\"\uF19A\"}.fa-openid:before{content:\"\uF19B\"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:\"\uF19C\"}.fa-graduation-cap:before,.fa-mortar-board:before{content:\"\uF19D\"}.fa-yahoo:before{content:\"\uF19E\"}.fa-google:before{content:\"\uF1A0\"}.fa-reddit:before{content:\"\uF1A1\"}.fa-reddit-square:before{content:\"\uF1A2\"}.fa-stumbleupon-circle:before{content:\"\uF1A3\"}.fa-stumbleupon:before{content:\"\uF1A4\"}.fa-delicious:before{content:\"\uF1A5\"}.fa-digg:before{content:\"\uF1A6\"}.fa-pied-piper-pp:before{content:\"\uF1A7\"}.fa-pied-piper-alt:before{content:\"\uF1A8\"}.fa-drupal:before{content:\"\uF1A9\"}.fa-joomla:before{content:\"\uF1AA\"}.fa-language:before{content:\"\uF1AB\"}.fa-fax:before{content:\"\uF1AC\"}.fa-building:before{content:\"\uF1AD\"}.fa-child:before{content:\"\uF1AE\"}.fa-paw:before{content:\"\uF1B0\"}.fa-spoon:before{content:\"\uF1B1\"}.fa-cube:before{content:\"\uF1B2\"}.fa-cubes:before{content:\"\uF1B3\"}.fa-behance:before{content:\"\uF1B4\"}.fa-behance-square:before{content:\"\uF1B5\"}.fa-steam:before{content:\"\uF1B6\"}.fa-steam-square:before{content:\"\uF1B7\"}.fa-recycle:before{content:\"\uF1B8\"}.fa-automobile:before,.fa-car:before{content:\"\uF1B9\"}.fa-cab:before,.fa-taxi:before{content:\"\uF1BA\"}.fa-tree:before{content:\"\uF1BB\"}.fa-spotify:before{content:\"\uF1BC\"}.fa-deviantart:before{content:\"\uF1BD\"}.fa-soundcloud:before{content:\"\uF1BE\"}.fa-database:before{content:\"\uF1C0\"}.fa-file-pdf-o:before{content:\"\uF1C1\"}.fa-file-word-o:before{content:\"\uF1C2\"}.fa-file-excel-o:before{content:\"\uF1C3\"}.fa-file-powerpoint-o:before{content:\"\uF1C4\"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:\"\uF1C5\"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:\"\uF1C6\"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:\"\uF1C7\"}.fa-file-movie-o:before,.fa-file-video-o:before{content:\"\uF1C8\"}.fa-file-code-o:before{content:\"\uF1C9\"}.fa-vine:before{content:\"\uF1CA\"}.fa-codepen:before{content:\"\uF1CB\"}.fa-jsfiddle:before{content:\"\uF1CC\"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:\"\uF1CD\"}.fa-circle-o-notch:before{content:\"\uF1CE\"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:\"\uF1D0\"}.fa-empire:before,.fa-ge:before{content:\"\uF1D1\"}.fa-git-square:before{content:\"\uF1D2\"}.fa-git:before{content:\"\uF1D3\"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:\"\uF1D4\"}.fa-tencent-weibo:before{content:\"\uF1D5\"}.fa-qq:before{content:\"\uF1D6\"}.fa-wechat:before,.fa-weixin:before{content:\"\uF1D7\"}.fa-paper-plane:before,.fa-send:before{content:\"\uF1D8\"}.fa-paper-plane-o:before,.fa-send-o:before{content:\"\uF1D9\"}.fa-history:before{content:\"\uF1DA\"}.fa-circle-thin:before{content:\"\uF1DB\"}.fa-header:before{content:\"\uF1DC\"}.fa-paragraph:before{content:\"\uF1DD\"}.fa-sliders:before{content:\"\uF1DE\"}.fa-share-alt:before{content:\"\uF1E0\"}.fa-share-alt-square:before{content:\"\uF1E1\"}.fa-bomb:before{content:\"\uF1E2\"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:\"\uF1E3\"}.fa-tty:before{content:\"\uF1E4\"}.fa-binoculars:before{content:\"\uF1E5\"}.fa-plug:before{content:\"\uF1E6\"}.fa-slideshare:before{content:\"\uF1E7\"}.fa-twitch:before{content:\"\uF1E8\"}.fa-yelp:before{content:\"\uF1E9\"}.fa-newspaper-o:before{content:\"\uF1EA\"}.fa-wifi:before{content:\"\uF1EB\"}.fa-calculator:before{content:\"\uF1EC\"}.fa-paypal:before{content:\"\uF1ED\"}.fa-google-wallet:before{content:\"\uF1EE\"}.fa-cc-visa:before{content:\"\uF1F0\"}.fa-cc-mastercard:before{content:\"\uF1F1\"}.fa-cc-discover:before{content:\"\uF1F2\"}.fa-cc-amex:before{content:\"\uF1F3\"}.fa-cc-paypal:before{content:\"\uF1F4\"}.fa-cc-stripe:before{content:\"\uF1F5\"}.fa-bell-slash:before{content:\"\uF1F6\"}.fa-bell-slash-o:before{content:\"\uF1F7\"}.fa-trash:before{content:\"\uF1F8\"}.fa-copyright:before{content:\"\uF1F9\"}.fa-at:before{content:\"\uF1FA\"}.fa-eyedropper:before{content:\"\uF1FB\"}.fa-paint-brush:before{content:\"\uF1FC\"}.fa-birthday-cake:before{content:\"\uF1FD\"}.fa-area-chart:before{content:\"\uF1FE\"}.fa-pie-chart:before{content:\"\uF200\"}.fa-line-chart:before{content:\"\uF201\"}.fa-lastfm:before{content:\"\uF202\"}.fa-lastfm-square:before{content:\"\uF203\"}.fa-toggle-off:before{content:\"\uF204\"}.fa-toggle-on:before{content:\"\uF205\"}.fa-bicycle:before{content:\"\uF206\"}.fa-bus:before{content:\"\uF207\"}.fa-ioxhost:before{content:\"\uF208\"}.fa-angellist:before{content:\"\uF209\"}.fa-cc:before{content:\"\uF20A\"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:\"\uF20B\"}.fa-meanpath:before{content:\"\uF20C\"}.fa-buysellads:before{content:\"\uF20D\"}.fa-connectdevelop:before{content:\"\uF20E\"}.fa-dashcube:before{content:\"\uF210\"}.fa-forumbee:before{content:\"\uF211\"}.fa-leanpub:before{content:\"\uF212\"}.fa-sellsy:before{content:\"\uF213\"}.fa-shirtsinbulk:before{content:\"\uF214\"}.fa-simplybuilt:before{content:\"\uF215\"}.fa-skyatlas:before{content:\"\uF216\"}.fa-cart-plus:before{content:\"\uF217\"}.fa-cart-arrow-down:before{content:\"\uF218\"}.fa-diamond:before{content:\"\uF219\"}.fa-ship:before{content:\"\uF21A\"}.fa-user-secret:before{content:\"\uF21B\"}.fa-motorcycle:before{content:\"\uF21C\"}.fa-street-view:before{content:\"\uF21D\"}.fa-heartbeat:before{content:\"\uF21E\"}.fa-venus:before{content:\"\uF221\"}.fa-mars:before{content:\"\uF222\"}.fa-mercury:before{content:\"\uF223\"}.fa-intersex:before,.fa-transgender:before{content:\"\uF224\"}.fa-transgender-alt:before{content:\"\uF225\"}.fa-venus-double:before{content:\"\uF226\"}.fa-mars-double:before{content:\"\uF227\"}.fa-venus-mars:before{content:\"\uF228\"}.fa-mars-stroke:before{content:\"\uF229\"}.fa-mars-stroke-v:before{content:\"\uF22A\"}.fa-mars-stroke-h:before{content:\"\uF22B\"}.fa-neuter:before{content:\"\uF22C\"}.fa-genderless:before{content:\"\uF22D\"}.fa-facebook-official:before{content:\"\uF230\"}.fa-pinterest-p:before{content:\"\uF231\"}.fa-whatsapp:before{content:\"\uF232\"}.fa-server:before{content:\"\uF233\"}.fa-user-plus:before{content:\"\uF234\"}.fa-user-times:before{content:\"\uF235\"}.fa-bed:before,.fa-hotel:before{content:\"\uF236\"}.fa-viacoin:before{content:\"\uF237\"}.fa-train:before{content:\"\uF238\"}.fa-subway:before{content:\"\uF239\"}.fa-medium:before{content:\"\uF23A\"}.fa-y-combinator:before,.fa-yc:before{content:\"\uF23B\"}.fa-optin-monster:before{content:\"\uF23C\"}.fa-opencart:before{content:\"\uF23D\"}.fa-expeditedssl:before{content:\"\uF23E\"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:\"\uF240\"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:\"\uF241\"}.fa-battery-2:before,.fa-battery-half:before{content:\"\uF242\"}.fa-battery-1:before,.fa-battery-quarter:before{content:\"\uF243\"}.fa-battery-0:before,.fa-battery-empty:before{content:\"\uF244\"}.fa-mouse-pointer:before{content:\"\uF245\"}.fa-i-cursor:before{content:\"\uF246\"}.fa-object-group:before{content:\"\uF247\"}.fa-object-ungroup:before{content:\"\uF248\"}.fa-sticky-note:before{content:\"\uF249\"}.fa-sticky-note-o:before{content:\"\uF24A\"}.fa-cc-jcb:before{content:\"\uF24B\"}.fa-cc-diners-club:before{content:\"\uF24C\"}.fa-clone:before{content:\"\uF24D\"}.fa-balance-scale:before{content:\"\uF24E\"}.fa-hourglass-o:before{content:\"\uF250\"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:\"\uF251\"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:\"\uF252\"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:\"\uF253\"}.fa-hourglass:before{content:\"\uF254\"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:\"\uF255\"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:\"\uF256\"}.fa-hand-scissors-o:before{content:\"\uF257\"}.fa-hand-lizard-o:before{content:\"\uF258\"}.fa-hand-spock-o:before{content:\"\uF259\"}.fa-hand-pointer-o:before{content:\"\uF25A\"}.fa-hand-peace-o:before{content:\"\uF25B\"}.fa-trademark:before{content:\"\uF25C\"}.fa-registered:before{content:\"\uF25D\"}.fa-creative-commons:before{content:\"\uF25E\"}.fa-gg:before{content:\"\uF260\"}.fa-gg-circle:before{content:\"\uF261\"}.fa-tripadvisor:before{content:\"\uF262\"}.fa-odnoklassniki:before{content:\"\uF263\"}.fa-odnoklassniki-square:before{content:\"\uF264\"}.fa-get-pocket:before{content:\"\uF265\"}.fa-wikipedia-w:before{content:\"\uF266\"}.fa-safari:before{content:\"\uF267\"}.fa-chrome:before{content:\"\uF268\"}.fa-firefox:before{content:\"\uF269\"}.fa-opera:before{content:\"\uF26A\"}.fa-internet-explorer:before{content:\"\uF26B\"}.fa-television:before,.fa-tv:before{content:\"\uF26C\"}.fa-contao:before{content:\"\uF26D\"}.fa-500px:before{content:\"\uF26E\"}.fa-amazon:before{content:\"\uF270\"}.fa-calendar-plus-o:before{content:\"\uF271\"}.fa-calendar-minus-o:before{content:\"\uF272\"}.fa-calendar-times-o:before{content:\"\uF273\"}.fa-calendar-check-o:before{content:\"\uF274\"}.fa-industry:before{content:\"\uF275\"}.fa-map-pin:before{content:\"\uF276\"}.fa-map-signs:before{content:\"\uF277\"}.fa-map-o:before{content:\"\uF278\"}.fa-map:before{content:\"\uF279\"}.fa-commenting:before{content:\"\uF27A\"}.fa-commenting-o:before{content:\"\uF27B\"}.fa-houzz:before{content:\"\uF27C\"}.fa-vimeo:before{content:\"\uF27D\"}.fa-black-tie:before{content:\"\uF27E\"}.fa-fonticons:before{content:\"\uF280\"}.fa-reddit-alien:before{content:\"\uF281\"}.fa-edge:before{content:\"\uF282\"}.fa-credit-card-alt:before{content:\"\uF283\"}.fa-codiepie:before{content:\"\uF284\"}.fa-modx:before{content:\"\uF285\"}.fa-fort-awesome:before{content:\"\uF286\"}.fa-usb:before{content:\"\uF287\"}.fa-product-hunt:before{content:\"\uF288\"}.fa-mixcloud:before{content:\"\uF289\"}.fa-scribd:before{content:\"\uF28A\"}.fa-pause-circle:before{content:\"\uF28B\"}.fa-pause-circle-o:before{content:\"\uF28C\"}.fa-stop-circle:before{content:\"\uF28D\"}.fa-stop-circle-o:before{content:\"\uF28E\"}.fa-shopping-bag:before{content:\"\uF290\"}.fa-shopping-basket:before{content:\"\uF291\"}.fa-hashtag:before{content:\"\uF292\"}.fa-bluetooth:before{content:\"\uF293\"}.fa-bluetooth-b:before{content:\"\uF294\"}.fa-percent:before{content:\"\uF295\"}.fa-gitlab:before{content:\"\uF296\"}.fa-wpbeginner:before{content:\"\uF297\"}.fa-wpforms:before{content:\"\uF298\"}.fa-envira:before{content:\"\uF299\"}.fa-universal-access:before{content:\"\uF29A\"}.fa-wheelchair-alt:before{content:\"\uF29B\"}.fa-question-circle-o:before{content:\"\uF29C\"}.fa-blind:before{content:\"\uF29D\"}.fa-audio-description:before{content:\"\uF29E\"}.fa-volume-control-phone:before{content:\"\uF2A0\"}.fa-braille:before{content:\"\uF2A1\"}.fa-assistive-listening-systems:before{content:\"\uF2A2\"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:\"\uF2A3\"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:\"\uF2A4\"}.fa-glide:before{content:\"\uF2A5\"}.fa-glide-g:before{content:\"\uF2A6\"}.fa-sign-language:before,.fa-signing:before{content:\"\uF2A7\"}.fa-low-vision:before{content:\"\uF2A8\"}.fa-viadeo:before{content:\"\uF2A9\"}.fa-viadeo-square:before{content:\"\uF2AA\"}.fa-snapchat:before{content:\"\uF2AB\"}.fa-snapchat-ghost:before{content:\"\uF2AC\"}.fa-snapchat-square:before{content:\"\uF2AD\"}.fa-pied-piper:before{content:\"\uF2AE\"}.fa-first-order:before{content:\"\uF2B0\"}.fa-yoast:before{content:\"\uF2B1\"}.fa-themeisle:before{content:\"\uF2B2\"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:\"\uF2B3\"}.fa-fa:before,.fa-font-awesome:before{content:\"\uF2B4\"}.fa-handshake-o:before{content:\"\uF2B5\"}.fa-envelope-open:before{content:\"\uF2B6\"}.fa-envelope-open-o:before{content:\"\uF2B7\"}.fa-linode:before{content:\"\uF2B8\"}.fa-address-book:before{content:\"\uF2B9\"}.fa-address-book-o:before{content:\"\uF2BA\"}.fa-address-card:before,.fa-vcard:before{content:\"\uF2BB\"}.fa-address-card-o:before,.fa-vcard-o:before{content:\"\uF2BC\"}.fa-user-circle:before{content:\"\uF2BD\"}.fa-user-circle-o:before{content:\"\uF2BE\"}.fa-user-o:before{content:\"\uF2C0\"}.fa-id-badge:before{content:\"\uF2C1\"}.fa-drivers-license:before,.fa-id-card:before{content:\"\uF2C2\"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:\"\uF2C3\"}.fa-quora:before{content:\"\uF2C4\"}.fa-free-code-camp:before{content:\"\uF2C5\"}.fa-telegram:before{content:\"\uF2C6\"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:\"\uF2C7\"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:\"\uF2C8\"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:\"\uF2C9\"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:\"\uF2CA\"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:\"\uF2CB\"}.fa-shower:before{content:\"\uF2CC\"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:\"\uF2CD\"}.fa-podcast:before{content:\"\uF2CE\"}.fa-window-maximize:before{content:\"\uF2D0\"}.fa-window-minimize:before{content:\"\uF2D1\"}.fa-window-restore:before{content:\"\uF2D2\"}.fa-times-rectangle:before,.fa-window-close:before{content:\"\uF2D3\"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:\"\uF2D4\"}.fa-bandcamp:before{content:\"\uF2D5\"}.fa-grav:before{content:\"\uF2D6\"}.fa-etsy:before{content:\"\uF2D7\"}.fa-imdb:before{content:\"\uF2D8\"}.fa-ravelry:before{content:\"\uF2D9\"}.fa-eercast:before{content:\"\uF2DA\"}.fa-microchip:before{content:\"\uF2DB\"}.fa-snowflake-o:before{content:\"\uF2DC\"}.fa-superpowers:before{content:\"\uF2DD\"}.fa-wpexplorer:before{content:\"\uF2DE\"}.fa-meetup:before{content:\"\uF2E0\"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}a{cursor:pointer}.angular-editor-textarea{min-height:150px;overflow:auto;margin-top:5px;resize:vertical}.angular-editor-textarea:after{content:\"\";position:absolute;bottom:0;right:0;display:block;width:8px;height:8px;cursor:nwse-resize;background-color:hsla(0,0%,100%,.5)}.angular-editor-toolbar{font:100 14px/15px Roboto,Arial,sans-serif;background-color:#f5f5f5;font-size:.8rem;padding:.2rem;border:1px solid #ddd}.angular-editor-toolbar .angular-editor-toolbar-set{display:none;margin-right:5px;vertical-align:baseline}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button{background-color:#fff;vertical-align:middle;border:1px solid #ddd;padding:.4rem;min-width:2rem;float:left}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.focus,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:focus{outline:0}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label{pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.background,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.foreground :after{background:#555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active{background:#fff5b9}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active:hover{background-color:#fffa98}.angular-editor-toolbar .angular-editor-toolbar-set select{font-size:11px;width:90px;vertical-align:middle;background-color:transparent;border:.5px solid hsla(0,0%,100%,0);border-radius:5px;outline:none;padding:.4rem;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading{display:inline-block;width:90px}@supports not (-moz-appearance:none){.angular-editor-toolbar .angular-editor-toolbar-set .select-heading optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .default{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h1{font-size:24px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h2{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h3{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h4{font-size:15px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h5{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h6{font-size:13px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .div,.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .pre{font-size:12px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font{display:inline-block;width:90px}@supports not (-moz-appearance:none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size{display:inline-block;width:50px}@supports not (-moz-appearance:none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size1{font-size:10px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size2{font-size:12px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size3{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size4{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size5{font-size:18px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size6{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size7{font-size:22px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style{display:inline-block;width:90px}@supports not (-moz-appearance:none){.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .color-label{position:relative;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .background{font-size:smaller;background:#1b1b1b;color:#fff;padding:3px}.angular-editor-toolbar .angular-editor-toolbar-set .foreground :after{position:absolute;content:\"\";left:-1px;top:auto;bottom:-3px;right:auto;width:15px;height:2px;z-index:0;background:#1b1b1b}.angular-editor-toolbar .angular-editor-toolbar-set:not([style*=\"display:none\"]):not([style*=\"display: none\"]),.select-button{display:inline-block}.select-button.disabled{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}"]
1366
- },] }
1367
- ];
1368
- AngularEditorToolbarComponent.ctorParameters = function () { return [
1369
- { type: core.Renderer2 },
1370
- { type: AngularEditorService },
1371
- { type: core.ElementRef },
1372
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] }
1373
- ]; };
1374
- AngularEditorToolbarComponent.propDecorators = {
1375
- id: [{ type: core.Input }],
1376
- uploadUrl: [{ type: core.Input }],
1377
- upload: [{ type: core.Input }],
1378
- showToolbar: [{ type: core.Input }],
1379
- fonts: [{ type: core.Input }],
1380
- customClasses: [{ type: core.Input }],
1381
- defaultFontName: [{ type: core.Input }],
1382
- defaultFontSize: [{ type: core.Input }],
1383
- hiddenButtons: [{ type: core.Input }],
1384
- execute: [{ type: core.Output }],
1385
- myInputFile: [{ type: core.ViewChild, args: ['fileInput', { static: true },] }]
1386
- };
1387
-
1388
- var AeSelectComponent = /** @class */ (function () {
1389
- function AeSelectComponent(elRef, r) {
1390
- this.elRef = elRef;
1391
- this.r = r;
1392
- this.options = [];
1393
- this.disabled = false;
1394
- this.optionId = 0;
1395
- this.opened = false;
1396
- this.hidden = 'inline-block';
1397
- // eslint-disable-next-line @angular-eslint/no-output-native, @angular-eslint/no-output-rename
1398
- this.changeEvent = new core.EventEmitter();
1399
- this.onChange = function () {
1400
- };
1401
- this.onTouched = function () {
1402
- };
1403
- }
1404
- Object.defineProperty(AeSelectComponent.prototype, "label", {
1405
- get: function () {
1406
- return this.selectedOption && this.selectedOption.hasOwnProperty('label') ? this.selectedOption.label : 'Select';
1407
- },
1408
- enumerable: false,
1409
- configurable: true
1410
- });
1411
- Object.defineProperty(AeSelectComponent.prototype, "value", {
1412
- get: function () {
1413
- return this.selectedOption.value;
1414
- },
1415
- enumerable: false,
1416
- configurable: true
1417
- });
1418
- AeSelectComponent.prototype.ngOnInit = function () {
1419
- this.selectedOption = this.options[0];
1420
- if (isDefined(this.isHidden) && this.isHidden) {
1421
- this.hide();
1422
- }
1423
- };
1424
- AeSelectComponent.prototype.hide = function () {
1425
- this.hidden = 'none';
1426
- };
1427
- AeSelectComponent.prototype.optionSelect = function (option, event) {
1428
- event.stopPropagation();
1429
- this.setValue(option.value);
1430
- this.onChange(this.selectedOption.value);
1431
- this.changeEvent.emit(this.selectedOption.value);
1432
- this.onTouched();
1433
- this.opened = false;
1434
- };
1435
- AeSelectComponent.prototype.toggleOpen = function (event) {
1436
- // event.stopPropagation();
1437
- if (this.disabled) {
1438
- return;
1439
- }
1440
- this.opened = !this.opened;
1441
- };
1442
- AeSelectComponent.prototype.onClick = function ($event) {
1443
- if (!this.elRef.nativeElement.contains($event.target)) {
1444
- this.close();
1445
- }
1446
- };
1447
- AeSelectComponent.prototype.close = function () {
1448
- this.opened = false;
1449
- };
1450
- Object.defineProperty(AeSelectComponent.prototype, "isOpen", {
1451
- get: function () {
1452
- return this.opened;
1453
- },
1454
- enumerable: false,
1455
- configurable: true
1456
- });
1457
- AeSelectComponent.prototype.writeValue = function (value) {
1458
- if (!value || typeof value !== 'string') {
1459
- return;
1460
- }
1461
- this.setValue(value);
1462
- };
1463
- AeSelectComponent.prototype.setValue = function (value) {
1464
- var index = 0;
1465
- var selectedEl = this.options.find(function (el, i) {
1466
- index = i;
1467
- return el.value === value;
1468
- });
1469
- if (selectedEl) {
1470
- this.selectedOption = selectedEl;
1471
- this.optionId = index;
1472
- }
1473
- };
1474
- AeSelectComponent.prototype.registerOnChange = function (fn) {
1475
- this.onChange = fn;
1476
- };
1477
- AeSelectComponent.prototype.registerOnTouched = function (fn) {
1478
- this.onTouched = fn;
1479
- };
1480
- AeSelectComponent.prototype.setDisabledState = function (isDisabled) {
1481
- this.labelButton.nativeElement.disabled = isDisabled;
1482
- var div = this.labelButton.nativeElement;
1483
- var action = isDisabled ? 'addClass' : 'removeClass';
1484
- this.r[action](div, 'disabled');
1485
- this.disabled = isDisabled;
1486
- };
1487
- AeSelectComponent.prototype.handleKeyDown = function ($event) {
1488
- if (!this.opened) {
1489
- return;
1490
- }
1491
- // console.log($event.key);
1492
- // if (KeyCode[$event.key]) {
1493
- switch ($event.key) {
1494
- case 'ArrowDown':
1495
- this._handleArrowDown($event);
1496
- break;
1497
- case 'ArrowUp':
1498
- this._handleArrowUp($event);
1499
- break;
1500
- case 'Space':
1501
- this._handleSpace($event);
1502
- break;
1503
- case 'Enter':
1504
- this._handleEnter($event);
1505
- break;
1506
- case 'Tab':
1507
- this._handleTab($event);
1508
- break;
1509
- case 'Escape':
1510
- this.close();
1511
- $event.preventDefault();
1512
- break;
1513
- case 'Backspace':
1514
- this._handleBackspace();
1515
- break;
1516
- }
1517
- // } else if ($event.key && $event.key.length === 1) {
1518
- // this._keyPress$.next($event.key.toLocaleLowerCase());
1519
- // }
1520
- };
1521
- AeSelectComponent.prototype._handleArrowDown = function ($event) {
1522
- if (this.optionId < this.options.length - 1) {
1523
- this.optionId++;
1524
- }
1525
- };
1526
- AeSelectComponent.prototype._handleArrowUp = function ($event) {
1527
- if (this.optionId >= 1) {
1528
- this.optionId--;
1529
- }
1530
- };
1531
- AeSelectComponent.prototype._handleSpace = function ($event) {
1532
- };
1533
- AeSelectComponent.prototype._handleEnter = function ($event) {
1534
- this.optionSelect(this.options[this.optionId], $event);
1535
- };
1536
- AeSelectComponent.prototype._handleTab = function ($event) {
1537
- };
1538
- AeSelectComponent.prototype._handleBackspace = function () {
1539
- };
1540
- return AeSelectComponent;
1541
- }());
1542
- AeSelectComponent.decorators = [
1543
- { type: core.Component, args: [{
1544
- selector: 'ae-select',
1545
- template: "<span class=\"ae-font ae-picker\" [ngClass]=\"{'ae-expanded':isOpen}\">\n <button [tabIndex]=\"-1\" #labelButton tabindex=\"0\" type=\"button\" role=\"button\" class=\"ae-picker-label\" (click)=\"toggleOpen($event);\">{{label}}\n <svg viewBox=\"0 0 18 18\">\n <!-- <use x=\"0\" y=\"0\" xlink:href=\"../assets/icons.svg#hom\"></use>-->\n <polygon class=\"ae-stroke\" points=\"7 11 9 13 11 11 7 11\"></polygon>\n <polygon class=\"ae-stroke\" points=\"7 7 9 5 11 7 7 7\"></polygon>\n </svg>\n </button>\n <span class=\"ae-picker-options\">\n <button tabindex=\"-1\" type=\"button\" role=\"button\" class=\"ae-picker-item\"\n *ngFor=\"let item of options; let i = index\"\n [ngClass]=\"{'selected': item.value === value, 'focused': i === optionId}\"\n (click)=\"optionSelect(item, $event)\">\n {{item.label}}\n </button>\n <span class=\"dropdown-item\" *ngIf=\"!options.length\">No items for select</span>\n </span>\n</span>\n",
1546
- encapsulation: core.ViewEncapsulation.None,
1547
- providers: [
1548
- {
1549
- provide: forms.NG_VALUE_ACCESSOR,
1550
- useExisting: core.forwardRef(function () { return AeSelectComponent; }),
1551
- multi: true,
1552
- }
1553
- ],
1554
- styles: [".ae-font.ae-picker{color:#444}.ae-font.ae-picker,.ae-font .ae-picker-label{display:inline-block;float:left;width:100%;position:relative;vertical-align:middle}.ae-font .ae-picker-label{cursor:pointer;height:100%;padding-left:8px;padding-right:10px;line-height:26px;font-size:85%;text-align:left;background-color:#fff;min-width:2rem;border:1px solid #ddd;text-overflow:clip;overflow:hidden;white-space:nowrap}.ae-font .ae-picker-label:before{content:\"\";position:absolute;right:0;top:0;width:20px;height:100%;background:linear-gradient(90deg,#fff,#fff)}.ae-font .ae-picker-label:focus{outline:none}.ae-font .ae-picker-label:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.ae-font .ae-picker-label:hover:before{background:linear-gradient(90deg,#f5f5f5 100%,#fff 0)}.ae-font .ae-picker-label:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.ae-font .ae-picker-label:disabled:before{background:linear-gradient(90deg,#f5f5f5 100%,#fff 0)}.ae-font .ae-picker-label svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ae-font .ae-picker-label svg:not(:root){overflow:hidden}.ae-font .ae-picker-label svg .ae-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ae-font .ae-picker-options{background-color:#fff;display:none;min-width:100%;position:absolute;white-space:nowrap;z-index:3;border:1px solid transparent;box-shadow:0 2px 8px rgba(0,0,0,.2)}.ae-font .ae-picker-options .ae-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px;padding-left:5px;z-index:3;text-align:left;background-color:transparent;min-width:2rem;width:100%;border:0 solid #ddd}.ae-font .ae-picker-options .ae-picker-item.selected{color:#06c;background-color:#fff4c2}.ae-font .ae-picker-options .ae-picker-item.focused,.ae-font .ae-picker-options .ae-picker-item:hover{background-color:#fffa98}.ae-font.ae-expanded{display:block;margin-top:-1px;z-index:1}.ae-font.ae-expanded .ae-picker-label,.ae-font.ae-expanded .ae-picker-label svg{color:#ccc;z-index:2}.ae-font.ae-expanded .ae-picker-label svg .ae-stroke{stroke:#ccc}.ae-font.ae-expanded .ae-picker-options{display:block;margin-top:-1px;top:100%;z-index:3;border-color:#ccc}"]
1555
- },] }
1556
- ];
1557
- AeSelectComponent.ctorParameters = function () { return [
1558
- { type: core.ElementRef },
1559
- { type: core.Renderer2 }
1560
- ]; };
1561
- AeSelectComponent.propDecorators = {
1562
- options: [{ type: core.Input }],
1563
- isHidden: [{ type: core.Input, args: ['hidden',] }],
1564
- hidden: [{ type: core.HostBinding, args: ['style.display',] }],
1565
- changeEvent: [{ type: core.Output, args: ['change',] }],
1566
- labelButton: [{ type: core.ViewChild, args: ['labelButton', { static: true },] }],
1567
- onClick: [{ type: core.HostListener, args: ['document:click', ['$event'],] }],
1568
- handleKeyDown: [{ type: core.HostListener, args: ['keydown', ['$event'],] }]
1569
- };
1570
-
1571
- var AngularEditorModule = /** @class */ (function () {
1572
- function AngularEditorModule() {
1573
- }
1574
- return AngularEditorModule;
1575
- }());
1576
- AngularEditorModule.decorators = [
1577
- { type: core.NgModule, args: [{
1578
- imports: [
1579
- common.CommonModule, forms.FormsModule, forms.ReactiveFormsModule
1580
- ],
1581
- declarations: [AngularEditorComponent, AngularEditorToolbarComponent, AeSelectComponent],
1582
- exports: [AngularEditorComponent, AngularEditorToolbarComponent]
1583
- },] }
1584
- ];
1585
-
1586
- /*
1587
- * Public API Surface of angular-editor
1588
- */
1589
-
1590
- /**
1591
- * Generated bundle index. Do not edit.
1592
- */
1593
-
1594
- exports.AngularEditorComponent = AngularEditorComponent;
1595
- exports.AngularEditorModule = AngularEditorModule;
1596
- exports.AngularEditorService = AngularEditorService;
1597
- exports.AngularEditorToolbarComponent = AngularEditorToolbarComponent;
1598
- exports.ɵa = AeSelectComponent;
1599
-
1600
- Object.defineProperty(exports, '__esModule', { value: true });
1601
-
1602
- })));
1603
- //# sourceMappingURL=kolkov-angular-editor.umd.js.map