UNPKG

733 kBJavaScriptView Raw
1import { Component, ElementRef, Input, HostBinding, NgModule, Directive, ChangeDetectorRef, Renderer2, ViewContainerRef, ComponentFactoryResolver, ContentChildren, EventEmitter, ChangeDetectionStrategy, Output, ViewChild, TemplateRef, forwardRef, HostListener, ViewEncapsulation, Host, Inject, InjectionToken, Injectable, Injector, Optional, SecurityContext } from '@angular/core';
2import { CommonModule, DOCUMENT } from '@angular/common';
3import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
4import { DomSanitizer } from '@angular/platform-browser';
5import { Subject, BehaviorSubject, Subscription, merge, of, combineLatest } from 'rxjs';
6import { takeWhile, filter, take, map, distinctUntilChanged } from 'rxjs/operators';
7import { trigger, transition, style, animate, state } from '@angular/animations';
8import { Overlay, OverlayPositionBuilder, OverlayModule, OverlayConfig } from '@angular/cdk/overlay';
9import { ComponentPortal, PortalInjector, TemplatePortal } from '@angular/cdk/portal';
10import { CdkTable, CDK_TABLE_TEMPLATE, CdkCellDef, CdkHeaderCellDef, CdkFooterCellDef, CdkColumnDef, CdkHeaderCell, CdkFooterCell, CdkCell, CdkHeaderRowDef, CdkFooterRowDef, CdkRowDef, CdkHeaderRow, CDK_ROW_TEMPLATE, CdkFooterRow, CdkRow, DataSource, CdkTableModule } from '@angular/cdk/table';
11import { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';
12import { NavigationEnd, Router, ActivatedRoute, RouterModule } from '@angular/router';
13import { BreakpointObserver, LayoutModule as LayoutModule$1 } from '@angular/cdk/layout';
14import rangePlugin from 'flatpickr/dist/plugins/rangePlugin';
15import flatpickr from 'flatpickr';
16import { Spanish } from 'flatpickr/dist/l10n/es.js';
17import { highlight, languages } from 'prismjs';
18import 'prismjs/components/prism-markup-templating.js';
19import 'prismjs/components/prism-typescript';
20import 'prismjs/components/prism-php';
21import 'prismjs/components/prism-ruby';
22import 'prismjs/components/prism-json';
23import 'prismjs/components/prism-java';
24import 'prismjs/components/prism-markdown';
25import 'prismjs/components/prism-scss';
26import 'prismjs/components/prism-swift';
27
28/**
29 * @fileoverview added by tsickle
30 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
31 */
32class Loading {
33 /**
34 * @param {?} elementRef
35 */
36 constructor(elementRef) {
37 this.elementRef = elementRef;
38 this.title = 'Loading';
39 /**
40 * set to `false` to stop the loading animation
41 */
42 this.isActive = true;
43 /**
44 * Specify the size of the button
45 */
46 this.size = 'normal';
47 /**
48 * Set to `true` to make loader with an overlay.
49 */
50 this.overlay = false;
51 }
52}
53Loading.decorators = [
54 { type: Component, args: [{
55 selector: 'suka-loading',
56 template: `
57 <div
58 [ngClass]="{
59 'loading--small': size === 'sm',
60 'loading--stop': !isActive && !overlay,
61 'loading-overlay--stop': !isActive && overlay
62 }"
63 class="loading">
64 <svg class="loading__svg" viewBox="-75 -75 150 150">
65 <title>{{title}}</title>
66 <circle class="loading__stroke" cx="0" cy="0" r="37.5" />
67 </svg>
68 </div>
69 `
70 }] }
71];
72/** @nocollapse */
73Loading.ctorParameters = () => [
74 { type: ElementRef }
75];
76Loading.propDecorators = {
77 title: [{ type: Input }],
78 isActive: [{ type: Input }],
79 size: [{ type: Input }],
80 overlay: [{ type: Input }, { type: HostBinding, args: ['class.loading-overlay',] }]
81};
82if (false) {
83 /** @type {?} */
84 Loading.prototype.title;
85 /**
86 * set to `false` to stop the loading animation
87 * @type {?}
88 */
89 Loading.prototype.isActive;
90 /**
91 * Specify the size of the button
92 * @type {?}
93 */
94 Loading.prototype.size;
95 /**
96 * Set to `true` to make loader with an overlay.
97 * @type {?}
98 */
99 Loading.prototype.overlay;
100 /** @type {?} */
101 Loading.prototype.elementRef;
102}
103
104/**
105 * @fileoverview added by tsickle
106 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
107 */
108class LoadingModule {
109}
110LoadingModule.decorators = [
111 { type: NgModule, args: [{
112 declarations: [
113 Loading
114 ],
115 exports: [
116 Loading
117 ],
118 imports: [
119 CommonModule
120 ]
121 },] }
122];
123
124/**
125 * @fileoverview added by tsickle
126 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
127 */
128/**
129 * Buttons are used primarily for actions, such as “Add”, “Close”, “Cancel”, or “Save”.
130 * Plain buttons, which look similar to links, are used for less important or less commonly used actions, such as “view shipping settings”.
131 *
132 * For navigational actions that appear within or directly following a sentence, use the link component.
133 */
134class Button {
135 /**
136 * @param {?} ref
137 * @param {?} el
138 * @param {?} renderer
139 * @param {?} viewContainerRef
140 * @param {?} componentFactoryResolver
141 */
142 constructor(ref, el, renderer, viewContainerRef, componentFactoryResolver) {
143 this.ref = ref;
144 this.el = el;
145 this.renderer = renderer;
146 this.viewContainerRef = viewContainerRef;
147 this.componentFactoryResolver = componentFactoryResolver;
148 /**
149 * Sets the button type. Can be `primary`, `basic`, `plain`, `destructive` or `outline_white`.
150 */
151 this.sukaButton = 'basic';
152 /**
153 * Button size. Can be `md` (Medium), `sm` (Small) or `lg` (Large).
154 */
155 this.size = 'md';
156 /**
157 * Set to `true` for a skeleton state button.
158 */
159 this.skeleton = false;
160 /**
161 * Set to `true` to display the outline version of the button.
162 */
163 this.outline = false;
164 /**
165 * Set to `true` for a hover effect.
166 */
167 this.hover = false;
168 /**
169 * Set to `true` for a button that uses the full horizontal width;
170 */
171 this.fullWidth = false;
172 /**
173 * Sets to `true` when the button is on a button group.
174 */
175 this.inGroup = false;
176 /**
177 * Set to `true` for a loading button.
178 */
179 this.loading = false;
180 }
181 /**
182 * @return {?}
183 */
184 get basic() {
185 return this.getType('basic');
186 }
187 /**
188 * @return {?}
189 */
190 get primary() {
191 return this.getType('primary');
192 }
193 /**
194 * @return {?}
195 */
196 get plain() {
197 return this.getType('plain');
198 }
199 /**
200 * @return {?}
201 */
202 get destructive() {
203 return this.getType('destructive');
204 }
205 /**
206 * @return {?}
207 */
208 get outline_white() {
209 return this.getType('outline_white');
210 }
211 /**
212 * @return {?}
213 */
214 get buttonSmall() {
215 return this.size === 'sm';
216 }
217 /**
218 * @return {?}
219 */
220 get buttonLarge() {
221 return this.size === 'lg';
222 }
223 /**
224 * @private
225 * @param {?} type
226 * @return {?}
227 */
228 getType(type) {
229 return this.sukaButton === type;
230 }
231 /**
232 * @return {?}
233 */
234 ngOnInit() {
235 if (!this.sukaButton) {
236 this.sukaButton = 'basic';
237 }
238 // Create the spinner
239 /** @type {?} */
240 const factory = this.componentFactoryResolver.resolveComponentFactory(Loading);
241 /** @type {?} */
242 const componentRef = this.viewContainerRef.createComponent(factory);
243 this.loadingSpinner = componentRef.instance;
244 this.loadingSpinner.size = 'sm';
245 this.renderer.setStyle(this.loadingSpinner.elementRef.nativeElement, 'display', 'none');
246 this.renderer.appendChild(this.el.nativeElement, this.loadingSpinner.elementRef.nativeElement);
247 if (this.loading) {
248 this.renderer.setStyle(this.loadingSpinner.elementRef.nativeElement, 'display', 'inherit');
249 this.el.nativeElement.disabled = true;
250 }
251 }
252 /**
253 * @param {?} changes
254 * @return {?}
255 */
256 ngOnChanges(changes) {
257 if (changes.loading && this.loadingSpinner) {
258 if (this.loading) {
259 this.renderer.setStyle(this.loadingSpinner.elementRef.nativeElement, 'display', 'inherit');
260 }
261 else {
262 this.renderer.setStyle(this.loadingSpinner.elementRef.nativeElement, 'display', 'none');
263 }
264 this.el.nativeElement.disabled = changes.loading.currentValue;
265 }
266 }
267 /**
268 * @return {?}
269 */
270 ngAfterViewInit() {
271 this.ref.detectChanges();
272 }
273}
274Button.decorators = [
275 { type: Directive, args: [{
276 selector: '[sukaButton]'
277 },] }
278];
279/** @nocollapse */
280Button.ctorParameters = () => [
281 { type: ChangeDetectorRef },
282 { type: ElementRef },
283 { type: Renderer2 },
284 { type: ViewContainerRef },
285 { type: ComponentFactoryResolver }
286];
287Button.propDecorators = {
288 sukaButton: [{ type: Input }],
289 size: [{ type: Input }],
290 basic: [{ type: HostBinding, args: ['class.btn--basic',] }],
291 primary: [{ type: HostBinding, args: ['class.btn--primary',] }],
292 plain: [{ type: HostBinding, args: ['class.btn--plain',] }],
293 destructive: [{ type: HostBinding, args: ['class.btn--destructive',] }],
294 outline_white: [{ type: HostBinding, args: ['class.btn--outline_white',] }],
295 skeleton: [{ type: HostBinding, args: ['class.skeleton',] }, { type: Input }],
296 outline: [{ type: HostBinding, args: ['class.btn--outline',] }, { type: Input }],
297 hover: [{ type: HostBinding, args: ['class.btn--hover',] }, { type: Input }],
298 fullWidth: [{ type: HostBinding, args: ['class.btn--full_width',] }, { type: Input }],
299 inGroup: [{ type: HostBinding, args: ['class.btn--group_item',] }, { type: Input }],
300 loading: [{ type: HostBinding, args: ['class.btn--loading',] }, { type: Input }],
301 buttonSmall: [{ type: HostBinding, args: ['class.btn--sm',] }],
302 buttonLarge: [{ type: HostBinding, args: ['class.btn--lg',] }]
303};
304if (false) {
305 /**
306 * Sets the button type. Can be `primary`, `basic`, `plain`, `destructive` or `outline_white`.
307 * @type {?}
308 */
309 Button.prototype.sukaButton;
310 /**
311 * Button size. Can be `md` (Medium), `sm` (Small) or `lg` (Large).
312 * @type {?}
313 */
314 Button.prototype.size;
315 /**
316 * Set to `true` for a skeleton state button.
317 * @type {?}
318 */
319 Button.prototype.skeleton;
320 /**
321 * Set to `true` to display the outline version of the button.
322 * @type {?}
323 */
324 Button.prototype.outline;
325 /**
326 * Set to `true` for a hover effect.
327 * @type {?}
328 */
329 Button.prototype.hover;
330 /**
331 * Set to `true` for a button that uses the full horizontal width;
332 * @type {?}
333 */
334 Button.prototype.fullWidth;
335 /**
336 * Sets to `true` when the button is on a button group.
337 * @type {?}
338 */
339 Button.prototype.inGroup;
340 /**
341 * Set to `true` for a loading button.
342 * @type {?}
343 */
344 Button.prototype.loading;
345 /**
346 * @ignore
347 * @type {?}
348 */
349 Button.prototype.loadingSpinner;
350 /**
351 * @type {?}
352 * @private
353 */
354 Button.prototype.ref;
355 /**
356 * @type {?}
357 * @private
358 */
359 Button.prototype.el;
360 /**
361 * @type {?}
362 * @private
363 */
364 Button.prototype.renderer;
365 /**
366 * @type {?}
367 * @private
368 */
369 Button.prototype.viewContainerRef;
370 /**
371 * @type {?}
372 * @private
373 */
374 Button.prototype.componentFactoryResolver;
375}
376
377/**
378 * @fileoverview added by tsickle
379 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
380 */
381class ButtonGroup {
382 constructor() {
383 this.baseClass = true;
384 }
385 /**
386 * @return {?}
387 */
388 ngAfterContentInit() {
389 this.buttons.toArray().forEach((/**
390 * @param {?} button
391 * @return {?}
392 */
393 (button) => {
394 button.inGroup = true;
395 }));
396 }
397}
398ButtonGroup.decorators = [
399 { type: Component, args: [{
400 selector: 'suka-button-group',
401 template: `<div class="btn-group__wrapper"><ng-content></ng-content></div>`
402 }] }
403];
404ButtonGroup.propDecorators = {
405 baseClass: [{ type: HostBinding, args: ['class.btn-group',] }],
406 segmented: [{ type: HostBinding, args: ['class.btn-group--segmented',] }, { type: Input }],
407 buttons: [{ type: ContentChildren, args: [Button,] }]
408};
409if (false) {
410 /** @type {?} */
411 ButtonGroup.prototype.baseClass;
412 /**
413 * Join buttons as segmented group
414 * @type {?}
415 */
416 ButtonGroup.prototype.segmented;
417 /** @type {?} */
418 ButtonGroup.prototype.buttons;
419}
420
421/**
422 * @fileoverview added by tsickle
423 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
424 */
425class ButtonModule {
426}
427ButtonModule.decorators = [
428 { type: NgModule, args: [{
429 declarations: [Button, ButtonGroup],
430 exports: [Button, ButtonGroup],
431 imports: [CommonModule, LoadingModule],
432 entryComponents: [Loading],
433 },] }
434];
435
436/**
437 * @fileoverview added by tsickle
438 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
439 */
440/** @enum {number} */
441const CheckboxState = {
442 Init: 0,
443 Indeterminate: 1,
444 Checked: 2,
445 Unchecked: 3,
446};
447CheckboxState[CheckboxState.Init] = 'Init';
448CheckboxState[CheckboxState.Indeterminate] = 'Indeterminate';
449CheckboxState[CheckboxState.Checked] = 'Checked';
450CheckboxState[CheckboxState.Unchecked] = 'Unchecked';
451/**
452 * Used to emit changes performed on checkbox components.
453 */
454class CheckboxChange {
455}
456if (false) {
457 /** @type {?} */
458 CheckboxChange.prototype.source;
459 /** @type {?} */
460 CheckboxChange.prototype.checked;
461}
462// tslint:disable-next-line: component-class-suffix
463class Checkbox {
464 /**
465 * Creates an instance of `Checkbox`.
466 * @param {?} changeDetectorRef
467 */
468 constructor(changeDetectorRef) {
469 this.changeDetectorRef = changeDetectorRef;
470 /**
471 * Size of the checkbox.
472 */
473 this.size = 'md';
474 /**
475 * Set to `true` for checkbox to be rendered without any classes on the host element.
476 */
477 this.inline = false;
478 /**
479 * Set to `true` for a disabled checkbox.
480 */
481 this.disabled = false;
482 /**
483 * Set to `true` for a loading checkbox.
484 */
485 this.skeleton = false;
486 /**
487 * Set to `true` to hide the checkbox labels.
488 */
489 this.hideLabel = false;
490 /**
491 * The unique id for the checkbox component.
492 */
493 this.id = `checkbox-${Checkbox.checkboxCount}`;
494 /**
495 * Used to set the `aria-label` attribute on the input element.
496 */
497 // tslint:disable-next-line:no-input-rename
498 this.ariaLabel = '';
499 /**
500 * Emits event notifying other classes when a change in state occurs on a checkbox after a
501 * click.
502 */
503 // tslint:disable-next-line: no-output-native
504 this.change = new EventEmitter();
505 /**
506 * Emits event notifying other classes when a change in state occurs specifically
507 * on an indeterminate checkbox.
508 */
509 this.indeterminateChange = new EventEmitter();
510 /**
511 * Set to `true` if the input checkbox is selected (or checked).
512 */
513 // tslint:disable-next-line: variable-name
514 this._checked = false;
515 /**
516 * Set to `true` if the input checkbox is in state indeterminate.
517 */
518 // tslint:disable-next-line: variable-name
519 this._indeterminate = false;
520 this.currentCheckboxState = CheckboxState.Init;
521 /**
522 * Called when checkbox is blurred. Needed to properly implement `ControlValueAccessor`.
523 */
524 this.onTouched = (/**
525 * @return {?}
526 */
527 () => { });
528 /**
529 * Method set in `registerOnChange` to propagate changes back to the form.
530 */
531 this.propagateChange = (/**
532 * @param {?} _
533 * @return {?}
534 */
535 (_) => { });
536 Checkbox.checkboxCount++;
537 }
538 /**
539 * Reflects whether the checkbox state is indeterminate.
540 * @return {?}
541 */
542 get indeterminate() {
543 return this._indeterminate;
544 }
545 /**
546 * Set the checkbox's indeterminate state to match the parameter and transition the view to reflect the change.
547 * @param {?} indeterminate
548 * @return {?}
549 */
550 set indeterminate(indeterminate) {
551 /** @type {?} */
552 const changed = this._indeterminate !== indeterminate;
553 this._indeterminate = indeterminate;
554 if (changed) {
555 this.transitionCheckboxState(CheckboxState.Indeterminate);
556 }
557 else {
558 this.transitionCheckboxState(this.checked ? CheckboxState.Checked : CheckboxState.Unchecked);
559 }
560 this.indeterminateChange.emit(this._indeterminate);
561 }
562 /**
563 * Returns value `true` if state is selected for the checkbox.
564 * @return {?}
565 */
566 get checked() {
567 return this._checked;
568 }
569 /**
570 * Updating the state of a checkbox to match the state of the parameter passed in.
571 * @param {?} checked
572 * @return {?}
573 */
574 set checked(checked) {
575 if (checked !== this.checked) {
576 if (this._indeterminate) {
577 Promise.resolve().then((/**
578 * @return {?}
579 */
580 () => {
581 this._indeterminate = false;
582 this.indeterminateChange.emit(this._indeterminate);
583 }));
584 }
585 this._checked = checked;
586 this.changeDetectorRef.markForCheck();
587 }
588 }
589 /**
590 * @return {?}
591 */
592 get checkboxWrapperClass() {
593 return !this.inline;
594 }
595 /**
596 * @return {?}
597 */
598 get formItemClass() {
599 return !this.inline;
600 }
601 /**
602 * Toggle the selected state of the checkbox.
603 * @return {?}
604 */
605 toggle() {
606 this.checked = !this.checked;
607 }
608 // this is the initial value set to the component
609 /**
610 * @param {?} value
611 * @return {?}
612 */
613 writeValue(value) {
614 this.checked = !!value;
615 }
616 /**
617 * Sets a method in order to propagate changes back to the form.
618 * @param {?} fn
619 * @return {?}
620 */
621 registerOnChange(fn) {
622 this.propagateChange = fn;
623 }
624 /**
625 * Registers a callback to be triggered when the control has been touched.
626 * @param {?} fn Callback to be triggered when the checkbox is touched.
627 * @return {?}
628 */
629 registerOnTouched(fn) {
630 this.onTouched = fn;
631 }
632 /**
633 * Executes on the event of a change within `Checkbox` to block propagation.
634 * @param {?} event
635 * @return {?}
636 */
637 onChange(event) {
638 event.stopPropagation();
639 }
640 /**
641 * Handles click events on the `Checkbox` and emits changes to other classes.
642 * @param {?} event
643 * @return {?}
644 */
645 onClick(event) {
646 if (!this.disabled) {
647 this.toggle();
648 this.transitionCheckboxState(this._checked ? CheckboxState.Checked : CheckboxState.Unchecked);
649 this.emitChangeEvent();
650 }
651 }
652 /**
653 * Handles changes between checkbox states.
654 * @param {?} newState
655 * @return {?}
656 */
657 transitionCheckboxState(newState) {
658 /** @type {?} */
659 const oldState = this.currentCheckboxState;
660 // Indeterminate has to be set always if it's transitioned to
661 // checked has to be set before indeterminate or it overrides
662 // indeterminate's dash
663 if (newState === CheckboxState.Indeterminate) {
664 this.checked = false;
665 this.inputCheckbox.nativeElement.indeterminate = true;
666 }
667 if (oldState === newState) {
668 return;
669 }
670 this.currentCheckboxState = newState;
671 }
672 /**
673 * Creates instance of `CheckboxChange` used to propagate the change event.
674 * @return {?}
675 */
676 emitChangeEvent() {
677 /** @type {?} */
678 const event = new CheckboxChange();
679 event.source = this;
680 event.checked = this.checked;
681 this.propagateChange(this.checked);
682 this.change.emit(event);
683 }
684 /**
685 * Updates the checkbox if it is in the indeterminate state.
686 * @return {?}
687 */
688 ngAfterViewInit() {
689 if (this.indeterminate) {
690 this.inputCheckbox.nativeElement.indeterminate = true;
691 this.checked = false;
692 }
693 }
694}
695/**
696 * Variable used for creating unique ids for checkbox components.
697 */
698Checkbox.checkboxCount = 0;
699Checkbox.decorators = [
700 { type: Component, args: [{
701 selector: 'suka-checkbox',
702 template: `
703 <input
704 #inputCheckbox
705 class="checkbox"
706 type="checkbox"
707 [id]="id"
708 [value]="value"
709 [name]="name"
710 [required]="required"
711 [checked]="checked"
712 [disabled]="disabled"
713 [indeterminate]="indeterminate"
714 [attr.aria-label]="ariaLabel"
715 [attr.aria-labelledby]="ariaLabelledby"
716 [attr.aria-checked]="(indeterminate ? 'mixed' : checked)"
717 (change)="onChange($event)"
718 (click)="onClick($event)">
719 <label
720 [for]="id"
721 class="checkbox-label"
722 [ngClass]="{
723 'skeleton' : skeleton
724 }">
725 <span [ngClass]="{'visually-hidden' : hideLabel}">
726 <ng-content></ng-content>
727 </span>
728 </label>
729 `,
730 providers: [
731 {
732 provide: NG_VALUE_ACCESSOR,
733 useExisting: Checkbox,
734 multi: true
735 }
736 ],
737 changeDetection: ChangeDetectionStrategy.OnPush
738 }] }
739];
740/** @nocollapse */
741Checkbox.ctorParameters = () => [
742 { type: ChangeDetectorRef }
743];
744Checkbox.propDecorators = {
745 size: [{ type: Input }],
746 nested: [{ type: Input }],
747 inline: [{ type: Input }],
748 disabled: [{ type: Input }],
749 skeleton: [{ type: Input }],
750 hideLabel: [{ type: Input }],
751 name: [{ type: Input }],
752 id: [{ type: Input }],
753 required: [{ type: Input }],
754 value: [{ type: Input }],
755 ariaLabel: [{ type: Input, args: ['aria-label',] }],
756 ariaLabelledby: [{ type: Input, args: ['aria-labelledby',] }],
757 indeterminate: [{ type: Input }],
758 checked: [{ type: Input }],
759 checkboxWrapperClass: [{ type: HostBinding, args: ['class.checkbox-wrapper',] }],
760 formItemClass: [{ type: HostBinding, args: ['class.form-item',] }],
761 change: [{ type: Output }],
762 indeterminateChange: [{ type: Output }],
763 inputCheckbox: [{ type: ViewChild, args: ['inputCheckbox', { static: true },] }]
764};
765if (false) {
766 /**
767 * Variable used for creating unique ids for checkbox components.
768 * @type {?}
769 */
770 Checkbox.checkboxCount;
771 /**
772 * Size of the checkbox.
773 * @type {?}
774 */
775 Checkbox.prototype.size;
776 /**
777 * Set to `true` for checkbox to be rendered with nested styles.
778 * @type {?}
779 */
780 Checkbox.prototype.nested;
781 /**
782 * Set to `true` for checkbox to be rendered without any classes on the host element.
783 * @type {?}
784 */
785 Checkbox.prototype.inline;
786 /**
787 * Set to `true` for a disabled checkbox.
788 * @type {?}
789 */
790 Checkbox.prototype.disabled;
791 /**
792 * Set to `true` for a loading checkbox.
793 * @type {?}
794 */
795 Checkbox.prototype.skeleton;
796 /**
797 * Set to `true` to hide the checkbox labels.
798 * @type {?}
799 */
800 Checkbox.prototype.hideLabel;
801 /**
802 * Sets the name attribute on the `input` element.
803 * @type {?}
804 */
805 Checkbox.prototype.name;
806 /**
807 * The unique id for the checkbox component.
808 * @type {?}
809 */
810 Checkbox.prototype.id;
811 /**
812 * Reflects the required attribute of the `input` element.
813 * @type {?}
814 */
815 Checkbox.prototype.required;
816 /**
817 * Sets the value attribute on the `input` element.
818 * @type {?}
819 */
820 Checkbox.prototype.value;
821 /**
822 * Used to set the `aria-label` attribute on the input element.
823 * @type {?}
824 */
825 Checkbox.prototype.ariaLabel;
826 /**
827 * Used to set the `aria-labelledby` attribute on the input element.
828 * @type {?}
829 */
830 Checkbox.prototype.ariaLabelledby;
831 /**
832 * Emits event notifying other classes when a change in state occurs on a checkbox after a
833 * click.
834 * @type {?}
835 */
836 Checkbox.prototype.change;
837 /**
838 * Emits event notifying other classes when a change in state occurs specifically
839 * on an indeterminate checkbox.
840 * @type {?}
841 */
842 Checkbox.prototype.indeterminateChange;
843 /**
844 * Set to `true` if the input checkbox is selected (or checked).
845 * @type {?}
846 */
847 Checkbox.prototype._checked;
848 /**
849 * Set to `true` if the input checkbox is in state indeterminate.
850 * @type {?}
851 */
852 Checkbox.prototype._indeterminate;
853 /** @type {?} */
854 Checkbox.prototype.currentCheckboxState;
855 /**
856 * Maintains a reference to the view DOM element of the `Checkbox`.
857 * @type {?}
858 */
859 Checkbox.prototype.inputCheckbox;
860 /**
861 * Called when checkbox is blurred. Needed to properly implement `ControlValueAccessor`.
862 * @type {?}
863 */
864 Checkbox.prototype.onTouched;
865 /**
866 * Method set in `registerOnChange` to propagate changes back to the form.
867 * @type {?}
868 */
869 Checkbox.prototype.propagateChange;
870 /**
871 * @type {?}
872 * @protected
873 */
874 Checkbox.prototype.changeDetectorRef;
875}
876
877/**
878 * @fileoverview added by tsickle
879 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
880 */
881class CheckboxModule {
882}
883CheckboxModule.decorators = [
884 { type: NgModule, args: [{
885 declarations: [
886 Checkbox
887 ],
888 exports: [
889 Checkbox
890 ],
891 imports: [
892 CommonModule,
893 FormsModule
894 ]
895 },] }
896];
897
898/**
899 * @fileoverview added by tsickle
900 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
901 */
902// tslint:disable: max-line-length
903/**
904 * @record
905 */
906function IconDef() { }
907if (false) {
908 /** @type {?} */
909 IconDef.prototype.name;
910 /** @type {?} */
911 IconDef.prototype.template;
912}
913/** @type {?} */
914const iconDefs = [
915 {
916 name: 'activity',
917 template: `
918 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
919 <title>activity</title>
920 <path d="M14.667 7.333h-2.667c-0.293 0-0.541 0.189-0.633 0.456l-1.367 4.103-3.367-10.103c-0.117-0.349-0.494-0.538-0.843-0.422-0.207 0.069-0.357 0.229-0.422 0.422l-1.848 5.544h-2.186c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h2.667c0.282-0.002 0.54-0.178 0.633-0.456l1.367-4.103 3.367 10.103c0.065 0.193 0.215 0.353 0.421 0.421 0.349 0.117 0.727-0.073 0.843-0.421l1.849-5.544h2.186c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
921 </svg>
922 `
923 },
924 {
925 name: 'airplay',
926 template: `
927 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
928 <title>airplay</title>
929 <path d="M3.333 10.667h-0.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-6.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h10.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v6.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-0.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h0.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-6.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-10.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v6.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h0.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM8.512 9.573c-0.023-0.029-0.053-0.058-0.085-0.085-0.283-0.236-0.703-0.197-0.939 0.085l-3.333 4c-0.096 0.115-0.155 0.264-0.155 0.427 0 0.368 0.299 0.667 0.667 0.667h6.667c0.15 0.001 0.302-0.050 0.427-0.155 0.283-0.236 0.321-0.656 0.085-0.939zM8 11.041l1.91 2.292h-3.82z"></path>
930 </svg>
931 `
932 },
933 {
934 name: 'alert-circle',
935 template: `
936 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
937 <title>alert-circle</title>
938 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM7.333 5.333v2.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM8.667 10.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
939 </svg>
940 `
941 },
942 {
943 name: 'alert-octagon',
944 template: `
945 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
946 <title>alert-octagon</title>
947 <path d="M5.24 0.667c-0.171 0-0.341 0.065-0.471 0.195l-3.907 3.907c-0.121 0.121-0.195 0.287-0.195 0.471v5.52c0 0.171 0.065 0.341 0.195 0.471l3.907 3.907c0.121 0.121 0.287 0.195 0.471 0.195h5.52c0.171 0 0.341-0.065 0.471-0.195l3.907-3.907c0.121-0.121 0.195-0.287 0.195-0.471v-5.52c0-0.171-0.065-0.341-0.195-0.471l-3.907-3.907c-0.121-0.121-0.287-0.195-0.471-0.195zM5.516 2h4.968l3.516 3.516v4.968l-3.516 3.516h-4.968l-3.516-3.516v-4.968zM7.333 5.333v2.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM8.667 10.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
948 </svg>
949 `
950 },
951 {
952 name: 'alert-triangle',
953 template: `
954 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
955 <title>alert-triangle</title>
956 <path d="M7.432 2.916c0.049-0.082 0.123-0.161 0.223-0.221 0.157-0.095 0.337-0.119 0.504-0.077s0.316 0.144 0.409 0.299l5.644 9.422c0.051 0.087 0.085 0.199 0.087 0.321 0.002 0.184-0.070 0.351-0.19 0.473s-0.285 0.199-0.462 0.201h-11.291c-0.101-0.001-0.214-0.027-0.321-0.089-0.159-0.092-0.266-0.239-0.311-0.405s-0.025-0.346 0.061-0.497zM6.288 2.231l-5.647 9.427c-0.281 0.487-0.337 1.033-0.205 1.527s0.453 0.939 0.932 1.215c0.309 0.179 0.651 0.267 0.983 0.268h11.295c0.559-0.006 1.058-0.236 1.415-0.601s0.576-0.869 0.57-1.421c-0.004-0.357-0.102-0.696-0.271-0.983l-5.649-9.431c-0.288-0.475-0.74-0.787-1.236-0.909s-1.041-0.054-1.513 0.233c-0.286 0.173-0.517 0.41-0.675 0.676zM7.333 6v2.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM8.667 11.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
957 </svg>
958 `
959 },
960 {
961 name: 'align-center',
962 template: `
963 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
964 <title>align-center</title>
965 <path d="M12 6h-8c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h8c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM14 3.333h-12c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h12c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM14 8.667h-12c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h12c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM12 11.333h-8c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h8c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
966 </svg>
967 `
968 },
969 {
970 name: 'align-justify',
971 template: `
972 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
973 <title>align-justify</title>
974 <path d="M14 6h-12c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h12c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM14 3.333h-12c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h12c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM14 8.667h-12c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h12c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM14 11.333h-12c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h12c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
975 </svg>
976 `
977 },
978 {
979 name: 'align-left',
980 template: `
981 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
982 <title>align-left</title>
983 <path d="M11.333 6h-9.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h9.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM14 3.333h-12c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h12c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM14 8.667h-12c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h12c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM11.333 11.333h-9.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h9.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
984 </svg>
985 `
986 },
987 {
988 name: 'align-right',
989 template: `
990 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
991 <title>align-right</title>
992 <path d="M14 6h-9.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h9.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM14 3.333h-12c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h12c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM14 8.667h-12c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h12c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM14 11.333h-9.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h9.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
993 </svg>
994 `
995 },
996 {
997 name: 'anchor',
998 template: `
999 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1000 <title>anchor</title>
1001 <path d="M9.333 3.333c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943zM3.333 7.333h-2c-0.368 0-0.667 0.299-0.667 0.667 0 2.025 0.821 3.859 2.148 5.185s3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185c0-0.368-0.299-0.667-0.667-0.667h-2c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h1.297c-0.153 1.391-0.782 2.637-1.721 3.576s-2.185 1.567-3.576 1.721v-8.047c0.469-0.121 0.888-0.366 1.219-0.697 0.482-0.482 0.781-1.15 0.781-1.886s-0.299-1.404-0.781-1.885-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885c0.331 0.331 0.75 0.577 1.219 0.697v8.047c-1.391-0.153-2.637-0.782-3.576-1.721s-1.567-2.185-1.721-3.576h1.297c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
1002 </svg>
1003 `
1004 },
1005 {
1006 name: 'aperture',
1007 template: `
1008 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1009 <title>aperture</title>
1010 <path d="M7.615 4.667l1.482-2.567c1.217 0.225 2.305 0.817 3.146 1.657 0.277 0.277 0.528 0.582 0.747 0.909h-3.463zM4.92 6.667l-1.481-2.565c0.102-0.119 0.208-0.234 0.319-0.345 1-1 2.35-1.648 3.85-1.745l-1.728 2.993zM5.305 10h-2.964c-0.221-0.625-0.341-1.299-0.341-2 0-0.953 0.222-1.854 0.617-2.655l1.733 3.003zM11.649 7.652l-0.954-1.652h2.964c0.221 0.625 0.341 1.299 0.341 2 0 0.953-0.222 1.854-0.617 2.655l-1.717-2.975zM8.392 13.987l2.688-4.654 1.481 2.565c-0.102 0.119-0.208 0.234-0.319 0.344-1 1-2.35 1.648-3.85 1.745zM7.133 15.283c0.031 0.005 0.061 0.009 0.093 0.010 0.254 0.027 0.513 0.041 0.774 0.041 2.025 0 3.859-0.821 5.185-2.148 0.244-0.244 0.471-0.505 0.678-0.781 0.028-0.031 0.053-0.065 0.073-0.099 0.879-1.209 1.397-2.697 1.397-4.305 0-1.026-0.211-2.003-0.592-2.891-0.011-0.029-0.023-0.057-0.037-0.084-0.369-0.829-0.887-1.578-1.519-2.211-1.134-1.134-2.64-1.899-4.319-2.097-0.031-0.005-0.061-0.009-0.093-0.010-0.254-0.027-0.513-0.041-0.774-0.041-2.025 0-3.859 0.821-5.185 2.148-0.244 0.243-0.471 0.505-0.678 0.781-0.028 0.031-0.053 0.065-0.074 0.099-0.878 1.209-1.396 2.697-1.396 4.305 0 1.026 0.211 2.003 0.592 2.891 0.011 0.029 0.023 0.057 0.037 0.084 0.369 0.829 0.887 1.578 1.519 2.211 1.134 1.134 2.64 1.899 4.319 2.097zM8.385 11.333l-1.482 2.567c-1.217-0.225-2.305-0.817-3.146-1.657-0.277-0.277-0.528-0.582-0.747-0.909h3.463zM10.31 8l-1.155 2h-2.311l-1.155-2 1.155-2h2.311z"></path>
1011 </svg>
1012 `
1013 },
1014 {
1015 name: 'archive',
1016 template: `
1017 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1018 <title>archive</title>
1019 <path d="M2.667 6h10.667v7.333h-10.667zM0.667 1.333c-0.368 0-0.667 0.299-0.667 0.667v3.333c0 0.368 0.299 0.667 0.667 0.667h0.667v8c0 0.368 0.299 0.667 0.667 0.667h12c0.368 0 0.667-0.299 0.667-0.667v-8h0.667c0.368 0 0.667-0.299 0.667-0.667v-3.333c0-0.368-0.299-0.667-0.667-0.667zM1.333 2.667h13.333v2h-13.333zM6.667 8.667h2.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
1020 </svg>
1021 `
1022 },
1023 {
1024 name: 'arrow-down-circle',
1025 template: `
1026 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1027 <title>arrow-down-circle</title>
1028 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM7.333 5.333v3.724l-1.529-1.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l2.667 2.667c0.064 0.064 0.137 0.112 0.216 0.145s0.165 0.051 0.255 0.051 0.177-0.018 0.255-0.051c0.079-0.033 0.152-0.081 0.216-0.145l2.667-2.667c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-1.529 1.529v-3.724c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667z"></path>
1029 </svg>
1030 `
1031 },
1032 {
1033 name: 'arrow-down-left',
1034 template: `
1035 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1036 <title>arrow-down-left</title>
1037 <path d="M11.333 10.667h-5.057l5.529-5.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-5.529 5.529v-5.057c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v6.667c0 0.091 0.018 0.177 0.051 0.255s0.081 0.152 0.144 0.215c0.001 0.001 0.001 0.001 0.001 0.001 0.061 0.061 0.135 0.111 0.215 0.144 0.079 0.033 0.165 0.051 0.255 0.051h6.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
1038 </svg>
1039 `
1040 },
1041 {
1042 name: 'arrow-down-right',
1043 template: `
1044 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1045 <title>arrow-down-right</title>
1046 <path d="M10.667 4.667v5.057l-5.529-5.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l5.529 5.529h-5.057c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h6.667c0.091 0 0.177-0.018 0.255-0.051s0.152-0.081 0.216-0.145c0.061-0.061 0.111-0.135 0.145-0.216 0.033-0.079 0.051-0.165 0.051-0.255v-6.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667z"></path>
1047 </svg>
1048 `
1049 },
1050 {
1051 name: 'arrow-down',
1052 template: `
1053 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1054 <title>arrow-down</title>
1055 <path d="M12.195 7.529l-3.529 3.529v-7.724c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v7.724l-3.529-3.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l4.667 4.667c0.064 0.064 0.137 0.112 0.216 0.145s0.165 0.051 0.255 0.051c0.087 0 0.174-0.017 0.255-0.051 0.079-0.033 0.152-0.081 0.216-0.145l4.667-4.667c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0z"></path>
1056 </svg>
1057 `
1058 },
1059 {
1060 name: 'arrow-left-circle',
1061 template: `
1062 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1063 <title>arrow-left-circle</title>
1064 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM10.667 7.333h-3.724l1.529-1.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-2.667 2.667c-0.064 0.064-0.112 0.137-0.145 0.216s-0.051 0.165-0.051 0.255c0 0.087 0.017 0.174 0.051 0.255 0.033 0.079 0.081 0.152 0.145 0.216l2.667 2.667c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-1.529-1.529h3.724c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
1065 </svg>
1066 `
1067 },
1068 {
1069 name: 'arrow-left',
1070 template: `
1071 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1072 <title>arrow-left</title>
1073 <path d="M8.471 12.195l-3.529-3.529h7.724c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-7.724l3.529-3.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-4.667 4.667c-0.064 0.064-0.112 0.137-0.145 0.216-0.034 0.081-0.051 0.169-0.051 0.255 0 0.171 0.065 0.341 0.195 0.471l4.667 4.667c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943z"></path>
1074 </svg>
1075 `
1076 },
1077 {
1078 name: 'arrow-right-circle',
1079 template: `
1080 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1081 <title>arrow-right-circle</title>
1082 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM5.333 8.667h3.724l-1.529 1.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l2.667-2.667c0.061-0.061 0.111-0.135 0.145-0.216 0.067-0.163 0.067-0.347 0-0.511-0.033-0.079-0.081-0.152-0.145-0.216l-2.667-2.667c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l1.529 1.529h-3.724c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
1083 </svg>
1084 `
1085 },
1086 {
1087 name: 'arrow-right',
1088 template: `
1089 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1090 <title>arrow-right</title>
1091 <path d="M7.529 3.805l3.529 3.529h-7.724c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h7.724l-3.529 3.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l4.667-4.667c0.061-0.061 0.111-0.135 0.145-0.216 0.067-0.163 0.067-0.347 0-0.511-0.033-0.079-0.081-0.152-0.145-0.216l-4.667-4.667c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
1092 </svg>
1093 `
1094 },
1095 {
1096 name: 'arrow-up-circle',
1097 template: `
1098 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1099 <title>arrow-up-circle</title>
1100 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM8.667 10.667v-3.724l1.529 1.529c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-2.667-2.667c-0.064-0.064-0.137-0.112-0.216-0.145s-0.165-0.051-0.255-0.051c-0.087 0-0.174 0.017-0.255 0.051-0.079 0.033-0.152 0.081-0.216 0.145l-2.667 2.667c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l1.529-1.529v3.724c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667z"></path>
1101 </svg>
1102 `
1103 },
1104 {
1105 name: 'arrow-up-left',
1106 template: `
1107 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1108 <title>arrow-up-left</title>
1109 <path d="M5.333 11.333v-5.057l5.529 5.529c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-5.529-5.529h5.057c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-6.667c-0.091 0-0.177 0.018-0.255 0.051s-0.151 0.081-0.215 0.144c-0.001 0.001-0.001 0.001-0.001 0.001-0.061 0.061-0.111 0.134-0.144 0.215-0.033 0.079-0.051 0.165-0.051 0.255v6.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667z"></path>
1110 </svg>
1111 `
1112 },
1113 {
1114 name: 'arrow-up-right',
1115 template: `
1116 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1117 <title>arrow-up-right</title>
1118 <path d="M4.667 5.333h5.057l-5.529 5.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l5.529-5.529v5.057c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-6.667c0-0.091-0.018-0.177-0.051-0.255s-0.081-0.152-0.144-0.215c-0.001-0.001-0.001-0.001-0.001-0.001-0.061-0.061-0.135-0.111-0.215-0.144-0.079-0.033-0.165-0.051-0.255-0.051h-6.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
1119 </svg>
1120 `
1121 },
1122 {
1123 name: 'arrow-up',
1124 template: `
1125 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1126 <title>arrow-up</title>
1127 <path d="M3.805 8.471l3.529-3.529v7.724c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-7.724l3.529 3.529c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-4.667-4.667c-0.064-0.064-0.137-0.112-0.216-0.145-0.081-0.034-0.169-0.051-0.255-0.051-0.171 0-0.341 0.065-0.471 0.195l-4.667 4.667c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0z"></path>
1128 </svg>
1129 `
1130 },
1131 {
1132 name: 'at-sign',
1133 template: `
1134 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1135 <title>at-sign</title>
1136 <path d="M10 8c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586-1.051-0.223-1.414-0.586-0.586-0.861-0.586-1.414 0.223-1.051 0.586-1.414 0.861-0.586 1.414-0.586 1.051 0.223 1.414 0.586 0.586 0.861 0.586 1.414zM10.493 10.212c0.087 0.121 0.183 0.235 0.287 0.34 0.482 0.482 1.15 0.781 1.886 0.781s1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885v-0.667c0-2.025-0.822-3.859-2.148-5.185s-3.161-2.148-5.186-2.147-3.859 0.821-5.185 2.148-2.147 3.161-2.147 5.185 0.822 3.859 2.148 5.185 3.161 2.148 5.185 2.147c1.683 0 3.237-0.568 4.46-1.513 0.291-0.225 0.345-0.643 0.121-0.935s-0.643-0.345-0.935-0.121c-0.997 0.769-2.265 1.235-3.645 1.235-1.657 0-3.156-0.671-4.243-1.757s-1.757-2.584-1.757-4.241 0.671-3.156 1.757-4.243 2.585-1.757 4.242-1.757 3.156 0.671 4.243 1.757 1.758 2.585 1.758 4.242v0.667c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943v-3.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667c-0.557-0.418-1.25-0.667-2-0.667-0.92 0-1.755 0.374-2.357 0.976s-0.976 1.437-0.976 2.357 0.374 1.755 0.976 2.357 1.437 0.976 2.357 0.976 1.755-0.374 2.357-0.976c0.047-0.047 0.093-0.095 0.137-0.145z"></path>
1137 </svg>
1138 `
1139 },
1140 {
1141 name: 'award',
1142 template: `
1143 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1144 <title>award</title>
1145 <path d="M9.991 10.283l0.5 3.768-2.147-1.289c-0.207-0.123-0.469-0.131-0.686 0l-2.147 1.289 0.501-3.767c0.614 0.247 1.286 0.383 1.989 0.383s1.375-0.137 1.991-0.384zM10.221 8.661c-0.039 0.020-0.075 0.043-0.109 0.070-0.613 0.382-1.337 0.603-2.113 0.603-1.105 0-2.104-0.447-2.829-1.171s-1.171-1.724-1.171-2.829 0.447-2.104 1.171-2.829 1.724-1.171 2.829-1.171 2.104 0.447 2.829 1.171 1.171 1.724 1.171 2.829-0.447 2.104-1.171 2.829c-0.185 0.185-0.389 0.353-0.607 0.499zM4.76 9.57l-0.754 5.675c-0.049 0.365 0.208 0.7 0.573 0.749 0.156 0.021 0.307-0.015 0.431-0.089l2.99-1.794 2.991 1.794c0.316 0.189 0.725 0.087 0.915-0.229 0.081-0.135 0.109-0.287 0.089-0.431l-0.753-5.677c0.187-0.143 0.364-0.299 0.53-0.465 0.964-0.964 1.562-2.298 1.562-3.771s-0.598-2.807-1.562-3.771-2.299-1.562-3.771-1.562-2.807 0.598-3.771 1.562-1.562 2.299-1.562 3.771 0.598 2.807 1.562 3.771c0.167 0.167 0.344 0.322 0.531 0.465z"></path>
1146 </svg>
1147 `
1148 },
1149 {
1150 name: 'bar-chart-2',
1151 template: `
1152 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1153 <title>bar-chart-2</title>
1154 <path d="M12.667 13.333v-6.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v6.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM8.667 13.333v-10.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v10.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM4.667 13.333v-4c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v4c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667z"></path>
1155 </svg>
1156 `
1157 },
1158 {
1159 name: 'bar-chart',
1160 template: `
1161 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1162 <title>bar-chart</title>
1163 <path d="M8.667 13.333v-6.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v6.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM12.667 13.333v-10.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v10.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM4.667 13.333v-2.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v2.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667z"></path>
1164 </svg>
1165 `
1166 },
1167 {
1168 name: 'battery-charging',
1169 template: `
1170 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1171 <title>battery-charging</title>
1172 <path d="M3.333 11.333h-1.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-5.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h2.127c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2.127c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v5.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM10 4.667h1.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v5.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-2.127c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h2.127c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-5.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM16 8.667v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM6.779 3.63l-2.667 4c-0.204 0.307-0.121 0.72 0.185 0.925 0.115 0.077 0.245 0.113 0.37 0.112h2.754l-1.976 2.963c-0.204 0.307-0.121 0.72 0.185 0.925s0.72 0.121 0.925-0.185l2.667-4c0.071-0.104 0.113-0.232 0.113-0.37 0-0.368-0.299-0.667-0.667-0.667h-2.754l1.976-2.963c0.204-0.307 0.121-0.72-0.185-0.925s-0.72-0.121-0.925 0.185z"></path>
1173 </svg>
1174 `
1175 },
1176 {
1177 name: 'battery',
1178 template: `
1179 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1180 <title>battery</title>
1181 <path d="M2 3.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v5.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-5.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM2 4.667h9.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v5.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-9.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-5.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM16 8.667v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667z"></path>
1182 </svg>
1183 `
1184 },
1185 {
1186 name: 'bell-off',
1187 template: `
1188 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1189 <title>bell-off</title>
1190 <path d="M8.577 13.665c-0.093 0.159-0.239 0.266-0.405 0.31s-0.347 0.025-0.506-0.067c-0.108-0.063-0.189-0.148-0.239-0.238-0.183-0.32-0.589-0.431-0.909-0.249s-0.431 0.589-0.249 0.909c0.167 0.293 0.415 0.549 0.729 0.731 0.477 0.277 1.023 0.334 1.517 0.203s0.939-0.452 1.216-0.929c0.185-0.319 0.076-0.727-0.242-0.911s-0.727-0.076-0.911 0.242zM12.667 5.331c0.001-1.287-0.52-2.455-1.362-3.299-0.843-0.845-2.009-1.37-3.298-1.372-0.965-0.001-1.866 0.291-2.6 0.787-0.305 0.206-0.385 0.621-0.179 0.926s0.621 0.385 0.926 0.179c0.517-0.349 1.158-0.559 1.852-0.559 0.921 0.001 1.753 0.375 2.355 0.98 0.601 0.603 0.972 1.433 0.973 2.351-0.028 1.105 0.115 2.317 0.443 3.518 0.097 0.355 0.463 0.565 0.819 0.467s0.565-0.463 0.467-0.819c-0.295-1.083-0.421-2.166-0.396-3.138 0-0.003 0-0.007 0-0.011s0-0.005 0-0.008c0-0.001 0-0.002 0-0.003zM4.664 5.607l5.060 5.059h-6.291c0.581-0.952 1.189-2.541 1.231-5.059zM0.195 1.138l3.237 3.237c-0.071 0.329-0.103 0.656-0.099 0.967 0 4.076-1.595 5.356-1.709 5.441-0.302 0.205-0.382 0.616-0.179 0.921 0.128 0.191 0.337 0.295 0.555 0.297h9.057l3.805 3.805c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-14.667-14.667c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
1191 </svg>
1192 `
1193 },
1194 {
1195 name: 'bell',
1196 template: `
1197 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1198 <title>bell</title>
1199 <path d="M11.333 5.333c0 2.674 0.631 4.347 1.234 5.333h-9.135c0.603-0.987 1.234-2.659 1.234-5.333 0-0.921 0.373-1.753 0.976-2.357s1.437-0.976 2.357-0.976 1.753 0.373 2.357 0.976 0.976 1.437 0.976 2.357zM12.667 5.333c0-1.289-0.523-2.456-1.367-3.3s-2.011-1.367-3.3-1.367-2.456 0.523-3.3 1.367-1.367 2.011-1.367 3.3c0 4.085-1.595 5.365-1.709 5.449-0.302 0.205-0.382 0.616-0.179 0.921 0.128 0.191 0.337 0.295 0.555 0.297h12c0.368 0 0.667-0.299 0.667-0.667 0-0.226-0.112-0.425-0.286-0.547-0.117-0.087-1.714-1.367-1.714-5.453zM8.577 13.665c-0.093 0.159-0.239 0.266-0.405 0.31s-0.347 0.025-0.506-0.067c-0.108-0.063-0.189-0.148-0.239-0.238-0.183-0.32-0.589-0.431-0.909-0.249s-0.431 0.589-0.249 0.909c0.167 0.293 0.415 0.549 0.729 0.731 0.477 0.277 1.023 0.334 1.517 0.203s0.939-0.452 1.216-0.929c0.185-0.319 0.076-0.727-0.242-0.911s-0.727-0.076-0.911 0.242z"></path>
1200 </svg>
1201 `
1202 },
1203 {
1204 name: 'bluetooth',
1205 template: `
1206 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1207 <title>bluetooth</title>
1208 <path d="M8.667 6.391v-4.115l2.057 2.057zM8.667 9.609l2.057 2.057-2.057 2.057zM3.862 4.805l3.195 3.195-3.195 3.195c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l2.529-2.529v5.724c0 0.171 0.065 0.341 0.195 0.471 0.261 0.261 0.683 0.261 0.943 0l3.667-3.667c0.261-0.261 0.261-0.683 0-0.943l-3.195-3.195 3.195-3.195c0.261-0.261 0.261-0.683 0-0.943l-3.667-3.667c-0.121-0.121-0.287-0.195-0.471-0.195-0.368 0-0.667 0.299-0.667 0.667v5.724l-2.529-2.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
1209 </svg>
1210 `
1211 },
1212 {
1213 name: 'bold',
1214 template: `
1215 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1216 <title>bold</title>
1217 <path d="M4.667 7.333v-4h4.667c0.553 0 1.051 0.223 1.414 0.586s0.586 0.861 0.586 1.414-0.223 1.051-0.586 1.414-0.861 0.586-1.414 0.586zM3.333 8v5.333c0 0.368 0.299 0.667 0.667 0.667h6c0.92 0 1.755-0.374 2.357-0.976s0.976-1.437 0.976-2.357-0.374-1.755-0.976-2.357c-0.217-0.217-0.463-0.404-0.733-0.555 0.023-0.021 0.045-0.043 0.067-0.065 0.602-0.602 0.976-1.437 0.976-2.357s-0.374-1.755-0.976-2.357-1.437-0.976-2.357-0.976h-5.333c-0.368 0-0.667 0.299-0.667 0.667zM4.667 8.667h5.333c0.553 0 1.051 0.223 1.414 0.586s0.586 0.861 0.586 1.414-0.223 1.051-0.586 1.414-0.861 0.586-1.414 0.586h-5.333z"></path>
1218 </svg>
1219 `
1220 },
1221 {
1222 name: 'book-open',
1223 template: `
1224 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1225 <title>book-open</title>
1226 <path d="M14 2.667v8.667h-4c-0.485 0-0.941 0.13-1.333 0.357v-7.023c0-0.553 0.223-1.051 0.586-1.414s0.861-0.586 1.414-0.586zM7.333 11.69c-0.392-0.227-0.848-0.357-1.333-0.357h-4v-8.667h3.333c0.553 0 1.051 0.223 1.414 0.586s0.586 0.861 0.586 1.414zM14.667 1.333h-4c-0.92 0-1.755 0.374-2.357 0.976-0.111 0.111-0.215 0.231-0.309 0.357-0.095-0.127-0.198-0.246-0.309-0.357-0.603-0.602-1.437-0.976-2.357-0.976h-4c-0.368 0-0.667 0.299-0.667 0.667v10c0 0.368 0.299 0.667 0.667 0.667h4.667c0.369 0 0.701 0.149 0.943 0.391s0.391 0.574 0.391 0.943c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667c0-0.369 0.149-0.701 0.391-0.943s0.574-0.391 0.943-0.391h4.667c0.368 0 0.667-0.299 0.667-0.667v-10c0-0.368-0.299-0.667-0.667-0.667z"></path>
1227 </svg>
1228 `
1229 },
1230 {
1231 name: 'book',
1232 template: `
1233 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1234 <title>book</title>
1235 <path d="M4.333 0.667c-0.644 0-1.229 0.262-1.65 0.683s-0.683 1.006-0.683 1.65v10c0 0.644 0.262 1.229 0.683 1.65s1.006 0.683 1.65 0.683h9c0.368 0 0.667-0.299 0.667-0.667v-13.333c0-0.368-0.299-0.667-0.667-0.667zM12.667 12v2h-8.333c-0.276 0-0.525-0.111-0.707-0.293s-0.293-0.431-0.293-0.707 0.111-0.525 0.293-0.707 0.431-0.293 0.707-0.293zM4.333 2h8.333v8.667h-8.333c-0.358 0-0.697 0.081-1 0.225v-7.891c0-0.276 0.111-0.525 0.293-0.707s0.431-0.293 0.707-0.293z"></path>
1236 </svg>
1237 `
1238 },
1239 {
1240 name: 'bookmark',
1241 template: `
1242 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1243 <title>bookmark</title>
1244 <path d="M12.279 14.543c0.107 0.077 0.242 0.124 0.387 0.124 0.368 0 0.667-0.299 0.667-0.667v-10.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-6.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v10.667c-0.001 0.133 0.040 0.269 0.124 0.387 0.214 0.299 0.631 0.369 0.93 0.155l4.279-3.056zM12 12.705l-3.613-2.581c-0.237-0.169-0.546-0.161-0.775 0l-3.613 2.581v-9.371c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h6.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471z"></path>
1245 </svg>
1246 `
1247 },
1248 {
1249 name: 'box',
1250 template: `
1251 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1252 <title>box</title>
1253 <path d="M12.641 4.552l-4.641 2.685-4.641-2.685 4.304-2.459c0.075-0.043 0.155-0.070 0.237-0.083 0.145-0.023 0.297 0.002 0.436 0.083zM7.684 15.307c0.094 0.051 0.202 0.079 0.316 0.079 0.115 0 0.224-0.029 0.319-0.081 0.237-0.039 0.467-0.12 0.678-0.24l4.667-2.667c0.412-0.238 0.707-0.599 0.866-1.009 0.089-0.228 0.135-0.471 0.137-0.723v-5.333c0-0.319-0.075-0.621-0.209-0.889-0.015-0.047-0.035-0.093-0.061-0.138-0.031-0.053-0.067-0.099-0.108-0.14-0.021-0.029-0.043-0.057-0.065-0.085-0.153-0.191-0.341-0.352-0.554-0.477l-4.673-2.67c-0.407-0.235-0.867-0.31-1.302-0.243-0.243 0.038-0.477 0.119-0.692 0.242l-4.667 2.667c-0.255 0.147-0.466 0.342-0.627 0.567-0.040 0.040-0.076 0.087-0.106 0.138-0.026 0.045-0.047 0.092-0.061 0.14-0.027 0.054-0.051 0.109-0.072 0.164-0.088 0.229-0.134 0.472-0.136 0.719v5.338c0.001 0.473 0.165 0.909 0.443 1.252 0.153 0.191 0.341 0.352 0.554 0.477l4.673 2.67c0.216 0.125 0.447 0.205 0.681 0.241zM7.333 8.391v5.327l-4.33-2.474c-0.074-0.043-0.138-0.099-0.19-0.163-0.093-0.115-0.147-0.258-0.147-0.415v-4.975zM8.667 13.719v-5.327l4.667-2.699v4.975c-0.001 0.081-0.017 0.164-0.047 0.241-0.053 0.137-0.15 0.256-0.284 0.333z"></path>
1254 </svg>
1255 `
1256 },
1257 {
1258 name: 'briefcase',
1259 template: `
1260 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1261 <title>briefcase</title>
1262 <path d="M6 4v-0.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h2.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v0.667zM6 13.333v-8h4v8zM4.667 5.333v8h-2c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-6.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM11.333 4v-0.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-2.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v0.667h-2c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v6.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h10.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-6.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM11.333 13.333v-8h2c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v6.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195z"></path>
1263 </svg>
1264 `
1265 },
1266 {
1267 name: 'calendar',
1268 template: `
1269 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1270 <title>calendar</title>
1271 <path d="M4.667 1.333v0.667h-1.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-9.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-1.333v-0.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v0.667h-4v-0.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM13.333 6h-10.667v-2c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h1.333v0.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-0.667h4v0.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-0.667h1.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471zM2.667 7.333h10.667v6c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-9.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471z"></path>
1272 </svg>
1273 `
1274 },
1275 {
1276 name: 'camera-off',
1277 template: `
1278 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1279 <title>camera-off</title>
1280 <path d="M6 2.667h3.643l1.135 1.703c0.128 0.191 0.337 0.295 0.555 0.297h2.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v6.227c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-6.227c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-2.31l-1.135-1.703c-0.121-0.18-0.324-0.297-0.555-0.297h-4c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM5.508 6.451c-0.097 0.109-0.189 0.225-0.273 0.348-0.52 0.759-0.682 1.659-0.525 2.497s0.635 1.617 1.394 2.137 1.659 0.682 2.497 0.525c0.591-0.111 1.153-0.381 1.616-0.798l2.174 2.174h-10.391c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-7.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h1.724zM6.942 5.999l-5.804-5.803c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l2.195 2.195h-0.391c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v7.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h11.724l1.138 1.138c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-8.845-8.845zM9.271 10.214c-0.267 0.224-0.583 0.37-0.917 0.433-0.504 0.095-1.042-0.003-1.498-0.315s-0.742-0.778-0.837-1.282 0.003-1.042 0.315-1.498c0.037-0.055 0.077-0.107 0.117-0.155z"></path>
1281 </svg>
1282 `
1283 },
1284 {
1285 name: 'camera',
1286 template: `
1287 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1288 <title>camera</title>
1289 <path d="M16 12.667v-7.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-2.31l-1.135-1.703c-0.121-0.18-0.324-0.297-0.555-0.297h-4c-0.217 0.001-0.427 0.105-0.555 0.297l-1.135 1.703h-2.31c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v7.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h12c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414zM14.667 12.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-12c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-7.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h2.667c0.231 0 0.433-0.117 0.555-0.297l1.135-1.703h3.287l1.135 1.703c0.128 0.191 0.337 0.295 0.555 0.297h2.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471zM11.333 8.667c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976-1.755 0.374-2.357 0.976-0.976 1.437-0.976 2.357 0.374 1.755 0.976 2.357 1.437 0.976 2.357 0.976 1.755-0.374 2.357-0.976 0.976-1.437 0.976-2.357zM10 8.667c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586-1.051-0.223-1.414-0.586-0.586-0.861-0.586-1.414 0.223-1.051 0.586-1.414 0.861-0.586 1.414-0.586 1.051 0.223 1.414 0.586 0.586 0.861 0.586 1.414z"></path>
1290 </svg>
1291 `
1292 },
1293 {
1294 name: 'cast',
1295 template: `
1296 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1297 <title>cast</title>
1298 <path d="M1.2 11.387c0.625 0.127 1.153 0.463 1.528 0.924 0.27 0.331 0.462 0.729 0.553 1.16 0.076 0.36 0.429 0.591 0.79 0.515s0.591-0.429 0.515-0.79c-0.135-0.64-0.42-1.231-0.823-1.727-0.563-0.692-1.359-1.197-2.295-1.389-0.361-0.073-0.713 0.159-0.787 0.52s0.159 0.713 0.52 0.787zM1.259 8.696c1.334 0.149 2.496 0.775 3.337 1.697 0.746 0.817 1.239 1.866 1.374 3.017 0.043 0.366 0.374 0.627 0.739 0.585s0.627-0.374 0.585-0.739c-0.167-1.433-0.783-2.741-1.713-3.761-1.052-1.153-2.509-1.939-4.175-2.124-0.366-0.041-0.695 0.223-0.736 0.589s0.223 0.695 0.589 0.736zM2 5.333v-1.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h10.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v8c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-4c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h4c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-8c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-10.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM2 13.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
1299 </svg>
1300 `
1301 },
1302 {
1303 name: 'check-circle',
1304 template: `
1305 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1306 <title>check-circle</title>
1307 <path d="M14 7.387v0.613c-0.001 1.657-0.673 3.155-1.76 4.241s-2.587 1.756-4.243 1.755-3.156-0.673-4.241-1.76-1.756-2.586-1.755-4.243 0.673-3.155 1.76-4.241 2.587-1.756 4.243-1.755c0.887 0.001 1.724 0.193 2.433 0.517 0.335 0.153 0.731 0.005 0.883-0.329s0.005-0.731-0.329-0.883c-0.885-0.404-1.911-0.637-2.986-0.637-2.025-0.001-3.859 0.819-5.187 2.145s-2.149 3.16-2.151 5.185 0.819 3.859 2.145 5.187 3.159 2.15 5.184 2.151 3.859-0.819 5.187-2.145 2.15-3.159 2.151-5.185v-0.613c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM14.195 2.195l-6.195 6.201-1.529-1.528c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l2 2c0.261 0.261 0.683 0.26 0.943 0l6.667-6.673c0.26-0.261 0.26-0.683-0.001-0.943s-0.683-0.26-0.943 0.001z"></path>
1308 </svg>
1309 `
1310 },
1311 {
1312 name: 'check-square',
1313 template: `
1314 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1315 <title>check-square</title>
1316 <path d="M5.529 7.805l2 2c0.261 0.261 0.683 0.261 0.943 0l6.667-6.667c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-6.195 6.195-1.529-1.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943zM13.333 8v4.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-9.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h7.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-7.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-4.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667z"></path>
1317 </svg>
1318 `
1319 },
1320 {
1321 name: 'check',
1322 template: `
1323 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1324 <title>check</title>
1325 <path d="M12.862 3.529l-6.862 6.862-2.862-2.862c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l3.333 3.333c0.261 0.261 0.683 0.261 0.943 0l7.333-7.333c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0z"></path>
1326 </svg>
1327 `
1328 },
1329 {
1330 name: 'chevron-down',
1331 template: `
1332 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1333 <title>chevron-down</title>
1334 <path d="M3.529 6.471l4 4c0.261 0.261 0.683 0.261 0.943 0l4-4c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-3.529 3.529-3.529-3.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
1335 </svg>
1336 `
1337 },
1338 {
1339 name: 'chevron-left',
1340 template: `
1341 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1342 <title>chevron-left</title>
1343 <path d="M10.471 11.529l-3.529-3.529 3.529-3.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-4 4c-0.261 0.261-0.261 0.683 0 0.943l4 4c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943z"></path>
1344 </svg>
1345 `
1346 },
1347 {
1348 name: 'chevron-right',
1349 template: `
1350 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1351 <title>chevron-right</title>
1352 <path d="M6.471 12.471l4-4c0.261-0.261 0.261-0.683 0-0.943l-4-4c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l3.529 3.529-3.529 3.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0z"></path>
1353 </svg>
1354 `
1355 },
1356 {
1357 name: 'chevron-up',
1358 template: `
1359 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1360 <title>chevron-up</title>
1361 <path d="M12.471 9.529l-4-4c-0.261-0.261-0.683-0.261-0.943 0l-4 4c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l3.529-3.529 3.529 3.529c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943z"></path>
1362 </svg>
1363 `
1364 },
1365 {
1366 name: 'chevrons-down',
1367 template: `
1368 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1369 <title>chevrons-down</title>
1370 <path d="M4.195 9.138l3.333 3.333c0.261 0.261 0.683 0.261 0.943 0l3.333-3.333c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-2.862 2.862-2.862-2.862c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943zM4.195 4.471l3.333 3.333c0.261 0.261 0.683 0.261 0.943 0l3.333-3.333c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-2.862 2.862-2.862-2.862c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
1371 </svg>
1372 `
1373 },
1374 {
1375 name: 'chevrons-left',
1376 template: `
1377 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1378 <title>chevrons-left</title>
1379 <path d="M7.805 10.862l-2.862-2.862 2.862-2.862c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-3.333 3.333c-0.261 0.261-0.261 0.683 0 0.943l3.333 3.333c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943zM12.471 10.862l-2.862-2.862 2.862-2.862c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-3.333 3.333c-0.261 0.261-0.261 0.683 0 0.943l3.333 3.333c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943z"></path>
1380 </svg>
1381 `
1382 },
1383 {
1384 name: 'chevrons-right',
1385 template: `
1386 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1387 <title>chevrons-right</title>
1388 <path d="M9.138 11.805l3.333-3.333c0.261-0.261 0.261-0.683 0-0.943l-3.333-3.333c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l2.862 2.862-2.862 2.862c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0zM4.471 11.805l3.333-3.333c0.261-0.261 0.261-0.683 0-0.943l-3.333-3.333c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l2.862 2.862-2.862 2.862c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0z"></path>
1389 </svg>
1390 `
1391 },
1392 {
1393 name: 'chevrons-up',
1394 template: `
1395 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1396 <title>chevrons-up</title>
1397 <path d="M11.805 6.862l-3.333-3.333c-0.261-0.261-0.683-0.261-0.943 0l-3.333 3.333c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l2.862-2.862 2.862 2.862c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943zM11.805 11.529l-3.333-3.333c-0.261-0.261-0.683-0.261-0.943 0l-3.333 3.333c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l2.862-2.862 2.862 2.862c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943z"></path>
1398 </svg>
1399 `
1400 },
1401 {
1402 name: 'chrome',
1403 template: `
1404 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1405 <title>chrome</title>
1406 <path d="M4.935 6.689l-1.496-2.587c0.101-0.119 0.208-0.233 0.319-0.344 1.087-1.087 2.585-1.757 4.243-1.757s3.156 0.671 4.243 1.757c0.277 0.277 0.528 0.582 0.747 0.909h-4.99c-0.92 0-1.755 0.374-2.357 0.976-0.298 0.298-0.54 0.652-0.709 1.046zM7.133 15.283c0.031 0.005 0.061 0.009 0.093 0.010 0.254 0.027 0.513 0.041 0.774 0.041 2.025 0 3.859-0.821 5.185-2.148s2.148-3.161 2.148-5.185c0-1.026-0.211-2.003-0.592-2.891-0.011-0.029-0.023-0.057-0.037-0.084-0.369-0.829-0.887-1.578-1.519-2.211-1.326-1.327-3.161-2.148-5.185-2.148s-3.859 0.821-5.185 2.148c-0.244 0.243-0.471 0.505-0.678 0.781-0.028 0.031-0.053 0.065-0.074 0.099-0.878 1.209-1.396 2.697-1.396 4.305 0 2.025 0.821 3.859 2.148 5.185 1.134 1.134 2.64 1.899 4.319 2.097zM8.397 11.31l-1.494 2.59c-1.217-0.225-2.305-0.817-3.145-1.657-1.087-1.087-1.757-2.585-1.757-4.243 0-0.953 0.222-1.855 0.618-2.655l2.429 4.201c0.157 0.3 0.359 0.573 0.596 0.81 0.603 0.603 1.437 0.977 2.357 0.977 0.134 0 0.267-0.008 0.397-0.023zM9.759 8.954c-0.010 0.015-0.020 0.031-0.029 0.046l-0.051 0.088c-0.077 0.117-0.165 0.227-0.264 0.326-0.363 0.363-0.862 0.586-1.415 0.586s-1.051-0.223-1.414-0.586c-0.111-0.111-0.208-0.234-0.291-0.367-0.007-0.016-0.016-0.031-0.025-0.047l-0.055-0.094c-0.138-0.272-0.216-0.58-0.216-0.906 0-0.553 0.223-1.051 0.586-1.414s0.861-0.586 1.414-0.586 1.051 0.223 1.414 0.586 0.586 0.861 0.586 1.414c0 0.345-0.087 0.671-0.241 0.954zM8.392 13.987l2.427-4.207c0.326-0.515 0.515-1.125 0.515-1.78 0-0.75-0.249-1.443-0.667-2h2.992c0.221 0.625 0.341 1.299 0.341 2 0 1.657-0.671 3.156-1.757 4.243-1 1-2.35 1.648-3.851 1.745z"></path>
1407 </svg>
1408 `
1409 },
1410 {
1411 name: 'circle',
1412 template: `
1413 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1414 <title>circle</title>
1415 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243z"></path>
1416 </svg>
1417 `
1418 },
1419 {
1420 name: 'clipboard',
1421 template: `
1422 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1423 <title>clipboard</title>
1424 <path d="M4.667 3.333c0 0.368 0.15 0.702 0.391 0.943s0.575 0.391 0.943 0.391h4c0.368 0 0.702-0.15 0.943-0.391s0.391-0.575 0.391-0.943h0.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v9.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-8c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM6 0.667c-0.368 0-0.702 0.15-0.943 0.391s-0.391 0.575-0.391 0.943h-0.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h8c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-9.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-0.667c0-0.368-0.15-0.702-0.391-0.943s-0.575-0.391-0.943-0.391zM6 2h4v1.333h-4z"></path>
1425 </svg>
1426 `
1427 },
1428 {
1429 name: 'clock',
1430 template: `
1431 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1432 <title>clock</title>
1433 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM7.333 4v4c0 0.259 0.148 0.485 0.369 0.596l2.667 1.333c0.329 0.165 0.73 0.031 0.895-0.298s0.031-0.73-0.298-0.895l-2.299-1.149v-3.588c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667z"></path>
1434 </svg>
1435 `
1436 },
1437 {
1438 name: 'cloud-drizzle',
1439 template: `
1440 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1441 <title>cloud-drizzle</title>
1442 <path d="M4.667 12.667v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM4.667 8.667v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM10 12.667v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM10 8.667v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM7.333 14v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM7.333 10v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM13.601 11.664c1.011-0.443 1.749-1.255 2.121-2.208s0.381-2.049-0.061-3.061c-0.383-0.874-1.042-1.545-1.835-1.95-0.557-0.285-1.18-0.44-1.82-0.445h-0.352c-0.483-1.371-1.429-2.472-2.61-3.169-1.322-0.779-2.943-1.055-4.547-0.641s-2.889 1.441-3.669 2.763-1.055 2.943-0.641 4.547c0.339 1.313 1.089 2.415 2.066 3.189 0.289 0.229 0.708 0.18 0.937-0.109s0.18-0.708-0.109-0.937c-0.755-0.598-1.339-1.453-1.603-2.477-0.322-1.247-0.109-2.507 0.499-3.537s1.605-1.826 2.853-2.149 2.507-0.109 3.537 0.499 1.826 1.605 2.149 2.853c0.077 0.29 0.337 0.5 0.645 0.5h0.835c0.431 0.003 0.85 0.108 1.223 0.299 0.529 0.271 0.966 0.715 1.221 1.298 0.295 0.675 0.29 1.404 0.041 2.041s-0.739 1.177-1.414 1.472c-0.337 0.148-0.491 0.541-0.343 0.878s0.541 0.491 0.878 0.343z"></path>
1443 </svg>
1444 `
1445 },
1446 {
1447 name: 'cloud-lightning',
1448 template: `
1449 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1450 <title>cloud-lightning</title>
1451 <path d="M12.799 11.92c1.082-0.22 1.974-0.859 2.539-1.711s0.805-1.923 0.585-3.005c-0.202-0.994-0.757-1.828-1.511-2.395-0.679-0.511-1.519-0.807-2.409-0.81h-0.349c-0.483-1.371-1.429-2.472-2.61-3.169-1.322-0.779-2.943-1.055-4.547-0.641s-2.889 1.441-3.669 2.763-1.055 2.943-0.641 4.547c0.398 1.542 1.362 2.789 2.612 3.577 0.095 0.060 0.193 0.117 0.291 0.172 0.322 0.179 0.728 0.062 0.906-0.26s0.062-0.728-0.26-0.906c-0.077-0.043-0.153-0.087-0.227-0.134-0.974-0.614-1.722-1.583-2.032-2.782-0.322-1.248-0.109-2.507 0.498-3.537s1.605-1.826 2.853-2.149 2.507-0.109 3.537 0.498 1.826 1.605 2.149 2.853c0.078 0.29 0.338 0.5 0.647 0.5h0.837c0.597 0.003 1.159 0.2 1.613 0.541 0.503 0.378 0.871 0.931 1.006 1.595 0.147 0.722-0.013 1.433-0.39 2.003s-0.971 0.994-1.693 1.141c-0.361 0.073-0.594 0.425-0.521 0.786s0.425 0.594 0.786 0.521zM8.112 6.963l-2.667 4c-0.204 0.307-0.121 0.72 0.185 0.925 0.115 0.077 0.245 0.113 0.37 0.112h2.754l-1.976 2.963c-0.204 0.307-0.121 0.72 0.185 0.925s0.72 0.121 0.925-0.185l2.667-4c0.071-0.104 0.113-0.232 0.113-0.37 0-0.368-0.299-0.667-0.667-0.667h-2.754l1.976-2.963c0.204-0.307 0.121-0.72-0.185-0.925s-0.72-0.121-0.925 0.185z"></path>
1452 </svg>
1453 `
1454 },
1455 {
1456 name: 'cloud-off',
1457 template: `
1458 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1459 <title>cloud-off</title>
1460 <path d="M15.687 11.56c0.431-1.017 0.408-2.113 0.024-3.061s-1.131-1.751-2.147-2.182c-0.517-0.219-1.059-0.322-1.571-0.317h-0.337c-0.413-1.187-1.174-2.173-2.141-2.873-0.865-0.625-1.896-1.021-2.991-1.125-0.367-0.035-0.692 0.234-0.727 0.601s0.234 0.692 0.601 0.727c0.857 0.081 1.662 0.391 2.337 0.878 0.855 0.619 1.501 1.524 1.781 2.623 0.075 0.291 0.335 0.503 0.645 0.503h0.847c0.327-0.003 0.687 0.063 1.037 0.211 0.678 0.287 1.175 0.821 1.432 1.455s0.271 1.363-0.016 2.041c-0.143 0.339 0.015 0.73 0.354 0.874s0.73-0.015 0.874-0.354zM3.236 4.179l8.488 8.488h-5.731c-0.64 0.007-1.269-0.115-1.85-0.351-0.954-0.389-1.779-1.090-2.313-2.056-0.623-1.128-0.731-2.401-0.401-3.549 0.288-1 0.907-1.903 1.806-2.531zM0.195 1.138l2.086 2.087c-1.054 0.8-1.784 1.904-2.133 3.117-0.425 1.475-0.287 3.113 0.515 4.563 0.687 1.242 1.751 2.146 2.977 2.646 0.745 0.303 1.55 0.457 2.367 0.449h5.993c0.326-0.001 0.645-0.040 0.945-0.113l1.917 1.917c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-14.667-14.667c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
1461 </svg>
1462 `
1463 },
1464 {
1465 name: 'cloud-rain',
1466 template: `
1467 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1468 <title>cloud-rain</title>
1469 <path d="M10 8.667v5.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-5.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM4.667 8.667v5.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-5.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM7.333 10v5.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-5.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM13.601 11.664c1.011-0.443 1.749-1.255 2.121-2.208s0.381-2.049-0.061-3.061c-0.383-0.874-1.042-1.545-1.835-1.95-0.557-0.285-1.18-0.44-1.82-0.445h-0.352c-0.483-1.371-1.429-2.472-2.61-3.169-1.322-0.779-2.943-1.055-4.547-0.641s-2.889 1.441-3.669 2.763-1.055 2.943-0.641 4.547c0.339 1.313 1.089 2.415 2.066 3.189 0.289 0.229 0.708 0.18 0.937-0.109s0.18-0.708-0.109-0.937c-0.755-0.598-1.339-1.453-1.603-2.477-0.322-1.247-0.109-2.507 0.499-3.537s1.605-1.826 2.853-2.149 2.507-0.109 3.537 0.499 1.826 1.605 2.149 2.853c0.077 0.29 0.337 0.5 0.645 0.5h0.835c0.431 0.003 0.85 0.108 1.223 0.299 0.529 0.271 0.966 0.715 1.221 1.298 0.295 0.675 0.29 1.404 0.041 2.041s-0.739 1.177-1.414 1.472c-0.337 0.148-0.491 0.541-0.343 0.878s0.541 0.491 0.878 0.343z"></path>
1470 </svg>
1471 `
1472 },
1473 {
1474 name: 'cloud-snow',
1475 template: `
1476 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1477 <title>cloud-snow</title>
1478 <path d="M13.601 12.331c1.011-0.443 1.749-1.255 2.121-2.208s0.381-2.049-0.061-3.061c-0.383-0.874-1.042-1.545-1.835-1.95-0.557-0.285-1.18-0.44-1.82-0.445h-0.352c-0.483-1.371-1.429-2.472-2.61-3.169-1.322-0.779-2.943-1.055-4.547-0.641s-2.889 1.441-3.669 2.763-1.055 2.943-0.641 4.547c0.339 1.313 1.089 2.415 2.066 3.189 0.289 0.229 0.708 0.18 0.937-0.109s0.18-0.708-0.109-0.937c-0.755-0.598-1.339-1.453-1.603-2.477-0.322-1.247-0.109-2.507 0.499-3.537s1.605-1.826 2.853-2.149 2.507-0.109 3.537 0.499 1.826 1.605 2.149 2.853c0.077 0.29 0.337 0.5 0.645 0.5h0.835c0.431 0.003 0.85 0.108 1.223 0.299 0.529 0.271 0.966 0.715 1.221 1.298 0.295 0.675 0.29 1.404 0.041 2.041s-0.739 1.177-1.414 1.472c-0.337 0.148-0.491 0.541-0.343 0.878s0.541 0.491 0.878 0.343zM6 10.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667zM6 13.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667zM8.667 12c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667zM8.667 14.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667zM11.333 10.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667zM11.333 13.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
1479 </svg>
1480 `
1481 },
1482 {
1483 name: 'cloud',
1484 template: `
1485 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1486 <title>cloud</title>
1487 <path d="M12 7.333c0.737 0 1.402 0.298 1.885 0.781s0.781 1.149 0.781 1.885-0.298 1.402-0.781 1.885-1.149 0.781-1.885 0.781h-5.997c-0.975-0.005-1.902-0.307-2.67-0.838-0.889-0.615-1.565-1.537-1.856-2.662-0.322-1.248-0.109-2.507 0.499-3.537s1.605-1.826 2.853-2.149 2.507-0.109 3.537 0.499 1.826 1.605 2.149 2.853c0.077 0.29 0.337 0.5 0.645 0.5zM12 6h-0.347c-0.483-1.371-1.429-2.472-2.61-3.169-1.322-0.779-2.943-1.055-4.547-0.641s-2.889 1.44-3.669 2.762-1.055 2.943-0.641 4.547c0.373 1.446 1.245 2.634 2.389 3.425 0.985 0.681 2.174 1.068 3.421 1.075h6.003c1.105 0 2.105-0.449 2.829-1.171s1.171-1.724 1.171-2.829-0.449-2.105-1.171-2.829-1.724-1.171-2.829-1.171z"></path>
1488 </svg>
1489 `
1490 },
1491 {
1492 name: 'code',
1493 template: `
1494 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1495 <title>code</title>
1496 <path d="M11.138 12.471l4-4c0.261-0.261 0.261-0.683 0-0.943l-4-4c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l3.529 3.529-3.529 3.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0zM4.862 3.529l-4 4c-0.261 0.261-0.261 0.683 0 0.943l4 4c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-3.529-3.529 3.529-3.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0z"></path>
1497 </svg>
1498 `
1499 },
1500 {
1501 name: 'codepen',
1502 template: `
1503 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1504 <title>codepen</title>
1505 <path d="M3.504 8l-1.504 1.053v-2.106zM14 9.053l-1.504-1.053 1.504-1.053zM11.333 8.814l2.141 1.499-4.808 3.125v-2.758zM5.829 8l2.171-1.519 2.171 1.519-2.171 1.519zM2.525 10.313l2.141-1.499 2.667 1.867v2.758zM8.371 0.779c-0.106-0.071-0.234-0.113-0.371-0.113s-0.265 0.041-0.371 0.113l-6.646 4.32c-0.075 0.047-0.142 0.109-0.195 0.185-0.083 0.119-0.123 0.255-0.121 0.39v4.651c-0.001 0.123 0.031 0.247 0.099 0.357 0.027 0.045 0.061 0.087 0.099 0.125 0.031 0.031 0.067 0.059 0.105 0.085l0.013 0.008 6.646 4.32c0.106 0.072 0.234 0.113 0.371 0.113s0.265-0.041 0.371-0.113l6.646-4.32c0.075-0.046 0.142-0.108 0.195-0.185 0.083-0.119 0.122-0.255 0.121-0.391v-4.651c0.001-0.123-0.031-0.247-0.099-0.357-0.027-0.045-0.061-0.087-0.099-0.125-0.031-0.031-0.067-0.059-0.105-0.085l-0.013-0.008zM8.667 5.319v-2.757l4.808 3.125-2.141 1.499zM7.333 2.562v2.758l-2.667 1.867-2.141-1.499z"></path>
1506 </svg>
1507 `
1508 },
1509 {
1510 name: 'codesandbox',
1511 template: `
1512 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1513 <title>codesandbox</title>
1514 <path d="M9.627 2.83l-1.627 0.94-1.627-0.94 1.291-0.737c0.075-0.043 0.155-0.070 0.237-0.083 0.145-0.023 0.297 0.002 0.436 0.083zM2.667 9.155l1.667 0.963v1.887l-1.33-0.76c-0.074-0.043-0.138-0.099-0.19-0.163-0.093-0.115-0.147-0.258-0.147-0.415zM11.667 12.005v-1.887l1.667-0.963v1.511c-0.001 0.081-0.017 0.164-0.047 0.241-0.053 0.137-0.15 0.256-0.284 0.333zM12.641 4.552l-4.641 2.685-4.641-2.685 1.673-0.957 2.634 1.522c0.213 0.123 0.465 0.115 0.667 0l2.633-1.521zM7.684 15.307c0.094 0.051 0.202 0.079 0.316 0.079 0.115 0 0.224-0.029 0.319-0.081 0.237-0.039 0.467-0.12 0.678-0.24l2.132-1.219c0.145-0.029 0.274-0.105 0.369-0.211l2.166-1.238c0.412-0.238 0.707-0.599 0.866-1.009 0.089-0.228 0.135-0.471 0.137-0.723v-5.333c0-0.319-0.075-0.621-0.209-0.889-0.015-0.047-0.035-0.093-0.061-0.138-0.031-0.053-0.067-0.099-0.108-0.14-0.021-0.029-0.043-0.057-0.065-0.085-0.153-0.191-0.341-0.352-0.554-0.477l-2.172-1.241c-0.098-0.111-0.229-0.184-0.369-0.211l-2.131-1.218c-0.407-0.235-0.867-0.31-1.302-0.243-0.243 0.038-0.477 0.119-0.692 0.242l-2.133 1.219c-0.14 0.027-0.271 0.1-0.369 0.211l-2.166 1.238c-0.255 0.147-0.466 0.342-0.627 0.567-0.040 0.040-0.076 0.087-0.106 0.138-0.026 0.045-0.047 0.092-0.061 0.14-0.027 0.054-0.051 0.109-0.072 0.164-0.088 0.229-0.134 0.472-0.136 0.719v5.338c0.001 0.473 0.165 0.909 0.443 1.252 0.153 0.191 0.341 0.352 0.554 0.477l2.172 1.241c0.095 0.107 0.223 0.183 0.369 0.211l2.131 1.218c0.216 0.125 0.447 0.205 0.681 0.241zM7.333 8.391v5.327l-1.667-0.952v-3.033c0-0.245-0.133-0.46-0.333-0.577l-2.667-1.541v-1.923zM8.667 13.719v-5.327l4.667-2.699v1.923l-2.667 1.541c-0.213 0.123-0.332 0.345-0.333 0.577v3.033z"></path>
1515 </svg>
1516 `
1517 },
1518 {
1519 name: 'coffee',
1520 template: `
1521 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1522 <title>coffee</title>
1523 <path d="M12.667 10v-4c0.553 0 1.051 0.223 1.414 0.586s0.586 0.861 0.586 1.414-0.223 1.051-0.586 1.414-0.861 0.586-1.414 0.586zM1.333 4.667c-0.368 0-0.667 0.299-0.667 0.667v6c0 0.92 0.374 1.755 0.976 2.357s1.437 0.976 2.357 0.976h5.333c0.92 0 1.755-0.374 2.357-0.976s0.976-1.437 0.976-2.357c0.92 0 1.755-0.374 2.357-0.976s0.976-1.437 0.976-2.357-0.374-1.755-0.976-2.357-1.437-0.976-2.357-0.976h-0.667zM2 6h9.333v5.333c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586h-5.333c-0.553 0-1.051-0.223-1.414-0.586s-0.586-0.861-0.586-1.414zM3.333 0.667v2c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM6 0.667v2c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM8.667 0.667v2c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667z"></path>
1524 </svg>
1525 `
1526 },
1527 {
1528 name: 'columns',
1529 template: `
1530 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1531 <title>columns</title>
1532 <path d="M7.333 13.333h-4c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h4zM8 1.333c-0.368 0-0.667 0.299-0.667 0.667v0.667h1.333v-0.667c0-0.368-0.299-0.667-0.667-0.667zM8.667 2.667h4c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v9.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-4zM8 1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667-0.299-0.667-0.667-0.667h-4.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h4.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667h4.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-9.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586z"></path>
1533 </svg>
1534 `
1535 },
1536 {
1537 name: 'command',
1538 template: `
1539 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1540 <title>command</title>
1541 <path d="M9.333 6.667v2.667h-2.667v-2.667zM12 2.667c0.369 0 0.701 0.149 0.943 0.391s0.391 0.574 0.391 0.943-0.149 0.701-0.391 0.943-0.574 0.391-0.943 0.391h-1.333v-1.333c0-0.369 0.149-0.701 0.391-0.943s0.574-0.391 0.943-0.391zM9.333 5.333h-2.667v-1.333c0-0.736-0.299-1.404-0.781-1.885s-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885 1.149 0.781 1.885 0.781h1.333v2.667h-1.333c-0.736 0-1.404 0.299-1.885 0.781s-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885 1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885v-1.333h2.667v1.333c0 0.736 0.299 1.404 0.781 1.885s1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885-0.299-1.404-0.781-1.885-1.149-0.781-1.885-0.781h-1.333v-2.667h1.333c0.736 0 1.404-0.299 1.885-0.781s0.781-1.149 0.781-1.885-0.299-1.404-0.781-1.885-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781-0.781 1.149-0.781 1.885zM5.333 5.333h-1.333c-0.369 0-0.701-0.149-0.943-0.391s-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943zM5.333 10.667v1.333c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391zM10.667 10.667h1.333c0.369 0 0.701 0.149 0.943 0.391s0.391 0.574 0.391 0.943-0.149 0.701-0.391 0.943-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943z"></path>
1542 </svg>
1543 `
1544 },
1545 {
1546 name: 'compass',
1547 template: `
1548 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1549 <title>compass</title>
1550 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM11.459 5.384c0.044-0.131 0.048-0.279 0-0.421-0.117-0.349-0.494-0.538-0.843-0.421l-4.24 1.413c-0.193 0.065-0.353 0.215-0.421 0.421l-1.413 4.24c-0.044 0.131-0.048 0.279 0 0.421 0.117 0.349 0.494 0.538 0.843 0.421l4.24-1.413c0.193-0.065 0.353-0.215 0.421-0.421zM9.773 6.227l-0.887 2.659-2.659 0.887 0.886-2.659z"></path>
1551 </svg>
1552 `
1553 },
1554 {
1555 name: 'copy',
1556 template: `
1557 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1558 <title>copy</title>
1559 <path d="M7.333 5.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v6c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h6c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-6c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM7.333 6.667h6c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v6c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-6c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-6c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM3.333 9.333h-0.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-6c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h6c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v0.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-0.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-6c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v6c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h0.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
1560 </svg>
1561 `
1562 },
1563 {
1564 name: 'corner-down-left',
1565 template: `
1566 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1567 <title>corner-down-left</title>
1568 <path d="M12.667 2.667v4.667c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586h-6.391l2.195-2.195c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-3.333 3.333c-0.064 0.064-0.112 0.137-0.145 0.216-0.1 0.241-0.052 0.53 0.145 0.727l3.333 3.333c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-2.195-2.195h6.391c0.92 0 1.755-0.374 2.357-0.976s0.976-1.437 0.976-2.357v-4.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667z"></path>
1569 </svg>
1570 `
1571 },
1572 {
1573 name: 'corner-down-right',
1574 template: `
1575 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1576 <title>corner-down-right</title>
1577 <path d="M2 2.667v4.667c0 0.92 0.374 1.755 0.976 2.357s1.437 0.976 2.357 0.976h6.391l-2.195 2.195c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l3.333-3.333c0.061-0.061 0.111-0.135 0.145-0.216s0.051-0.169 0.051-0.255c0-0.171-0.065-0.341-0.195-0.471l-3.333-3.333c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l2.195 2.195h-6.391c-0.553 0-1.051-0.223-1.414-0.586s-0.586-0.861-0.586-1.414v-4.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667z"></path>
1578 </svg>
1579 `
1580 },
1581 {
1582 name: 'corner-left-down',
1583 template: `
1584 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1585 <title>corner-left-down</title>
1586 <path d="M13.333 2h-4.667c-0.92 0-1.755 0.374-2.357 0.976s-0.976 1.437-0.976 2.357v6.391l-2.195-2.195c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l3.333 3.333c0.064 0.064 0.137 0.112 0.216 0.145s0.165 0.051 0.255 0.051 0.177-0.018 0.255-0.051c0.079-0.033 0.152-0.081 0.216-0.145l3.333-3.333c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-2.195 2.195v-6.391c0-0.553 0.223-1.051 0.586-1.414s0.861-0.586 1.414-0.586h4.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
1587 </svg>
1588 `
1589 },
1590 {
1591 name: 'corner-left-up',
1592 template: `
1593 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1594 <title>corner-left-up</title>
1595 <path d="M13.333 12.667h-4.667c-0.553 0-1.051-0.223-1.414-0.586s-0.586-0.861-0.586-1.414v-6.391l2.195 2.195c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-3.333-3.333c-0.064-0.064-0.137-0.112-0.216-0.145s-0.165-0.051-0.255-0.051-0.177 0.018-0.255 0.051c-0.079 0.033-0.152 0.081-0.216 0.145l-3.333 3.333c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l2.195-2.195v6.391c0 0.92 0.374 1.755 0.976 2.357s1.437 0.976 2.357 0.976h4.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
1596 </svg>
1597 `
1598 },
1599 {
1600 name: 'corner-right-down',
1601 template: `
1602 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1603 <title>corner-right-down</title>
1604 <path d="M2.667 3.333h4.667c0.553 0 1.051 0.223 1.414 0.586s0.586 0.861 0.586 1.414v6.391l-2.195-2.195c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l3.333 3.333c0.064 0.064 0.137 0.112 0.216 0.145s0.165 0.051 0.255 0.051c0.087 0 0.174-0.017 0.255-0.051 0.079-0.033 0.152-0.081 0.216-0.145l3.333-3.333c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-2.195 2.195v-6.391c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976h-4.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
1605 </svg>
1606 `
1607 },
1608 {
1609 name: 'corner-right-up',
1610 template: `
1611 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1612 <title>corner-right-up</title>
1613 <path d="M2.667 14h4.667c0.92 0 1.755-0.374 2.357-0.976s0.976-1.437 0.976-2.357v-6.391l2.195 2.195c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-3.333-3.333c-0.064-0.064-0.137-0.112-0.216-0.145-0.241-0.1-0.53-0.052-0.727 0.145l-3.333 3.333c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l2.195-2.195v6.391c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586h-4.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
1614 </svg>
1615 `
1616 },
1617 {
1618 name: 'corner-up-left',
1619 template: `
1620 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1621 <title>corner-up-left</title>
1622 <path d="M14 13.333v-4.667c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976h-6.391l2.195-2.195c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-3.333 3.333c-0.064 0.064-0.112 0.137-0.145 0.216s-0.051 0.165-0.051 0.255 0.018 0.177 0.051 0.255c0.033 0.079 0.081 0.152 0.145 0.216l3.333 3.333c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-2.195-2.195h6.391c0.553 0 1.051 0.223 1.414 0.586s0.586 0.861 0.586 1.414v4.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667z"></path>
1623 </svg>
1624 `
1625 },
1626 {
1627 name: 'corner-up-right',
1628 template: `
1629 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1630 <title>corner-up-right</title>
1631 <path d="M3.333 13.333v-4.667c0-0.553 0.223-1.051 0.586-1.414s0.861-0.586 1.414-0.586h6.391l-2.195 2.195c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l3.333-3.333c0.064-0.064 0.112-0.137 0.145-0.216s0.051-0.165 0.051-0.255-0.018-0.177-0.051-0.255c-0.033-0.079-0.081-0.152-0.145-0.216l-3.333-3.333c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l2.195 2.195h-6.391c-0.92 0-1.755 0.374-2.357 0.976s-0.976 1.437-0.976 2.357v4.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667z"></path>
1632 </svg>
1633 `
1634 },
1635 {
1636 name: 'cpu',
1637 template: `
1638 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1639 <title>cpu</title>
1640 <path d="M4 3.333h8c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v8c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-8c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-8c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM6 5.333c-0.368 0-0.667 0.299-0.667 0.667v4c0 0.368 0.299 0.667 0.667 0.667h4c0.368 0 0.667-0.299 0.667-0.667v-4c0-0.368-0.299-0.667-0.667-0.667zM6.667 6.667h2.667v2.667h-2.667zM0.667 10h1.333v2c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h1.333v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333h2.667v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333h1.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-2h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-1.333v-2h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-1.333v-1.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-1.333v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v1.333h-2.667v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v1.333h-1.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v1.333h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h1.333v2h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
1641 </svg>
1642 `
1643 },
1644 {
1645 name: 'credit-card',
1646 template: `
1647 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1648 <title>credit-card</title>
1649 <path d="M2 2c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v8c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h12c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-8c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM14.667 6h-13.333v-2c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h12c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471zM1.333 7.333h13.333v4.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-12c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471z"></path>
1650 </svg>
1651 `
1652 },
1653 {
1654 name: 'crop',
1655 template: `
1656 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1657 <title>crop</title>
1658 <path d="M4.718 4.718l5.955-0.051c0.179 0 0.344 0.074 0.465 0.195s0.195 0.287 0.195 0.471v6h-6c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.465zM0.673 4.753l2.712-0.023-0.051 5.931c0 0.558 0.225 1.059 0.586 1.42s0.862 0.586 1.414 0.586h6v2.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2.667h2.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2.667v-6c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.42-0.586l-5.931 0.051 0.023-2.712c0.003-0.369-0.293-0.669-0.661-0.673s-0.669 0.293-0.673 0.661l-0.024 2.735-2.735 0.024c-0.368 0.003-0.664 0.304-0.661 0.673s0.304 0.664 0.673 0.661z"></path>
1659 </svg>
1660 `
1661 },
1662 {
1663 name: 'crosshair',
1664 template: `
1665 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1666 <title>crosshair</title>
1667 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM8.667 13.963v-1.963c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v1.963c-1.391-0.153-2.637-0.782-3.576-1.721s-1.567-2.185-1.721-3.576h1.963c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-1.963c0.153-1.391 0.782-2.637 1.721-3.576s2.185-1.567 3.576-1.721v1.963c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.963c1.391 0.153 2.637 0.782 3.576 1.721s1.567 2.185 1.721 3.576h-1.963c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h1.963c-0.153 1.391-0.782 2.637-1.721 3.576s-2.185 1.567-3.576 1.721z"></path>
1668 </svg>
1669 `
1670 },
1671 {
1672 name: 'database',
1673 template: `
1674 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1675 <title>database</title>
1676 <path d="M2.667 3.335c0 0 0.002-0.063 0.142-0.192 0.163-0.15 0.447-0.322 0.871-0.487 0.999-0.39 2.547-0.656 4.321-0.656s3.321 0.266 4.321 0.656c0.423 0.165 0.707 0.337 0.871 0.487 0.139 0.128 0.141 0.189 0.141 0.192 0 0-0.002 0.061-0.142 0.189-0.163 0.15-0.447 0.322-0.871 0.487-0.999 0.39-2.547 0.656-4.321 0.656s-3.321-0.266-4.321-0.656c-0.423-0.165-0.707-0.337-0.871-0.487-0.139-0.128-0.141-0.189-0.141-0.189zM13.333 9.688v2.981l-0.011 0.033c-0.016 0.032-0.053 0.088-0.133 0.161-0.163 0.15-0.447 0.321-0.869 0.485-0.997 0.388-2.54 0.652-4.321 0.652s-3.323-0.264-4.32-0.652c-0.422-0.164-0.705-0.335-0.869-0.485-0.080-0.073-0.117-0.129-0.133-0.161l-0.012-0.035v-2.979c0.167 0.085 0.345 0.164 0.529 0.236 1.198 0.466 2.918 0.743 4.804 0.743s3.606-0.277 4.804-0.743c0.185-0.072 0.362-0.15 0.529-0.236zM13.333 5.018v2.975c0 0.003 0 0.005 0 0.009l-0.011 0.033c-0.016 0.032-0.053 0.088-0.133 0.161-0.163 0.15-0.447 0.321-0.869 0.485-0.997 0.388-2.54 0.652-4.321 0.652s-3.323-0.264-4.32-0.652c-0.422-0.164-0.705-0.335-0.869-0.485-0.080-0.073-0.117-0.129-0.133-0.161l-0.012-0.033v-2.984c0.167 0.085 0.344 0.163 0.528 0.235 1.201 0.468 2.925 0.747 4.805 0.747s3.605-0.279 4.805-0.747c0.184-0.072 0.361-0.15 0.528-0.235zM1.333 3.333v9.333c0 0.039 0.001 0.077 0.005 0.116 0.038 0.443 0.283 0.798 0.571 1.063 0.332 0.305 0.783 0.549 1.287 0.745 1.198 0.466 2.918 0.743 4.804 0.743s3.606-0.277 4.804-0.743c0.503-0.196 0.955-0.441 1.287-0.745 0.288-0.265 0.533-0.619 0.571-1.063 0.003-0.039 0.005-0.077 0.005-0.116v-9.333c0-0.037-0.001-0.075-0.005-0.112-0.037-0.443-0.281-0.797-0.568-1.060-0.332-0.306-0.785-0.551-1.289-0.748-1.201-0.468-2.925-0.747-4.805-0.747s-3.605 0.279-4.805 0.747c-0.504 0.197-0.957 0.443-1.289 0.748-0.287 0.263-0.531 0.618-0.568 1.060-0.003 0.037-0.005 0.075-0.005 0.112z"></path>
1677 </svg>
1678 `
1679 },
1680 {
1681 name: 'delete',
1682 template: `
1683 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1684 <title>delete</title>
1685 <path d="M14 3.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v8c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-8.364l-4.083-4.667 4.083-4.667zM14 2h-8.667c-0.2 0-0.379 0.088-0.502 0.227l-4.667 5.333c-0.222 0.253-0.217 0.628 0 0.878l4.667 5.333c0.132 0.151 0.316 0.227 0.502 0.228h8.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-8c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM7.529 6.471l1.529 1.529-1.529 1.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l1.529-1.529 1.529 1.529c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-1.529-1.529 1.529-1.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-1.529 1.529-1.529-1.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
1686 </svg>
1687 `
1688 },
1689 {
1690 name: 'disc',
1691 template: `
1692 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1693 <title>disc</title>
1694 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM10.667 8c0-0.736-0.299-1.404-0.781-1.885s-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885 1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885zM9.333 8c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943z"></path>
1695 </svg>
1696 `
1697 },
1698 {
1699 name: 'dollar-sign',
1700 template: `
1701 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1702 <title>dollar-sign</title>
1703 <path d="M7.333 7.333h-1c-0.461 0-0.876-0.186-1.179-0.488s-0.488-0.718-0.488-1.179 0.186-0.876 0.488-1.179 0.718-0.488 1.179-0.488h1zM8.667 8.667h1c0.461 0 0.876 0.186 1.179 0.488s0.488 0.718 0.488 1.179-0.186 0.876-0.488 1.179-0.718 0.488-1.179 0.488h-1zM11.333 2.667h-2.667v-2c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v2h-1c-0.828 0-1.579 0.337-2.121 0.879s-0.879 1.293-0.879 2.121 0.337 1.579 0.879 2.121 1.293 0.879 2.121 0.879h1v3.333h-3.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h3.333v2c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2h1c0.828 0 1.579-0.337 2.121-0.879s0.879-1.293 0.879-2.121-0.337-1.579-0.879-2.121-1.293-0.879-2.121-0.879h-1v-3.333h2.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
1704 </svg>
1705 `
1706 },
1707 {
1708 name: 'download-cloud',
1709 template: `
1710 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1711 <title>download-cloud</title>
1712 <path d="M7.333 8v4.391l-1.529-1.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l2.667 2.667c0.061 0.061 0.135 0.111 0.216 0.145 0.163 0.067 0.347 0.067 0.511 0 0.079-0.033 0.152-0.081 0.216-0.145l2.667-2.667c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-1.529 1.529v-4.391c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM14.303 12.605c0.903-0.635 1.464-1.578 1.64-2.585s-0.033-2.084-0.669-2.987c-0.551-0.783-1.332-1.309-2.191-1.549-0.351-0.098-0.715-0.149-1.081-0.15h-0.349c-0.481-1.372-1.425-2.473-2.605-3.172-1.321-0.781-2.941-1.059-4.546-0.648s-2.892 1.437-3.673 2.757-1.059 2.941-0.648 4.546c0.247 0.964 0.717 1.817 1.322 2.489 0.247 0.273 0.668 0.296 0.941 0.049s0.296-0.668 0.049-0.941c-0.461-0.513-0.828-1.173-1.022-1.929-0.321-1.249-0.105-2.507 0.504-3.536s1.608-1.824 2.857-2.144 2.507-0.105 3.536 0.504 1.824 1.608 2.144 2.857c0.077 0.29 0.337 0.501 0.647 0.501h0.837c0.247 0.001 0.491 0.035 0.727 0.101 0.574 0.161 1.093 0.51 1.46 1.032 0.424 0.603 0.563 1.319 0.446 1.992s-0.491 1.3-1.093 1.723c-0.301 0.212-0.373 0.627-0.162 0.929s0.627 0.373 0.929 0.162z"></path>
1713 </svg>
1714 `
1715 },
1716 {
1717 name: 'download',
1718 template: `
1719 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1720 <title>download</title>
1721 <path d="M13.333 10v2.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-9.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-2.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v2.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-2.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM8.667 8.391v-6.391c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v6.391l-2.195-2.195c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l3.333 3.333c0.061 0.061 0.135 0.111 0.216 0.145s0.169 0.051 0.255 0.051c0.171 0 0.341-0.065 0.471-0.195l3.333-3.333c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0z"></path>
1722 </svg>
1723 `
1724 },
1725 {
1726 name: 'droplet',
1727 template: `
1728 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1729 <title>droplet</title>
1730 <path d="M8.471 1.322c-0.261-0.261-0.683-0.26-0.943 0.001l-3.769 3.775c-1.171 1.172-1.757 2.709-1.756 4.243s0.587 3.071 1.759 4.242 2.709 1.757 4.243 1.756 3.071-0.587 4.242-1.759 1.757-2.709 1.756-4.243-0.587-3.071-1.759-4.242zM8.001 2.737l3.301 3.301c0.912 0.911 1.368 2.104 1.368 3.299s-0.455 2.389-1.366 3.3-2.104 1.367-3.299 1.368-2.389-0.455-3.3-1.366-1.367-2.104-1.368-3.299 0.455-2.389 1.366-3.3z"></path>
1731 </svg>
1732 `
1733 },
1734 {
1735 name: 'edit-2',
1736 template: `
1737 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1738 <title>edit-2</title>
1739 <path d="M10.862 1.529l-9 9c-0.078 0.077-0.14 0.179-0.172 0.296l-1 3.667c-0.031 0.109-0.033 0.231 0 0.351 0.097 0.355 0.463 0.565 0.819 0.468l3.667-1c0.106-0.028 0.21-0.086 0.296-0.172l9-9c0.498-0.498 0.747-1.153 0.747-1.805s-0.249-1.307-0.747-1.805-1.153-0.747-1.805-0.747-1.307 0.249-1.805 0.747zM11.805 2.471c0.238-0.238 0.549-0.357 0.862-0.357s0.624 0.119 0.862 0.357 0.357 0.549 0.357 0.861-0.119 0.624-0.357 0.862l-8.875 8.875-2.371 0.647 0.647-2.37z"></path>
1740 </svg>
1741 `
1742 },
1743 {
1744 name: 'edit-3',
1745 template: `
1746 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1747 <title>edit-3</title>
1748 <path d="M8 14h6c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-6c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM10.529 1.862l-8.333 8.333c-0.081 0.081-0.145 0.187-0.175 0.31l-0.667 2.667c-0.026 0.1-0.028 0.212 0 0.323 0.089 0.357 0.451 0.575 0.809 0.485l2.667-0.667c0.111-0.027 0.22-0.086 0.31-0.175l8.333-8.333c0.406-0.406 0.609-0.94 0.609-1.471s-0.203-1.065-0.609-1.471-0.941-0.61-1.472-0.61-1.065 0.203-1.471 0.609zM11.471 2.805c0.146-0.146 0.336-0.219 0.529-0.219s0.383 0.073 0.529 0.219 0.219 0.336 0.219 0.529-0.073 0.383-0.219 0.529l-8.203 8.203-1.41 0.353 0.353-1.41z"></path>
1749 </svg>
1750 `
1751 },
1752 {
1753 name: 'edit',
1754 template: `
1755 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1756 <title>edit</title>
1757 <path d="M7.333 2h-4.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-4.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v4.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-9.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h4.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM11.862 1.195l-6.333 6.333c-0.081 0.081-0.145 0.187-0.175 0.31l-0.667 2.667c-0.026 0.1-0.028 0.212 0 0.323 0.089 0.357 0.451 0.575 0.809 0.485l2.667-0.667c0.111-0.027 0.22-0.086 0.31-0.175l6.333-6.333c0.406-0.406 0.609-0.94 0.609-1.471s-0.203-1.065-0.609-1.471-0.941-0.61-1.472-0.61-1.065 0.203-1.471 0.609zM12.805 2.138c0.146-0.146 0.336-0.219 0.529-0.219s0.383 0.073 0.529 0.219 0.219 0.336 0.219 0.529-0.073 0.383-0.219 0.529l-6.203 6.203-1.409 0.353 0.353-1.409z"></path>
1758 </svg>
1759 `
1760 },
1761 {
1762 name: 'external-link',
1763 template: `
1764 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1765 <title>external-link</title>
1766 <path d="M11.333 8.667v4c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-7.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-7.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h4c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-4c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v7.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h7.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-4c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM7.138 9.805l6.195-6.195v2.391c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-4c0-0.091-0.018-0.177-0.051-0.255s-0.081-0.152-0.144-0.215c-0.001-0.001-0.001-0.001-0.001-0.001-0.061-0.061-0.135-0.111-0.215-0.144-0.079-0.033-0.165-0.051-0.255-0.051h-4c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h2.391l-6.195 6.195c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0z"></path>
1767 </svg>
1768 `
1769 },
1770 {
1771 name: 'eye-off',
1772 template: `
1773 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1774 <title>eye-off</title>
1775 <path d="M6.752 3.476c0.434-0.101 0.863-0.147 1.24-0.143 1.172 0 2.206 0.373 3.105 0.929 0.746 0.461 1.393 1.045 1.929 1.632 0.429 0.47 0.783 0.937 1.057 1.334 0.218 0.317 0.38 0.583 0.489 0.77-0.364 0.635-0.773 1.214-1.185 1.695-0.239 0.279-0.207 0.701 0.072 0.94s0.701 0.207 0.94-0.072c0.545-0.636 1.074-1.408 1.522-2.247 0.099-0.186 0.109-0.412 0.009-0.613 0 0-0.264-0.526-0.747-1.229-0.301-0.437-0.692-0.955-1.171-1.479-0.596-0.653-1.336-1.325-2.213-1.867-1.063-0.657-2.337-1.127-3.791-1.127-0.489-0.006-1.027 0.053-1.56 0.177-0.359 0.084-0.581 0.443-0.497 0.801s0.443 0.581 0.801 0.497zM6.685 7.628l1.687 1.687c-0.121 0.041-0.248 0.063-0.375 0.067-0.342 0.012-0.687-0.106-0.956-0.357s-0.411-0.587-0.423-0.929c-0.005-0.159 0.017-0.317 0.067-0.469zM3.989 4.931l1.702 1.702c-0.289 0.461-0.424 0.989-0.405 1.511 0.024 0.681 0.309 1.355 0.847 1.857s1.231 0.738 1.912 0.714c0.461-0.016 0.919-0.152 1.323-0.405l1.548 1.548c-0.919 0.533-1.93 0.797-2.923 0.809-1.156 0-2.19-0.373-3.089-0.929-0.746-0.461-1.393-1.045-1.929-1.632-0.429-0.47-0.783-0.937-1.057-1.334-0.217-0.317-0.38-0.582-0.488-0.769 0.7-1.215 1.584-2.253 2.561-3.071zM0.195 1.138l2.847 2.847c-1.154 0.986-2.179 2.239-2.963 3.699-0.099 0.186-0.109 0.413-0.009 0.613 0 0 0.264 0.526 0.747 1.229 0.301 0.437 0.692 0.955 1.171 1.479 0.596 0.653 1.336 1.325 2.213 1.867 1.063 0.657 2.337 1.128 3.807 1.128 1.329-0.016 2.679-0.401 3.877-1.173l2.977 2.977c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-5.917-5.917c-0.001-0.001-0.003-0.003-0.005-0.005l-2.806-2.807c-0.005-0.005-0.011-0.011-0.016-0.016l-5.923-5.922c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
1776 </svg>
1777 `
1778 },
1779 {
1780 name: 'eye',
1781 template: `
1782 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1783 <title>eye</title>
1784 <path d="M0.071 7.702c-0.091 0.183-0.097 0.402 0 0.596 0 0 0.264 0.526 0.747 1.229 0.301 0.437 0.692 0.955 1.171 1.479 0.596 0.653 1.336 1.325 2.213 1.867 1.063 0.657 2.337 1.128 3.799 1.128s2.735-0.471 3.799-1.128c0.877-0.542 1.617-1.214 2.213-1.867 0.479-0.524 0.871-1.041 1.171-1.479 0.483-0.703 0.747-1.229 0.747-1.229 0.091-0.183 0.097-0.402 0-0.596 0 0-0.264-0.526-0.747-1.229-0.301-0.437-0.692-0.955-1.171-1.479-0.596-0.653-1.336-1.325-2.213-1.867-1.063-0.657-2.337-1.128-3.799-1.128s-2.735 0.471-3.799 1.128c-0.877 0.542-1.617 1.214-2.213 1.867-0.479 0.524-0.871 1.041-1.171 1.479-0.483 0.703-0.747 1.229-0.747 1.229zM1.427 8c0.109-0.187 0.271-0.454 0.489-0.772 0.273-0.397 0.627-0.864 1.057-1.334 0.537-0.587 1.183-1.171 1.929-1.632 0.9-0.556 1.934-0.929 3.098-0.929s2.198 0.373 3.097 0.929c0.746 0.461 1.393 1.045 1.929 1.632 0.429 0.47 0.783 0.937 1.057 1.334 0.219 0.318 0.381 0.584 0.489 0.772-0.109 0.187-0.271 0.454-0.489 0.772-0.273 0.397-0.627 0.864-1.057 1.334-0.537 0.587-1.183 1.171-1.929 1.632-0.899 0.556-1.933 0.929-3.097 0.929s-2.198-0.373-3.097-0.929c-0.746-0.461-1.393-1.045-1.929-1.632-0.429-0.47-0.783-0.937-1.057-1.334-0.219-0.318-0.381-0.585-0.49-0.772zM10.667 8c0-0.736-0.299-1.404-0.781-1.885s-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885 1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885zM9.333 8c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943z"></path>
1785 </svg>
1786 `
1787 },
1788 {
1789 name: 'facebook',
1790 template: `
1791 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1792 <title>facebook</title>
1793 <path d="M11.333 2v1.333h-1.333c-0.368 0-0.702 0.15-0.943 0.391s-0.391 0.575-0.391 0.943v2c0 0.368 0.299 0.667 0.667 0.667h1.813l-0.333 1.333h-1.479c-0.368 0-0.667 0.299-0.667 0.667v4.667h-1.333v-4.667c0-0.368-0.299-0.667-0.667-0.667h-1.333v-1.333h1.333c0.368 0 0.667-0.299 0.667-0.667v-2c0-0.737 0.298-1.402 0.781-1.885s1.149-0.781 1.885-0.781zM12 0.667h-2c-1.105 0-2.105 0.449-2.829 1.171s-1.171 1.724-1.171 2.829v1.333h-1.333c-0.368 0-0.667 0.299-0.667 0.667v2.667c0 0.368 0.299 0.667 0.667 0.667h1.333v4.667c0 0.368 0.299 0.667 0.667 0.667h2.667c0.368 0 0.667-0.299 0.667-0.667v-4.667h1.333c0.311 0 0.572-0.213 0.647-0.505l0.667-2.667c0.089-0.357-0.128-0.719-0.485-0.809-0.055-0.014-0.111-0.021-0.161-0.020h-2v-1.333h2c0.368 0 0.667-0.299 0.667-0.667v-2.667c0-0.368-0.299-0.667-0.667-0.667z"></path>
1794 </svg>
1795 `
1796 },
1797 {
1798 name: 'fast-forward',
1799 template: `
1800 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1801 <title>fast-forward</title>
1802 <path d="M9.333 11.303v-6.607l4.247 3.303zM2 11.303v-6.607l4.247 3.303zM1.743 13.193l6-4.667c0.167-0.13 0.255-0.324 0.257-0.52v4.661c0 0.368 0.299 0.667 0.667 0.667 0.155 0 0.297-0.053 0.409-0.141l6-4.667c0.291-0.226 0.343-0.645 0.117-0.935-0.036-0.046-0.077-0.086-0.117-0.117l-6-4.667c-0.291-0.226-0.709-0.174-0.935 0.117-0.095 0.123-0.141 0.267-0.141 0.409v4.66c-0.001-0.141-0.047-0.283-0.141-0.403-0.036-0.046-0.077-0.086-0.117-0.117l-6-4.667c-0.291-0.226-0.709-0.174-0.935 0.117-0.095 0.123-0.141 0.267-0.141 0.409v9.333c0 0.368 0.299 0.667 0.667 0.667 0.155 0 0.297-0.053 0.409-0.141z"></path>
1803 </svg>
1804 `
1805 },
1806 {
1807 name: 'feather',
1808 template: `
1809 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1810 <title>feather</title>
1811 <path d="M12.074 10.528c0.046-0.035 0.087-0.077 0.122-0.123l1.769-1.774c0.911-0.911 1.367-2.107 1.367-3.301s-0.456-2.39-1.367-3.301-2.107-1.367-3.301-1.367-2.39 0.456-3.301 1.367l-4.5 4.5c-0.13 0.13-0.195 0.301-0.195 0.471v5.391l-1.805 1.805c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l1.805-1.805h5.391c0.185 0 0.351-0.075 0.472-0.196zM6.276 10.667h3.777l-1.329 1.333h-3.781zM11.382 9.333h-3.773l3.529-3.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-6.195 6.195v-3.781l4.305-4.305c0.651-0.651 1.504-0.977 2.359-0.977s1.707 0.325 2.359 0.977 0.977 1.504 0.977 2.359-0.325 1.707-0.977 2.359z"></path>
1812 </svg>
1813 `
1814 },
1815 {
1816 name: 'figma',
1817 template: `
1818 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1819 <title>figma</title>
1820 <path d="M8.667 8.333c0-0.461 0.186-0.876 0.488-1.179s0.718-0.488 1.179-0.488 0.876 0.186 1.179 0.488 0.488 0.718 0.488 1.179-0.186 0.876-0.488 1.179-0.718 0.488-1.179 0.488-0.876-0.186-1.179-0.488-0.488-0.718-0.488-1.179zM5.667 5.333c-0.461 0-0.876-0.186-1.179-0.488s-0.488-0.718-0.488-1.179 0.186-0.876 0.488-1.179 0.718-0.488 1.179-0.488h1.667v3.333zM8.667 5.333v-3.333h1.667c0.461 0 0.876 0.186 1.179 0.488s0.488 0.718 0.488 1.179-0.186 0.876-0.488 1.179-0.718 0.488-1.179 0.488zM7.333 11.333v1.667c0 0.461-0.186 0.876-0.488 1.179s-0.718 0.488-1.179 0.488-0.876-0.186-1.179-0.488-0.488-0.718-0.488-1.179 0.186-0.876 0.488-1.179 0.718-0.488 1.179-0.488zM2.667 8.333c0 0.828 0.337 1.579 0.879 2.121 0.075 0.075 0.153 0.145 0.235 0.212-0.082 0.067-0.161 0.137-0.235 0.212-0.542 0.542-0.879 1.293-0.879 2.121s0.337 1.579 0.879 2.121 1.293 0.879 2.121 0.879 1.579-0.337 2.121-0.879 0.879-1.293 0.879-2.121v-2.172c0.477 0.319 1.050 0.505 1.667 0.505 0.828 0 1.579-0.337 2.121-0.879s0.879-1.293 0.879-2.121-0.337-1.579-0.879-2.121c-0.075-0.075-0.153-0.145-0.235-0.212 0.082-0.067 0.161-0.137 0.235-0.212 0.542-0.542 0.879-1.293 0.879-2.121s-0.337-1.579-0.879-2.121-1.293-0.879-2.121-0.879h-4.667c-0.828 0-1.579 0.337-2.121 0.879s-0.879 1.293-0.879 2.121 0.337 1.579 0.879 2.121c0.075 0.075 0.153 0.145 0.235 0.212-0.082 0.067-0.161 0.137-0.235 0.212-0.542 0.542-0.879 1.293-0.879 2.121zM4 8.333c0-0.461 0.186-0.876 0.488-1.179s0.718-0.488 1.179-0.488h1.667v3.333h-1.667c-0.461 0-0.876-0.186-1.179-0.488s-0.488-0.718-0.488-1.179z"></path>
1821 </svg>
1822 `
1823 },
1824 {
1825 name: 'file-minus',
1826 template: `
1827 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1828 <title>file-minus</title>
1829 <path d="M9.333 0.667h-5.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v10.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h8c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-8c0-0.184-0.075-0.351-0.195-0.471l-4-4c-0.064-0.064-0.137-0.112-0.216-0.145-0.081-0.034-0.169-0.051-0.255-0.051zM11.724 4.667h-1.724v-1.724zM8.667 2v3.333c0 0.368 0.299 0.667 0.667 0.667h3.333v7.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-8c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-10.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM6 10.667h4c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-4c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
1830 </svg>
1831 `
1832 },
1833 {
1834 name: 'file-plus',
1835 template: `
1836 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1837 <title>file-plus</title>
1838 <path d="M9.333 0.667h-5.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v10.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h8c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-8c0-0.184-0.075-0.351-0.195-0.471l-4-4c-0.064-0.064-0.137-0.112-0.216-0.145-0.081-0.034-0.169-0.051-0.255-0.051zM11.724 4.667h-1.724v-1.724zM8.667 2v3.333c0 0.368 0.299 0.667 0.667 0.667h3.333v7.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-8c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-10.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM6 10.667h1.333v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-1.333v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v1.333h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
1839 </svg>
1840 `
1841 },
1842 {
1843 name: 'file-text',
1844 template: `
1845 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1846 <title>file-text</title>
1847 <path d="M9.333 0.667h-5.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v10.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h8c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-8c0-0.184-0.075-0.351-0.195-0.471l-4-4c-0.064-0.064-0.137-0.112-0.216-0.145-0.081-0.034-0.169-0.051-0.255-0.051zM11.724 4.667h-1.724v-1.724zM8.667 2v3.333c0 0.368 0.299 0.667 0.667 0.667h3.333v7.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-8c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-10.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM10.667 8h-5.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h5.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM10.667 10.667h-5.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h5.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM6.667 5.333h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
1848 </svg>
1849 `
1850 },
1851 {
1852 name: 'file',
1853 template: `
1854 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1855 <title>file</title>
1856 <path d="M8.667 0.667h-4.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v10.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h8c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-7.333c0-0.184-0.075-0.351-0.195-0.471l-4.667-4.667c-0.064-0.064-0.137-0.112-0.216-0.145-0.081-0.034-0.169-0.051-0.255-0.051zM11.724 5.333h-2.391v-2.391zM8 2v4c0 0.368 0.299 0.667 0.667 0.667h4v6.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-8c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-10.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195z"></path>
1857 </svg>
1858 `
1859 },
1860 {
1861 name: 'film',
1862 template: `
1863 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1864 <title>film</title>
1865 <path d="M10.667 7.333h-5.333v-5.333h5.333zM5.333 8.667h5.333v5.333h-5.333zM4 4h-2v-1.213c0-0.217 0.087-0.413 0.231-0.556s0.339-0.231 0.556-0.231h1.213zM2 5.333h2v2h-2zM4 10.667h-2v-2h2zM2 12h2v2h-1.213c-0.217 0-0.413-0.087-0.556-0.231s-0.231-0.339-0.231-0.556zM14 10.667h-2v-2h2zM12 12h2v1.213c0 0.217-0.087 0.413-0.231 0.556s-0.339 0.231-0.556 0.231h-1.213zM14 4h-2v-2h1.213c0.217 0 0.413 0.087 0.556 0.231s0.231 0.339 0.231 0.556zM15.333 4.667v-1.88c0-0.585-0.238-1.116-0.621-1.499s-0.914-0.621-1.499-0.621h-10.427c-0.585 0-1.116 0.238-1.499 0.621s-0.621 0.914-0.621 1.499v10.427c0 0.585 0.238 1.116 0.621 1.499s0.914 0.621 1.499 0.621h10.427c0.585 0 1.116-0.238 1.499-0.621s0.621-0.914 0.621-1.499zM12 5.333h2v2h-2z"></path>
1866 </svg>
1867 `
1868 },
1869 {
1870 name: 'filter',
1871 template: `
1872 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1873 <title>filter</title>
1874 <path d="M13.23 2.667l-4.406 5.209c-0.098 0.115-0.157 0.266-0.157 0.431v4.615l-1.333-0.667v-3.948c0.001-0.151-0.051-0.305-0.157-0.431l-4.406-5.209zM14.667 1.333h-13.333c-0.368 0-0.667 0.299-0.667 0.667 0 0.165 0.059 0.315 0.157 0.431l5.176 6.12v4.116c0 0.259 0.148 0.485 0.369 0.596l2.667 1.333c0.329 0.165 0.73 0.031 0.895-0.298 0.048-0.097 0.071-0.201 0.070-0.298v-5.449l5.176-6.12c0.238-0.281 0.203-0.702-0.079-0.939-0.126-0.107-0.279-0.159-0.431-0.158z"></path>
1875 </svg>
1876 `
1877 },
1878 {
1879 name: 'flag',
1880 template: `
1881 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1882 <title>flag</title>
1883 <path d="M3.333 8.931v-6.573c0.293-0.145 0.91-0.359 2-0.359 0.854 0 1.574 0.281 2.419 0.619 0.821 0.329 1.768 0.715 2.914 0.715 0.865 0 1.519-0.117 2-0.265v6.573c-0.293 0.145-0.91 0.359-2 0.359-0.854 0-1.574-0.281-2.419-0.619-0.821-0.329-1.768-0.715-2.914-0.715-0.865 0-1.519 0.117-2 0.265zM3.333 14.667v-4.308c0.293-0.145 0.91-0.359 2-0.359 0.854 0 1.574 0.281 2.419 0.619 0.821 0.329 1.768 0.715 2.914 0.715 2.165 0 3.005-0.729 3.138-0.862 0.13-0.13 0.195-0.301 0.195-0.471v-8c0-0.368-0.299-0.667-0.667-0.667-0.177 0-0.337 0.069-0.457 0.181-0.064 0.052-0.656 0.485-2.21 0.485-0.854 0-1.574-0.281-2.419-0.619-0.821-0.329-1.768-0.715-2.914-0.715-2.165 0-3.005 0.729-3.138 0.862-0.13 0.13-0.195 0.301-0.195 0.471v12.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667z"></path>
1884 </svg>
1885 `
1886 },
1887 {
1888 name: 'folder-minus',
1889 template: `
1890 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1891 <title>folder-minus</title>
1892 <path d="M15.333 12.667v-7.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-5.643l-1.135-1.703c-0.121-0.18-0.324-0.297-0.555-0.297h-3.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h10.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414zM14 12.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-10.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h2.977l1.135 1.703c0.128 0.191 0.337 0.295 0.555 0.297h6c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471zM6 10h4c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-4c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
1893 </svg>
1894 `
1895 },
1896 {
1897 name: 'folder-plus',
1898 template: `
1899 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1900 <title>folder-plus</title>
1901 <path d="M15.333 12.667v-7.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-5.643l-1.135-1.703c-0.121-0.18-0.324-0.297-0.555-0.297h-3.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h10.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414zM14 12.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-10.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h2.977l1.135 1.703c0.128 0.191 0.337 0.295 0.555 0.297h6c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471zM6 10h1.333v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-1.333v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v1.333h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
1902 </svg>
1903 `
1904 },
1905 {
1906 name: 'folder',
1907 template: `
1908 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1909 <title>folder</title>
1910 <path d="M15.333 12.667v-7.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-5.643l-1.135-1.703c-0.121-0.18-0.324-0.297-0.555-0.297h-3.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h10.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414zM14 12.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-10.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h2.977l1.135 1.703c0.128 0.191 0.337 0.295 0.555 0.297h6c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471z"></path>
1911 </svg>
1912 `
1913 },
1914 {
1915 name: 'framer',
1916 template: `
1917 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1918 <title>framer</title>
1919 <path d="M7.333 11.333v2.391l-2.391-2.391zM8 11.333h0.667v-0.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667-0.299-0.667-0.667-0.667-0.667 0.299-0.667 0.667v0.667zM4 10.391v-0.391h-0.667c-0.091 0-0.177 0.018-0.255 0.051s-0.152 0.081-0.216 0.145-0.112 0.137-0.145 0.216c-0.033 0.079-0.051 0.165-0.051 0.255 0 0.368 0.299 0.667 0.667 0.667h1.609zM8.276 5.333l-3.333-3.333h7.057v3.333z"></path>
1920 </svg>
1921 `
1922 },
1923 {
1924 name: 'frown',
1925 template: `
1926 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1927 <title>frown</title>
1928 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM11.2 10.267c0 0-0.087-0.115-0.221-0.255-0.097-0.102-0.225-0.227-0.385-0.36-0.225-0.187-0.515-0.393-0.865-0.569-0.47-0.235-1.053-0.416-1.73-0.416s-1.26 0.181-1.73 0.416c-0.35 0.175-0.64 0.381-0.865 0.569-0.159 0.133-0.288 0.258-0.385 0.36-0.133 0.14-0.221 0.255-0.221 0.255-0.221 0.295-0.161 0.713 0.133 0.933s0.713 0.161 0.933-0.133l0.121-0.137c0.067-0.070 0.158-0.159 0.272-0.255 0.162-0.135 0.366-0.279 0.607-0.4 0.32-0.159 0.7-0.275 1.134-0.275s0.814 0.115 1.134 0.275c0.24 0.12 0.445 0.265 0.607 0.4 0.114 0.095 0.205 0.185 0.272 0.255l0.121 0.137c0.221 0.295 0.639 0.354 0.933 0.133s0.354-0.639 0.133-0.933z"></path>
1929 </svg>
1930 `
1931 },
1932 {
1933 name: 'gift',
1934 template: `
1935 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1936 <title>gift</title>
1937 <path d="M7.333 8.667v5.333h-4v-5.333zM8.667 14v-5.333h4v5.333zM5 4c-0.276 0-0.525-0.111-0.707-0.293s-0.293-0.431-0.293-0.707 0.111-0.525 0.293-0.707 0.431-0.293 0.707-0.293c0.419 0 0.761 0.149 1.056 0.391 0.251 0.205 0.467 0.479 0.651 0.785 0.161 0.267 0.289 0.547 0.387 0.802zM8.897 4c0.107-0.277 0.235-0.557 0.395-0.825 0.183-0.306 0.401-0.579 0.651-0.785 0.295-0.242 0.637-0.391 1.057-0.391 0.276 0 0.525 0.111 0.707 0.293s0.293 0.431 0.293 0.707-0.111 0.525-0.293 0.707-0.431 0.293-0.707 0.293zM7.333 5.333v2h-5.333v-2h3zM13.109 4c0.144-0.303 0.225-0.642 0.225-1 0-0.644-0.262-1.229-0.683-1.65s-1.006-0.683-1.65-0.683c-0.773 0-1.406 0.287-1.901 0.693-0.402 0.329-0.712 0.735-0.949 1.129-0.053 0.089-0.103 0.177-0.15 0.265-0.047-0.088-0.097-0.177-0.15-0.265-0.237-0.394-0.547-0.8-0.949-1.129-0.495-0.406-1.128-0.693-1.901-0.693-0.644 0-1.229 0.262-1.65 0.683s-0.683 1.006-0.683 1.65c0 0.358 0.081 0.697 0.225 1h-1.558c-0.368 0-0.667 0.299-0.667 0.667v3.333c0 0.368 0.299 0.667 0.667 0.667h0.667v6c0 0.368 0.299 0.667 0.667 0.667h10.667c0.368 0 0.667-0.299 0.667-0.667v-6h0.667c0.368 0 0.667-0.299 0.667-0.667v-3.333c0-0.368-0.299-0.667-0.667-0.667zM8.667 5.333h5.333v2h-5.333z"></path>
1938 </svg>
1939 `
1940 },
1941 {
1942 name: 'git-branch',
1943 template: `
1944 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1945 <title>git-branch</title>
1946 <path d="M13.333 4c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943zM5.333 12c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943zM11.303 6.575c-0.133 1.243-0.693 2.358-1.531 3.197s-1.953 1.399-3.197 1.531c-0.123-0.457-0.365-0.865-0.689-1.189-0.331-0.331-0.751-0.576-1.219-0.697v-7.417c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v7.417c-0.469 0.121-0.888 0.366-1.219 0.697-0.482 0.482-0.781 1.15-0.781 1.886s0.299 1.404 0.781 1.885 1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781c0.337-0.337 0.585-0.765 0.703-1.245 1.606-0.141 3.049-0.851 4.125-1.927s1.786-2.519 1.927-4.125c0.479-0.118 0.907-0.366 1.245-0.703 0.482-0.481 0.781-1.149 0.781-1.885s-0.299-1.404-0.781-1.885-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885c0.324 0.324 0.732 0.565 1.189 0.689z"></path>
1947 </svg>
1948 `
1949 },
1950 {
1951 name: 'git-commit',
1952 template: `
1953 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1954 <title>git-commit</title>
1955 <path d="M10 8c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586-1.051-0.223-1.414-0.586-0.586-0.861-0.586-1.414 0.223-1.051 0.586-1.414 0.861-0.586 1.414-0.586 1.051 0.223 1.414 0.586 0.586 0.861 0.586 1.414zM11.34 8.667h3.967c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-3.967c-0.025 0-0.049 0.001-0.073 0.004-0.132-0.655-0.457-1.24-0.91-1.694-0.603-0.603-1.437-0.977-2.357-0.977s-1.755 0.374-2.357 0.976c-0.454 0.454-0.778 1.039-0.91 1.693-0.021-0.001-0.044-0.003-0.066-0.003h-3.967c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h3.967c0.022 0 0.045-0.001 0.066-0.003 0.132 0.655 0.457 1.24 0.91 1.693 0.603 0.603 1.437 0.977 2.357 0.977s1.755-0.374 2.357-0.976c0.454-0.454 0.778-1.039 0.91-1.694 0.024 0.003 0.048 0.004 0.073 0.004z"></path>
1956 </svg>
1957 `
1958 },
1959 {
1960 name: 'git-merge',
1961 template: `
1962 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1963 <title>git-merge</title>
1964 <path d="M13.333 12c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943zM5.333 4c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943zM4.667 14v-3.999c0.189 0.253 0.397 0.491 0.619 0.713 1.076 1.076 2.519 1.786 4.125 1.927 0.118 0.479 0.366 0.907 0.703 1.245 0.481 0.482 1.149 0.781 1.885 0.781s1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885-0.299-1.404-0.781-1.885-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781c-0.324 0.324-0.565 0.732-0.689 1.189-1.243-0.133-2.358-0.693-3.197-1.531s-1.399-1.953-1.531-3.197c0.455-0.124 0.863-0.366 1.187-0.69 0.482-0.481 0.781-1.149 0.781-1.885s-0.299-1.404-0.781-1.885-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885c0.331 0.331 0.75 0.577 1.219 0.697v7.417c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667z"></path>
1965 </svg>
1966 `
1967 },
1968 {
1969 name: 'git-pull-request',
1970 template: `
1971 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1972 <title>git-pull-request</title>
1973 <path d="M13.333 12c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943zM5.333 4c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943zM8.667 4.667h2c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v4.084c-0.469 0.121-0.888 0.366-1.219 0.697-0.482 0.482-0.781 1.15-0.781 1.886s0.299 1.404 0.781 1.885 1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885-0.299-1.404-0.781-1.885c-0.331-0.331-0.75-0.576-1.219-0.697v-4.085c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-2c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM3.333 6.583v7.417c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-7.417c0.469-0.121 0.888-0.366 1.219-0.697 0.482-0.482 0.781-1.15 0.781-1.886s-0.299-1.404-0.781-1.885-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885c0.331 0.331 0.75 0.577 1.219 0.697z"></path>
1974 </svg>
1975 `
1976 },
1977 {
1978 name: 'github',
1979 template: `
1980 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1981 <title>github</title>
1982 <path d="M5.333 12.149c-0.577 0.117-0.969 0.081-1.247-0.007-0.154-0.049-0.287-0.117-0.409-0.201-0.274-0.189-0.485-0.45-0.746-0.781-0.237-0.301-0.567-0.738-1.034-0.984-0.123-0.065-0.257-0.118-0.403-0.155-0.357-0.089-0.719 0.128-0.809 0.485s0.128 0.719 0.485 0.809l0.103 0.040c0.168 0.089 0.325 0.269 0.609 0.631 0.244 0.309 0.571 0.732 1.035 1.053 0.221 0.153 0.474 0.284 0.766 0.376 0.475 0.15 1.017 0.187 1.649 0.090l-0.001 1.163c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2.58c0-0.014-0.001-0.030-0.001-0.046-0.004-0.056-0.005-0.112-0.003-0.167 0.013-0.379 0.161-0.751 0.443-1.043 0.097-0.099 0.164-0.231 0.183-0.381 0.045-0.365-0.214-0.699-0.579-0.744-0.227-0.028-0.451-0.063-0.671-0.106-0.527-0.104-1.012-0.257-1.431-0.489-0.879-0.486-1.607-1.396-1.607-3.414-0.005-0.738 0.266-1.479 0.816-2.056 0.171-0.183 0.233-0.448 0.142-0.693-0.187-0.499-0.227-1.053-0.094-1.595 0.327 0.071 0.903 0.277 1.765 0.855 0.157 0.105 0.355 0.143 0.551 0.088 1.331-0.371 2.828-0.401 4.313 0.001 0.181 0.049 0.379 0.022 0.545-0.090 0.862-0.577 1.437-0.783 1.765-0.855 0.126 0.511 0.105 1.063-0.094 1.595-0.086 0.235-0.039 0.503 0.142 0.693 0.505 0.53 0.816 1.248 0.816 2.040 0 2.050-0.743 2.963-1.63 3.442-0.415 0.224-0.895 0.37-1.415 0.467-0.215 0.040-0.434 0.071-0.655 0.095-0.14 0.015-0.279 0.076-0.389 0.183-0.265 0.256-0.272 0.678-0.016 0.943 0.045 0.046 0.087 0.095 0.125 0.146 0.227 0.299 0.348 0.677 0.317 1.079 0 0.016-0.001 0.034-0.002 0.052v2.58c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2.528c0.035-0.456-0.037-0.895-0.195-1.295 0.518-0.114 1.042-0.285 1.531-0.549 1.389-0.749 2.331-2.161 2.331-4.615 0-1.002-0.344-1.925-0.919-2.654 0.237-0.897 0.151-1.817-0.195-2.622-0.081-0.189-0.239-0.321-0.423-0.376-0.238-0.071-1.155-0.206-2.915 0.908-1.515-0.361-3.038-0.339-4.431-0.001-1.759-1.113-2.675-0.977-2.913-0.907-0.197 0.059-0.347 0.2-0.423 0.377-0.369 0.861-0.416 1.781-0.195 2.621-0.62 0.785-0.925 1.734-0.919 2.678 0 2.415 0.926 3.815 2.294 4.573 0.501 0.277 1.040 0.457 1.571 0.578-0.123 0.312-0.191 0.641-0.203 0.971-0.003 0.094-0.002 0.188 0.003 0.282z"></path>
1983 </svg>
1984 `
1985 },
1986 {
1987 name: 'gitlab',
1988 template: `
1989 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1990 <title>gitlab</title>
1991 <path d="M15.492 10.133c0.174-0.113 0.328-0.297 0.423-0.509 0.115-0.257 0.143-0.554 0.050-0.87l-0.844-2.499-1.621-4.989c-0.045-0.153-0.13-0.295-0.265-0.425-0.177-0.161-0.402-0.245-0.627-0.248-0.234-0.004-0.471 0.079-0.651 0.243-0.11 0.098-0.197 0.223-0.252 0.365-0.004 0.010-0.008 0.022-0.012 0.035l-1.478 4.545h-4.431l-1.471-4.515c-0.045-0.153-0.13-0.295-0.265-0.425-0.177-0.161-0.401-0.245-0.627-0.248-0.234-0.004-0.471 0.079-0.651 0.243-0.111 0.097-0.197 0.223-0.253 0.364-0.004 0.011-0.008 0.023-0.012 0.035l-1.627 5.008-0.813 2.52c-0.071 0.219-0.078 0.451-0.025 0.669 0.065 0.271 0.224 0.522 0.468 0.701l7.1 5.16c0.231 0.165 0.545 0.173 0.784 0zM14.669 9.083l-6.669 4.847-6.643-4.828 2.048-6.32 1.261 3.872c0.091 0.28 0.35 0.458 0.634 0.46h5.4c0.295 0 0.545-0.191 0.634-0.461l1.257-3.869 1.261 3.883z"></path>
1992 </svg>
1993 `
1994 },
1995 {
1996 name: 'globe',
1997 template: `
1998 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
1999 <title>globe</title>
2000 <path d="M11.301 7.333c-0.143-1.793-0.735-3.569-1.783-5.14 1.047 0.273 1.982 0.821 2.725 1.564 0.939 0.939 1.567 2.185 1.721 3.576zM9.519 13.806c0.989-1.484 1.624-3.235 1.779-5.139h2.665c-0.153 1.391-0.782 2.637-1.721 3.576-0.742 0.742-1.677 1.291-2.723 1.563zM4.699 8.667c0.143 1.793 0.735 3.569 1.783 5.14-1.047-0.273-1.982-0.821-2.725-1.564-0.939-0.939-1.567-2.185-1.721-3.576zM6.481 2.194c-0.988 1.484-1.624 3.235-1.779 5.139h-2.665c0.153-1.391 0.782-2.637 1.721-3.576 0.743-0.742 1.677-1.291 2.723-1.563zM7.998 0.667c-2.024 0.001-3.857 0.822-5.183 2.148s-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185c1.325 1.326 3.159 2.147 5.183 2.148 0.001 0 0.002 0 0.003 0s0.001 0 0.002 0c2.024-0.001 3.857-0.822 5.183-2.148s2.148-3.161 2.148-5.185-0.821-3.859-2.148-5.185c-1.325-1.326-3.159-2.147-5.183-2.148-0.001 0-0.002 0-0.003 0s-0.001 0-0.002 0zM9.964 8.667c-0.168 1.859-0.877 3.573-1.963 4.967-1.153-1.481-1.804-3.212-1.963-4.967zM7.999 2.366c1.153 1.481 1.804 3.212 1.963 4.967h-3.927c0.168-1.859 0.877-3.573 1.963-4.967z"></path>
2001 </svg>
2002 `
2003 },
2004 {
2005 name: 'grid',
2006 template: `
2007 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2008 <title>grid</title>
2009 <path d="M2 1.333c-0.368 0-0.667 0.299-0.667 0.667v4.667c0 0.368 0.299 0.667 0.667 0.667h4.667c0.368 0 0.667-0.299 0.667-0.667v-4.667c0-0.368-0.299-0.667-0.667-0.667zM2.667 2.667h3.333v3.333h-3.333zM9.333 1.333c-0.368 0-0.667 0.299-0.667 0.667v4.667c0 0.368 0.299 0.667 0.667 0.667h4.667c0.368 0 0.667-0.299 0.667-0.667v-4.667c0-0.368-0.299-0.667-0.667-0.667zM10 2.667h3.333v3.333h-3.333zM9.333 8.667c-0.368 0-0.667 0.299-0.667 0.667v4.667c0 0.368 0.299 0.667 0.667 0.667h4.667c0.368 0 0.667-0.299 0.667-0.667v-4.667c0-0.368-0.299-0.667-0.667-0.667zM10 10h3.333v3.333h-3.333zM2 8.667c-0.368 0-0.667 0.299-0.667 0.667v4.667c0 0.368 0.299 0.667 0.667 0.667h4.667c0.368 0 0.667-0.299 0.667-0.667v-4.667c0-0.368-0.299-0.667-0.667-0.667zM2.667 10h3.333v3.333h-3.333z"></path>
2010 </svg>
2011 `
2012 },
2013 {
2014 name: 'hard-drive',
2015 template: `
2016 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2017 <title>hard-drive</title>
2018 <path d="M14 8.667v3.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-10.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-3.333zM4.229 3.705c0.044-0.087 0.107-0.164 0.181-0.225 0.115-0.093 0.258-0.147 0.416-0.147h6.342c0.1 0.001 0.197 0.023 0.284 0.063 0.134 0.061 0.247 0.166 0.318 0.309l1.817 3.628h-11.175zM3.037 3.108l-2.294 4.581c-0.021 0.039-0.037 0.081-0.050 0.125-0.019 0.063-0.027 0.125-0.027 0.186v4c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h10.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-4c0-0.101-0.022-0.195-0.061-0.278-0.003-0.007-0.007-0.014-0.010-0.021l-0.006-0.012-2.294-4.581c-0.21-0.423-0.553-0.741-0.955-0.925-0.259-0.118-0.541-0.181-0.829-0.183h-6.351c-0.474 0-0.911 0.166-1.255 0.445-0.221 0.179-0.403 0.404-0.534 0.663zM4.667 10.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667zM7.333 10.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
2019 </svg>
2020 `
2021 },
2022 {
2023 name: 'hash',
2024 template: `
2025 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2026 <title>hash</title>
2027 <path d="M9.477 6.667l-0.296 2.667h-2.659l0.296-2.667zM10.004 1.927l-0.379 3.407h-2.659l0.362-3.26c0.041-0.366-0.223-0.695-0.589-0.736s-0.695 0.223-0.736 0.589l-0.379 3.407h-2.959c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h2.811l-0.296 2.667h-2.515c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h2.366l-0.362 3.26c-0.041 0.366 0.223 0.695 0.589 0.736s0.695-0.223 0.736-0.589l0.379-3.407h2.659l-0.362 3.26c-0.041 0.366 0.223 0.695 0.589 0.736s0.695-0.223 0.736-0.589l0.379-3.407h2.959c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2.811l0.296-2.667h2.515c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2.366l0.362-3.26c0.041-0.366-0.223-0.695-0.589-0.736s-0.695 0.223-0.736 0.589z"></path>
2028 </svg>
2029 `
2030 },
2031 {
2032 name: 'headphones',
2033 template: `
2034 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2035 <title>headphones</title>
2036 <path d="M13.333 12.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-0.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-2c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h1.333v2zM2.667 12.667v-2.667h1.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v2c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-0.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471zM1.333 12.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h0.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-2c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-1.333v-0.667c0-1.473 0.596-2.805 1.562-3.771s2.299-1.562 3.771-1.562 2.805 0.596 3.771 1.562 1.562 2.299 1.562 3.771v0.667h-1.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v2c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h0.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-4.667c0-1.841-0.747-3.509-1.953-4.714s-2.873-1.953-4.714-1.953-3.509 0.747-4.714 1.953-1.953 2.873-1.953 4.714v4z"></path>
2037 </svg>
2038 `
2039 },
2040 {
2041 name: 'heart',
2042 template: `
2043 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2044 <title>heart</title>
2045 <path d="M13.422 3.545c0.587 0.587 0.879 1.354 0.879 2.123s-0.293 1.535-0.879 2.121l-5.422 5.422-5.422-5.422c-0.586-0.586-0.879-1.353-0.879-2.122s0.293-1.536 0.879-2.122 1.353-0.879 2.122-0.879 1.536 0.293 2.122 0.879l0.707 0.707c0.261 0.261 0.683 0.261 0.943 0l0.708-0.708c0.586-0.586 1.353-0.879 2.121-0.878s1.535 0.293 2.121 0.879zM14.365 2.602c-0.846-0.846-1.956-1.269-3.064-1.27s-2.218 0.423-3.065 1.269l-0.236 0.237-0.235-0.235c-0.846-0.846-1.957-1.269-3.065-1.269s-2.219 0.423-3.065 1.269-1.269 1.957-1.269 3.065 0.423 2.219 1.269 3.065l5.893 5.893c0.261 0.261 0.683 0.261 0.943 0l5.893-5.893c0.846-0.846 1.269-1.956 1.27-3.064s-0.423-2.218-1.27-3.065z"></path>
2046 </svg>
2047 `
2048 },
2049 {
2050 name: 'help-circle',
2051 template: `
2052 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2053 <title>help-circle</title>
2054 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM6.689 6.221c0.122-0.347 0.373-0.612 0.681-0.76s0.671-0.178 1.019-0.055c0.305 0.107 0.546 0.313 0.7 0.573 0.122 0.205 0.19 0.443 0.191 0.691 0 0.103-0.026 0.206-0.078 0.309-0.053 0.107-0.135 0.217-0.245 0.327-0.473 0.473-1.221 0.728-1.221 0.728-0.349 0.117-0.538 0.494-0.421 0.843s0.494 0.538 0.843 0.421c0 0 1.029-0.337 1.742-1.050 0.186-0.186 0.363-0.409 0.495-0.673 0.133-0.267 0.219-0.572 0.219-0.913-0.003-0.487-0.136-0.958-0.378-1.366-0.309-0.519-0.793-0.935-1.403-1.149-0.695-0.244-1.423-0.183-2.038 0.111s-1.119 0.825-1.363 1.52c-0.123 0.347 0.060 0.728 0.407 0.85s0.728-0.061 0.85-0.407zM8.667 11.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
2055 </svg>
2056 `
2057 },
2058 {
2059 name: 'hexagon',
2060 template: `
2061 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2062 <title>hexagon</title>
2063 <path d="M13.333 10.667c-0.001 0.081-0.017 0.164-0.047 0.241-0.053 0.137-0.15 0.256-0.284 0.333l-4.666 2.666c-0.075 0.043-0.155 0.070-0.237 0.083-0.145 0.023-0.297-0.002-0.436-0.083l-4.661-2.663c-0.074-0.043-0.138-0.099-0.19-0.163-0.093-0.115-0.147-0.258-0.147-0.415v-5.329c0.001-0.085 0.017-0.169 0.047-0.246 0.053-0.137 0.15-0.256 0.284-0.333l4.666-2.666c0.075-0.043 0.155-0.070 0.237-0.083 0.145-0.023 0.297 0.002 0.436 0.083l4.661 2.663c0.074 0.043 0.138 0.099 0.19 0.163 0.093 0.115 0.147 0.258 0.147 0.415zM14.667 10.667v-5.333c-0.001-0.473-0.165-0.909-0.443-1.252-0.153-0.191-0.341-0.352-0.554-0.477l-4.673-2.67c-0.407-0.235-0.867-0.31-1.302-0.243-0.243 0.038-0.477 0.119-0.692 0.242l-4.667 2.667c-0.412 0.237-0.707 0.598-0.866 1.009-0.089 0.228-0.135 0.471-0.137 0.718v5.338c0.001 0.473 0.165 0.909 0.443 1.252 0.153 0.191 0.341 0.352 0.554 0.477l4.673 2.67c0.407 0.235 0.867 0.31 1.302 0.243 0.243-0.038 0.477-0.119 0.692-0.242l4.667-2.667c0.412-0.238 0.707-0.599 0.866-1.009 0.089-0.228 0.135-0.471 0.137-0.723z"></path>
2064 </svg>
2065 `
2066 },
2067 {
2068 name: 'home',
2069 template: `
2070 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2071 <title>home</title>
2072 <path d="M1.591 5.474c-0.157 0.123-0.257 0.313-0.257 0.526v7.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-7.333c-0.001-0.2-0.089-0.395-0.257-0.526l-6-4.667c-0.239-0.183-0.574-0.19-0.819 0zM10.667 14v-6c0-0.368-0.299-0.667-0.667-0.667h-4c-0.368 0-0.667 0.299-0.667 0.667v6h-2c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-7.007l5.333-4.148 5.333 4.148v7.007c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195zM6.667 14v-5.333h2.667v5.333z"></path>
2073 </svg>
2074 `
2075 },
2076 {
2077 name: 'image',
2078 template: `
2079 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2080 <title>image</title>
2081 <path d="M3.333 1.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-9.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM7.333 5.667c0-0.46-0.187-0.877-0.488-1.179s-0.719-0.488-1.179-0.488-0.877 0.187-1.179 0.488-0.488 0.719-0.488 1.179 0.187 0.877 0.488 1.179 0.719 0.488 1.179 0.488 0.877-0.187 1.179-0.488 0.488-0.719 0.488-1.179zM6 5.667c0 0.092-0.037 0.175-0.097 0.236s-0.144 0.097-0.236 0.097-0.175-0.037-0.236-0.097-0.097-0.144-0.097-0.236 0.037-0.175 0.097-0.236 0.144-0.097 0.236-0.097 0.175 0.037 0.236 0.097 0.097 0.144 0.097 0.236zM4.943 13.333l5.724-5.724 2.667 2.667v2.391c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195zM13.333 8.391l-2.195-2.195c-0.261-0.261-0.683-0.261-0.943 0l-7.096 7.096c-0.090-0.033-0.17-0.086-0.237-0.153-0.121-0.121-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h9.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471z"></path>
2082 </svg>
2083 `
2084 },
2085 {
2086 name: 'inbox',
2087 template: `
2088 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2089 <title>inbox</title>
2090 <path d="M14 8.667v3.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-10.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-3.333h2.977l1.135 1.703c0.121 0.18 0.324 0.297 0.555 0.297h2.667c0.217-0.001 0.427-0.105 0.555-0.297l1.135-1.703zM4.229 3.705c0.044-0.087 0.107-0.164 0.181-0.225 0.115-0.093 0.258-0.147 0.416-0.147h6.342c0.1 0.001 0.197 0.023 0.284 0.063 0.134 0.061 0.247 0.166 0.318 0.309l1.817 3.628h-2.921c-0.231 0-0.433 0.117-0.555 0.297l-1.135 1.703h-1.953l-1.135-1.703c-0.128-0.191-0.337-0.295-0.555-0.297h-2.921zM3.037 3.108l-2.294 4.581c-0.021 0.039-0.037 0.081-0.050 0.125-0.019 0.063-0.027 0.125-0.027 0.186v4c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h10.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-4c0-0.101-0.022-0.195-0.061-0.278-0.003-0.007-0.007-0.014-0.010-0.021l-0.006-0.012-2.294-4.581c-0.21-0.423-0.553-0.741-0.955-0.925-0.259-0.118-0.541-0.181-0.829-0.183h-6.351c-0.474 0-0.911 0.166-1.255 0.445-0.221 0.179-0.403 0.404-0.534 0.663z"></path>
2091 </svg>
2092 `
2093 },
2094 {
2095 name: 'info',
2096 template: `
2097 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2098 <title>info</title>
2099 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM8.667 10.667v-2.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v2.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM8.667 5.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
2100 </svg>
2101 `
2102 },
2103 {
2104 name: 'instagram',
2105 template: `
2106 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2107 <title>instagram</title>
2108 <path d="M4.667 0.667c-1.105 0-2.105 0.449-2.829 1.171s-1.171 1.724-1.171 2.829v6.667c0 1.105 0.449 2.105 1.171 2.829s1.724 1.171 2.829 1.171h6.667c1.105 0 2.105-0.449 2.829-1.171s1.171-1.724 1.171-2.829v-6.667c0-1.105-0.449-2.105-1.171-2.829s-1.724-1.171-2.829-1.171zM4.667 2h6.667c0.737 0 1.402 0.298 1.885 0.781s0.781 1.149 0.781 1.885v6.667c0 0.737-0.298 1.402-0.781 1.885s-1.149 0.781-1.885 0.781h-6.667c-0.737 0-1.402-0.298-1.885-0.781s-0.781-1.149-0.781-1.885v-6.667c0-0.737 0.298-1.402 0.781-1.885s1.149-0.781 1.885-0.781zM11.326 7.482c-0.1-0.648-0.381-1.238-0.796-1.711-0.503-0.574-1.203-0.977-2.006-1.096-0.309-0.049-0.647-0.051-0.985-0.001-0.911 0.135-1.681 0.627-2.188 1.311s-0.755 1.565-0.62 2.475 0.627 1.681 1.311 2.188 1.565 0.755 2.475 0.62 1.681-0.627 2.188-1.311 0.755-1.565 0.62-2.475zM10.007 7.678c0.081 0.547-0.067 1.073-0.372 1.485s-0.767 0.706-1.313 0.787-1.073-0.067-1.485-0.372-0.706-0.767-0.787-1.313 0.067-1.073 0.372-1.485 0.767-0.706 1.313-0.787c0.209-0.031 0.41-0.028 0.58-0.001 0.493 0.073 0.911 0.313 1.212 0.657 0.25 0.285 0.42 0.642 0.48 1.029zM12.333 4.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
2109 </svg>
2110 `
2111 },
2112 {
2113 name: 'italic',
2114 template: `
2115 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2116 <title>italic</title>
2117 <path d="M9.038 3.333l-3.5 9.333h-2.205c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h6c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2.371l3.5-9.333h2.205c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-6c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2118 </svg>
2119 `
2120 },
2121 {
2122 name: 'key',
2123 template: `
2124 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2125 <title>key</title>
2126 <path d="M12.667 3.609l1.057 1.057-1.391 1.391-1.057-1.057zM7.125 8.215c0.589 0.582 0.887 1.347 0.893 2.115s-0.283 1.537-0.865 2.127-1.347 0.888-2.115 0.893-1.537-0.283-2.127-0.865l-0.028-0.028c-0.583-0.59-0.87-1.359-0.865-2.127s0.303-1.533 0.893-2.115c0.586-0.578 1.349-0.866 2.113-0.864 0.761 0.001 1.519 0.29 2.101 0.864zM12.195 2.195c-0.261 0.261-0.261 0.683 0 0.943l0.471 0.471 0.943-0.943-0.471-0.471c-0.261-0.261-0.683-0.261-0.943 0zM12.195 2.195c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0 0.261-0.683 0-0.943-0.683-0.261-0.943 0l-2.333 2.333c-0.261 0.261-0.261 0.683 0 0.943l0.471 0.471 0.943-0.943-0.471-0.471c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943 0.683 0.261 0.943 0 0.261-0.683 0-0.943-0.683-0.261-0.943 0l-2.307 2.307c-0.753-0.544-1.641-0.817-2.529-0.819-1.101-0.002-2.205 0.413-3.051 1.249-0.851 0.84-1.282 1.947-1.29 3.055s0.409 2.221 1.249 3.073l0.041 0.041c0.851 0.84 1.965 1.256 3.073 1.249s2.215-0.438 3.055-1.29 1.256-1.965 1.249-3.073c-0.006-0.897-0.289-1.793-0.849-2.547l1.831-1.831 1.529 1.529c0.261 0.261 0.683 0.261 0.943 0l2.333-2.333c0.261-0.261 0.261-0.683 0-0.943l-1.529-1.529 0.862-0.862c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0z"></path>
2127 </svg>
2128 `
2129 },
2130 {
2131 name: 'layers',
2132 template: `
2133 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2134 <title>layers</title>
2135 <path d="M8 2.079l5.176 2.588-5.176 2.588-5.176-2.588zM7.702 0.737l-6.667 3.333c-0.329 0.165-0.463 0.565-0.298 0.894 0.067 0.135 0.174 0.237 0.298 0.298l6.667 3.333c0.195 0.097 0.413 0.091 0.596 0l6.667-3.333c0.329-0.165 0.463-0.565 0.298-0.895-0.067-0.135-0.175-0.237-0.298-0.298l-6.667-3.333c-0.195-0.097-0.413-0.091-0.596 0zM1.035 11.929l6.667 3.333c0.195 0.097 0.413 0.091 0.596 0l6.667-3.333c0.329-0.165 0.463-0.565 0.298-0.895s-0.565-0.463-0.895-0.298l-6.368 3.185-6.369-3.184c-0.329-0.165-0.73-0.031-0.895 0.298s-0.031 0.73 0.298 0.895zM1.035 8.596l6.667 3.333c0.195 0.097 0.413 0.091 0.596 0l6.667-3.333c0.329-0.165 0.463-0.565 0.298-0.895s-0.565-0.463-0.895-0.298l-6.368 3.185-6.369-3.184c-0.329-0.165-0.73-0.031-0.895 0.298s-0.031 0.73 0.298 0.895z"></path>
2136 </svg>
2137 `
2138 },
2139 {
2140 name: 'layout',
2141 template: `
2142 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2143 <title>layout</title>
2144 <path d="M3.333 1.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-9.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM13.333 5.333h-10.667v-2c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h9.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471zM5.333 6.667v6.667h-2c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-6zM6.667 13.333v-6.667h6.667v6c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195z"></path>
2145 </svg>
2146 `
2147 },
2148 {
2149 name: 'life-buoy',
2150 template: `
2151 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2152 <title>life-buoy</title>
2153 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM10 8c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586-1.051-0.223-1.414-0.586-0.586-0.861-0.586-1.414 0.223-1.051 0.586-1.414 0.861-0.586 1.414-0.586 1.051 0.223 1.414 0.586 0.586 0.861 0.586 1.414zM11.745 3.312l-1.907 1.907c0 0 0 0 0 0-0.527-0.349-1.159-0.552-1.839-0.552s-1.311 0.203-1.838 0.553l-1.907-1.907c1.026-0.822 2.328-1.313 3.745-1.313s2.719 0.491 3.745 1.312zM12.688 4.255c0.821 1.027 1.312 2.329 1.312 3.745s-0.491 2.719-1.312 3.745l-1.907-1.907c0.349-0.527 0.552-1.159 0.552-1.839s-0.203-1.311-0.553-1.838zM5.219 9.838l-1.907 1.907c-0.822-1.026-1.313-2.328-1.313-3.745s0.491-2.719 1.312-3.745l1.907 1.907c-0.349 0.527-0.552 1.159-0.552 1.839s0.203 1.311 0.553 1.838zM4.255 12.688l1.907-1.907c0.527 0.349 1.159 0.552 1.839 0.552s1.311-0.203 1.838-0.553l1.907 1.907c-1.026 0.822-2.328 1.313-3.745 1.313s-2.719-0.491-3.745-1.312z"></path>
2154 </svg>
2155 `
2156 },
2157 {
2158 name: 'link-2',
2159 template: `
2160 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2161 <title>link-2</title>
2162 <path d="M10 5.333h2c0.737 0 1.402 0.298 1.885 0.781s0.781 1.149 0.781 1.885-0.298 1.402-0.781 1.885-1.149 0.781-1.885 0.781h-2c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h2c1.105 0 2.105-0.449 2.829-1.171s1.171-1.724 1.171-2.829-0.449-2.105-1.171-2.829-1.724-1.171-2.829-1.171h-2c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM6 10.667h-2c-0.737 0-1.402-0.298-1.885-0.781s-0.781-1.149-0.781-1.885 0.298-1.402 0.781-1.885 1.149-0.781 1.885-0.781h2c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2c-1.105 0-2.105 0.449-2.829 1.171s-1.171 1.724-1.171 2.829 0.449 2.105 1.171 2.829 1.724 1.171 2.829 1.171h2c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM5.333 8.667h5.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-5.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2163 </svg>
2164 `
2165 },
2166 {
2167 name: 'link',
2168 template: `
2169 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2170 <title>link</title>
2171 <path d="M6.133 9.066c0.661 0.885 1.62 1.417 2.632 1.563s2.082-0.095 2.967-0.756c0.159-0.119 0.31-0.25 0.437-0.379l1.997-1.996c0.775-0.803 1.148-1.834 1.131-2.857s-0.426-2.041-1.221-2.807c-0.781-0.755-1.793-1.128-2.799-1.122-0.995 0.005-1.989 0.381-2.758 1.122l-1.154 1.147c-0.261 0.259-0.263 0.682-0.003 0.943s0.682 0.263 0.943 0.003l1.139-1.133c0.513-0.495 1.175-0.745 1.84-0.749 0.673-0.004 1.345 0.245 1.865 0.748 0.53 0.512 0.802 1.189 0.814 1.872s-0.237 1.369-0.74 1.891l-2.003 2.004c-0.076 0.077-0.175 0.165-0.285 0.247-0.59 0.441-1.301 0.601-1.978 0.504s-1.314-0.452-1.755-1.042c-0.221-0.295-0.638-0.355-0.933-0.135s-0.355 0.638-0.135 0.933zM9.867 6.934c-0.661-0.885-1.62-1.417-2.632-1.563s-2.083 0.095-2.967 0.756c-0.159 0.119-0.309 0.25-0.437 0.379l-1.997 1.996c-0.775 0.803-1.148 1.834-1.131 2.857s0.426 2.041 1.221 2.807c0.781 0.755 1.793 1.128 2.799 1.122 0.995-0.005 1.989-0.381 2.758-1.122l1.149-1.149c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-1.131 1.133c-0.513 0.495-1.175 0.745-1.84 0.749-0.673 0.004-1.345-0.245-1.865-0.748-0.53-0.512-0.802-1.189-0.814-1.872s0.237-1.369 0.74-1.891l2.003-2.004c0.076-0.077 0.175-0.165 0.285-0.247 0.59-0.441 1.301-0.601 1.978-0.504s1.314 0.452 1.755 1.042c0.221 0.295 0.638 0.355 0.933 0.135s0.355-0.638 0.135-0.933z"></path>
2172 </svg>
2173 `
2174 },
2175 {
2176 name: 'linkedin',
2177 template: `
2178 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2179 <title>linkedin</title>
2180 <path d="M10.667 4.667c-1.289 0-2.456 0.523-3.3 1.367s-1.367 2.011-1.367 3.3v4.667c0 0.368 0.299 0.667 0.667 0.667h2.667c0.368 0 0.667-0.299 0.667-0.667v-4.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195 0.35 0.074 0.471 0.195 0.195 0.287 0.195 0.471v4.667c0 0.368 0.299 0.667 0.667 0.667h2.667c0.368 0 0.667-0.299 0.667-0.667v-4.667c0-1.289-0.523-2.456-1.367-3.3s-2.011-1.367-3.3-1.367zM10.667 6c0.921 0 1.753 0.373 2.357 0.976s0.976 1.437 0.976 2.357v4h-1.333v-4c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586-1.053 0.225-1.414 0.586-0.586 0.862-0.586 1.414v4h-1.333v-4c0-0.921 0.373-1.753 0.976-2.357s1.437-0.976 2.357-0.976zM1.333 5.333c-0.368 0-0.667 0.299-0.667 0.667v8c0 0.368 0.299 0.667 0.667 0.667h2.667c0.368 0 0.667-0.299 0.667-0.667v-8c0-0.368-0.299-0.667-0.667-0.667zM2 6.667h1.333v6.667h-1.333zM4.667 2.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586-1.053 0.225-1.414 0.586-0.586 0.862-0.586 1.414 0.225 1.053 0.586 1.414 0.862 0.586 1.414 0.586 1.053-0.225 1.414-0.586 0.586-0.862 0.586-1.414zM3.333 2.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195-0.35-0.074-0.471-0.195-0.195-0.287-0.195-0.471 0.074-0.35 0.195-0.471 0.287-0.195 0.471-0.195 0.35 0.074 0.471 0.195 0.195 0.287 0.195 0.471z"></path>
2181 </svg>
2182 `
2183 },
2184 {
2185 name: 'list',
2186 template: `
2187 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2188 <title>list</title>
2189 <path d="M5.333 4.667h8.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-8.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM5.333 8.667h8.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-8.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM5.333 12.667h8.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-8.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM2.667 4c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667zM2.667 8c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667zM2.667 12c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
2190 </svg>
2191 `
2192 },
2193 {
2194 name: 'loader',
2195 template: `
2196 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2197 <title>loader</title>
2198 <path d="M7.333 1.333v2.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM7.333 12v2.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM2.815 3.758l1.887 1.887c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-1.887-1.887c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943zM10.355 11.298l1.887 1.887c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-1.887-1.887c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943zM1.333 8.667h2.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM12 8.667h2.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM3.758 13.185l1.887-1.887c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-1.887 1.887c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0zM11.298 5.645l1.887-1.887c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-1.887 1.887c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0z"></path>
2199 </svg>
2200 `
2201 },
2202 {
2203 name: 'lock',
2204 template: `
2205 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2206 <title>lock</title>
2207 <path d="M3.333 8h9.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v4.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-9.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-4.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM12 6.667v-2c0-1.105-0.449-2.105-1.171-2.829s-1.724-1.171-2.829-1.171-2.105 0.449-2.829 1.171-1.171 1.724-1.171 2.829v2h-0.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v4.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-4.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM5.333 6.667v-2c0-0.737 0.298-1.402 0.781-1.885s1.149-0.781 1.885-0.781 1.402 0.298 1.885 0.781 0.781 1.149 0.781 1.885v2z"></path>
2208 </svg>
2209 `
2210 },
2211 {
2212 name: 'log-in',
2213 template: `
2214 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2215 <title>log-in</title>
2216 <path d="M10 2.667h2.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v9.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-2.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h2.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-9.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-2.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM8.391 7.333h-6.391c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h6.391l-2.195 2.195c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l3.333-3.333c0.064-0.064 0.112-0.137 0.145-0.216s0.051-0.165 0.051-0.255c0-0.087-0.017-0.174-0.051-0.255-0.033-0.079-0.081-0.152-0.145-0.216l-3.333-3.333c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
2217 </svg>
2218 `
2219 },
2220 {
2221 name: 'log-out',
2222 template: `
2223 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2224 <title>log-out</title>
2225 <path d="M6 13.333h-2.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h2.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h2.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM12.391 7.333h-6.391c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h6.391l-2.195 2.195c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l3.333-3.333c0.064-0.064 0.112-0.137 0.145-0.216 0.1-0.241 0.052-0.53-0.145-0.727l-3.333-3.333c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
2226 </svg>
2227 `
2228 },
2229 {
2230 name: 'mail',
2231 template: `
2232 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2233 <title>mail</title>
2234 <path d="M2 5.281l5.618 3.933c0.227 0.157 0.53 0.164 0.765 0l5.617-3.933v6.719c0 0.181-0.073 0.347-0.197 0.47s-0.289 0.197-0.47 0.197h-10.667c-0.181 0-0.347-0.073-0.47-0.197s-0.197-0.289-0.197-0.47zM0.667 4.008v7.992c0 0.552 0.227 1.053 0.587 1.413s0.861 0.587 1.413 0.587h10.667c0.552 0 1.053-0.227 1.413-0.587s0.587-0.861 0.587-1.413v-7.992c0-0.007 0-0.013 0-0.020-0.003-0.547-0.229-1.043-0.587-1.401-0.361-0.36-0.861-0.587-1.413-0.587h-10.667c-0.552 0-1.053 0.227-1.413 0.587-0.358 0.358-0.583 0.854-0.587 1.402 0 0.003 0 0.007 0 0.011zM13.929 3.703l-5.929 4.15-5.929-4.15c0.032-0.064 0.075-0.122 0.125-0.173 0.123-0.123 0.289-0.197 0.471-0.197h10.667c0.181 0 0.347 0.073 0.47 0.197 0.051 0.051 0.093 0.109 0.125 0.173z"></path>
2235 </svg>
2236 `
2237 },
2238 {
2239 name: 'map-pin',
2240 template: `
2241 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2242 <title>map-pin</title>
2243 <path d="M14.667 6.667c0-1.841-0.747-3.509-1.953-4.714s-2.873-1.953-4.714-1.953-3.509 0.747-4.714 1.953-1.953 2.873-1.953 4.714c0 0.379 0.035 0.752 0.1 1.117 0.183 1.032 0.599 2.003 1.121 2.88 1.821 3.061 5.075 5.224 5.075 5.224 0.221 0.145 0.51 0.153 0.739 0 0 0 3.255-2.163 5.075-5.224 0.522-0.877 0.939-1.848 1.121-2.88 0.065-0.365 0.101-0.738 0.101-1.117zM13.333 6.667c0 0.296-0.027 0.591-0.079 0.885-0.147 0.833-0.491 1.652-0.955 2.431-1.301 2.187-3.444 3.901-4.299 4.533-0.856-0.632-2.998-2.346-4.299-4.533-0.463-0.779-0.807-1.597-0.955-2.431-0.052-0.294-0.079-0.589-0.079-0.885 0-1.473 0.596-2.805 1.562-3.771s2.299-1.562 3.771-1.562 2.805 0.596 3.771 1.562 1.562 2.299 1.562 3.771zM10.667 6.667c0-0.736-0.299-1.404-0.781-1.885s-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885 1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885zM9.333 6.667c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943z"></path>
2244 </svg>
2245 `
2246 },
2247 {
2248 name: 'map',
2249 template: `
2250 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2251 <title>map</title>
2252 <path d="M4.667 2.482v9.131l-3.333 1.905v-9.131zM11.333 13.518v-9.131l3.333-1.905v9.131zM10.357 15.257c0.055 0.029 0.113 0.050 0.176 0.063 0.044 0.009 0.089 0.014 0.134 0.014 0.115 0 0.229-0.031 0.331-0.088l0.010-0.006 4.657-2.661c0.214-0.122 0.335-0.345 0.336-0.579v-10.667c0-0.368-0.299-0.667-0.667-0.667-0.122 0-0.236 0.033-0.331 0.088l-4.357 2.489-5.002-2.501c-0.055-0.028-0.114-0.050-0.176-0.063-0.045-0.009-0.090-0.013-0.135-0.013-0.116 0-0.23 0.031-0.331 0.088l-0.010 0.005-4.657 2.661c-0.214 0.122-0.335 0.345-0.336 0.579v10.667c0 0.368 0.299 0.667 0.667 0.667 0.122 0 0.236-0.033 0.331-0.088l4.357-2.489zM10 4.412v9.176l-4-2v-9.176z"></path>
2253 </svg>
2254 `
2255 },
2256 {
2257 name: 'maximize-2',
2258 template: `
2259 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2260 <title>maximize-2</title>
2261 <path d="M12.391 2.667l-3.529 3.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l3.529-3.529v2.391c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-4c0-0.091-0.018-0.177-0.051-0.255s-0.081-0.152-0.144-0.215c-0.001-0.001-0.001-0.001-0.001-0.001-0.061-0.061-0.135-0.111-0.215-0.144-0.079-0.033-0.165-0.051-0.255-0.051h-4c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM3.609 13.333l3.529-3.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-3.529 3.529v-2.391c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v4c0 0.091 0.018 0.177 0.051 0.255s0.081 0.152 0.144 0.215c0.001 0.001 0.001 0.001 0.001 0.001 0.061 0.061 0.135 0.111 0.215 0.144 0.079 0.033 0.165 0.051 0.255 0.051h4c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
2262 </svg>
2263 `
2264 },
2265 {
2266 name: 'maximize',
2267 template: `
2268 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2269 <title>maximize</title>
2270 <path d="M5.333 1.333h-2c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v2c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h2c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM14.667 5.333v-2c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-2c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h2c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v2c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM10.667 14.667h2c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-2c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v2c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-2c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM1.333 10.667v2c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h2c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-2c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667z"></path>
2271 </svg>
2272 `
2273 },
2274 {
2275 name: 'meh',
2276 template: `
2277 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2278 <title>meh</title>
2279 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM5.333 10.667h5.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-5.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2280 </svg>
2281 `
2282 },
2283 {
2284 name: 'menu',
2285 template: `
2286 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2287 <title>menu</title>
2288 <path d="M2 8.667h12c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-12c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM2 4.667h12c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-12c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM2 12.667h12c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-12c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2289 </svg>
2290 `
2291 },
2292 {
2293 name: 'message-circle',
2294 template: `
2295 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2296 <title>message-circle</title>
2297 <path d="M14.667 7.665v-0.331c0-0.011-0.001-0.025-0.001-0.039-0.091-1.559-0.742-2.974-1.762-4.034-1.068-1.111-2.543-1.835-4.201-1.926-0.010-0.001-0.023-0.001-0.036-0.001h-0.326c-0.937-0.011-1.921 0.207-2.843 0.672-0.815 0.415-1.527 0.993-2.093 1.691-0.881 1.089-1.405 2.469-1.405 3.963-0.009 0.85 0.169 1.74 0.549 2.585l-1.181 3.545c-0.044 0.131-0.048 0.279 0 0.421 0.117 0.349 0.494 0.538 0.843 0.421l3.543-1.181c0.773 0.351 1.656 0.551 2.584 0.549 0.915-0.006 1.81-0.205 2.627-0.577 1.275-0.581 2.36-1.582 3.027-2.917 0.429-0.833 0.677-1.81 0.674-2.841zM13.333 7.669c0.002 0.817-0.195 1.583-0.526 2.226-0.534 1.068-1.388 1.856-2.395 2.315-0.647 0.295-1.357 0.453-2.084 0.458-0.814 0.002-1.581-0.195-2.223-0.526-0.166-0.086-0.352-0.095-0.517-0.040l-2.535 0.845 0.845-2.535c0.059-0.175 0.040-0.358-0.037-0.511-0.368-0.73-0.536-1.503-0.528-2.226 0.001-1.193 0.413-2.279 1.108-3.139 0.447-0.552 1.012-1.011 1.661-1.34 0.728-0.368 1.501-0.536 2.224-0.528h0.304c1.308 0.071 2.469 0.641 3.313 1.517 0.801 0.834 1.315 1.944 1.391 3.169z"></path>
2298 </svg>
2299 `
2300 },
2301 {
2302 name: 'message-square',
2303 template: `
2304 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2305 <title>message-square</title>
2306 <path d="M14.667 10v-6.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-9.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v10.667c0 0.171 0.065 0.341 0.195 0.471 0.261 0.261 0.683 0.261 0.943 0l2.471-2.471h7.724c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414zM13.333 10c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-8c-0.184 0-0.351 0.075-0.471 0.195l-1.529 1.529v-9.057c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h9.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471z"></path>
2307 </svg>
2308 `
2309 },
2310 {
2311 name: 'mic-off',
2312 template: `
2313 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2314 <title>mic-off</title>
2315 <path d="M8.344 9.287c-0.109 0.029-0.224 0.045-0.343 0.045-0.369 0-0.701-0.148-0.943-0.39s-0.391-0.573-0.391-0.941v-0.391zM10.667 6.227v-3.56c0.001-0.735-0.298-1.403-0.779-1.886s-1.149-0.782-1.885-0.783c-0.676-0.001-1.295 0.251-1.766 0.668-0.424 0.375-0.728 0.885-0.849 1.465-0.075 0.361 0.156 0.713 0.517 0.789s0.713-0.156 0.789-0.517c0.061-0.293 0.215-0.55 0.427-0.738 0.235-0.209 0.543-0.333 0.881-0.333 0.369 0.001 0.701 0.149 0.943 0.391s0.39 0.575 0.389 0.944v3.56c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM12 6.667v1.333c0 0.251-0.023 0.493-0.062 0.697-0.068 0.362 0.17 0.711 0.532 0.779s0.711-0.17 0.779-0.532c0.055-0.29 0.085-0.615 0.085-0.943v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM5.333 16h5.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2v-1.341c0.935-0.117 1.845-0.482 2.623-1.093l3.572 3.572c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-3.892-3.892c-0.030-0.053-0.067-0.102-0.113-0.146-0.042-0.041-0.088-0.075-0.137-0.103l-10.525-10.525c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l5.138 5.138v1.724c0.001 0.737 0.301 1.404 0.783 1.885s1.15 0.78 1.886 0.779c0.493-0.001 0.955-0.135 1.351-0.369l0.985 0.985c-0.639 0.462-1.385 0.712-2.141 0.749-0.063-0.019-0.129-0.029-0.197-0.029s-0.134 0.010-0.197 0.029c-0.945-0.046-1.875-0.425-2.603-1.138-0.769-0.753-1.169-1.738-1.199-2.737l-0.001-1.488c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667l0.003 1.528c0.040 1.329 0.574 2.645 1.599 3.649 0.865 0.849 1.949 1.342 3.065 1.482v1.341h-2c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2316 </svg>
2317 `
2318 },
2319 {
2320 name: 'mic',
2321 template: `
2322 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2323 <title>mic</title>
2324 <path d="M8 1.333c0.369 0 0.701 0.149 0.943 0.391s0.391 0.574 0.391 0.943v5.333c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943v-5.333c0-0.369 0.149-0.701 0.391-0.943s0.574-0.391 0.943-0.391zM8 0c-0.736 0-1.404 0.299-1.885 0.781s-0.781 1.149-0.781 1.885v5.333c0 0.736 0.299 1.404 0.781 1.885s1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885v-5.333c0-0.736-0.299-1.404-0.781-1.885s-1.149-0.781-1.885-0.781zM5.333 16h5.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2v-1.375c1.206-0.151 2.288-0.704 3.105-1.521 0.964-0.965 1.562-2.299 1.562-3.771v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v1.333c0 1.105-0.447 2.104-1.171 2.829s-1.724 1.171-2.829 1.171-2.104-0.447-2.829-1.171-1.171-1.724-1.171-2.829v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v1.333c0 1.473 0.598 2.807 1.562 3.771 0.817 0.817 1.898 1.37 3.105 1.521v1.375h-2c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2325 </svg>
2326 `
2327 },
2328 {
2329 name: 'minimize-2',
2330 template: `
2331 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2332 <title>minimize-2</title>
2333 <path d="M10.943 6l3.529-3.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-3.529 3.529v-2.391c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v4c0 0.091 0.018 0.177 0.051 0.255s0.081 0.152 0.144 0.215c0.001 0.001 0.001 0.001 0.001 0.001 0.061 0.061 0.135 0.111 0.215 0.144 0.079 0.033 0.165 0.051 0.255 0.051h4c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM2.471 14.471l3.529-3.529v2.391c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-4c0-0.091-0.018-0.177-0.051-0.255s-0.081-0.152-0.144-0.215c-0.001-0.001-0.001-0.001-0.001-0.001-0.061-0.061-0.135-0.111-0.215-0.144-0.079-0.033-0.165-0.051-0.255-0.051h-4c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h2.391l-3.529 3.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0z"></path>
2334 </svg>
2335 `
2336 },
2337 {
2338 name: 'minimize',
2339 template: `
2340 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2341 <title>minimize</title>
2342 <path d="M4.667 2v2c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-2c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h2c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-2c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM14 4.667h-2c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-2c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v2c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h2c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM11.333 14v-2c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h2c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v2c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM2 11.333h2c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v2c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-2c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2343 </svg>
2344 `
2345 },
2346 {
2347 name: 'minus-circle',
2348 template: `
2349 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2350 <title>minus-circle</title>
2351 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM5.333 8.667h5.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-5.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2352 </svg>
2353 `
2354 },
2355 {
2356 name: 'minus-square',
2357 template: `
2358 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2359 <title>minus-square</title>
2360 <path d="M3.333 1.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-9.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM3.333 2.667h9.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v9.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-9.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM5.333 8.667h5.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-5.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2361 </svg>
2362 `
2363 },
2364 {
2365 name: 'minus',
2366 template: `
2367 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2368 <title>minus</title>
2369 <path d="M3.333 8.667h9.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-9.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2370 </svg>
2371 `
2372 },
2373 {
2374 name: 'monitor',
2375 template: `
2376 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2377 <title>monitor</title>
2378 <path d="M8 10.667h-5.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-6.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h10.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v6.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195zM7.333 12v1.333h-2c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h5.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2v-1.333h4.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-6.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-10.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v6.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586z"></path>
2379 </svg>
2380 `
2381 },
2382 {
2383 name: 'moon',
2384 template: `
2385 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2386 <title>moon</title>
2387 <path d="M14.664 8.588c0.015-0.155-0.025-0.317-0.125-0.454-0.217-0.297-0.634-0.363-0.931-0.146-0.633 0.462-1.373 0.724-2.125 0.775-0.912 0.061-1.844-0.189-2.633-0.772-0.889-0.657-1.426-1.61-1.578-2.623s0.083-2.083 0.739-2.971c0.095-0.127 0.144-0.29 0.127-0.461-0.035-0.367-0.361-0.635-0.728-0.599-1.505 0.147-2.876 0.787-3.93 1.767-1.157 1.077-1.935 2.565-2.091 4.257-0.169 1.833 0.421 3.562 1.511 4.874s2.681 2.209 4.515 2.378 3.562-0.421 4.874-1.511 2.209-2.681 2.378-4.515zM13.045 9.783c-0.327 0.909-0.89 1.695-1.611 2.294-1.051 0.873-2.432 1.344-3.899 1.209s-2.739-0.852-3.611-1.903-1.344-2.432-1.209-3.899c0.125-1.355 0.745-2.543 1.671-3.404 0.521-0.485 1.14-0.867 1.821-1.115-0.304 0.843-0.385 1.737-0.256 2.599 0.202 1.349 0.92 2.623 2.104 3.498 1.053 0.778 2.299 1.112 3.515 1.030 0.501-0.033 0.997-0.138 1.473-0.31z"></path>
2388 </svg>
2389 `
2390 },
2391 {
2392 name: 'more-horizontal',
2393 template: `
2394 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2395 <title>more-horizontal</title>
2396 <path d="M9.333 8c0-0.368-0.15-0.702-0.391-0.943s-0.575-0.391-0.943-0.391-0.702 0.15-0.943 0.391-0.391 0.575-0.391 0.943 0.15 0.702 0.391 0.943 0.575 0.391 0.943 0.391 0.702-0.15 0.943-0.391 0.391-0.575 0.391-0.943zM14 8c0-0.368-0.15-0.702-0.391-0.943s-0.575-0.391-0.943-0.391-0.702 0.15-0.943 0.391-0.391 0.575-0.391 0.943 0.15 0.702 0.391 0.943 0.575 0.391 0.943 0.391 0.702-0.15 0.943-0.391 0.391-0.575 0.391-0.943zM4.667 8c0-0.368-0.15-0.702-0.391-0.943s-0.575-0.391-0.943-0.391-0.702 0.15-0.943 0.391-0.391 0.575-0.391 0.943 0.15 0.702 0.391 0.943 0.575 0.391 0.943 0.391 0.702-0.15 0.943-0.391 0.391-0.575 0.391-0.943z"></path>
2397 </svg>
2398 `
2399 },
2400 {
2401 name: 'more-vertical',
2402 template: `
2403 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2404 <title>more-vertical</title>
2405 <path d="M9.333 8c0-0.368-0.15-0.702-0.391-0.943s-0.575-0.391-0.943-0.391-0.702 0.15-0.943 0.391-0.391 0.575-0.391 0.943 0.15 0.702 0.391 0.943 0.575 0.391 0.943 0.391 0.702-0.15 0.943-0.391 0.391-0.575 0.391-0.943zM9.333 3.333c0-0.368-0.15-0.702-0.391-0.943s-0.575-0.391-0.943-0.391-0.702 0.15-0.943 0.391-0.391 0.575-0.391 0.943 0.15 0.702 0.391 0.943 0.575 0.391 0.943 0.391 0.702-0.15 0.943-0.391 0.391-0.575 0.391-0.943zM9.333 12.667c0-0.368-0.15-0.702-0.391-0.943s-0.575-0.391-0.943-0.391-0.702 0.15-0.943 0.391-0.391 0.575-0.391 0.943 0.15 0.702 0.391 0.943 0.575 0.391 0.943 0.391 0.702-0.15 0.943-0.391 0.391-0.575 0.391-0.943z"></path>
2406 </svg>
2407 `
2408 },
2409 {
2410 name: 'mouse-pointer',
2411 template: `
2412 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2413 <title>mouse-pointer</title>
2414 <path d="M3.238 3.238l8.189 3.412-3.255 1.105c-0.19 0.065-0.348 0.213-0.417 0.417l-1.105 3.255zM8.673 9.616l3.522 3.522c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-3.522-3.522 3.912-1.329c0.349-0.119 0.535-0.497 0.417-0.845-0.064-0.189-0.204-0.329-0.375-0.401l-11.313-4.713c-0.34-0.141-0.73 0.019-0.872 0.359-0.071 0.171-0.066 0.355 0 0.513l4.713 11.313c0.141 0.34 0.532 0.501 0.872 0.359 0.183-0.077 0.315-0.225 0.375-0.401z"></path>
2415 </svg>
2416 `
2417 },
2418 {
2419 name: 'move',
2420 template: `
2421 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2422 <title>move</title>
2423 <path d="M7.333 2.943v4.391h-4.391l0.862-0.862c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-2 2c-0.064 0.064-0.112 0.137-0.145 0.216-0.034 0.081-0.051 0.169-0.051 0.255 0 0.171 0.065 0.341 0.195 0.471l2 2c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-0.862-0.862h4.391v4.391l-0.862-0.862c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l2 2c0.064 0.064 0.137 0.112 0.216 0.145s0.165 0.051 0.255 0.051c0.087 0 0.174-0.017 0.255-0.051 0.079-0.033 0.152-0.081 0.216-0.145l2-2c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-0.862 0.862v-4.391h4.391l-0.862 0.862c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l2-2c0.064-0.064 0.112-0.137 0.145-0.216 0.1-0.241 0.052-0.53-0.145-0.727l-2-2c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l0.862 0.862h-4.391v-4.391l0.862 0.862c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-2-2c-0.064-0.064-0.137-0.112-0.216-0.145s-0.165-0.051-0.255-0.051c-0.087 0-0.174 0.017-0.255 0.051-0.079 0.033-0.152 0.081-0.216 0.145l-2 2c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0z"></path>
2424 </svg>
2425 `
2426 },
2427 {
2428 name: 'music',
2429 template: `
2430 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2431 <title>music</title>
2432 <path d="M5.333 12c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943zM14.667 10.667v-8.667c0-0.033-0.003-0.071-0.009-0.109-0.061-0.363-0.404-0.609-0.767-0.548l-8 1.333c-0.317 0.054-0.557 0.328-0.557 0.657v6.357c-0.392-0.227-0.848-0.357-1.333-0.357-0.736 0-1.404 0.299-1.885 0.781s-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885 1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885v-8.102l6.667-1.111v5.57c-0.392-0.227-0.848-0.357-1.333-0.357-0.736 0-1.404 0.299-1.885 0.781s-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885 1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885zM13.333 10.667c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943z"></path>
2433 </svg>
2434 `
2435 },
2436 {
2437 name: 'navigation-2',
2438 template: `
2439 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2440 <title>navigation-2</title>
2441 <path d="M8.625 1.103c-0.066-0.177-0.205-0.325-0.395-0.395-0.345-0.127-0.729 0.049-0.856 0.395l-4.667 12.667c-0.065 0.179-0.055 0.384 0.047 0.561 0.183 0.32 0.59 0.431 0.909 0.248l4.337-2.477 4.336 2.477c0.166 0.094 0.369 0.117 0.561 0.047 0.345-0.127 0.523-0.511 0.395-0.856zM8 3.262l3.409 9.251-3.078-1.759c-0.211-0.121-0.461-0.113-0.661 0l-3.078 1.759z"></path>
2442 </svg>
2443 `
2444 },
2445 {
2446 name: 'navigation',
2447 template: `
2448 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2449 <title>navigation</title>
2450 <path d="M1.715 6.731c-0.175 0.083-0.311 0.24-0.361 0.441-0.089 0.357 0.128 0.719 0.485 0.809l4.945 1.236 1.236 4.945c0.047 0.187 0.174 0.352 0.361 0.441 0.333 0.157 0.73 0.015 0.888-0.317l6-12.667c0.083-0.175 0.089-0.383 0-0.571-0.157-0.333-0.555-0.475-0.888-0.317zM3.969 7.139l9.297-4.404-4.404 9.297-0.881-3.527c-0.061-0.246-0.252-0.425-0.485-0.485z"></path>
2451 </svg>
2452 `
2453 },
2454 {
2455 name: 'octagon',
2456 template: `
2457 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2458 <title>octagon</title>
2459 <path d="M5.24 0.667c-0.171 0-0.341 0.065-0.471 0.195l-3.907 3.907c-0.121 0.121-0.195 0.287-0.195 0.471v5.52c0 0.171 0.065 0.341 0.195 0.471l3.907 3.907c0.121 0.121 0.287 0.195 0.471 0.195h5.52c0.171 0 0.341-0.065 0.471-0.195l3.907-3.907c0.121-0.121 0.195-0.287 0.195-0.471v-5.52c0-0.171-0.065-0.341-0.195-0.471l-3.907-3.907c-0.121-0.121-0.287-0.195-0.471-0.195zM5.516 2h4.968l3.516 3.516v4.968l-3.516 3.516h-4.968l-3.516-3.516v-4.968z"></path>
2460 </svg>
2461 `
2462 },
2463 {
2464 name: 'package',
2465 template: `
2466 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2467 <title>package</title>
2468 <path d="M9.671 6.27l-1.671 0.967-4.641-2.685 1.674-0.957zM12.641 4.552l-1.637 0.947-4.629-2.67 1.289-0.737c0.075-0.043 0.155-0.070 0.237-0.083 0.145-0.023 0.297 0.002 0.436 0.083zM7.684 15.307c0.094 0.051 0.202 0.079 0.316 0.079 0.115 0 0.224-0.029 0.319-0.081 0.237-0.039 0.467-0.12 0.678-0.24l4.667-2.667c0.412-0.238 0.707-0.599 0.866-1.009 0.089-0.228 0.135-0.471 0.137-0.723v-5.333c0-0.319-0.075-0.621-0.209-0.889-0.015-0.047-0.035-0.093-0.061-0.138-0.031-0.053-0.067-0.099-0.108-0.14-0.021-0.029-0.043-0.057-0.065-0.085-0.153-0.191-0.341-0.352-0.554-0.477l-4.673-2.67c-0.407-0.235-0.867-0.31-1.302-0.243-0.243 0.038-0.477 0.119-0.692 0.242l-2.133 1.219c-0.14 0.027-0.271 0.1-0.369 0.211l-2.166 1.238c-0.255 0.147-0.466 0.342-0.627 0.567-0.040 0.040-0.076 0.087-0.106 0.138-0.026 0.045-0.047 0.092-0.061 0.14-0.027 0.054-0.051 0.109-0.072 0.164-0.088 0.229-0.134 0.472-0.136 0.719v5.338c0.001 0.473 0.165 0.909 0.443 1.252 0.153 0.191 0.341 0.352 0.554 0.477l4.673 2.67c0.216 0.125 0.447 0.205 0.681 0.241zM7.333 8.391v5.327l-4.33-2.474c-0.074-0.043-0.138-0.099-0.19-0.163-0.093-0.115-0.147-0.258-0.147-0.415v-4.975zM8.667 13.719v-5.327l4.667-2.699v4.975c-0.001 0.081-0.017 0.164-0.047 0.241-0.053 0.137-0.15 0.256-0.284 0.333z"></path>
2469 </svg>
2470 `
2471 },
2472 {
2473 name: 'paperclip',
2474 template: `
2475 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2476 <title>paperclip</title>
2477 <path d="M13.822 6.895l-6.127 6.127c-0.651 0.651-1.504 0.977-2.359 0.977s-1.707-0.325-2.359-0.977-0.977-1.504-0.977-2.359 0.325-1.707 0.977-2.359l6.127-6.127c0.391-0.391 0.902-0.586 1.415-0.586s1.024 0.195 1.415 0.586 0.586 0.902 0.586 1.415-0.195 1.024-0.586 1.415l-6.133 6.127c-0.131 0.131-0.301 0.196-0.472 0.196s-0.341-0.065-0.472-0.195-0.195-0.3-0.195-0.472 0.065-0.341 0.195-0.472l5.66-5.653c0.261-0.26 0.261-0.682 0.001-0.943s-0.682-0.261-0.943-0.001l-5.66 5.653c-0.391 0.391-0.586 0.904-0.586 1.415s0.195 1.024 0.586 1.415 0.904 0.586 1.415 0.586 1.024-0.195 1.415-0.586l6.133-6.127c0.651-0.651 0.977-1.505 0.977-2.358s-0.326-1.707-0.977-2.358-1.505-0.977-2.358-0.977-1.707 0.326-2.358 0.977l-6.127 6.127c-0.911 0.911-1.367 2.107-1.367 3.301s0.456 2.39 1.367 3.301 2.107 1.367 3.301 1.367 2.39-0.456 3.301-1.367l6.127-6.127c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0z"></path>
2478 </svg>
2479 `
2480 },
2481 {
2482 name: 'pause-circle',
2483 template: `
2484 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2485 <title>pause-circle</title>
2486 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM7.333 10v-4c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v4c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM10 10v-4c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v4c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667z"></path>
2487 </svg>
2488 `
2489 },
2490 {
2491 name: 'pause',
2492 template: `
2493 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2494 <title>pause</title>
2495 <path d="M4 2c-0.368 0-0.667 0.299-0.667 0.667v10.667c0 0.368 0.299 0.667 0.667 0.667h2.667c0.368 0 0.667-0.299 0.667-0.667v-10.667c0-0.368-0.299-0.667-0.667-0.667zM4.667 3.333h1.333v9.333h-1.333zM9.333 2c-0.368 0-0.667 0.299-0.667 0.667v10.667c0 0.368 0.299 0.667 0.667 0.667h2.667c0.368 0 0.667-0.299 0.667-0.667v-10.667c0-0.368-0.299-0.667-0.667-0.667zM10 3.333h1.333v9.333h-1.333z"></path>
2496 </svg>
2497 `
2498 },
2499 {
2500 name: 'pen-tool',
2501 template: `
2502 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2503 <title>pen-tool</title>
2504 <path d="M12.471 9.138l0.195-0.195 1.057 1.057-3.724 3.724-1.057-1.057 0.195-0.195zM1.501 0.688c-0.023-0.006-0.047-0.011-0.071-0.014-0.095-0.015-0.189-0.007-0.278 0.017s-0.173 0.068-0.247 0.13c-0.061 0.051-0.114 0.114-0.154 0.186-0.040 0.071-0.066 0.147-0.077 0.225-0.013 0.085-0.010 0.17 0.008 0.247 0.001 0.003 0.002 0.007 0.003 0.011l0.003 0.011 2.331 9.655c0.063 0.259 0.269 0.446 0.517 0.497l3.843 0.769c-0.094 0.239-0.045 0.522 0.149 0.715l2 2c0.261 0.261 0.683 0.261 0.943 0l4.667-4.667c0.261-0.261 0.261-0.683 0-0.943l-2-2c-0.193-0.193-0.476-0.243-0.715-0.149l-0.769-3.843c-0.052-0.261-0.251-0.456-0.497-0.517zM9.333 7.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586c-0.309 0-0.601 0.070-0.862 0.195l-2.991-2.991 6.95 1.677 0.847 4.233-2.829 2.829-4.233-0.847-1.678-6.949 2.991 2.991c-0.125 0.261-0.195 0.553-0.195 0.862 0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586 1.053-0.225 1.414-0.586 0.586-0.862 0.586-1.414zM8 7.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195-0.35-0.074-0.471-0.195-0.195-0.287-0.195-0.471c0-0.18 0.071-0.343 0.187-0.463 0.003-0.003 0.005-0.005 0.009-0.008s0.005-0.005 0.008-0.009c0.12-0.116 0.283-0.187 0.463-0.187 0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471z"></path>
2505 </svg>
2506 `
2507 },
2508 {
2509 name: 'percent',
2510 template: `
2511 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2512 <title>percent</title>
2513 <path d="M12.195 2.862l-9.333 9.333c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l9.333-9.333c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0zM6.667 4.333c0-0.644-0.262-1.229-0.683-1.65s-1.006-0.683-1.65-0.683-1.229 0.262-1.65 0.683-0.683 1.006-0.683 1.65 0.262 1.229 0.683 1.65 1.006 0.683 1.65 0.683 1.229-0.262 1.65-0.683 0.683-1.006 0.683-1.65zM5.333 4.333c0 0.276-0.111 0.525-0.293 0.707s-0.431 0.293-0.707 0.293-0.525-0.111-0.707-0.293-0.293-0.431-0.293-0.707 0.111-0.525 0.293-0.707 0.431-0.293 0.707-0.293 0.525 0.111 0.707 0.293 0.293 0.431 0.293 0.707zM14 11.667c0-0.644-0.262-1.229-0.683-1.65s-1.006-0.683-1.65-0.683-1.229 0.262-1.65 0.683-0.683 1.006-0.683 1.65 0.262 1.229 0.683 1.65 1.006 0.683 1.65 0.683 1.229-0.262 1.65-0.683 0.683-1.006 0.683-1.65zM12.667 11.667c0 0.276-0.111 0.525-0.293 0.707s-0.431 0.293-0.707 0.293-0.525-0.111-0.707-0.293-0.293-0.431-0.293-0.707 0.111-0.525 0.293-0.707 0.431-0.293 0.707-0.293 0.525 0.111 0.707 0.293 0.293 0.431 0.293 0.707z"></path>
2514 </svg>
2515 `
2516 },
2517 {
2518 name: 'phone-call',
2519 template: `
2520 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2521 <title>phone-call</title>
2522 <path d="M9.906 3.987c0.629 0.123 1.16 0.455 1.54 0.916 0.28 0.34 0.478 0.749 0.568 1.195 0.073 0.361 0.425 0.594 0.785 0.521s0.594-0.425 0.521-0.785c-0.133-0.661-0.427-1.271-0.846-1.779-0.569-0.691-1.371-1.193-2.313-1.376-0.361-0.071-0.711 0.165-0.782 0.527s0.165 0.711 0.527 0.782zM9.96 1.329c1.333 0.148 2.495 0.775 3.337 1.696 0.745 0.816 1.239 1.863 1.375 3.013 0.043 0.365 0.375 0.627 0.74 0.584s0.627-0.375 0.584-0.74c-0.169-1.431-0.784-2.737-1.714-3.756-1.052-1.152-2.508-1.937-4.174-2.122-0.366-0.041-0.695 0.223-0.736 0.589s0.223 0.695 0.589 0.736zM15.333 11.28c0.011-0.476-0.157-0.936-0.449-1.295-0.307-0.377-0.753-0.645-1.283-0.72-0.533-0.065-1.13-0.209-1.724-0.431-0.289-0.106-0.595-0.145-0.896-0.116-0.442 0.043-0.871 0.233-1.213 0.57l-0.48 0.48c-1.18-0.745-2.24-1.778-3.055-3.059l0.484-0.484c0.215-0.22 0.375-0.484 0.471-0.771 0.141-0.421 0.143-0.891-0.026-1.341-0.193-0.502-0.345-1.096-0.429-1.73-0.069-0.477-0.303-0.898-0.642-1.203-0.359-0.323-0.837-0.519-1.351-0.513h-1.997c-0.059 0-0.121 0.003-0.182 0.008-0.549 0.050-1.028 0.319-1.355 0.711s-0.505 0.911-0.455 1.466c0.2 2.051 0.91 4.162 2.144 6.068 1.001 1.609 2.432 3.082 4.199 4.204 1.712 1.131 3.789 1.908 6.057 2.154 0.061 0.006 0.127 0.009 0.192 0.009 0.552-0.002 1.052-0.229 1.412-0.591s0.582-0.865 0.58-1.414zM14 11.28v2c0.001 0.187-0.073 0.353-0.193 0.475s-0.286 0.197-0.471 0.197l-0.059-0.003c-2.040-0.222-3.915-0.925-5.449-1.939-1.619-1.029-2.906-2.359-3.801-3.796-1.131-1.747-1.77-3.654-1.949-5.492-0.016-0.179 0.043-0.351 0.153-0.483s0.269-0.22 0.452-0.237l2.058-0.003c0.181-0.002 0.338 0.063 0.458 0.171 0.113 0.103 0.192 0.244 0.215 0.405 0.095 0.715 0.272 1.411 0.505 2.017 0.054 0.144 0.053 0.298 0.007 0.439-0.033 0.097-0.087 0.187-0.161 0.263l-0.841 0.841c-0.216 0.216-0.253 0.543-0.108 0.801 1.056 1.857 2.559 3.305 4.254 4.252 0.265 0.148 0.588 0.096 0.797-0.111l0.847-0.847c0.111-0.109 0.251-0.171 0.399-0.186 0.101-0.010 0.207 0.003 0.306 0.040 0.681 0.254 1.38 0.424 2.023 0.503 0.161 0.023 0.308 0.111 0.41 0.237 0.098 0.121 0.154 0.275 0.151 0.455z"></path>
2523 </svg>
2524 `
2525 },
2526 {
2527 name: 'phone-forwarded',
2528 template: `
2529 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2530 <title>phone-forwarded</title>
2531 <path d="M10 4h3.724l-1.529 1.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l2.667-2.667c0.064-0.064 0.112-0.137 0.145-0.216s0.051-0.165 0.051-0.255-0.018-0.177-0.051-0.255c-0.033-0.079-0.081-0.152-0.145-0.216l-2.667-2.667c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l1.529 1.529h-3.724c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM15.333 11.28c0.011-0.476-0.157-0.936-0.449-1.295-0.307-0.377-0.753-0.645-1.283-0.72-0.533-0.065-1.13-0.209-1.724-0.431-0.289-0.106-0.595-0.145-0.896-0.116-0.442 0.043-0.871 0.233-1.213 0.57l-0.48 0.48c-1.18-0.745-2.24-1.778-3.055-3.059l0.484-0.484c0.215-0.22 0.375-0.484 0.471-0.771 0.141-0.421 0.143-0.891-0.026-1.341-0.193-0.502-0.345-1.096-0.429-1.73-0.069-0.477-0.303-0.898-0.642-1.203-0.359-0.323-0.837-0.519-1.351-0.513h-1.997c-0.059 0-0.121 0.003-0.182 0.008-0.549 0.050-1.028 0.319-1.355 0.711s-0.505 0.911-0.455 1.466c0.2 2.051 0.91 4.162 2.144 6.068 1.001 1.609 2.432 3.082 4.199 4.204 1.712 1.131 3.789 1.908 6.057 2.154 0.061 0.006 0.127 0.009 0.192 0.009 0.552-0.002 1.052-0.229 1.412-0.591s0.582-0.865 0.58-1.414zM14 11.28v2c0.001 0.187-0.073 0.353-0.193 0.475s-0.286 0.197-0.471 0.197l-0.059-0.003c-2.040-0.222-3.915-0.925-5.449-1.939-1.619-1.029-2.906-2.359-3.801-3.796-1.131-1.747-1.77-3.654-1.949-5.492-0.016-0.179 0.043-0.351 0.153-0.483s0.269-0.22 0.452-0.237l2.058-0.003c0.181-0.002 0.338 0.063 0.458 0.171 0.113 0.103 0.192 0.244 0.215 0.405 0.095 0.715 0.272 1.411 0.505 2.017 0.054 0.144 0.053 0.298 0.007 0.439-0.033 0.097-0.087 0.187-0.161 0.263l-0.841 0.841c-0.216 0.216-0.253 0.543-0.108 0.801 1.056 1.857 2.559 3.305 4.254 4.252 0.265 0.148 0.588 0.096 0.797-0.111l0.847-0.847c0.111-0.109 0.251-0.171 0.399-0.186 0.101-0.010 0.207 0.003 0.306 0.040 0.681 0.254 1.38 0.424 2.023 0.503 0.161 0.023 0.308 0.111 0.41 0.237 0.098 0.121 0.154 0.275 0.151 0.455z"></path>
2532 </svg>
2533 `
2534 },
2535 {
2536 name: 'phone-incoming',
2537 template: `
2538 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2539 <title>phone-incoming</title>
2540 <path d="M14.862 0.195l-3.529 3.529v-2.391c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v4c0 0.278 0.17 0.516 0.411 0.616 0.079 0.033 0.165 0.051 0.255 0.051h4c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2.391l3.529-3.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0zM15.333 11.28c0.011-0.476-0.157-0.936-0.449-1.295-0.307-0.377-0.753-0.645-1.283-0.72-0.533-0.065-1.13-0.209-1.724-0.431-0.289-0.106-0.595-0.145-0.896-0.116-0.442 0.043-0.871 0.233-1.213 0.57l-0.48 0.48c-1.18-0.745-2.24-1.778-3.055-3.059l0.484-0.484c0.215-0.22 0.375-0.484 0.471-0.771 0.141-0.421 0.143-0.891-0.026-1.341-0.193-0.502-0.345-1.096-0.429-1.73-0.069-0.477-0.303-0.898-0.642-1.203-0.359-0.323-0.837-0.519-1.351-0.513h-1.997c-0.059 0-0.121 0.003-0.182 0.008-0.549 0.050-1.028 0.319-1.355 0.711s-0.505 0.911-0.455 1.466c0.2 2.051 0.91 4.162 2.144 6.068 1.001 1.609 2.432 3.082 4.199 4.204 1.712 1.131 3.789 1.908 6.057 2.154 0.061 0.006 0.127 0.009 0.192 0.009 0.552-0.002 1.052-0.229 1.412-0.591s0.582-0.865 0.58-1.414zM14 11.28v2c0.001 0.187-0.073 0.353-0.193 0.475s-0.286 0.197-0.471 0.197l-0.059-0.003c-2.040-0.222-3.915-0.925-5.449-1.939-1.619-1.029-2.906-2.359-3.801-3.796-1.131-1.747-1.77-3.654-1.949-5.492-0.016-0.179 0.043-0.351 0.153-0.483s0.269-0.22 0.452-0.237l2.058-0.003c0.181-0.002 0.338 0.063 0.458 0.171 0.113 0.103 0.192 0.244 0.215 0.405 0.095 0.715 0.272 1.411 0.505 2.017 0.054 0.144 0.053 0.298 0.007 0.439-0.033 0.097-0.087 0.187-0.161 0.263l-0.841 0.841c-0.216 0.216-0.253 0.543-0.108 0.801 1.056 1.857 2.559 3.305 4.254 4.252 0.265 0.148 0.588 0.096 0.797-0.111l0.847-0.847c0.111-0.109 0.251-0.171 0.399-0.186 0.101-0.010 0.207 0.003 0.306 0.040 0.681 0.254 1.38 0.424 2.023 0.503 0.161 0.023 0.308 0.111 0.41 0.237 0.098 0.121 0.154 0.275 0.151 0.455z"></path>
2541 </svg>
2542 `
2543 },
2544 {
2545 name: 'phone-missed',
2546 template: `
2547 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2548 <title>phone-missed</title>
2549 <path d="M10.862 1.138l1.529 1.529-1.529 1.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l1.529-1.529 1.529 1.529c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-1.529-1.529 1.529-1.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-1.529 1.529-1.529-1.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943zM15.333 11.28c0.011-0.476-0.157-0.936-0.449-1.295-0.307-0.377-0.753-0.645-1.283-0.72-0.533-0.065-1.13-0.209-1.724-0.431-0.289-0.106-0.595-0.145-0.896-0.116-0.442 0.043-0.871 0.233-1.213 0.57l-0.48 0.48c-1.18-0.745-2.24-1.778-3.055-3.059l0.484-0.484c0.215-0.22 0.375-0.484 0.471-0.771 0.141-0.421 0.143-0.891-0.026-1.341-0.193-0.502-0.345-1.096-0.429-1.73-0.069-0.477-0.303-0.898-0.642-1.203-0.359-0.323-0.837-0.519-1.351-0.513h-1.997c-0.059 0-0.121 0.003-0.182 0.008-0.549 0.050-1.028 0.319-1.355 0.711s-0.505 0.911-0.455 1.466c0.2 2.051 0.91 4.162 2.144 6.068 1.001 1.609 2.432 3.082 4.199 4.204 1.712 1.131 3.789 1.908 6.057 2.154 0.061 0.006 0.127 0.009 0.192 0.009 0.552-0.002 1.052-0.229 1.412-0.591s0.582-0.865 0.58-1.414zM14 11.28v2c0.001 0.187-0.073 0.353-0.193 0.475s-0.286 0.197-0.471 0.197l-0.059-0.003c-2.040-0.222-3.915-0.925-5.449-1.939-1.619-1.029-2.906-2.359-3.801-3.796-1.131-1.747-1.77-3.654-1.949-5.492-0.016-0.179 0.043-0.351 0.153-0.483s0.269-0.22 0.452-0.237l2.058-0.003c0.181-0.002 0.338 0.063 0.458 0.171 0.113 0.103 0.192 0.244 0.215 0.405 0.095 0.715 0.272 1.411 0.505 2.017 0.054 0.144 0.053 0.298 0.007 0.439-0.033 0.097-0.087 0.187-0.161 0.263l-0.841 0.841c-0.216 0.216-0.253 0.543-0.108 0.801 1.056 1.857 2.559 3.305 4.254 4.252 0.265 0.148 0.588 0.096 0.797-0.111l0.847-0.847c0.111-0.109 0.251-0.171 0.399-0.186 0.101-0.010 0.207 0.003 0.306 0.040 0.681 0.254 1.38 0.424 2.023 0.503 0.161 0.023 0.308 0.111 0.41 0.237 0.098 0.121 0.154 0.275 0.151 0.455z"></path>
2550 </svg>
2551 `
2552 },
2553 {
2554 name: 'phone-off',
2555 template: `
2556 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2557 <title>phone-off</title>
2558 <path d="M4.019 8.177c-1.121-1.729-1.76-3.627-1.943-5.457-0.016-0.177 0.043-0.349 0.153-0.481s0.269-0.22 0.452-0.237l2.059-0.003c0.181-0.002 0.338 0.063 0.458 0.171 0.113 0.103 0.192 0.244 0.215 0.405 0.095 0.715 0.272 1.411 0.505 2.017 0.054 0.144 0.053 0.298 0.007 0.439-0.033 0.097-0.087 0.187-0.161 0.263l-0.841 0.841c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l0.853-0.853c0.215-0.22 0.375-0.484 0.471-0.771 0.141-0.421 0.143-0.891-0.026-1.341-0.193-0.502-0.345-1.096-0.429-1.73-0.069-0.477-0.303-0.898-0.642-1.203-0.359-0.324-0.837-0.519-1.351-0.514h-1.997c-0.059 0-0.121 0.003-0.182 0.008-0.549 0.050-1.028 0.319-1.355 0.711s-0.505 0.911-0.455 1.467c0.204 2.041 0.914 4.143 2.151 6.050 0.2 0.309 0.613 0.397 0.922 0.197s0.397-0.613 0.197-0.922zM6.19 10.753l0.947-0.947c0.619 0.552 1.279 1.021 1.933 1.383 0.265 0.147 0.587 0.095 0.795-0.111l0.847-0.847c0.111-0.109 0.251-0.171 0.399-0.186 0.101-0.010 0.207 0.003 0.306 0.040 0.681 0.254 1.38 0.424 2.023 0.503 0.16 0.023 0.305 0.109 0.408 0.235 0.097 0.119 0.154 0.27 0.153 0.433v2.004c0.001 0.187-0.073 0.353-0.193 0.475s-0.286 0.197-0.471 0.197l-0.059-0.003c-2.040-0.222-3.915-0.925-5.449-1.939-0.605-0.384-1.159-0.807-1.638-1.237zM14.862 0.195l-8.154 8.153c-0.021 0.016-0.041 0.034-0.059 0.053s-0.037 0.039-0.053 0.060l-6.4 6.4c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l4.108-4.108c0.549 0.499 1.176 0.98 1.847 1.406 1.712 1.131 3.789 1.908 6.057 2.154 0.061 0.006 0.127 0.009 0.192 0.009 0.552-0.002 1.052-0.229 1.412-0.591s0.582-0.865 0.58-1.414v-1.996c0.003-0.482-0.166-0.933-0.455-1.286-0.307-0.374-0.75-0.639-1.278-0.713-0.533-0.065-1.13-0.209-1.724-0.431-0.289-0.106-0.595-0.145-0.896-0.116-0.442 0.043-0.871 0.233-1.213 0.57l-0.48 0.48c-0.406-0.258-0.814-0.563-1.207-0.907l7.723-7.722c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0z"></path>
2559 </svg>
2560 `
2561 },
2562 {
2563 name: 'phone-outgoing',
2564 template: `
2565 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2566 <title>phone-outgoing</title>
2567 <path d="M11.138 5.805l3.529-3.529v2.391c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-4c0-0.091-0.018-0.177-0.051-0.255s-0.081-0.152-0.144-0.215c-0.001-0.001-0.001-0.001-0.001-0.001-0.061-0.061-0.135-0.111-0.215-0.144-0.079-0.033-0.165-0.051-0.255-0.051h-4c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h2.391l-3.529 3.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0zM15.333 11.28c0.011-0.476-0.157-0.936-0.449-1.295-0.307-0.377-0.753-0.645-1.283-0.72-0.533-0.065-1.13-0.209-1.724-0.431-0.289-0.106-0.595-0.145-0.896-0.116-0.442 0.043-0.871 0.233-1.213 0.57l-0.48 0.48c-1.18-0.745-2.24-1.778-3.055-3.059l0.484-0.484c0.215-0.22 0.375-0.484 0.471-0.771 0.141-0.421 0.143-0.891-0.026-1.341-0.193-0.502-0.345-1.096-0.429-1.73-0.069-0.477-0.303-0.898-0.642-1.203-0.359-0.323-0.837-0.519-1.351-0.513h-1.997c-0.059 0-0.121 0.003-0.182 0.008-0.549 0.050-1.028 0.319-1.355 0.711s-0.505 0.911-0.455 1.466c0.2 2.051 0.91 4.162 2.144 6.068 1.001 1.609 2.432 3.082 4.199 4.204 1.712 1.131 3.789 1.908 6.057 2.154 0.061 0.006 0.127 0.009 0.192 0.009 0.552-0.002 1.052-0.229 1.412-0.591s0.582-0.865 0.58-1.414zM14 11.28v2c0.001 0.187-0.073 0.353-0.193 0.475s-0.286 0.197-0.471 0.197l-0.059-0.003c-2.040-0.222-3.915-0.925-5.449-1.939-1.619-1.029-2.906-2.359-3.801-3.796-1.131-1.747-1.77-3.654-1.949-5.492-0.016-0.179 0.043-0.351 0.153-0.483s0.269-0.22 0.452-0.237l2.058-0.003c0.181-0.002 0.338 0.063 0.458 0.171 0.113 0.103 0.192 0.244 0.215 0.405 0.095 0.715 0.272 1.411 0.505 2.017 0.054 0.144 0.053 0.298 0.007 0.439-0.033 0.097-0.087 0.187-0.161 0.263l-0.841 0.841c-0.216 0.216-0.253 0.543-0.108 0.801 1.056 1.857 2.559 3.305 4.254 4.252 0.265 0.148 0.588 0.096 0.797-0.111l0.847-0.847c0.111-0.109 0.251-0.171 0.399-0.186 0.101-0.010 0.207 0.003 0.306 0.040 0.681 0.254 1.38 0.424 2.023 0.503 0.161 0.023 0.308 0.111 0.41 0.237 0.098 0.121 0.154 0.275 0.151 0.455z"></path>
2568 </svg>
2569 `
2570 },
2571 {
2572 name: 'phone',
2573 template: `
2574 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2575 <title>phone</title>
2576 <path d="M15.333 11.28c0.011-0.476-0.157-0.936-0.449-1.295-0.307-0.377-0.753-0.645-1.283-0.72-0.533-0.065-1.13-0.209-1.724-0.431-0.289-0.106-0.595-0.145-0.896-0.116-0.442 0.043-0.871 0.233-1.213 0.57l-0.48 0.48c-1.18-0.745-2.24-1.778-3.055-3.059l0.484-0.484c0.215-0.22 0.375-0.484 0.471-0.771 0.141-0.421 0.143-0.891-0.026-1.341-0.193-0.502-0.345-1.096-0.429-1.73-0.069-0.477-0.303-0.898-0.642-1.203-0.359-0.323-0.837-0.519-1.351-0.513h-1.997c-0.059 0-0.121 0.003-0.182 0.008-0.549 0.050-1.028 0.319-1.355 0.711s-0.505 0.911-0.455 1.466c0.2 2.051 0.91 4.162 2.144 6.068 1.001 1.609 2.432 3.082 4.199 4.204 1.712 1.131 3.789 1.908 6.057 2.154 0.061 0.006 0.127 0.009 0.192 0.009 0.552-0.002 1.052-0.229 1.412-0.591s0.582-0.865 0.58-1.414zM14 11.28v2c0.001 0.187-0.073 0.353-0.193 0.475s-0.286 0.197-0.471 0.197l-0.059-0.003c-2.040-0.222-3.915-0.925-5.449-1.939-1.619-1.029-2.906-2.359-3.801-3.796-1.131-1.747-1.77-3.654-1.949-5.492-0.016-0.179 0.043-0.351 0.153-0.483s0.269-0.22 0.452-0.237l2.058-0.003c0.181-0.002 0.338 0.063 0.458 0.171 0.113 0.103 0.192 0.244 0.215 0.405 0.095 0.715 0.272 1.411 0.505 2.017 0.054 0.144 0.053 0.298 0.007 0.439-0.033 0.097-0.087 0.187-0.161 0.263l-0.841 0.841c-0.216 0.216-0.253 0.543-0.108 0.801 1.056 1.857 2.559 3.305 4.254 4.252 0.265 0.148 0.588 0.096 0.797-0.111l0.847-0.847c0.111-0.109 0.251-0.171 0.399-0.186 0.101-0.010 0.207 0.003 0.306 0.040 0.681 0.254 1.38 0.424 2.023 0.503 0.161 0.023 0.308 0.111 0.41 0.237 0.098 0.121 0.154 0.275 0.151 0.455z"></path>
2577 </svg>
2578 `
2579 },
2580 {
2581 name: 'pie-chart',
2582 template: `
2583 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2584 <title>pie-chart</title>
2585 <path d="M13.526 10.334c-0.645 1.526-1.847 2.645-3.271 3.223s-3.066 0.611-4.592-0.034-2.645-1.847-3.223-3.271-0.612-3.067 0.033-4.593c0.624-1.476 1.768-2.571 3.126-3.162 0.337-0.147 0.492-0.54 0.345-0.877s-0.54-0.492-0.877-0.345c-1.659 0.723-3.059 2.063-3.822 3.865-0.789 1.865-0.746 3.875-0.041 5.613s2.075 3.209 3.939 3.998 3.875 0.746 5.613 0.041 3.209-2.075 3.998-3.939c0.143-0.339-0.015-0.73-0.355-0.874s-0.73 0.015-0.874 0.355zM13.963 7.333h-5.297v-5.297c1.391 0.153 2.637 0.782 3.576 1.721s1.567 2.185 1.721 3.576zM15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148c-0.368 0-0.667 0.299-0.667 0.667v6.667c0 0.368 0.299 0.667 0.667 0.667h6.667c0.368 0 0.667-0.299 0.667-0.667z"></path>
2586 </svg>
2587 `
2588 },
2589 {
2590 name: 'play-circle',
2591 template: `
2592 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2593 <title>play-circle</title>
2594 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM7.037 4.779c-0.104-0.070-0.232-0.112-0.37-0.112-0.368 0-0.667 0.299-0.667 0.667v5.333c-0.001 0.125 0.035 0.255 0.112 0.37 0.204 0.307 0.618 0.389 0.925 0.185l4-2.667c0.069-0.045 0.133-0.108 0.185-0.185 0.204-0.307 0.121-0.72-0.185-0.925zM7.333 6.579l2.131 1.421-2.131 1.421z"></path>
2595 </svg>
2596 `
2597 },
2598 {
2599 name: 'play',
2600 template: `
2601 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2602 <title>play</title>
2603 <path d="M3.694 1.439c-0.102-0.067-0.227-0.106-0.361-0.106-0.368 0-0.667 0.299-0.667 0.667v12c-0.001 0.121 0.033 0.248 0.106 0.361 0.199 0.31 0.611 0.399 0.921 0.2l9.333-6c0.076-0.048 0.146-0.116 0.2-0.2 0.199-0.31 0.109-0.722-0.2-0.921zM4 3.221l7.434 4.779-7.434 4.779z"></path>
2604 </svg>
2605 `
2606 },
2607 {
2608 name: 'plus-circle',
2609 template: `
2610 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2611 <title>plus-circle</title>
2612 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM5.333 8.667h2v2c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2h2c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2v-2c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v2h-2c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2613 </svg>
2614 `
2615 },
2616 {
2617 name: 'plus-square',
2618 template: `
2619 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2620 <title>plus-square</title>
2621 <path d="M3.333 1.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-9.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM3.333 2.667h9.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v9.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-9.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM5.333 8.667h2v2c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2h2c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-2v-2c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v2h-2c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2622 </svg>
2623 `
2624 },
2625 {
2626 name: 'plus',
2627 template: `
2628 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2629 <title>plus</title>
2630 <path d="M3.333 8.667h4v4c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-4h4c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-4v-4c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v4h-4c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2631 </svg>
2632 `
2633 },
2634 {
2635 name: 'pocket',
2636 template: `
2637 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2638 <title>pocket</title>
2639 <path d="M2.667 1.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v4c0 2.025 0.821 3.859 2.148 5.185s3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185v-4c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM2.667 2.667h10.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v4c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243v-4c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM4.862 7.138l2.667 2.667c0.261 0.261 0.683 0.261 0.943 0l2.667-2.667c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-2.195 2.195-2.195-2.195c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
2640 </svg>
2641 `
2642 },
2643 {
2644 name: 'power',
2645 template: `
2646 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2647 <title>power</title>
2648 <path d="M11.769 4.898c1.041 1.042 1.562 2.405 1.561 3.771s-0.521 2.729-1.563 3.771-2.405 1.562-3.771 1.561-2.729-0.521-3.771-1.563c-1.041-1.041-1.561-2.405-1.561-3.771s0.521-2.729 1.561-3.771c0.26-0.261 0.26-0.683 0-0.943s-0.683-0.26-0.943 0c-1.301 1.301-1.952 3.008-1.952 4.713s0.651 3.412 1.952 4.713c1.301 1.302 3.009 1.953 4.714 1.953s3.413-0.651 4.715-1.952 1.953-3.009 1.953-4.714-0.651-3.413-1.952-4.715c-0.26-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943zM7.333 1.333v6.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-6.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667z"></path>
2649 </svg>
2650 `
2651 },
2652 {
2653 name: 'printer',
2654 template: `
2655 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2656 <title>printer</title>
2657 <path d="M11.333 5.333h-6.667v-3.333h6.667zM3.333 12.667v2c0 0.368 0.299 0.667 0.667 0.667h8c0.368 0 0.667-0.299 0.667-0.667v-2h0.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-3.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-0.667v-4c0-0.368-0.299-0.667-0.667-0.667h-8c-0.368 0-0.667 0.299-0.667 0.667v4h-0.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v3.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586zM4 8.667c-0.368 0-0.667 0.299-0.667 0.667v2h-0.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-3.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h10.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v3.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-0.667v-2c0-0.368-0.299-0.667-0.667-0.667zM4.667 10h6.667v4h-6.667z"></path>
2658 </svg>
2659 `
2660 },
2661 {
2662 name: 'radio',
2663 template: `
2664 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2665 <title>radio</title>
2666 <path d="M10 8c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586-1.053 0.225-1.414 0.586-0.586 0.862-0.586 1.414 0.225 1.053 0.586 1.414 0.862 0.586 1.414 0.586 1.053-0.225 1.414-0.586 0.586-0.862 0.586-1.414zM8.667 8c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195-0.35-0.074-0.471-0.195-0.195-0.287-0.195-0.471 0.074-0.35 0.195-0.471 0.287-0.195 0.471-0.195 0.35 0.074 0.471 0.195 0.195 0.287 0.195 0.471zM10.355 5.645c0.651 0.651 0.977 1.503 0.977 2.357s-0.325 1.706-0.975 2.357c-0.26 0.261-0.26 0.683 0.001 0.943s0.683 0.26 0.943-0.001c0.911-0.911 1.365-2.107 1.365-3.301s-0.457-2.389-1.369-3.299c-0.261-0.26-0.683-0.26-0.943 0.001s-0.26 0.683 0.001 0.943zM5.645 10.355c-0.651-0.65-0.977-1.502-0.978-2.356s0.325-1.706 0.975-2.357c0.26-0.261 0.26-0.683-0.001-0.943s-0.683-0.26-0.943 0.001c-0.91 0.911-1.365 2.107-1.365 3.3s0.457 2.389 1.369 3.299c0.261 0.26 0.683 0.26 0.943-0.001s0.26-0.683-0.001-0.943zM12.242 3.758c1.171 1.172 1.757 2.706 1.757 4.242s-0.585 3.070-1.757 4.242c-0.26 0.261-0.26 0.683 0 0.943s0.683 0.26 0.943 0c1.431-1.431 2.147-3.309 2.147-5.185s-0.716-3.753-2.147-5.185c-0.26-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943zM3.758 12.242c-1.171-1.172-1.757-2.706-1.757-4.242s0.585-3.070 1.757-4.242c0.26-0.261 0.26-0.683 0-0.943s-0.683-0.26-0.943 0c-1.431 1.431-2.147 3.309-2.147 5.185s0.716 3.753 2.147 5.185c0.26 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943z"></path>
2667 </svg>
2668 `
2669 },
2670 {
2671 name: 'refresh-ccw',
2672 template: `
2673 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2674 <title>refresh-ccw</title>
2675 <path d="M14.289 5.777c-0.614-1.735-1.875-3.058-3.413-3.793s-3.36-0.882-5.095-0.268c-0.981 0.347-1.835 0.903-2.496 1.576l-1.951 1.833v-2.459c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v3.999c0 0.010 0 0.020 0.001 0.029 0.003 0.077 0.019 0.15 0.046 0.217s0.065 0.132 0.115 0.19c0.008 0.009 0.016 0.018 0.024 0.026 0.061 0.063 0.134 0.115 0.216 0.15 0.079 0.034 0.166 0.053 0.257 0.055 0.003 0 0.005 0 0.007 0h4c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.666-0.667-0.666h-2.317l1.887-1.773c0.518-0.528 1.198-0.973 1.989-1.253 1.389-0.491 2.843-0.374 4.076 0.215s2.239 1.645 2.731 3.034c0.123 0.347 0.504 0.529 0.851 0.406s0.529-0.504 0.406-0.851zM13.65 10l-1.867 1.754c-1.056 1.057-2.42 1.577-3.786 1.577s-2.73-0.52-3.771-1.561c-0.593-0.593-1.015-1.287-1.255-1.987-0.12-0.348-0.499-0.533-0.847-0.414s-0.533 0.499-0.414 0.847c0.307 0.893 0.838 1.761 1.574 2.497 1.302 1.301 3.009 1.952 4.715 1.951s3.412-0.652 4.699-1.939l1.97-1.85v2.459c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-3.999c0-0.010 0-0.020-0.001-0.029-0.003-0.077-0.019-0.15-0.046-0.217s-0.065-0.132-0.115-0.19c-0.008-0.009-0.016-0.018-0.024-0.026-0.061-0.063-0.134-0.115-0.216-0.15-0.079-0.034-0.166-0.053-0.257-0.055-0.003 0-0.005 0-0.007 0h-4c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2676 </svg>
2677 `
2678 },
2679 {
2680 name: 'refresh-cw',
2681 template: `
2682 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2683 <title>refresh-cw</title>
2684 <path d="M2.969 6.223c0.491-1.389 1.498-2.446 2.731-3.035s2.688-0.706 4.076-0.215c0.791 0.28 1.471 0.725 1.989 1.253l1.887 1.773h-2.317c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h3.998c0.003 0 0.006 0 0.009 0 0.091-0.001 0.179-0.021 0.257-0.055s0.153-0.084 0.216-0.15c0.008-0.009 0.016-0.017 0.024-0.026 0.050-0.058 0.089-0.122 0.115-0.19s0.043-0.141 0.046-0.217c0.001-0.010 0.001-0.019 0.001-0.029v-4c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v2.459l-1.951-1.833c-0.661-0.673-1.514-1.229-2.495-1.576-1.735-0.614-3.557-0.466-5.095 0.268s-2.799 2.057-3.413 3.793c-0.123 0.347 0.059 0.727 0.405 0.851s0.728-0.059 0.851-0.406zM1.333 10.875l1.97 1.851c1.286 1.287 2.993 1.939 4.699 1.939s3.413-0.65 4.715-1.951c0.736-0.736 1.267-1.605 1.574-2.497 0.12-0.348-0.065-0.727-0.414-0.847s-0.727 0.065-0.847 0.414c-0.241 0.7-0.662 1.394-1.255 1.987-1.042 1.041-2.406 1.561-3.771 1.561s-2.729-0.521-3.786-1.577l-1.867-1.755h2.317c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-3.998c-0.003 0-0.006 0-0.009 0-0.091 0.001-0.179 0.021-0.257 0.055s-0.153 0.084-0.216 0.15c-0.008 0.009-0.016 0.017-0.024 0.026-0.050 0.058-0.089 0.122-0.115 0.19s-0.043 0.141-0.046 0.217c-0.001 0.010-0.001 0.019-0.001 0.029v4c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667z"></path>
2685 </svg>
2686 `
2687 },
2688 {
2689 name: 'repeat',
2690 template: `
2691 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2692 <title>repeat</title>
2693 <path d="M2.667 7.333v-1.333c0-0.553 0.223-1.051 0.586-1.414s0.861-0.586 1.414-0.586h7.724l-1.529 1.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l2.667-2.667c0.064-0.064 0.112-0.137 0.145-0.216s0.051-0.165 0.051-0.255c0-0.087-0.017-0.174-0.051-0.255-0.033-0.079-0.081-0.152-0.145-0.216l-2.667-2.667c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l1.529 1.529h-7.724c-0.92 0-1.755 0.374-2.357 0.976s-0.976 1.437-0.976 2.357v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM13.333 8.667v1.333c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586h-7.724l1.529-1.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-2.667 2.667c-0.064 0.064-0.112 0.137-0.145 0.216-0.1 0.241-0.052 0.53 0.145 0.727l2.667 2.667c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-1.529-1.529h7.724c0.92 0 1.755-0.374 2.357-0.976s0.976-1.437 0.976-2.357v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667z"></path>
2694 </svg>
2695 `
2696 },
2697 {
2698 name: 'rewind',
2699 template: `
2700 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2701 <title>rewind</title>
2702 <path d="M6.667 11.303l-4.247-3.303 4.247-3.303zM14.257 13.193c0.112 0.088 0.255 0.141 0.409 0.141 0.368 0 0.667-0.299 0.667-0.667v-9.333c0.001-0.142-0.045-0.287-0.141-0.409-0.226-0.291-0.645-0.343-0.935-0.117l-6 4.667c-0.041 0.031-0.081 0.071-0.117 0.117-0.093 0.12-0.139 0.261-0.141 0.403v-4.66c0.001-0.142-0.045-0.287-0.141-0.409-0.226-0.291-0.645-0.343-0.935-0.117l-6 4.667c-0.041 0.031-0.081 0.071-0.117 0.117-0.226 0.291-0.174 0.709 0.117 0.935l6 4.667c0.112 0.088 0.255 0.141 0.409 0.141 0.368 0 0.667-0.299 0.667-0.667v-4.661c0.002 0.197 0.090 0.39 0.257 0.52zM14 11.303l-4.247-3.303 4.247-3.303z"></path>
2703 </svg>
2704 `
2705 },
2706 {
2707 name: 'rotate-ccw',
2708 template: `
2709 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2710 <title>rotate-ccw</title>
2711 <path d="M1.711 10.221c0.612 1.736 1.87 3.061 3.408 3.797s3.359 0.887 5.095 0.275 3.061-1.87 3.797-3.408 0.887-3.359 0.275-5.095-1.87-3.061-3.408-3.797-3.359-0.887-5.095-0.275c-0.983 0.347-1.837 0.901-2.499 1.575l-1.951 1.833v-2.459c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v3.999c0 0.010 0 0.020 0.001 0.029 0.003 0.077 0.019 0.15 0.046 0.217s0.065 0.132 0.115 0.19c0.008 0.009 0.016 0.018 0.024 0.026 0.061 0.063 0.134 0.115 0.216 0.15 0.079 0.034 0.166 0.053 0.257 0.055 0.003 0 0.005 0 0.007 0h4c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.666-0.667-0.666h-2.317l1.886-1.773c0.519-0.528 1.2-0.973 1.991-1.251 1.389-0.489 2.844-0.37 4.076 0.22s2.237 1.649 2.727 3.038 0.37 2.844-0.22 4.076-1.649 2.237-3.038 2.727-2.844 0.37-4.076-0.22-2.237-1.649-2.727-3.038c-0.123-0.347-0.503-0.529-0.85-0.407s-0.529 0.503-0.407 0.85z"></path>
2712 </svg>
2713 `
2714 },
2715 {
2716 name: 'rotate-cw',
2717 template: `
2718 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2719 <title>rotate-cw</title>
2720 <path d="M13.031 9.778c-0.491 1.389-1.497 2.447-2.729 3.035s-2.687 0.707-4.076 0.217-2.447-1.497-3.035-2.729-0.707-2.687-0.217-4.076 1.497-2.447 2.729-3.035 2.687-0.707 4.076-0.217c0.792 0.28 1.473 0.725 1.991 1.255l1.883 1.773h-2.32c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h3.998c0.003 0 0.006 0 0.009 0 0.091-0.001 0.178-0.020 0.257-0.055s0.153-0.084 0.216-0.15c0.008-0.008 0.015-0.017 0.023-0.025 0.051-0.058 0.089-0.123 0.117-0.191s0.043-0.142 0.046-0.219c0.001-0.009 0.001-0.017 0.001-0.027v-4c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v2.457l-1.944-1.83c-0.662-0.675-1.516-1.231-2.499-1.577-1.736-0.614-3.557-0.465-5.096 0.27s-2.798 2.059-3.411 3.795-0.464 3.557 0.271 5.095 2.059 2.798 3.795 3.411 3.557 0.465 5.095-0.271 2.798-2.059 3.411-3.795c0.123-0.347-0.059-0.728-0.407-0.851s-0.728 0.059-0.851 0.407z"></path>
2721 </svg>
2722 `
2723 },
2724 {
2725 name: 'rss',
2726 template: `
2727 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2728 <title>rss</title>
2729 <path d="M2.667 8c1.473 0 2.805 0.596 3.771 1.562s1.562 2.299 1.562 3.771c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667c0-1.841-0.747-3.509-1.953-4.714s-2.873-1.953-4.714-1.953c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM2.667 3.333c2.761 0 5.261 1.119 7.071 2.929s2.929 4.31 2.929 7.071c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667c0-3.129-1.269-5.964-3.319-8.014s-4.885-3.319-8.014-3.319c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM4.667 12.667c0-0.368-0.15-0.702-0.391-0.943s-0.575-0.391-0.943-0.391-0.702 0.15-0.943 0.391-0.391 0.575-0.391 0.943 0.15 0.702 0.391 0.943 0.575 0.391 0.943 0.391 0.702-0.15 0.943-0.391 0.391-0.575 0.391-0.943z"></path>
2730 </svg>
2731 `
2732 },
2733 {
2734 name: 'save',
2735 template: `
2736 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2737 <title>save</title>
2738 <path d="M12.667 14.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-7.333c0-0.171-0.065-0.341-0.195-0.471l-3.333-3.333c-0.121-0.121-0.287-0.195-0.471-0.195h-7.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586zM5.333 13.333v-4h5.333v4zM4 2.667v2.667c0 0.368 0.299 0.667 0.667 0.667h5.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-4.667v-2h5.057l2.943 2.943v7.057c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-0.667v-4.667c0-0.368-0.299-0.667-0.667-0.667h-6.667c-0.368 0-0.667 0.299-0.667 0.667v4.667h-0.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195z"></path>
2739 </svg>
2740 `
2741 },
2742 {
2743 name: 'scissors',
2744 template: `
2745 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2746 <title>scissors</title>
2747 <path d="M4.919 11.034c0.007 0.008 0.015 0.017 0.023 0.024s0.016 0.015 0.024 0.023c0.229 0.239 0.367 0.562 0.367 0.919 0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391c0.357 0 0.679 0.139 0.919 0.367zM9.176 10.125l3.687 3.68c0.261 0.26 0.683 0.26 0.943-0.001s0.26-0.683-0.001-0.943l-3.687-3.68c-0.261-0.26-0.683-0.26-0.943 0.001s-0.26 0.683 0.001 0.943zM4.966 4.919c-0.008 0.007-0.016 0.015-0.024 0.023s-0.016 0.016-0.023 0.024c-0.239 0.229-0.562 0.367-0.919 0.367-0.369 0-0.701-0.149-0.943-0.391s-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943c0 0.357-0.139 0.679-0.367 0.919zM5.355 6.297l1.703 1.703-1.703 1.703c-0.397-0.235-0.861-0.369-1.355-0.369-0.736 0-1.404 0.299-1.885 0.781s-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885 1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885c0-0.494-0.135-0.957-0.369-1.355l7.507-7.507c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-4.862 4.862-1.703-1.703c0.235-0.397 0.369-0.861 0.369-1.355 0-0.736-0.299-1.404-0.781-1.885s-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885 1.149 0.781 1.885 0.781c0.494 0 0.957-0.135 1.355-0.369z"></path>
2748 </svg>
2749 `
2750 },
2751 {
2752 name: 'search',
2753 template: `
2754 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2755 <title>search</title>
2756 <path d="M10.694 10.571c-0.023 0.017-0.045 0.037-0.066 0.058s-0.040 0.043-0.058 0.066c-0.839 0.809-1.979 1.305-3.237 1.305-1.289 0-2.455-0.521-3.3-1.367s-1.367-2.011-1.367-3.3 0.521-2.455 1.367-3.3 2.011-1.367 3.3-1.367 2.455 0.521 3.3 1.367 1.367 2.011 1.367 3.3c0 1.257-0.497 2.398-1.306 3.237zM14.471 13.529l-2.45-2.45c0.821-1.027 1.312-2.329 1.312-3.745 0-1.657-0.672-3.157-1.757-4.243s-2.586-1.757-4.243-1.757-3.157 0.672-4.243 1.757-1.757 2.586-1.757 4.243 0.672 3.157 1.757 4.243 2.586 1.757 4.243 1.757c1.417 0 2.719-0.491 3.745-1.312l2.45 2.45c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943z"></path>
2757 </svg>
2758 `
2759 },
2760 {
2761 name: 'send',
2762 template: `
2763 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2764 <title>send</title>
2765 <path d="M15.309 1.513c0.029-0.101 0.033-0.209 0.010-0.317-0.016-0.075-0.045-0.149-0.087-0.217s-0.097-0.127-0.159-0.175c-0.078-0.060-0.166-0.1-0.257-0.121s-0.188-0.023-0.284-0.003c-0.028 0.006-0.057 0.014-0.084 0.023l-0.014 0.005-13.32 4.662c-0.168 0.059-0.311 0.184-0.389 0.359-0.149 0.337 0.002 0.731 0.339 0.88l5.766 2.563 2.563 5.766c0.072 0.162 0.209 0.295 0.389 0.359 0.347 0.121 0.728-0.061 0.849-0.409l4.662-13.319c0.007-0.018 0.013-0.036 0.018-0.055zM7.186 7.871l-4.045-1.797 8.989-3.147zM13.073 3.871l-3.147 8.989-1.797-4.045z"></path>
2766 </svg>
2767 `
2768 },
2769 {
2770 name: 'server',
2771 template: `
2772 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2773 <title>server</title>
2774 <path d="M2.667 0.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v2.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h10.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-2.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM2.667 2h10.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v2.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-10.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-2.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM2.667 8.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v2.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h10.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-2.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM2.667 10h10.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v2.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-10.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-2.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM4.667 4c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667zM4.667 12c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
2775 </svg>
2776 `
2777 },
2778 {
2779 name: 'settings',
2780 template: `
2781 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2782 <title>settings</title>
2783 <path d="M10.667 8c0-0.736-0.299-1.404-0.781-1.885s-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885 1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885zM9.333 8c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943zM13.543 10.269c0.031-0.070 0.075-0.127 0.128-0.171 0.075-0.061 0.167-0.097 0.269-0.098h0.060c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414-0.225-1.053-0.586-1.414-0.862-0.586-1.414-0.586h-0.106c-0.073-0.001-0.143-0.019-0.205-0.051-0.085-0.044-0.153-0.115-0.195-0.208-0.002-0.019-0.003-0.039-0.003-0.059-0.031-0.071-0.043-0.146-0.036-0.219 0.008-0.097 0.048-0.189 0.116-0.258l0.041-0.041c0.39-0.391 0.585-0.904 0.585-1.415s-0.196-1.024-0.587-1.415c-0.391-0.39-0.904-0.585-1.415-0.585s-1.024 0.196-1.413 0.586l-0.031 0.031c-0.055 0.053-0.122 0.091-0.192 0.111-0.093 0.026-0.194 0.021-0.291-0.022-0.067-0.029-0.125-0.073-0.169-0.127-0.062-0.075-0.098-0.167-0.099-0.269v-0.060c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586-1.053 0.225-1.414 0.586-0.586 0.862-0.586 1.414v0.106c-0.001 0.073-0.019 0.143-0.051 0.205-0.044 0.085-0.115 0.153-0.208 0.195-0.019 0.002-0.039 0.003-0.059 0.003-0.071 0.031-0.146 0.043-0.219 0.036-0.097-0.009-0.189-0.048-0.259-0.116l-0.041-0.041c-0.391-0.39-0.903-0.585-1.415-0.585s-1.023 0.196-1.415 0.588c-0.39 0.391-0.585 0.903-0.585 1.415s0.196 1.024 0.586 1.413l0.032 0.031c0.053 0.055 0.091 0.122 0.111 0.192 0.026 0.093 0.021 0.194-0.021 0.289-0.004 0.011-0.009 0.023-0.014 0.035-0.027 0.073-0.072 0.135-0.127 0.183-0.073 0.063-0.167 0.102-0.255 0.104h-0.060c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.863-0.586 1.415 0.225 1.053 0.586 1.414 0.862 0.586 1.414 0.586h0.106c0.073 0.001 0.143 0.019 0.205 0.051 0.085 0.045 0.155 0.116 0.197 0.214 0.031 0.071 0.043 0.146 0.036 0.219-0.008 0.097-0.048 0.189-0.116 0.258l-0.041 0.041c-0.39 0.391-0.585 0.904-0.585 1.415s0.196 1.024 0.587 1.415c0.391 0.39 0.904 0.585 1.415 0.585s1.024-0.196 1.413-0.586l0.031-0.032c0.055-0.053 0.122-0.091 0.192-0.111 0.093-0.026 0.194-0.021 0.289 0.021 0.011 0.004 0.023 0.009 0.035 0.014 0.073 0.027 0.135 0.072 0.183 0.127 0.063 0.073 0.102 0.167 0.104 0.255v0.061c0 0.552 0.225 1.053 0.586 1.414s0.863 0.586 1.415 0.586 1.053-0.225 1.414-0.586 0.586-0.862 0.586-1.414v-0.106c0.001-0.073 0.019-0.143 0.051-0.205 0.045-0.085 0.116-0.155 0.214-0.197 0.071-0.031 0.146-0.043 0.219-0.036 0.097 0.008 0.189 0.048 0.258 0.116l0.041 0.041c0.391 0.39 0.904 0.585 1.415 0.585s1.024-0.196 1.415-0.587c0.39-0.391 0.585-0.904 0.585-1.415s-0.196-1.024-0.586-1.413l-0.032-0.031c-0.053-0.055-0.091-0.122-0.111-0.192-0.026-0.093-0.021-0.194 0.021-0.289zM12.323 9.731c-0.171 0.388-0.192 0.807-0.085 1.188 0.079 0.282 0.227 0.543 0.435 0.758l0.048 0.049c0.131 0.131 0.196 0.3 0.196 0.471s-0.065 0.341-0.195 0.471c-0.131 0.131-0.301 0.197-0.473 0.197s-0.341-0.065-0.471-0.195l-0.041-0.041c-0.309-0.302-0.693-0.468-1.087-0.501-0.291-0.025-0.588 0.023-0.862 0.141-0.385 0.165-0.685 0.455-0.867 0.804-0.129 0.247-0.199 0.523-0.202 0.807v0.121c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.194-0.471 0.194-0.35-0.074-0.471-0.195-0.195-0.287-0.195-0.471v-0.060c-0.010-0.44-0.17-0.828-0.429-1.128-0.189-0.219-0.431-0.39-0.705-0.497-0.383-0.164-0.795-0.183-1.171-0.077-0.282 0.079-0.543 0.227-0.758 0.435l-0.049 0.048c-0.131 0.131-0.3 0.196-0.471 0.196s-0.341-0.065-0.471-0.195c-0.131-0.131-0.197-0.301-0.197-0.473s0.065-0.341 0.195-0.471l0.041-0.041c0.302-0.309 0.468-0.693 0.501-1.087 0.025-0.291-0.023-0.588-0.141-0.862-0.165-0.385-0.455-0.685-0.804-0.867-0.247-0.129-0.523-0.199-0.807-0.202l-0.119 0.001c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471 0.074-0.35 0.195-0.471 0.287-0.195 0.471-0.195h0.060c0.44-0.010 0.828-0.17 1.128-0.429 0.219-0.189 0.39-0.431 0.497-0.705 0.164-0.383 0.182-0.795 0.077-1.171-0.079-0.282-0.227-0.543-0.435-0.757l-0.049-0.049c-0.131-0.131-0.196-0.3-0.196-0.471s0.065-0.341 0.195-0.471c0.131-0.131 0.301-0.197 0.473-0.197s0.341 0.065 0.471 0.195l0.041 0.041c0.309 0.302 0.693 0.468 1.087 0.501 0.247 0.021 0.497-0.009 0.734-0.091 0.064-0.008 0.125-0.025 0.179-0.049 0.388-0.166 0.687-0.456 0.869-0.805 0.129-0.247 0.199-0.523 0.203-0.807v-0.121c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195 0.35 0.074 0.471 0.195 0.195 0.287 0.195 0.471v0.060c0.002 0.425 0.152 0.813 0.402 1.117 0.177 0.215 0.405 0.387 0.664 0.501 0.385 0.17 0.804 0.191 1.185 0.084 0.282-0.079 0.543-0.227 0.758-0.435l0.049-0.048c0.131-0.131 0.3-0.196 0.471-0.196s0.341 0.065 0.471 0.195c0.131 0.131 0.197 0.301 0.197 0.473s-0.065 0.341-0.195 0.471l-0.041 0.041c-0.302 0.309-0.468 0.693-0.501 1.087-0.021 0.247 0.009 0.497 0.091 0.734 0.008 0.064 0.025 0.125 0.049 0.179 0.166 0.388 0.456 0.687 0.805 0.869 0.247 0.129 0.523 0.199 0.807 0.202h0.12c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471-0.074 0.35-0.195 0.471-0.287 0.195-0.471 0.195h-0.060c-0.425 0.002-0.813 0.152-1.117 0.402-0.215 0.177-0.387 0.405-0.5 0.662z"></path>
2784 </svg>
2785 `
2786 },
2787 {
2788 name: 'share-2',
2789 template: `
2790 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2791 <title>share-2</title>
2792 <path d="M10.809 12.065c0.017-0.022 0.032-0.045 0.047-0.069 0.013-0.023 0.025-0.047 0.036-0.071 0.049-0.072 0.104-0.139 0.165-0.201 0.242-0.242 0.574-0.391 0.943-0.391s0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943-0.149 0.701-0.391 0.943-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943c0-0.217 0.051-0.421 0.143-0.601zM10.867 4.037c-0.006-0.011-0.012-0.023-0.019-0.034s-0.013-0.023-0.021-0.033c-0.103-0.189-0.161-0.405-0.161-0.637 0-0.369 0.149-0.701 0.391-0.943s0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943-0.149 0.701-0.391 0.943-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391c-0.072-0.072-0.136-0.152-0.19-0.239zM5.133 7.296c0.006 0.011 0.012 0.023 0.019 0.034s0.013 0.023 0.021 0.033c0.103 0.189 0.161 0.405 0.161 0.637s-0.059 0.448-0.162 0.637c-0.007 0.011-0.014 0.022-0.021 0.033s-0.013 0.022-0.018 0.033c-0.054 0.087-0.118 0.167-0.19 0.239-0.242 0.242-0.574 0.391-0.943 0.391s-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391c0.072 0.072 0.136 0.152 0.19 0.239zM9.433 4.059l-3.539 2.065c-0.003-0.003-0.006-0.006-0.009-0.009-0.481-0.481-1.149-0.781-1.885-0.781s-1.404 0.299-1.885 0.781-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885 1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781c0.003-0.003 0.006-0.006 0.009-0.009l3.539 2.063c-0.065 0.231-0.101 0.476-0.101 0.728 0 0.736 0.299 1.404 0.781 1.885s1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885-0.299-1.404-0.781-1.885-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781c-0.002 0.002-0.005 0.005-0.007 0.007l-3.541-2.063c0.065-0.231 0.1-0.473 0.1-0.725s-0.035-0.495-0.1-0.725l3.539-2.065c0.003 0.003 0.006 0.006 0.009 0.009 0.481 0.482 1.149 0.781 1.885 0.781s1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885-0.299-1.404-0.781-1.885-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781-0.781 1.149-0.781 1.885c0 0.251 0.035 0.495 0.1 0.725z"></path>
2793 </svg>
2794 `
2795 },
2796 {
2797 name: 'share',
2798 template: `
2799 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2800 <title>share</title>
2801 <path d="M2 8v5.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h8c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-5.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v5.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-8c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-5.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM7.333 2.943v7.057c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-7.057l1.529 1.529c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-2.667-2.667c-0.261-0.261-0.683-0.261-0.943 0l-2.667 2.667c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0z"></path>
2802 </svg>
2803 `
2804 },
2805 {
2806 name: 'shield-off',
2807 template: `
2808 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2809 <title>shield-off</title>
2810 <path d="M13.763 9.531c0.161-0.517 0.239-1.045 0.237-1.533v-4.664c0-0.284-0.178-0.527-0.433-0.624l-5.333-2c-0.157-0.059-0.323-0.055-0.467 0l-2.107 0.787c-0.345 0.128-0.52 0.512-0.391 0.857s0.513 0.52 0.858 0.391l1.873-0.699 4.667 1.75v4.207c0.001 0.348-0.055 0.741-0.177 1.133-0.109 0.351 0.087 0.725 0.439 0.834s0.725-0.087 0.834-0.439zM3.333 4.276l7.487 7.487c-0.787 0.8-1.741 1.537-2.821 2.145-0.789-0.449-2.946-1.797-4.033-3.699-0.053-0.092-0.102-0.184-0.149-0.278-0.305-0.608-0.485-1.253-0.485-1.931zM0.195 1.138l1.883 1.883c-0.050 0.095-0.077 0.201-0.078 0.312v4.667c0 0.921 0.246 1.77 0.625 2.527 0.058 0.117 0.119 0.231 0.184 0.343 1.567 2.743 4.893 4.393 4.893 4.393 0.199 0.099 0.424 0.090 0.609-0.007 1.323-0.698 2.493-1.577 3.452-2.55l3.099 3.099c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-14.667-14.667c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
2811 </svg>
2812 `
2813 },
2814 {
2815 name: 'shield',
2816 template: `
2817 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2818 <title>shield</title>
2819 <path d="M8 13.908c-0.789-0.448-2.947-1.797-4.033-3.699-0.053-0.092-0.102-0.184-0.149-0.278-0.304-0.607-0.485-1.252-0.485-1.931v-4.205l4.667-1.75 4.667 1.75v4.205c0 0.679-0.181 1.323-0.484 1.931-0.047 0.093-0.097 0.186-0.149 0.278-1.087 1.903-3.245 3.251-4.033 3.699zM8.298 15.263c0 0 3.326-1.65 4.893-4.393 0.064-0.112 0.125-0.227 0.184-0.343 0.379-0.757 0.625-1.605 0.625-2.527v-4.667c0-0.284-0.178-0.527-0.433-0.624l-5.333-2c-0.157-0.059-0.323-0.055-0.468 0l-5.333 2c-0.266 0.099-0.431 0.351-0.433 0.624v4.667c0 0.921 0.246 1.77 0.625 2.527 0.058 0.117 0.119 0.231 0.184 0.343 1.567 2.743 4.893 4.393 4.893 4.393 0.195 0.097 0.413 0.091 0.596 0z"></path>
2820 </svg>
2821 `
2822 },
2823 {
2824 name: 'shopping-bag',
2825 template: `
2826 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2827 <title>shopping-bag</title>
2828 <path d="M12.667 3.333h-9.333l1-1.333h7.333zM14.529 3.595l-1.996-2.661c-0.131-0.174-0.329-0.266-0.533-0.267h-8c-0.217 0-0.411 0.104-0.533 0.267l-1.996 2.661c-0.029 0.037-0.054 0.079-0.074 0.122-0.043 0.091-0.064 0.188-0.063 0.283v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-9.333c0-0.146-0.047-0.281-0.126-0.39-0.003-0.003-0.005-0.007-0.007-0.010zM2.667 4.667h10.667v8.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-9.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471zM10 6.667c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586-1.051-0.223-1.414-0.586-0.586-0.861-0.586-1.414c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667c0 0.92 0.374 1.755 0.976 2.357s1.437 0.976 2.357 0.976 1.755-0.374 2.357-0.976 0.976-1.437 0.976-2.357c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667z"></path>
2829 </svg>
2830 `
2831 },
2832 {
2833 name: 'shopping-cart',
2834 template: `
2835 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2836 <title>shopping-cart</title>
2837 <path d="M7.333 14c0-0.368-0.15-0.702-0.391-0.943s-0.575-0.391-0.943-0.391-0.702 0.15-0.943 0.391-0.391 0.575-0.391 0.943 0.15 0.702 0.391 0.943 0.575 0.391 0.943 0.391 0.702-0.15 0.943-0.391 0.391-0.575 0.391-0.943zM14.667 14c0-0.368-0.15-0.702-0.391-0.943s-0.575-0.391-0.943-0.391-0.702 0.15-0.943 0.391-0.391 0.575-0.391 0.943 0.15 0.702 0.391 0.943 0.575 0.391 0.943 0.391 0.702-0.15 0.943-0.391 0.391-0.575 0.391-0.943zM4.814 4.667h9.713l-0.914 4.794c-0.031 0.152-0.111 0.283-0.221 0.379-0.12 0.104-0.275 0.164-0.459 0.161h-6.489c-0.155 0.002-0.301-0.047-0.417-0.135-0.127-0.095-0.219-0.234-0.253-0.402zM0.667 1.333h2.12l0.565 2.826c0.072 0.291 0.335 0.507 0.648 0.507h0.814l-0.267-1.333h-0.547c-0.368 0-0.667 0.299-0.667 0.667 0 0.035 0.003 0.070 0.008 0.103 0.003 0.019 0.007 0.038 0.011 0.056l1.114 5.565c0.099 0.501 0.379 0.922 0.76 1.207 0.347 0.261 0.78 0.409 1.236 0.402h6.471c0.499 0.010 0.97-0.174 1.33-0.485 0.329-0.284 0.565-0.675 0.657-1.122l1.068-5.601c0.069-0.362-0.168-0.711-0.53-0.78-0.043-0.009-0.087-0.013-0.125-0.012h-10.787l-0.56-2.797c-0.063-0.308-0.331-0.536-0.653-0.536h-2.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2838 </svg>
2839 `
2840 },
2841 {
2842 name: 'shuffle',
2843 template: `
2844 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2845 <title>shuffle</title>
2846 <path d="M3.138 13.805l10.195-10.195v1.724c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-3.333c0-0.091-0.018-0.177-0.051-0.255s-0.081-0.152-0.144-0.215c-0.001-0.001-0.001-0.001-0.001-0.001-0.061-0.061-0.135-0.111-0.215-0.144-0.079-0.033-0.165-0.051-0.255-0.051h-3.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h1.724l-10.195 10.195c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0zM9.529 10.471l2.862 2.862h-1.724c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h3.333c0.087 0 0.174-0.017 0.255-0.051s0.155-0.083 0.216-0.145c0.064-0.064 0.112-0.137 0.145-0.216s0.051-0.165 0.051-0.255v-3.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v1.724l-2.862-2.862c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943zM2.195 3.138l3.333 3.333c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-3.333-3.333c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
2847 </svg>
2848 `
2849 },
2850 {
2851 name: 'sidebar',
2852 template: `
2853 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2854 <title>sidebar</title>
2855 <path d="M3.333 1.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-9.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM6.667 13.333v-10.667h6c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v9.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195zM5.333 2.667v10.667h-2c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195z"></path>
2856 </svg>
2857 `
2858 },
2859 {
2860 name: 'skip-back',
2861 template: `
2862 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2863 <title>skip-back</title>
2864 <path d="M12.25 13.854c0.113 0.091 0.259 0.146 0.417 0.146 0.368 0 0.667-0.299 0.667-0.667v-10.667c0.001-0.145-0.047-0.293-0.146-0.417-0.23-0.287-0.649-0.334-0.937-0.104l-6.667 5.333c-0.035 0.028-0.072 0.063-0.104 0.104-0.23 0.287-0.183 0.707 0.104 0.937zM12 11.946l-4.933-3.946 4.933-3.946zM4 12.667v-9.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v9.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667z"></path>
2865 </svg>
2866 `
2867 },
2868 {
2869 name: 'skip-forward',
2870 template: `
2871 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2872 <title>skip-forward</title>
2873 <path d="M3.75 2.146c-0.113-0.091-0.259-0.146-0.417-0.146-0.368 0-0.667 0.299-0.667 0.667v10.667c-0.001 0.145 0.047 0.293 0.146 0.417 0.23 0.287 0.649 0.334 0.937 0.104l6.667-5.333c0.035-0.028 0.072-0.063 0.104-0.104 0.23-0.287 0.183-0.707-0.104-0.937zM4 4.054l4.933 3.946-4.933 3.946zM12 3.333v9.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-9.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667z"></path>
2874 </svg>
2875 `
2876 },
2877 {
2878 name: 'slack',
2879 template: `
2880 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2881 <title>slack</title>
2882 <path d="M9.667 7.333c0.46 0 0.877-0.187 1.179-0.488s0.488-0.719 0.488-1.179v-3.333c0-0.46-0.187-0.877-0.488-1.179s-0.719-0.488-1.179-0.488-0.877 0.187-1.179 0.488-0.488 0.719-0.488 1.179v3.333c0 0.46 0.187 0.877 0.488 1.179s0.719 0.488 1.179 0.488zM9.667 6c-0.093 0-0.176-0.037-0.236-0.097s-0.097-0.143-0.097-0.236v-3.333c0-0.093 0.037-0.176 0.097-0.236s0.143-0.097 0.236-0.097 0.176 0.037 0.236 0.097 0.097 0.143 0.097 0.236v3.333c0 0.093-0.037 0.176-0.097 0.236s-0.143 0.097-0.236 0.097zM13.667 7.333c0.46 0 0.877-0.187 1.179-0.488s0.488-0.719 0.488-1.179-0.187-0.877-0.488-1.179-0.719-0.488-1.179-0.488-0.877 0.187-1.179 0.488-0.488 0.719-0.488 1.179v1c0 0.368 0.299 0.667 0.667 0.667zM13.667 6h-0.333v-0.333c0-0.093 0.037-0.176 0.097-0.236s0.143-0.097 0.236-0.097 0.176 0.037 0.236 0.097 0.097 0.143 0.097 0.236-0.037 0.176-0.097 0.236-0.143 0.097-0.236 0.097zM6.333 8.667c-0.46 0-0.877 0.187-1.179 0.488s-0.488 0.719-0.488 1.179v3.333c0 0.46 0.187 0.877 0.488 1.179s0.719 0.488 1.179 0.488 0.877-0.187 1.179-0.488 0.488-0.719 0.488-1.179v-3.333c0-0.46-0.187-0.877-0.488-1.179s-0.719-0.488-1.179-0.488zM6.333 10c0.093 0 0.176 0.037 0.236 0.097s0.097 0.143 0.097 0.236v3.333c0 0.093-0.037 0.176-0.097 0.236s-0.143 0.097-0.236 0.097-0.176-0.037-0.236-0.097-0.097-0.143-0.097-0.236v-3.333c0-0.093 0.037-0.176 0.097-0.236s0.143-0.097 0.236-0.097zM2.333 8.667c-0.46 0-0.877 0.187-1.179 0.488s-0.488 0.719-0.488 1.179 0.187 0.877 0.488 1.179 0.719 0.488 1.179 0.488 0.877-0.187 1.179-0.488 0.488-0.719 0.488-1.179v-1c0-0.368-0.299-0.667-0.667-0.667zM2.333 10h0.333v0.333c0 0.093-0.037 0.176-0.097 0.236s-0.143 0.097-0.236 0.097-0.176-0.037-0.236-0.097-0.097-0.143-0.097-0.236 0.037-0.176 0.097-0.236 0.143-0.097 0.236-0.097zM8.667 9.667c0 0.46 0.187 0.877 0.488 1.179s0.719 0.488 1.179 0.488h3.333c0.46 0 0.877-0.187 1.179-0.488s0.488-0.719 0.488-1.179-0.187-0.877-0.488-1.179-0.719-0.488-1.179-0.488h-3.333c-0.46 0-0.877 0.187-1.179 0.488s-0.488 0.719-0.488 1.179zM10 9.667c0-0.093 0.037-0.176 0.097-0.236s0.143-0.097 0.236-0.097h3.333c0.093 0 0.176 0.037 0.236 0.097s0.097 0.143 0.097 0.236-0.037 0.176-0.097 0.236-0.143 0.097-0.236 0.097h-3.333c-0.093 0-0.176-0.037-0.236-0.097s-0.097-0.143-0.097-0.236zM10.333 13.333c0.093 0 0.176 0.037 0.236 0.097s0.097 0.143 0.097 0.236-0.037 0.176-0.097 0.236-0.143 0.097-0.236 0.097-0.176-0.037-0.236-0.097-0.097-0.143-0.097-0.236v-0.333zM10.333 12h-1c-0.368 0-0.667 0.299-0.667 0.667v1c0 0.46 0.187 0.877 0.488 1.179s0.719 0.488 1.179 0.488 0.877-0.187 1.179-0.488 0.488-0.719 0.488-1.179-0.187-0.877-0.488-1.179-0.719-0.488-1.179-0.488zM6 6.333c0 0.093-0.037 0.176-0.097 0.236s-0.143 0.097-0.236 0.097h-3.333c-0.093 0-0.176-0.037-0.236-0.097s-0.097-0.143-0.097-0.236 0.037-0.176 0.097-0.236 0.143-0.097 0.236-0.097h3.333c0.093 0 0.176 0.037 0.236 0.097s0.097 0.143 0.097 0.236zM7.333 6.333c0-0.46-0.187-0.877-0.488-1.179s-0.719-0.488-1.179-0.488h-3.333c-0.46 0-0.877 0.187-1.179 0.488s-0.488 0.719-0.488 1.179 0.187 0.877 0.488 1.179 0.719 0.488 1.179 0.488h3.333c0.46 0 0.877-0.187 1.179-0.488s0.488-0.719 0.488-1.179zM5.667 2.667c-0.093 0-0.176-0.037-0.236-0.097s-0.097-0.143-0.097-0.236 0.037-0.176 0.097-0.236 0.143-0.097 0.236-0.097 0.176 0.037 0.236 0.097 0.097 0.143 0.097 0.236v0.333zM5.667 4h1c0.368 0 0.667-0.299 0.667-0.667v-1c0-0.46-0.187-0.877-0.488-1.179s-0.719-0.488-1.179-0.488-0.877 0.187-1.179 0.488-0.488 0.719-0.488 1.179 0.187 0.877 0.488 1.179 0.719 0.488 1.179 0.488z"></path>
2883 </svg>
2884 `
2885 },
2886 {
2887 name: 'slash',
2888 template: `
2889 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2890 <title>slash</title>
2891 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM12.688 11.745l-8.433-8.433c1.027-0.821 2.329-1.312 3.745-1.312 1.657 0 3.156 0.671 4.243 1.757s1.757 2.585 1.757 4.243c0 1.417-0.491 2.719-1.312 3.745zM3.312 4.255l8.433 8.433c-1.027 0.821-2.329 1.312-3.745 1.312-1.657 0-3.156-0.671-4.243-1.757s-1.757-2.585-1.757-4.243c0-1.417 0.491-2.719 1.312-3.745z"></path>
2892 </svg>
2893 `
2894 },
2895 {
2896 name: 'sliders',
2897 template: `
2898 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2899 <title>sliders</title>
2900 <path d="M3.333 6.667v-4.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v4.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM8.667 14v-6c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v6c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM14 8v-6c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v6c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM0.667 10h1.333v4c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-4h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-4c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM6 6h4c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-1.333v-2.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v2.667h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM11.333 11.333h1.333v2.667c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2.667h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-4c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
2901 </svg>
2902 `
2903 },
2904 {
2905 name: 'smartphone',
2906 template: `
2907 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2908 <title>smartphone</title>
2909 <path d="M4.667 0.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v10.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h6.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-10.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM4.667 2h6.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v10.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-6.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-10.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM8.667 12c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
2910 </svg>
2911 `
2912 },
2913 {
2914 name: 'smile',
2915 template: `
2916 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2917 <title>smile</title>
2918 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM4.8 9.733c0 0 0.087 0.115 0.221 0.255 0.097 0.102 0.225 0.227 0.385 0.36 0.225 0.187 0.515 0.393 0.865 0.569 0.47 0.235 1.053 0.416 1.73 0.416s1.26-0.181 1.73-0.416c0.35-0.175 0.64-0.381 0.865-0.569 0.159-0.133 0.288-0.258 0.385-0.36 0.133-0.14 0.221-0.255 0.221-0.255 0.221-0.295 0.161-0.713-0.133-0.933s-0.713-0.161-0.933 0.133l-0.121 0.137c-0.067 0.070-0.158 0.159-0.272 0.255-0.162 0.135-0.366 0.279-0.607 0.4-0.32 0.159-0.7 0.275-1.134 0.275s-0.814-0.115-1.134-0.275c-0.24-0.12-0.445-0.265-0.607-0.4-0.114-0.095-0.205-0.185-0.272-0.255l-0.121-0.137c-0.221-0.295-0.639-0.354-0.933-0.133s-0.354 0.639-0.133 0.933z"></path>
2919 </svg>
2920 `
2921 },
2922 {
2923 name: 'speaker',
2924 template: `
2925 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2926 <title>speaker</title>
2927 <path d="M4 0.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v10.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h8c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-10.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM4 2h8c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v10.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-8c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-10.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM11.333 9.333c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976-1.755 0.374-2.357 0.976-0.976 1.437-0.976 2.357 0.374 1.755 0.976 2.357 1.437 0.976 2.357 0.976 1.755-0.374 2.357-0.976 0.976-1.437 0.976-2.357zM10 9.333c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586-1.051-0.223-1.414-0.586-0.586-0.861-0.586-1.414 0.223-1.051 0.586-1.414 0.861-0.586 1.414-0.586 1.051 0.223 1.414 0.586 0.586 0.861 0.586 1.414zM8.667 4c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
2928 </svg>
2929 `
2930 },
2931 {
2932 name: 'square',
2933 template: `
2934 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2935 <title>square</title>
2936 <path d="M3.333 1.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-9.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM3.333 2.667h9.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v9.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-9.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195z"></path>
2937 </svg>
2938 `
2939 },
2940 {
2941 name: 'star',
2942 template: `
2943 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2944 <title>star</title>
2945 <path d="M8.598 1.038c-0.061-0.126-0.165-0.235-0.303-0.303-0.33-0.163-0.73-0.027-0.893 0.303l-1.905 3.859-4.261 0.623c-0.139 0.019-0.274 0.085-0.381 0.194-0.257 0.264-0.251 0.686 0.012 0.943l3.082 3.002-0.727 4.241c-0.024 0.138-0.004 0.287 0.067 0.423 0.171 0.326 0.575 0.451 0.901 0.28l3.809-2.003 3.81 2.003c0.124 0.066 0.272 0.093 0.423 0.067 0.363-0.062 0.607-0.407 0.545-0.77l-0.727-4.241 3.082-3.002c0.101-0.097 0.173-0.229 0.195-0.381 0.053-0.364-0.199-0.703-0.563-0.756l-4.26-0.623zM8 2.839l1.462 2.963c0.101 0.203 0.291 0.333 0.501 0.365l3.271 0.478-2.366 2.305c-0.163 0.159-0.227 0.379-0.192 0.59l0.558 3.255-2.924-1.538c-0.201-0.105-0.431-0.099-0.621 0l-2.924 1.538 0.558-3.255c0.039-0.224-0.039-0.441-0.192-0.59l-2.366-2.305 3.271-0.479c0.224-0.033 0.406-0.173 0.501-0.364z"></path>
2946 </svg>
2947 `
2948 },
2949 {
2950 name: 'stop-circle',
2951 template: `
2952 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2953 <title>stop-circle</title>
2954 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM6 5.333c-0.368 0-0.667 0.299-0.667 0.667v4c0 0.368 0.299 0.667 0.667 0.667h4c0.368 0 0.667-0.299 0.667-0.667v-4c0-0.368-0.299-0.667-0.667-0.667zM6.667 6.667h2.667v2.667h-2.667z"></path>
2955 </svg>
2956 `
2957 },
2958 {
2959 name: 'sun',
2960 template: `
2961 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2962 <title>sun</title>
2963 <path d="M12 8c0-1.105-0.449-2.105-1.171-2.829s-1.724-1.171-2.829-1.171-2.105 0.449-2.829 1.171-1.171 1.724-1.171 2.829 0.449 2.105 1.171 2.829 1.724 1.171 2.829 1.171 2.105-0.449 2.829-1.171 1.171-1.724 1.171-2.829zM10.667 8c0 0.737-0.298 1.402-0.781 1.885s-1.149 0.781-1.885 0.781-1.402-0.298-1.885-0.781-0.781-1.149-0.781-1.885 0.298-1.402 0.781-1.885 1.149-0.781 1.885-0.781 1.402 0.298 1.885 0.781 0.781 1.149 0.781 1.885zM7.333 0.667v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM7.333 14v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM2.342 3.285l0.947 0.947c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-0.947-0.947c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943zM11.769 12.711l0.947 0.947c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-0.947-0.947c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943zM0.667 8.667h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM14 8.667h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM3.285 13.658l0.947-0.947c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-0.947 0.947c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0zM12.711 4.231l0.947-0.947c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-0.947 0.947c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0z"></path>
2964 </svg>
2965 `
2966 },
2967 {
2968 name: 'sunrise',
2969 template: `
2970 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2971 <title>sunrise</title>
2972 <path d="M12 12c0-1.105-0.449-2.105-1.171-2.829s-1.724-1.171-2.829-1.171-2.105 0.449-2.829 1.171-1.171 1.724-1.171 2.829c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667c0-0.737 0.298-1.402 0.781-1.885s1.149-0.781 1.885-0.781 1.402 0.298 1.885 0.781 0.781 1.149 0.781 1.885c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM2.342 7.285l0.947 0.947c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-0.947-0.947c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943zM0.667 12.667h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM14 12.667h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM12.711 8.231l0.947-0.947c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-0.947 0.947c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0zM15.333 14h-14.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h14.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM5.805 4.471l1.529-1.529v3.057c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-3.057l1.529 1.529c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-2.667-2.667c-0.064-0.064-0.137-0.112-0.216-0.145s-0.165-0.051-0.255-0.051c-0.087 0-0.174 0.017-0.255 0.051-0.079 0.033-0.152 0.081-0.216 0.145l-2.667 2.667c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0z"></path>
2973 </svg>
2974 `
2975 },
2976 {
2977 name: 'sunset',
2978 template: `
2979 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2980 <title>sunset</title>
2981 <path d="M12 12c0-1.105-0.449-2.105-1.171-2.829s-1.724-1.171-2.829-1.171-2.105 0.449-2.829 1.171-1.171 1.724-1.171 2.829c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667c0-0.737 0.298-1.402 0.781-1.885s1.149-0.781 1.885-0.781 1.402 0.298 1.885 0.781 0.781 1.149 0.781 1.885c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM2.342 7.285l0.947 0.947c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-0.947-0.947c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943zM0.667 12.667h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM14 12.667h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM12.711 8.231l0.947-0.947c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-0.947 0.947c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0zM15.333 14h-14.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h14.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM10.195 2.862l-1.529 1.529v-3.057c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v3.057l-1.529-1.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l2.667 2.667c0.064 0.064 0.137 0.112 0.216 0.145s0.165 0.051 0.255 0.051c0.087 0 0.174-0.017 0.255-0.051 0.079-0.033 0.152-0.081 0.216-0.145l2.667-2.667c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0z"></path>
2982 </svg>
2983 `
2984 },
2985 {
2986 name: 'tablet',
2987 template: `
2988 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2989 <title>tablet</title>
2990 <path d="M12 15.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-10.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-8c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v10.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586zM12 14h-8c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-10.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h8c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v10.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195zM8.667 12c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
2991 </svg>
2992 `
2993 },
2994 {
2995 name: 'tag',
2996 template: `
2997 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2998 <title>tag</title>
2999 <path d="M14.198 9.411c0.389-0.391 0.583-0.901 0.583-1.41s-0.193-1.021-0.583-1.413l-5.727-5.727c-0.121-0.12-0.287-0.195-0.471-0.195h-6.667c-0.368 0-0.667 0.299-0.667 0.667v6.667c0 0.171 0.065 0.341 0.195 0.472l5.728 5.721c0.391 0.39 0.904 0.585 1.415 0.585s1.024-0.196 1.413-0.586zM13.255 8.469l-4.78 4.78c-0.131 0.131-0.3 0.196-0.471 0.196s-0.341-0.065-0.471-0.195l-5.533-5.527v-5.723h5.724l5.531 5.531c0.128 0.129 0.193 0.298 0.193 0.469s-0.065 0.339-0.193 0.468zM5.333 4.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
3000 </svg>
3001 `
3002 },
3003 {
3004 name: 'target',
3005 template: `
3006 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3007 <title>target</title>
3008 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM12.667 8c0-1.289-0.523-2.456-1.367-3.3s-2.011-1.367-3.3-1.367-2.456 0.523-3.3 1.367-1.367 2.011-1.367 3.3 0.523 2.456 1.367 3.3 2.011 1.367 3.3 1.367 2.456-0.523 3.3-1.367 1.367-2.011 1.367-3.3zM11.333 8c0 0.921-0.373 1.753-0.976 2.357s-1.437 0.976-2.357 0.976-1.753-0.373-2.357-0.976-0.976-1.437-0.976-2.357 0.373-1.753 0.976-2.357 1.437-0.976 2.357-0.976 1.753 0.373 2.357 0.976 0.976 1.437 0.976 2.357zM10 8c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586-1.053 0.225-1.414 0.586-0.586 0.862-0.586 1.414 0.225 1.053 0.586 1.414 0.862 0.586 1.414 0.586 1.053-0.225 1.414-0.586 0.586-0.862 0.586-1.414zM8.667 8c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195-0.35-0.074-0.471-0.195-0.195-0.287-0.195-0.471 0.074-0.35 0.195-0.471 0.287-0.195 0.471-0.195 0.35 0.074 0.471 0.195 0.195 0.287 0.195 0.471z"></path>
3009 </svg>
3010 `
3011 },
3012 {
3013 name: 'terminal',
3014 template: `
3015 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3016 <title>terminal</title>
3017 <path d="M3.138 11.805l4-4c0.261-0.261 0.261-0.683 0-0.943l-4-4c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l3.529 3.529-3.529 3.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0zM8 13.333h5.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-5.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
3018 </svg>
3019 `
3020 },
3021 {
3022 name: 'thermometer',
3023 template: `
3024 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3025 <title>thermometer</title>
3026 <path d="M8.667 9.84c0.001 0.219 0.107 0.431 0.302 0.558 0.233 0.152 0.457 0.369 0.639 0.64 0.358 0.536 0.465 1.165 0.349 1.751s-0.456 1.127-0.992 1.485-1.165 0.465-1.751 0.349-1.127-0.456-1.485-0.992-0.465-1.165-0.349-1.751 0.456-1.127 0.992-1.485c0.179-0.121 0.295-0.325 0.295-0.555v-7.507c0-0.276 0.111-0.525 0.293-0.707s0.431-0.293 0.707-0.293 0.525 0.111 0.707 0.293 0.293 0.431 0.293 0.707zM10 9.504v-7.171c0-0.644-0.262-1.229-0.683-1.65s-1.006-0.683-1.65-0.683-1.229 0.262-1.65 0.683-0.683 1.006-0.683 1.65v7.173c-0.671 0.553-1.103 1.307-1.263 2.113-0.183 0.919-0.015 1.911 0.547 2.753s1.414 1.376 2.333 1.559 1.911 0.015 2.753-0.547 1.376-1.414 1.559-2.333 0.015-1.911-0.547-2.753c-0.205-0.306-0.449-0.573-0.715-0.793z"></path>
3027 </svg>
3028 `
3029 },
3030 {
3031 name: 'thumbs-down',
3032 template: `
3033 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3034 <title>thumbs-down</title>
3035 <path d="M12 8v-6h1.113c0.241-0.004 0.449 0.079 0.607 0.221 0.142 0.127 0.243 0.3 0.279 0.497v4.525c-0.025 0.227-0.139 0.42-0.303 0.555-0.157 0.129-0.358 0.204-0.574 0.201zM6 10.667v2c0 0.736 0.299 1.404 0.781 1.885s1.149 0.781 1.885 0.781c0.27 0 0.503-0.161 0.609-0.396l2.491-5.604h1.337c0.54 0.008 1.046-0.18 1.44-0.504 0.415-0.341 0.706-0.834 0.783-1.407 0.004-0.027 0.006-0.058 0.006-0.089v-4.667c0-0.028-0.002-0.059-0.006-0.091-0.074-0.535-0.337-1.007-0.717-1.347-0.4-0.358-0.931-0.571-1.497-0.561h-9.3c-0.511-0.006-0.988 0.187-1.347 0.509-0.337 0.301-0.571 0.717-0.645 1.189l-0.92 6.001c-0.083 0.547 0.064 1.076 0.367 1.487s0.765 0.709 1.31 0.791c0.11 0.016 0.222 0.024 0.328 0.022zM7.333 10c0-0.368-0.299-0.667-0.667-0.667l-3.83-0.001-0.059-0.007c-0.182-0.027-0.335-0.125-0.437-0.264s-0.15-0.313-0.123-0.495l0.92-5.999c0.025-0.159 0.104-0.299 0.217-0.4 0.12-0.107 0.277-0.17 0.458-0.168h6.853v6.525l-2.405 5.412c-0.205-0.065-0.388-0.179-0.537-0.328-0.242-0.242-0.391-0.574-0.391-0.943z"></path>
3036 </svg>
3037 `
3038 },
3039 {
3040 name: 'thumbs-up',
3041 template: `
3042 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3043 <title>thumbs-up</title>
3044 <path d="M4 8v6h-1.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-4.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM10 5.333v-2c0-0.736-0.299-1.404-0.781-1.885s-1.149-0.781-1.885-0.781c-0.27 0-0.503 0.161-0.609 0.396l-2.491 5.604h-1.567c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v4.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.52c0.511 0.006 0.988-0.187 1.347-0.509 0.337-0.301 0.571-0.717 0.645-1.189l0.92-6.001c0.083-0.547-0.064-1.076-0.367-1.487s-0.765-0.709-1.31-0.791c-0.11-0.017-0.222-0.025-0.328-0.023zM8.667 6c0 0.368 0.299 0.667 0.667 0.667l3.83 0.001 0.059 0.007c0.182 0.027 0.335 0.125 0.437 0.264s0.15 0.313 0.123 0.495l-0.92 5.999c-0.025 0.159-0.104 0.299-0.217 0.4-0.12 0.107-0.277 0.171-0.457 0.169l-6.854-0.001v-6.525l2.405-5.412c0.205 0.065 0.388 0.179 0.537 0.328 0.242 0.242 0.391 0.574 0.391 0.943z"></path>
3045 </svg>
3046 `
3047 },
3048 {
3049 name: 'toggle-left',
3050 template: `
3051 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3052 <title>toggle-left</title>
3053 <path d="M5.333 2.667c-1.473 0-2.807 0.598-3.771 1.562s-1.562 2.299-1.562 3.771 0.598 2.807 1.562 3.771 2.299 1.562 3.771 1.562h5.333c1.473 0 2.807-0.598 3.771-1.562s1.562-2.299 1.562-3.771-0.598-2.807-1.562-3.771-2.299-1.562-3.771-1.562zM5.333 4h5.333c1.105 0 2.104 0.447 2.829 1.171s1.171 1.724 1.171 2.829-0.447 2.104-1.171 2.829-1.724 1.171-2.829 1.171h-5.333c-1.105 0-2.104-0.447-2.829-1.171s-1.171-1.724-1.171-2.829 0.447-2.104 1.171-2.829 1.724-1.171 2.829-1.171zM8 8c0-0.736-0.299-1.404-0.781-1.885s-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885 1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885zM6.667 8c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943z"></path>
3054 </svg>
3055 `
3056 },
3057 {
3058 name: 'toggle-right',
3059 template: `
3060 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3061 <title>toggle-right</title>
3062 <path d="M5.333 2.667c-1.473 0-2.807 0.598-3.771 1.562s-1.562 2.299-1.562 3.771 0.598 2.807 1.562 3.771 2.299 1.562 3.771 1.562h5.333c1.473 0 2.807-0.598 3.771-1.562s1.562-2.299 1.562-3.771-0.598-2.807-1.562-3.771-2.299-1.562-3.771-1.562zM5.333 4h5.333c1.105 0 2.104 0.447 2.829 1.171s1.171 1.724 1.171 2.829-0.447 2.104-1.171 2.829-1.724 1.171-2.829 1.171h-5.333c-1.105 0-2.104-0.447-2.829-1.171s-1.171-1.724-1.171-2.829 0.447-2.104 1.171-2.829 1.724-1.171 2.829-1.171zM13.333 8c0-0.736-0.299-1.404-0.781-1.885s-1.149-0.781-1.885-0.781-1.404 0.299-1.885 0.781-0.781 1.149-0.781 1.885 0.299 1.404 0.781 1.885 1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885zM12 8c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943 0.149-0.701 0.391-0.943 0.574-0.391 0.943-0.391 0.701 0.149 0.943 0.391 0.391 0.574 0.391 0.943z"></path>
3063 </svg>
3064 `
3065 },
3066 {
3067 name: 'trash-2',
3068 template: `
3069 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3070 <title>trash-2</title>
3071 <path d="M12 4.667v8.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-6.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-8.667zM11.333 3.333v-0.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-2.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v0.667h-2.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h0.667v8.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h6.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-8.667h0.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM6 3.333v-0.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h2.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v0.667zM6 7.333v4c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-4c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM8.667 7.333v4c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-4c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667z"></path>
3072 </svg>
3073 `
3074 },
3075 {
3076 name: 'trash',
3077 template: `
3078 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3079 <title>trash</title>
3080 <path d="M12 4.667v8.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-6.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-8.667zM11.333 3.333v-0.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-2.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v0.667h-2.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h0.667v8.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h6.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-8.667h0.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667zM6 3.333v-0.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195h2.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v0.667z"></path>
3081 </svg>
3082 `
3083 },
3084 {
3085 name: 'trello',
3086 template: `
3087 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3088 <title>trello</title>
3089 <path d="M3.333 1.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-9.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM3.333 2.667h9.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v9.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-9.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM4.667 4c-0.368 0-0.667 0.299-0.667 0.667v6c0 0.368 0.299 0.667 0.667 0.667h2c0.368 0 0.667-0.299 0.667-0.667v-6c0-0.368-0.299-0.667-0.667-0.667zM5.333 5.333h0.667v4.667h-0.667zM9.333 4c-0.368 0-0.667 0.299-0.667 0.667v3.333c0 0.368 0.299 0.667 0.667 0.667h2c0.368 0 0.667-0.299 0.667-0.667v-3.333c0-0.368-0.299-0.667-0.667-0.667zM10 5.333h0.667v2h-0.667z"></path>
3090 </svg>
3091 `
3092 },
3093 {
3094 name: 'trending-down',
3095 template: `
3096 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3097 <title>trending-down</title>
3098 <path d="M11.333 12.667h4c0.091 0 0.177-0.018 0.255-0.051s0.152-0.081 0.216-0.145 0.112-0.137 0.145-0.216c0.033-0.079 0.051-0.165 0.051-0.255v-4c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v2.391l-5.195-5.195c-0.261-0.261-0.683-0.261-0.943 0l-2.862 2.862-4.529-4.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l5 5c0.261 0.261 0.683 0.261 0.943 0l2.862-2.862 4.724 4.724h-2.391c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
3099 </svg>
3100 `
3101 },
3102 {
3103 name: 'trending-up',
3104 template: `
3105 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3106 <title>trending-up</title>
3107 <path d="M11.333 4.667h2.391l-4.724 4.724-2.862-2.862c-0.261-0.261-0.683-0.261-0.943 0l-5 5c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l4.529-4.529 2.862 2.862c0.261 0.261 0.683 0.261 0.943 0l5.195-5.195v2.391c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-4c0-0.091-0.018-0.177-0.051-0.255s-0.081-0.152-0.144-0.215c-0.001-0.001-0.001-0.001-0.001-0.001-0.061-0.061-0.135-0.111-0.215-0.144-0.079-0.033-0.165-0.051-0.255-0.051h-4c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
3108 </svg>
3109 `
3110 },
3111 {
3112 name: 'triangle',
3113 template: `
3114 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3115 <title>triangle</title>
3116 <path d="M7.432 2.916c0.049-0.082 0.123-0.161 0.223-0.221 0.157-0.095 0.337-0.119 0.504-0.077s0.316 0.144 0.409 0.299l5.644 9.422c0.051 0.087 0.085 0.199 0.087 0.321 0.002 0.184-0.070 0.351-0.19 0.473s-0.285 0.199-0.462 0.201h-11.291c-0.101-0.001-0.214-0.027-0.321-0.089-0.159-0.092-0.266-0.239-0.311-0.405s-0.025-0.346 0.061-0.497zM6.288 2.231l-5.647 9.427c-0.281 0.487-0.337 1.033-0.205 1.527s0.453 0.939 0.932 1.215c0.309 0.179 0.651 0.267 0.983 0.268h11.295c0.559-0.006 1.058-0.236 1.415-0.601s0.576-0.869 0.57-1.421c-0.004-0.357-0.102-0.696-0.271-0.983l-5.649-9.431c-0.288-0.475-0.74-0.787-1.236-0.909s-1.041-0.054-1.513 0.233c-0.286 0.173-0.517 0.41-0.675 0.676z"></path>
3117 </svg>
3118 `
3119 },
3120 {
3121 name: 'truck',
3122 template: `
3123 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3124 <title>truck</title>
3125 <path d="M10 10h-8.667v-7.333h8.667v2.667zM11.333 6h1.724l1.609 1.609v2.391h-3.333zM4.667 12.333c0 0.276-0.111 0.525-0.293 0.707s-0.431 0.293-0.707 0.293-0.525-0.111-0.707-0.293-0.293-0.431-0.293-0.707 0.111-0.525 0.293-0.707 0.431-0.293 0.707-0.293 0.525 0.111 0.707 0.293 0.293 0.431 0.293 0.707zM14.667 12.333c0-0.358-0.081-0.697-0.225-1h0.891c0.368 0 0.667-0.299 0.667-0.667v-3.333c0-0.171-0.065-0.341-0.195-0.471l-2-2c-0.121-0.121-0.287-0.195-0.471-0.195h-2v-2.667c0-0.368-0.299-0.667-0.667-0.667h-10c-0.368 0-0.667 0.299-0.667 0.667v8.667c0 0.368 0.299 0.667 0.667 0.667h0.891c-0.144 0.303-0.225 0.642-0.225 1 0 0.644 0.262 1.229 0.683 1.65s1.006 0.683 1.65 0.683 1.229-0.262 1.65-0.683 0.683-1.006 0.683-1.65c0-0.358-0.081-0.697-0.225-1h4.449c-0.144 0.303-0.225 0.642-0.225 1 0 0.644 0.262 1.229 0.683 1.65s1.006 0.683 1.65 0.683 1.229-0.262 1.65-0.683 0.683-1.006 0.683-1.65zM13.333 12.333c0 0.276-0.111 0.525-0.293 0.707s-0.431 0.293-0.707 0.293-0.525-0.111-0.707-0.293-0.293-0.431-0.293-0.707 0.111-0.525 0.293-0.707 0.431-0.293 0.707-0.293 0.525 0.111 0.707 0.293 0.293 0.431 0.293 0.707z"></path>
3126 </svg>
3127 `
3128 },
3129 {
3130 name: 'tv',
3131 template: `
3132 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3133 <title>tv</title>
3134 <path d="M2.667 5.333h10.667c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v7.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-10.667c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-7.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM10.862 0.862l-2.862 2.862-2.862-2.862c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l2.195 2.195h-3.724c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v7.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h10.667c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-7.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-3.724l2.195-2.195c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0z"></path>
3135 </svg>
3136 `
3137 },
3138 {
3139 name: 'twitter',
3140 template: `
3141 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3142 <title>twitter</title>
3143 <path d="M13.889 3.508c-0.124 0.161-0.261 0.317-0.411 0.464-0.155 0.155-0.231 0.378-0.185 0.605 0.025 0.121 0.040 0.269 0.041 0.423 0 3.504-1.619 5.981-3.873 7.265-1.765 1.006-3.959 1.303-6.148 0.747 0.83-0.241 1.64-0.614 2.395-1.127 0.098-0.066 0.182-0.162 0.235-0.281 0.149-0.337-0.002-0.731-0.339-0.88-1.849-0.822-2.753-1.954-3.179-3.062-0.278-0.723-0.364-1.465-0.347-2.151 0.014-0.541 0.092-1.040 0.185-1.455 0.263 0.228 0.536 0.47 0.824 0.691 1.367 1.051 3.083 1.653 4.931 1.605 0.361-0.010 0.649-0.305 0.649-0.667v-0.674c-0.001-0.119 0.006-0.238 0.023-0.356 0.075-0.537 0.336-1.046 0.775-1.427 0.483-0.421 1.091-0.605 1.684-0.564s1.169 0.309 1.589 0.792c0.168 0.191 0.433 0.277 0.689 0.203 0.154-0.045 0.309-0.095 0.463-0.152zM14.949 1.455c-0.493 0.348-1.015 0.617-1.525 0.803-0.621-0.557-1.394-0.868-2.184-0.923-0.932-0.065-1.891 0.226-2.651 0.888-0.691 0.601-1.101 1.405-1.22 2.248-0.025 0.177-0.037 0.355-0.036 0.533-1.281-0.095-2.463-0.567-3.434-1.314-0.517-0.397-0.974-0.873-1.356-1.41-0.213-0.3-0.629-0.371-0.929-0.158-0.103 0.073-0.178 0.169-0.223 0.273 0 0-0.088 0.199-0.19 0.507-0.075 0.225-0.161 0.517-0.238 0.86-0.109 0.481-0.201 1.068-0.217 1.714-0.021 0.818 0.080 1.741 0.435 2.664 0.455 1.183 1.311 2.319 2.765 3.215-1.046 0.484-2.163 0.693-3.249 0.645-0.368-0.016-0.679 0.269-0.695 0.637-0.011 0.259 0.127 0.491 0.342 0.612 3.27 1.817 6.951 1.785 9.777 0.174 2.694-1.534 4.547-4.467 4.547-8.423-0.001-0.111-0.005-0.22-0.015-0.326 0.671-0.743 1.117-1.619 1.331-2.521 0.085-0.358-0.137-0.717-0.495-0.802-0.193-0.046-0.387-0.002-0.538 0.104z"></path>
3144 </svg>
3145 `
3146 },
3147 {
3148 name: 'type',
3149 template: `
3150 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3151 <title>type</title>
3152 <path d="M7.333 3.333v9.333h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h4c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-1.333v-9.333h4v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-2c0-0.368-0.299-0.667-0.667-0.667h-10.667c-0.368 0-0.667 0.299-0.667 0.667v2c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333z"></path>
3153 </svg>
3154 `
3155 },
3156 {
3157 name: 'umbrella',
3158 template: `
3159 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3160 <title>umbrella</title>
3161 <path d="M15.997 7.937c-0.211-2.208-1.297-4.123-2.882-5.431s-3.67-2.013-5.878-1.803c-2.035 0.194-3.821 1.133-5.113 2.526-1.173 1.265-1.939 2.905-2.12 4.705-0.037 0.367 0.231 0.693 0.597 0.73 0.023 0.003 0.047 0.003 0.067 0.003h6.667v4c0 0.736 0.299 1.404 0.781 1.885s1.149 0.781 1.885 0.781 1.404-0.299 1.885-0.781 0.781-1.149 0.781-1.885c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667c0 0.369-0.149 0.701-0.391 0.943s-0.574 0.391-0.943 0.391-0.701-0.149-0.943-0.391-0.391-0.574-0.391-0.943v-4h6.667c0.368 0 0.667-0.299 0.667-0.667 0-0.022-0.001-0.045-0.003-0.063zM14.56 7.333h-13.116c0.258-1.216 0.839-2.316 1.657-3.197 1.078-1.163 2.565-1.943 4.263-2.105 1.842-0.176 3.579 0.411 4.903 1.503 1.145 0.945 1.977 2.267 2.294 3.8z"></path>
3162 </svg>
3163 `
3164 },
3165 {
3166 name: 'underline',
3167 template: `
3168 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3169 <title>underline</title>
3170 <path d="M3.333 2v4.667c0 1.289 0.523 2.456 1.367 3.3s2.011 1.367 3.3 1.367 2.456-0.523 3.3-1.367 1.367-2.011 1.367-3.3v-4.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v4.667c0 0.921-0.373 1.753-0.976 2.357s-1.437 0.976-2.357 0.976-1.753-0.373-2.357-0.976-0.976-1.437-0.976-2.357v-4.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM2.667 14.667h10.667c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-10.667c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
3171 </svg>
3172 `
3173 },
3174 {
3175 name: 'unlock',
3176 template: `
3177 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3178 <title>unlock</title>
3179 <path d="M3.333 8h9.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v4.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-9.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-4.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM5.333 6.667v-2c-0.001-0.737 0.297-1.403 0.779-1.887s1.148-0.782 1.885-0.783c0.677-0.001 1.293 0.25 1.763 0.667 0.425 0.377 0.731 0.888 0.853 1.473 0.075 0.361 0.428 0.592 0.789 0.517s0.592-0.428 0.517-0.789c-0.181-0.871-0.639-1.636-1.275-2.199-0.707-0.625-1.635-1.003-2.649-1.002-1.105 0.001-2.105 0.451-2.827 1.175s-1.17 1.725-1.169 2.829v2h-0.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v4.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-4.667c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586z"></path>
3180 </svg>
3181 `
3182 },
3183 {
3184 name: 'upload-cloud',
3185 template: `
3186 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3187 <title>upload-cloud</title>
3188 <path d="M7.333 9.609v4.391c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-4.391l1.529 1.529c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-2.667-2.667c-0.064-0.064-0.137-0.112-0.216-0.145-0.081-0.034-0.169-0.051-0.255-0.051-0.171 0-0.341 0.065-0.471 0.195l-2.667 2.667c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0zM13.913 12.845c0.969-0.529 1.634-1.401 1.923-2.383s0.203-2.075-0.325-3.044c-0.453-0.83-1.158-1.437-1.973-1.775-0.483-0.2-1.003-0.306-1.532-0.31h-0.351c-0.483-1.371-1.429-2.472-2.611-3.168-1.322-0.779-2.943-1.054-4.547-0.639s-2.889 1.441-3.668 2.763-1.054 2.943-0.639 4.547c0.248 0.958 0.715 1.807 1.317 2.475 0.246 0.274 0.668 0.296 0.941 0.050s0.296-0.668 0.050-0.941c-0.459-0.51-0.823-1.167-1.017-1.918-0.323-1.248-0.109-2.507 0.497-3.537s1.605-1.827 2.853-2.149 2.507-0.109 3.537 0.497 1.827 1.605 2.149 2.853c0.077 0.29 0.337 0.5 0.646 0.5h0.835c0.357 0.003 0.707 0.074 1.030 0.208 0.543 0.225 1.012 0.629 1.313 1.182 0.353 0.647 0.41 1.374 0.217 2.029s-0.635 1.236-1.282 1.588c-0.323 0.176-0.443 0.581-0.266 0.905s0.581 0.443 0.905 0.266z"></path>
3189 </svg>
3190 `
3191 },
3192 {
3193 name: 'upload',
3194 template: `
3195 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3196 <title>upload</title>
3197 <path d="M13.333 10v2.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-9.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-2.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v2.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-2.667c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM7.333 3.609v6.391c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-6.391l2.195 2.195c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-3.333-3.333c-0.064-0.064-0.137-0.112-0.216-0.145s-0.165-0.051-0.255-0.051c-0.087 0-0.174 0.017-0.255 0.051-0.079 0.033-0.152 0.081-0.216 0.145l-3.333 3.333c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0z"></path>
3198 </svg>
3199 `
3200 },
3201 {
3202 name: 'user-check',
3203 template: `
3204 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3205 <title>user-check</title>
3206 <path d="M11.333 14v-1.333c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976h-4.667c-0.92 0-1.755 0.374-2.357 0.976s-0.976 1.437-0.976 2.357v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333c0-0.553 0.223-1.051 0.586-1.414s0.861-0.586 1.414-0.586h4.667c0.553 0 1.051 0.223 1.414 0.586s0.586 0.861 0.586 1.414v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM9 4.667c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976-1.755 0.374-2.357 0.976-0.976 1.437-0.976 2.357 0.374 1.755 0.976 2.357 1.437 0.976 2.357 0.976 1.755-0.374 2.357-0.976 0.976-1.437 0.976-2.357zM7.667 4.667c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586-1.051-0.223-1.414-0.586-0.586-0.861-0.586-1.414 0.223-1.051 0.586-1.414 0.861-0.586 1.414-0.586 1.051 0.223 1.414 0.586 0.586 0.861 0.586 1.414zM10.862 7.805l1.333 1.333c0.261 0.261 0.683 0.261 0.943 0l2.667-2.667c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-2.195 2.195-0.862-0.862c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
3207 </svg>
3208 `
3209 },
3210 {
3211 name: 'user-minus',
3212 template: `
3213 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3214 <title>user-minus</title>
3215 <path d="M11.333 14v-1.333c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976h-4.667c-0.92 0-1.755 0.374-2.357 0.976s-0.976 1.437-0.976 2.357v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333c0-0.553 0.223-1.051 0.586-1.414s0.861-0.586 1.414-0.586h4.667c0.553 0 1.051 0.223 1.414 0.586s0.586 0.861 0.586 1.414v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM9 4.667c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976-1.755 0.374-2.357 0.976-0.976 1.437-0.976 2.357 0.374 1.755 0.976 2.357 1.437 0.976 2.357 0.976 1.755-0.374 2.357-0.976 0.976-1.437 0.976-2.357zM7.667 4.667c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586-1.051-0.223-1.414-0.586-0.586-0.861-0.586-1.414 0.223-1.051 0.586-1.414 0.861-0.586 1.414-0.586 1.051 0.223 1.414 0.586 0.586 0.861 0.586 1.414zM15.333 6.667h-4c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h4c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
3216 </svg>
3217 `
3218 },
3219 {
3220 name: 'user-plus',
3221 template: `
3222 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3223 <title>user-plus</title>
3224 <path d="M11.333 14v-1.333c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976h-4.667c-0.92 0-1.755 0.374-2.357 0.976s-0.976 1.437-0.976 2.357v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333c0-0.553 0.223-1.051 0.586-1.414s0.861-0.586 1.414-0.586h4.667c0.553 0 1.051 0.223 1.414 0.586s0.586 0.861 0.586 1.414v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM9 4.667c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976-1.755 0.374-2.357 0.976-0.976 1.437-0.976 2.357 0.374 1.755 0.976 2.357 1.437 0.976 2.357 0.976 1.755-0.374 2.357-0.976 0.976-1.437 0.976-2.357zM7.667 4.667c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586-1.051-0.223-1.414-0.586-0.586-0.861-0.586-1.414 0.223-1.051 0.586-1.414 0.861-0.586 1.414-0.586 1.051 0.223 1.414 0.586 0.586 0.861 0.586 1.414zM15.333 6.667h-1.333v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v1.333h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h1.333v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667z"></path>
3225 </svg>
3226 `
3227 },
3228 {
3229 name: 'user-x',
3230 template: `
3231 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3232 <title>user-x</title>
3233 <path d="M11.333 14v-1.333c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976h-4.667c-0.92 0-1.755 0.374-2.357 0.976s-0.976 1.437-0.976 2.357v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333c0-0.553 0.223-1.051 0.586-1.414s0.861-0.586 1.414-0.586h4.667c0.553 0 1.051 0.223 1.414 0.586s0.586 0.861 0.586 1.414v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM9 4.667c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976-1.755 0.374-2.357 0.976-0.976 1.437-0.976 2.357 0.374 1.755 0.976 2.357 1.437 0.976 2.357 0.976 1.755-0.374 2.357-0.976 0.976-1.437 0.976-2.357zM7.667 4.667c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586-1.051-0.223-1.414-0.586-0.586-0.861-0.586-1.414 0.223-1.051 0.586-1.414 0.861-0.586 1.414-0.586 1.051 0.223 1.414 0.586 0.586 0.861 0.586 1.414zM14.862 4.862l-1.195 1.195-1.195-1.195c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l1.195 1.195-1.195 1.195c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l1.195-1.195 1.195 1.195c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-1.195-1.195 1.195-1.195c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0z"></path>
3234 </svg>
3235 `
3236 },
3237 {
3238 name: 'user',
3239 template: `
3240 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3241 <title>user</title>
3242 <path d="M14 14v-1.333c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976h-5.333c-0.92 0-1.755 0.374-2.357 0.976s-0.976 1.437-0.976 2.357v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333c0-0.553 0.223-1.051 0.586-1.414s0.861-0.586 1.414-0.586h5.333c0.553 0 1.051 0.223 1.414 0.586s0.586 0.861 0.586 1.414v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM11.333 4.667c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976-1.755 0.374-2.357 0.976-0.976 1.437-0.976 2.357 0.374 1.755 0.976 2.357 1.437 0.976 2.357 0.976 1.755-0.374 2.357-0.976 0.976-1.437 0.976-2.357zM10 4.667c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586-1.051-0.223-1.414-0.586-0.586-0.861-0.586-1.414 0.223-1.051 0.586-1.414 0.861-0.586 1.414-0.586 1.051 0.223 1.414 0.586 0.586 0.861 0.586 1.414z"></path>
3243 </svg>
3244 `
3245 },
3246 {
3247 name: 'users',
3248 template: `
3249 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3250 <title>users</title>
3251 <path d="M12 14v-1.333c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976h-5.333c-0.92 0-1.755 0.374-2.357 0.976s-0.976 1.437-0.976 2.357v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333c0-0.553 0.223-1.051 0.586-1.414s0.861-0.586 1.414-0.586h5.333c0.553 0 1.051 0.223 1.414 0.586s0.586 0.861 0.586 1.414v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM9.333 4.667c0-0.92-0.374-1.755-0.976-2.357s-1.437-0.976-2.357-0.976-1.755 0.374-2.357 0.976-0.976 1.437-0.976 2.357 0.374 1.755 0.976 2.357 1.437 0.976 2.357 0.976 1.755-0.374 2.357-0.976 0.976-1.437 0.976-2.357zM8 4.667c0 0.553-0.223 1.051-0.586 1.414s-0.861 0.586-1.414 0.586-1.051-0.223-1.414-0.586-0.586-0.861-0.586-1.414 0.223-1.051 0.586-1.414 0.861-0.586 1.414-0.586 1.051 0.223 1.414 0.586 0.586 0.861 0.586 1.414zM16 14v-1.333c-0.001-0.83-0.305-1.59-0.811-2.174-0.435-0.502-1.019-0.874-1.686-1.051-0.356-0.094-0.721 0.118-0.815 0.474s0.118 0.721 0.474 0.815c0.405 0.107 0.757 0.332 1.019 0.635 0.303 0.351 0.485 0.804 0.485 1.301v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667zM10.501 2.733c0.535 0.137 0.963 0.477 1.225 0.918s0.354 0.98 0.217 1.515c-0.117 0.458-0.383 0.837-0.737 1.101-0.209 0.157-0.45 0.273-0.709 0.341-0.356 0.093-0.569 0.458-0.475 0.814s0.458 0.569 0.814 0.475c0.425-0.111 0.821-0.303 1.169-0.563 0.589-0.44 1.035-1.075 1.23-1.839 0.228-0.891 0.073-1.793-0.361-2.525s-1.15-1.302-2.041-1.531c-0.357-0.091-0.72 0.124-0.811 0.481s0.124 0.72 0.481 0.811z"></path>
3252 </svg>
3253 `
3254 },
3255 {
3256 name: 'video-off',
3257 template: `
3258 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3259 <title>video-off</title>
3260 <path d="M7.107 4h2.227c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v2.227c0 0.184 0.075 0.351 0.195 0.471l0.667 0.667c0.234 0.234 0.599 0.258 0.862 0.069l2.943-2.128v5.361c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-6.667c0.001-0.134-0.041-0.272-0.127-0.391-0.216-0.298-0.633-0.365-0.931-0.149l-3.539 2.561-0.070-0.070v-1.951c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586h-2.227c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667zM3.057 4l6.943 6.943v0.391c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-7.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-6.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM0.195 1.138l1.545 1.545c-0.449 0.058-0.851 0.265-1.155 0.569-0.361 0.361-0.586 0.862-0.586 1.414v6.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h7.333c0.552 0 1.053-0.225 1.414-0.586 0.179-0.179 0.325-0.393 0.427-0.631l3.688 3.688c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-14.667-14.667c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
3261 </svg>
3262 `
3263 },
3264 {
3265 name: 'video',
3266 template: `
3267 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3268 <title>video</title>
3269 <path d="M14.667 5.962v4.076l-2.853-2.038zM2 2.667c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v6.667c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h7.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-2.038l3.613 2.581c0.299 0.214 0.716 0.145 0.93-0.155 0.084-0.119 0.125-0.255 0.124-0.388v-6.667c0-0.368-0.299-0.667-0.667-0.667-0.145 0-0.28 0.047-0.387 0.124l-3.613 2.581v-2.038c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM2 4h7.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v6.667c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-7.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-6.667c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195z"></path>
3270 </svg>
3271 `
3272 },
3273 {
3274 name: 'voicemail',
3275 template: `
3276 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3277 <title>voicemail</title>
3278 <path d="M6 7.667c0 0.645-0.261 1.227-0.683 1.65s-1.005 0.683-1.65 0.683-1.227-0.261-1.65-0.683-0.683-1.005-0.683-1.65 0.261-1.227 0.683-1.65 1.005-0.683 1.65-0.683 1.227 0.261 1.65 0.683 0.683 1.005 0.683 1.65zM14.667 7.667c0 0.645-0.261 1.227-0.683 1.65s-1.005 0.683-1.65 0.683-1.227-0.261-1.65-0.683-0.683-1.005-0.683-1.65 0.261-1.227 0.683-1.65 1.005-0.683 1.65-0.683 1.227 0.261 1.65 0.683 0.683 1.005 0.683 1.65zM3.667 11.333h8.667c1.013 0 1.93-0.411 2.593-1.074s1.074-1.58 1.074-2.593-0.411-1.93-1.074-2.593-1.58-1.074-2.593-1.074-1.93 0.411-2.593 1.074-1.074 1.58-1.074 2.593c0 0.886 0.315 1.7 0.838 2.333h-3.009c0.523-0.633 0.838-1.447 0.838-2.333 0-1.013-0.411-1.93-1.074-2.593s-1.58-1.074-2.593-1.074-1.93 0.411-2.593 1.074-1.074 1.58-1.074 2.593 0.411 1.93 1.074 2.593 1.58 1.074 2.593 1.074z"></path>
3279 </svg>
3280 `
3281 },
3282 {
3283 name: 'volume-1',
3284 template: `
3285 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3286 <title>volume-1</title>
3287 <path d="M6.667 4.721v6.559l-2.25-1.8c-0.113-0.091-0.259-0.147-0.417-0.147h-2v-2.667h2c0.145 0.001 0.293-0.047 0.417-0.146zM6.917 2.813l-3.151 2.521h-2.433c-0.368 0-0.667 0.299-0.667 0.667v4c0 0.368 0.299 0.667 0.667 0.667h2.433l3.151 2.521c0.287 0.23 0.707 0.183 0.937-0.104 0.099-0.123 0.147-0.271 0.146-0.417v-9.333c0-0.368-0.299-0.667-0.667-0.667-0.158 0-0.303 0.055-0.417 0.146zM9.889 6.111c0.521 0.521 0.781 1.202 0.781 1.885s-0.26 1.365-0.781 1.885c-0.26 0.261-0.26 0.683 0 0.943s0.683 0.26 0.943 0c0.781-0.781 1.171-1.805 1.171-2.828s-0.391-2.047-1.171-2.828c-0.26-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
3288 </svg>
3289 `
3290 },
3291 {
3292 name: 'volume-2',
3293 template: `
3294 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3295 <title>volume-2</title>
3296 <path d="M6.667 4.721v6.559l-2.25-1.8c-0.113-0.091-0.259-0.147-0.417-0.147h-2v-2.667h2c0.145 0.001 0.293-0.047 0.417-0.146zM6.917 2.813l-3.151 2.521h-2.433c-0.368 0-0.667 0.299-0.667 0.667v4c0 0.368 0.299 0.667 0.667 0.667h2.433l3.151 2.521c0.287 0.23 0.707 0.183 0.937-0.104 0.099-0.123 0.147-0.271 0.146-0.417v-9.333c0-0.368-0.299-0.667-0.667-0.667-0.158 0-0.303 0.055-0.417 0.146zM12.242 3.758c1.171 1.172 1.757 2.706 1.757 4.242s-0.585 3.070-1.757 4.242c-0.26 0.261-0.26 0.683 0 0.943s0.683 0.26 0.943 0c1.431-1.431 2.147-3.309 2.147-5.185s-0.716-3.753-2.147-5.185c-0.26-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943zM9.889 6.111c0.521 0.521 0.781 1.202 0.781 1.885s-0.26 1.365-0.781 1.885c-0.26 0.261-0.26 0.683 0 0.943s0.683 0.26 0.943 0c0.781-0.781 1.171-1.805 1.171-2.828s-0.391-2.047-1.171-2.828c-0.26-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
3297 </svg>
3298 `
3299 },
3300 {
3301 name: 'volume-x',
3302 template: `
3303 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3304 <title>volume-x</title>
3305 <path d="M6.667 4.721v6.559l-2.25-1.8c-0.113-0.091-0.259-0.147-0.417-0.147h-2v-2.667h2c0.145 0.001 0.293-0.047 0.417-0.146zM6.917 2.813l-3.151 2.521h-2.433c-0.368 0-0.667 0.299-0.667 0.667v4c0 0.368 0.299 0.667 0.667 0.667h2.433l3.151 2.521c0.287 0.23 0.707 0.183 0.937-0.104 0.099-0.123 0.147-0.271 0.146-0.417v-9.333c0-0.368-0.299-0.667-0.667-0.667-0.158 0-0.303 0.055-0.417 0.146zM10.862 6.471l1.529 1.529-1.529 1.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l1.529-1.529 1.529 1.529c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-1.529-1.529 1.529-1.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-1.529 1.529-1.529-1.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
3306 </svg>
3307 `
3308 },
3309 {
3310 name: 'volume',
3311 template: `
3312 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3313 <title>volume</title>
3314 <path d="M6.667 4.721v6.559l-2.25-1.8c-0.113-0.091-0.259-0.147-0.417-0.147h-2v-2.667h2c0.145 0.001 0.293-0.047 0.417-0.146zM6.917 2.813l-3.151 2.521h-2.433c-0.368 0-0.667 0.299-0.667 0.667v4c0 0.368 0.299 0.667 0.667 0.667h2.433l3.151 2.521c0.287 0.23 0.707 0.183 0.937-0.104 0.099-0.123 0.147-0.271 0.146-0.417v-9.333c0-0.368-0.299-0.667-0.667-0.667-0.158 0-0.303 0.055-0.417 0.146z"></path>
3315 </svg>
3316 `
3317 },
3318 {
3319 name: 'watch',
3320 template: `
3321 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3322 <title>watch</title>
3323 <path d="M7.333 6v2c0 0.184 0.075 0.351 0.195 0.471l1 1c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-0.805-0.805v-1.724c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667zM10.22 12.851l-0.111 1.209c-0.016 0.177-0.098 0.33-0.222 0.439-0.12 0.106-0.277 0.169-0.447 0.169h-2.887c-0.18 0.001-0.34-0.067-0.46-0.179-0.117-0.109-0.194-0.259-0.209-0.429l-0.111-1.211c0.677 0.312 1.432 0.486 2.227 0.486 0.792 0 1.544-0.173 2.22-0.483zM5.458 4.911c0.691-0.57 1.576-0.911 2.542-0.911 1.105 0 2.104 0.447 2.829 1.171s1.171 1.724 1.171 2.829-0.447 2.104-1.171 2.829c-0.069 0.069-0.141 0.136-0.215 0.2-0.023 0.021-0.047 0.041-0.071 0.060-0.691 0.57-1.576 0.911-2.542 0.911-1.105 0-2.104-0.447-2.829-1.171s-1.171-1.724-1.171-2.829 0.447-2.104 1.171-2.829c0.069-0.069 0.141-0.136 0.215-0.2 0.023-0.021 0.047-0.041 0.071-0.060zM11.661 4.121l-0.21-2.303c-0.047-0.504-0.279-0.953-0.625-1.278-0.359-0.337-0.844-0.542-1.372-0.54h-2.903c-0.503 0.002-0.969 0.191-1.323 0.505-0.368 0.325-0.617 0.788-0.665 1.315l-0.209 2.289c-0.042 0.039-0.084 0.080-0.125 0.121-0.964 0.965-1.562 2.299-1.562 3.771s0.598 2.807 1.562 3.771c0.039 0.039 0.078 0.077 0.117 0.114l0.21 2.297c0.047 0.504 0.279 0.953 0.625 1.278 0.359 0.337 0.844 0.542 1.372 0.54h2.885c0.506 0.001 0.975-0.188 1.331-0.503 0.369-0.326 0.619-0.789 0.667-1.317l0.209-2.289c0.042-0.039 0.084-0.080 0.125-0.121 0.965-0.965 1.563-2.299 1.563-3.771s-0.598-2.807-1.562-3.771c-0.036-0.036-0.073-0.072-0.11-0.107zM5.78 3.149l0.111-1.209c0.016-0.177 0.098-0.329 0.221-0.438 0.119-0.106 0.275-0.169 0.445-0.169h2.897c0.18-0.001 0.34 0.067 0.46 0.179 0.117 0.109 0.194 0.259 0.209 0.429l0.111 1.214c-0.679-0.313-1.436-0.489-2.233-0.489-0.792 0-1.544 0.173-2.22 0.483z"></path>
3324 </svg>
3325 `
3326 },
3327 {
3328 name: 'wifi-off',
3329 template: `
3330 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3331 <title>wifi-off</title>
3332 <path d="M10.854 7.973c0.526 0.257 0.999 0.571 1.376 0.898 0.279 0.241 0.699 0.211 0.941-0.068s0.211-0.699-0.068-0.941c-0.469-0.406-1.039-0.783-1.664-1.089-0.331-0.161-0.73-0.024-0.891 0.307s-0.024 0.73 0.307 0.891zM7.193 4.031c2.679-0.216 5.195 0.644 7.128 2.222 0.099 0.081 0.195 0.163 0.291 0.247 0.276 0.243 0.697 0.217 0.941-0.059s0.217-0.697-0.059-0.941c-0.108-0.095-0.218-0.188-0.329-0.279-2.189-1.787-5.043-2.763-8.079-2.519-0.366 0.030-0.639 0.351-0.61 0.718s0.351 0.641 0.718 0.611zM6.073 11.283c0.66-0.469 1.431-0.663 2.183-0.604 0.594 0.047 1.177 0.252 1.682 0.606 0.155 0.109 0.341 0.142 0.513 0.108l4.411 4.411c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-8.5-8.5c-0.033-0.042-0.071-0.080-0.113-0.113l-6.054-6.054c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l2.725 2.725c-0.838 0.419-1.66 0.969-2.415 1.637-0.276 0.244-0.302 0.665-0.058 0.941s0.665 0.302 0.941 0.058c0.794-0.702 1.666-1.251 2.535-1.634l1.549 1.549c-0.905 0.305-1.781 0.785-2.566 1.441-0.283 0.236-0.32 0.657-0.084 0.939s0.657 0.32 0.939 0.084c0.847-0.708 1.816-1.167 2.792-1.383l1.859 1.859c-0.017-0.001-0.035-0.003-0.052-0.005-1.053-0.083-2.136 0.19-3.059 0.846-0.3 0.213-0.371 0.629-0.157 0.929s0.629 0.371 0.929 0.157zM8.667 13.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
3333 </svg>
3334 `
3335 },
3336 {
3337 name: 'wifi',
3338 template: `
3339 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3340 <title>wifi</title>
3341 <path d="M3.76 8.879c1.308-1.089 2.907-1.593 4.489-1.537 1.445 0.051 2.873 0.571 4.047 1.539 0.284 0.234 0.704 0.194 0.939-0.090s0.194-0.704-0.090-0.939c-1.405-1.159-3.116-1.781-4.848-1.842-1.897-0.067-3.821 0.537-5.39 1.845-0.283 0.235-0.321 0.656-0.085 0.939s0.656 0.321 0.939 0.085zM1.387 6.5c1.958-1.726 4.401-2.547 6.825-2.491 2.295 0.053 4.572 0.891 6.403 2.493 0.277 0.243 0.698 0.215 0.941-0.063s0.215-0.698-0.063-0.941c-2.071-1.813-4.651-2.763-7.25-2.823-2.747-0.063-5.518 0.869-7.737 2.825-0.277 0.243-0.303 0.665-0.059 0.941s0.665 0.303 0.941 0.059zM6.073 11.283c0.66-0.469 1.431-0.663 2.183-0.604 0.594 0.047 1.177 0.252 1.682 0.606 0.301 0.211 0.717 0.138 0.929-0.163s0.138-0.717-0.163-0.929c-0.702-0.492-1.513-0.778-2.343-0.843-1.053-0.083-2.136 0.19-3.059 0.846-0.3 0.213-0.371 0.629-0.157 0.929s0.629 0.371 0.929 0.157zM8.667 13.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667 0.299 0.667 0.667 0.667 0.667-0.299 0.667-0.667z"></path>
3342 </svg>
3343 `
3344 },
3345 {
3346 name: 'wind',
3347 template: `
3348 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3349 <title>wind</title>
3350 <path d="M6.866 3.53c0.13-0.131 0.299-0.196 0.471-0.197s0.341 0.064 0.472 0.194 0.196 0.299 0.197 0.471-0.064 0.341-0.194 0.472c-0.128 0.129-0.295 0.195-0.465 0.197h-6.013c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h6.029c0.505-0.006 1.011-0.203 1.395-0.59 0.389-0.391 0.583-0.905 0.581-1.416s-0.199-1.023-0.59-1.413-0.905-0.583-1.415-0.581-1.023 0.199-1.413 0.59c-0.26 0.261-0.259 0.683 0.003 0.943s0.683 0.258 0.943-0.003zM7.921 13.41c0.389 0.391 0.901 0.589 1.413 0.59s1.025-0.193 1.416-0.581 0.589-0.901 0.59-1.413-0.193-1.025-0.581-1.416c-0.385-0.387-0.89-0.584-1.395-0.59h-8.029c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h8.013c0.17 0.002 0.337 0.067 0.465 0.197 0.13 0.131 0.195 0.301 0.194 0.472s-0.066 0.341-0.197 0.471-0.301 0.195-0.472 0.194-0.341-0.066-0.471-0.197c-0.259-0.261-0.682-0.263-0.943-0.003s-0.263 0.682-0.003 0.943zM12.291 5.625c0.196-0.195 0.451-0.292 0.707-0.292s0.511 0.098 0.707 0.294 0.292 0.451 0.292 0.707-0.098 0.511-0.294 0.707c-0.195 0.195-0.449 0.291-0.705 0.292h-11.665c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h11.668c0.594-0.001 1.189-0.228 1.644-0.681 0.456-0.455 0.685-1.053 0.685-1.649s-0.227-1.195-0.681-1.651-1.053-0.685-1.649-0.685-1.195 0.227-1.651 0.681c-0.261 0.26-0.261 0.682-0.001 0.943s0.682 0.261 0.943 0.001z"></path>
3351 </svg>
3352 `
3353 },
3354 {
3355 name: 'x-circle',
3356 template: `
3357 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3358 <title>x-circle</title>
3359 <path d="M15.333 8c0-2.025-0.821-3.859-2.148-5.185s-3.161-2.148-5.185-2.148-3.859 0.821-5.185 2.148-2.148 3.161-2.148 5.185 0.821 3.859 2.148 5.185 3.161 2.148 5.185 2.148 3.859-0.821 5.185-2.148 2.148-3.161 2.148-5.185zM14 8c0 1.657-0.671 3.156-1.757 4.243s-2.585 1.757-4.243 1.757-3.156-0.671-4.243-1.757-1.757-2.585-1.757-4.243 0.671-3.156 1.757-4.243 2.585-1.757 4.243-1.757 3.156 0.671 4.243 1.757 1.757 2.585 1.757 4.243zM5.529 6.471l1.529 1.529-1.529 1.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l1.529-1.529 1.529 1.529c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-1.529-1.529 1.529-1.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-1.529 1.529-1.529-1.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
3360 </svg>
3361 `
3362 },
3363 {
3364 name: 'x-octagon',
3365 template: `
3366 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3367 <title>x-octagon</title>
3368 <path d="M5.24 0.667c-0.171 0-0.341 0.065-0.471 0.195l-3.907 3.907c-0.121 0.121-0.195 0.287-0.195 0.471v5.52c0 0.171 0.065 0.341 0.195 0.471l3.907 3.907c0.121 0.121 0.287 0.195 0.471 0.195h5.52c0.171 0 0.341-0.065 0.471-0.195l3.907-3.907c0.121-0.121 0.195-0.287 0.195-0.471v-5.52c0-0.171-0.065-0.341-0.195-0.471l-3.907-3.907c-0.121-0.121-0.287-0.195-0.471-0.195zM5.516 2h4.968l3.516 3.516v4.968l-3.516 3.516h-4.968l-3.516-3.516v-4.968zM5.529 6.471l1.529 1.529-1.529 1.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l1.529-1.529 1.529 1.529c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-1.529-1.529 1.529-1.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-1.529 1.529-1.529-1.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
3369 </svg>
3370 `
3371 },
3372 {
3373 name: 'x-square',
3374 template: `
3375 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3376 <title>x-square</title>
3377 <path d="M3.333 1.333c-0.552 0-1.053 0.225-1.414 0.586s-0.586 0.862-0.586 1.414v9.333c0 0.552 0.225 1.053 0.586 1.414s0.862 0.586 1.414 0.586h9.333c0.552 0 1.053-0.225 1.414-0.586s0.586-0.862 0.586-1.414v-9.333c0-0.552-0.225-1.053-0.586-1.414s-0.862-0.586-1.414-0.586zM3.333 2.667h9.333c0.184 0 0.35 0.074 0.471 0.195s0.195 0.287 0.195 0.471v9.333c0 0.184-0.074 0.35-0.195 0.471s-0.287 0.195-0.471 0.195h-9.333c-0.184 0-0.35-0.074-0.471-0.195s-0.195-0.287-0.195-0.471v-9.333c0-0.184 0.074-0.35 0.195-0.471s0.287-0.195 0.471-0.195zM9.529 5.529l-1.529 1.529-1.529-1.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943l1.529 1.529-1.529 1.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l1.529-1.529 1.529 1.529c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-1.529-1.529 1.529-1.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0z"></path>
3378 </svg>
3379 `
3380 },
3381 {
3382 name: 'x',
3383 template: `
3384 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3385 <title>x</title>
3386 <path d="M3.529 4.471l3.529 3.529-3.529 3.529c-0.261 0.261-0.261 0.683 0 0.943s0.683 0.261 0.943 0l3.529-3.529 3.529 3.529c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-3.529-3.529 3.529-3.529c0.261-0.261 0.261-0.683 0-0.943s-0.683-0.261-0.943 0l-3.529 3.529-3.529-3.529c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
3387 </svg>
3388 `
3389 },
3390 {
3391 name: 'youtube',
3392 template: `
3393 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3394 <title>youtube</title>
3395 <path d="M14.375 4.425c0.191 1.019 0.299 2.197 0.291 3.417 0.013 1.019-0.082 2.178-0.291 3.347-0.038 0.139-0.1 0.269-0.181 0.383-0.151 0.214-0.372 0.377-0.633 0.45-0.403 0.107-1.437 0.183-2.585 0.227-1.487 0.057-2.977 0.057-2.977 0.057s-1.49 0-2.977-0.057c-1.147-0.044-2.182-0.119-2.577-0.225-0.137-0.038-0.264-0.099-0.377-0.179-0.207-0.147-0.367-0.357-0.447-0.615-0.19-1.017-0.296-2.191-0.289-3.407-0.014-1.027 0.081-2.195 0.291-3.373 0.038-0.139 0.1-0.269 0.181-0.383 0.151-0.214 0.372-0.377 0.633-0.45 0.403-0.107 1.437-0.183 2.585-0.227 1.487-0.057 2.977-0.057 2.977-0.057s1.49 0 2.977 0.052c1.146 0.040 2.188 0.109 2.571 0.202 0.146 0.042 0.281 0.11 0.399 0.199 0.205 0.155 0.359 0.374 0.429 0.639zM15.673 4.118c-0.145-0.577-0.479-1.060-0.922-1.395-0.249-0.188-0.531-0.329-0.833-0.417-0.599-0.147-1.797-0.215-2.895-0.253-1.511-0.053-3.024-0.053-3.024-0.053s-1.515 0-3.027 0.058c-1.095 0.042-2.3 0.117-2.878 0.271-0.583 0.165-1.054 0.513-1.376 0.967-0.18 0.254-0.313 0.541-0.391 0.845-0.004 0.016-0.007 0.033-0.010 0.047-0.229 1.265-0.333 2.529-0.317 3.654-0.008 1.283 0.107 2.554 0.318 3.668 0.004 0.021 0.009 0.041 0.014 0.059 0.163 0.573 0.513 1.045 0.967 1.365 0.238 0.168 0.505 0.295 0.787 0.374 0.586 0.157 1.791 0.231 2.885 0.273 1.513 0.058 3.028 0.058 3.028 0.058s1.515 0 3.027-0.058c1.095-0.042 2.299-0.117 2.878-0.271 0.582-0.165 1.054-0.513 1.375-0.967 0.18-0.254 0.313-0.541 0.391-0.845 0.004-0.017 0.008-0.033 0.010-0.047 0.227-1.256 0.331-2.51 0.317-3.627 0.008-1.283-0.107-2.555-0.318-3.669-0.003-0.013-0.005-0.027-0.008-0.038zM7.167 8.867v-2.068l1.818 1.034zM6.829 10.593l3.833-2.18c0.32-0.182 0.432-0.589 0.25-0.909-0.062-0.109-0.151-0.195-0.25-0.25l-3.833-2.18c-0.32-0.182-0.727-0.070-0.909 0.25-0.060 0.105-0.088 0.22-0.087 0.329v4.36c0 0.368 0.299 0.667 0.667 0.667 0.121 0 0.235-0.033 0.329-0.087z"></path>
3396 </svg>
3397 `
3398 },
3399 {
3400 name: 'zap-off',
3401 template: `
3402 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3403 <title>zap-off</title>
3404 <path d="M8.935 4.582l0.393-3.167c0.045-0.365-0.214-0.699-0.579-0.744-0.233-0.029-0.452 0.066-0.595 0.235l-1.62 1.947c-0.235 0.283-0.197 0.703 0.086 0.939s0.703 0.197 0.939-0.086l0.166-0.199-0.113 0.911c-0.045 0.365 0.214 0.699 0.579 0.744s0.699-0.214 0.744-0.579zM12.892 9.034l1.62-1.94c0.236-0.283 0.198-0.703-0.085-0.939-0.125-0.104-0.277-0.155-0.427-0.155h-3.56c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667h2.135l-0.707 0.846c-0.236 0.283-0.198 0.703 0.085 0.939s0.703 0.198 0.939-0.085zM8.641 9.583l1.124 1.124-1.488 1.785zM5.378 6.321l2.346 2.346h-4.301zM0.195 1.138l4.236 4.236-2.943 3.533c-0.236 0.283-0.197 0.703 0.085 0.939 0.125 0.105 0.277 0.155 0.427 0.155h5.245l-0.573 4.584c-0.046 0.365 0.213 0.699 0.579 0.744 0.233 0.029 0.452-0.065 0.595-0.235l2.866-3.439 4.151 4.151c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943l-14.667-14.667c-0.261-0.261-0.683-0.261-0.943 0s-0.261 0.683 0 0.943z"></path>
3405 </svg>
3406 `
3407 },
3408 {
3409 name: 'zap',
3410 template: `
3411 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3412 <title>zap</title>
3413 <path d="M7.723 3.507l-0.385 3.077c-0.003 0.025-0.005 0.053-0.005 0.083 0 0.368 0.299 0.667 0.667 0.667h4.577l-4.3 5.16 0.385-3.077c0.003-0.025 0.005-0.053 0.005-0.083 0-0.368-0.299-0.667-0.667-0.667h-4.577zM8.155 0.907l-6.667 8c-0.236 0.283-0.197 0.703 0.085 0.939 0.125 0.105 0.277 0.155 0.427 0.155h5.245l-0.573 4.584c-0.046 0.365 0.213 0.699 0.579 0.744 0.233 0.029 0.452-0.065 0.595-0.235l6.667-8c0.236-0.283 0.197-0.703-0.085-0.939-0.125-0.105-0.277-0.155-0.427-0.155h-5.245l0.573-4.584c0.046-0.365-0.213-0.699-0.579-0.744-0.233-0.029-0.452 0.065-0.595 0.235z"></path>
3414 </svg>
3415 `
3416 },
3417 {
3418 name: 'zoom-in',
3419 template: `
3420 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3421 <title>zoom-in</title>
3422 <path d="M10.694 10.571c-0.023 0.017-0.045 0.037-0.066 0.058s-0.040 0.043-0.058 0.066c-0.839 0.809-1.979 1.305-3.237 1.305-1.289 0-2.455-0.521-3.3-1.367s-1.367-2.011-1.367-3.3 0.521-2.455 1.367-3.3 2.011-1.367 3.3-1.367 2.455 0.521 3.3 1.367 1.367 2.011 1.367 3.3c0 1.257-0.497 2.398-1.306 3.237zM14.471 13.529l-2.45-2.45c0.821-1.027 1.312-2.329 1.312-3.745 0-1.657-0.672-3.157-1.757-4.243s-2.586-1.757-4.243-1.757-3.157 0.672-4.243 1.757-1.757 2.586-1.757 4.243 0.672 3.157 1.757 4.243 2.586 1.757 4.243 1.757c1.417 0 2.719-0.491 3.745-1.312l2.45 2.45c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943zM5.333 8h1.333v1.333c0 0.368 0.299 0.667 0.667 0.667s0.667-0.299 0.667-0.667v-1.333h1.333c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-1.333v-1.333c0-0.368-0.299-0.667-0.667-0.667s-0.667 0.299-0.667 0.667v1.333h-1.333c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
3423 </svg>
3424 `
3425 },
3426 {
3427 name: 'zoom-out',
3428 template: `
3429 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3430 <title>zoom-out</title>
3431 <path d="M10.694 10.571c-0.023 0.017-0.045 0.037-0.066 0.058s-0.040 0.043-0.058 0.066c-0.839 0.809-1.979 1.305-3.237 1.305-1.289 0-2.455-0.521-3.3-1.367s-1.367-2.011-1.367-3.3 0.521-2.455 1.367-3.3 2.011-1.367 3.3-1.367 2.455 0.521 3.3 1.367 1.367 2.011 1.367 3.3c0 1.257-0.497 2.398-1.306 3.237zM14.471 13.529l-2.45-2.45c0.821-1.027 1.312-2.329 1.312-3.745 0-1.657-0.672-3.157-1.757-4.243s-2.586-1.757-4.243-1.757-3.157 0.672-4.243 1.757-1.757 2.586-1.757 4.243 0.672 3.157 1.757 4.243 2.586 1.757 4.243 1.757c1.417 0 2.719-0.491 3.745-1.312l2.45 2.45c0.261 0.261 0.683 0.261 0.943 0s0.261-0.683 0-0.943zM5.333 8h4c0.368 0 0.667-0.299 0.667-0.667s-0.299-0.667-0.667-0.667h-4c-0.368 0-0.667 0.299-0.667 0.667s0.299 0.667 0.667 0.667z"></path>
3432 </svg>
3433 `
3434 }
3435];
3436
3437/**
3438 * @fileoverview added by tsickle
3439 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3440 */
3441class Icon {
3442 /**
3443 * @param {?} sanitizer
3444 */
3445 constructor(sanitizer) {
3446 this.sanitizer = sanitizer;
3447 this.baseClass = true;
3448 }
3449 /**
3450 * Sets the icon.
3451 * @param {?} value
3452 * @return {?}
3453 */
3454 set icon(value) {
3455 this._icon = value;
3456 this.getIconDef();
3457 }
3458 /**
3459 * @return {?}
3460 */
3461 get icon() {
3462 return this._icon;
3463 }
3464 /**
3465 * @private
3466 * @return {?}
3467 */
3468 getIconDef() {
3469 /** @type {?} */
3470 const iconDefinition = iconDefs.filter((/**
3471 * @param {?} iconDef
3472 * @return {?}
3473 */
3474 iconDef => iconDef.name === this._icon))[0];
3475 if (!iconDefinition) {
3476 throw new Error(`Cant find '${this._icon}' icon.`);
3477 }
3478 this.content = this.sanitizer.bypassSecurityTrustHtml(iconDefinition.template);
3479 }
3480}
3481Icon.decorators = [
3482 { type: Component, args: [{
3483 selector: 'suka-icon',
3484 template: `
3485 <span [innerHTML]="content"></span>
3486 `
3487 }] }
3488];
3489/** @nocollapse */
3490Icon.ctorParameters = () => [
3491 { type: DomSanitizer }
3492];
3493Icon.propDecorators = {
3494 baseClass: [{ type: HostBinding, args: ['class.suka-icon',] }],
3495 accessibilityLabel: [{ type: HostBinding, args: ['attr.aria-label',] }, { type: Input }],
3496 icon: [{ type: Input }]
3497};
3498if (false) {
3499 /**
3500 * @type {?}
3501 * @protected
3502 */
3503 Icon.prototype._icon;
3504 /** @type {?} */
3505 Icon.prototype.content;
3506 /** @type {?} */
3507 Icon.prototype.baseClass;
3508 /**
3509 * Label for accesibility applications
3510 * @type {?}
3511 */
3512 Icon.prototype.accessibilityLabel;
3513 /**
3514 * @type {?}
3515 * @private
3516 */
3517 Icon.prototype.sanitizer;
3518}
3519
3520/**
3521 * @fileoverview added by tsickle
3522 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3523 */
3524class IconModule {
3525}
3526IconModule.decorators = [
3527 { type: NgModule, args: [{
3528 declarations: [
3529 Icon,
3530 ],
3531 exports: [
3532 Icon,
3533 ],
3534 imports: [
3535 CommonModule,
3536 ]
3537 },] }
3538];
3539
3540/**
3541 * @fileoverview added by tsickle
3542 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3543 */
3544class Select {
3545 constructor() {
3546 this._value = '';
3547 /**
3548 * `inline` or `default` select displays
3549 */
3550 this.display = 'default';
3551 /**
3552 * Sets the unique ID. Defaults to `select-${total count of selects instantiated}`
3553 */
3554 this.id = `select-${Select.selectCount++}`;
3555 /**
3556 * Set to true to disable component.
3557 */
3558 this.disabled = false;
3559 /**
3560 * Set to true for a loading select.
3561 */
3562 this.skeleton = false;
3563 /**
3564 * Set to `true` for an invalid select component.
3565 */
3566 this.invalid = false;
3567 /**
3568 * Set to `true` for an valid select component.
3569 */
3570 this.valid = false;
3571 /**
3572 * emits the selected options `value`
3573 */
3574 this.valueChange = new EventEmitter();
3575 /**
3576 * placeholder declarations. Replaced by the functions provided to `registerOnChange` and `registerOnTouched`
3577 */
3578 this.onChangeHandler = (/**
3579 * @param {?} _
3580 * @return {?}
3581 */
3582 (_) => { });
3583 this.onTouchedHandler = (/**
3584 * @return {?}
3585 */
3586 () => { });
3587 }
3588 /**
3589 * @return {?}
3590 */
3591 get value() {
3592 // return this._value;
3593 return this.select.nativeElement.value || this._value;
3594 }
3595 /**
3596 * @param {?} v
3597 * @return {?}
3598 */
3599 set value(v) {
3600 this._value = v;
3601 this.select.nativeElement.value = v;
3602 }
3603 /**
3604 * Receives a value from the model.
3605 * @param {?} obj
3606 * @return {?}
3607 */
3608 writeValue(obj) {
3609 this.value = obj;
3610 }
3611 /**
3612 * Registers a listener that notifies the model when the control updates
3613 * @param {?} fn
3614 * @return {?}
3615 */
3616 registerOnChange(fn) {
3617 this.onChangeHandler = fn;
3618 }
3619 /**
3620 * Registers a listener that notifies the model when the control is blurred
3621 * @param {?} fn
3622 * @return {?}
3623 */
3624 registerOnTouched(fn) {
3625 this.onTouchedHandler = fn;
3626 }
3627 /**
3628 * Sets the disabled state through the model
3629 * @param {?} isDisabled
3630 * @return {?}
3631 */
3632 setDisabledState(isDisabled) {
3633 this.disabled = isDisabled;
3634 }
3635 /**
3636 * Handles the change event from the `select`.
3637 * Sends events to the change handler and emits a `selected` event.
3638 * @param {?} event
3639 * @return {?}
3640 */
3641 onChange(event) {
3642 this.onChangeHandler(event.target.value);
3643 this.valueChange.emit(event.target.value);
3644 }
3645 /**
3646 * Listens for the host blurring, and notifies the model
3647 * @param {?} target
3648 * @return {?}
3649 */
3650 onBlur(target) {
3651 this.onTouchedHandler();
3652 }
3653 /**
3654 * @param {?} value
3655 * @return {?}
3656 */
3657 isTemplate(value) {
3658 return value instanceof TemplateRef;
3659 }
3660 /**
3661 * @return {?}
3662 */
3663 ngOnInit() {
3664 // console.log(this.select.nativeElement);
3665 this.value = this.select.nativeElement.value;
3666 }
3667}
3668/**
3669 * Tracks the total number of selects instantiated. Used to generate unique IDs
3670 */
3671Select.selectCount = 0;
3672Select.decorators = [
3673 { type: Component, args: [{
3674 selector: 'suka-select',
3675 template: `
3676 <div class="form-item">
3677 <div
3678 [ngClass]="{
3679 'select--inline': display === 'inline',
3680 'skeleton': skeleton
3681 }"
3682 class="select"
3683 >
3684 <label *ngIf="skeleton && label" [for]="id" class="label skeleton"></label>
3685 <label *ngIf="!skeleton && label" [for]="id" class="label">
3686 <ng-container *ngIf="!isTemplate(label)">{{label}}</ng-container>
3687 <ng-template *ngIf="isTemplate(label)" [ngTemplateOutlet]="label"></ng-template>
3688 </label>
3689 <div *ngIf="helperText" class="form__helper-text">
3690 <ng-container *ngIf="!isTemplate(helperText)">{{helperText}}</ng-container>
3691 <ng-template *ngIf="isTemplate(helperText)" [ngTemplateOutlet]="helperText"></ng-template>
3692 </div>
3693 <div class="select-input__wrapper" [attr.data-invalid]="(invalid ? true : null)" [attr.data-valid]="(valid ? true : null)">
3694 <select
3695 #selectInput
3696 [attr.id]="id"
3697 [disabled]="disabled"
3698 (change)="onChange($event)"
3699 [value]="value"
3700 (blur)="onBlur($event)"
3701 class="select-input">
3702 <ng-content></ng-content>
3703 </select>
3704 <suka-icon *ngIf="invalid" icon="alert-circle" class="select__invalid-icon"></suka-icon>
3705 <suka-icon *ngIf="valid" icon="check" class="select__valid-icon"></suka-icon>
3706 <suka-icon *ngIf="!skeleton" class="select__arrow" icon="chevron-down"></suka-icon>
3707 </div>
3708 <div *ngIf="invalid" class="form-requirement">
3709 <ng-container *ngIf="!isTemplate(invalidText)">{{invalidText}}</ng-container>
3710 <ng-template *ngIf="isTemplate(invalidText)" [ngTemplateOutlet]="invalidText"></ng-template>
3711 </div>
3712 </div>
3713 </div>
3714 `,
3715 providers: [
3716 {
3717 provide: NG_VALUE_ACCESSOR,
3718 useExisting: forwardRef((/**
3719 * @return {?}
3720 */
3721 () => Select)),
3722 multi: true
3723 }
3724 ],
3725 styles: [`
3726 [data-invalid] ~ .select__arrow {
3727 bottom: 2.25rem;
3728 }
3729 `]
3730 }] }
3731];
3732Select.propDecorators = {
3733 display: [{ type: Input }],
3734 label: [{ type: Input }],
3735 helperText: [{ type: Input }],
3736 invalidText: [{ type: Input }],
3737 id: [{ type: Input }],
3738 disabled: [{ type: Input }],
3739 skeleton: [{ type: Input }],
3740 invalid: [{ type: Input }],
3741 valid: [{ type: Input }],
3742 valueChange: [{ type: Output }],
3743 select: [{ type: ViewChild, args: ['selectInput', { static: true },] }],
3744 onBlur: [{ type: HostListener, args: ['blur', ['$event.target'],] }]
3745};
3746if (false) {
3747 /**
3748 * Tracks the total number of selects instantiated. Used to generate unique IDs
3749 * @type {?}
3750 */
3751 Select.selectCount;
3752 /**
3753 * @type {?}
3754 * @private
3755 */
3756 Select.prototype._value;
3757 /**
3758 * `inline` or `default` select displays
3759 * @type {?}
3760 */
3761 Select.prototype.display;
3762 /**
3763 * Label for the select. Appears above the input.
3764 * @type {?}
3765 */
3766 Select.prototype.label;
3767 /**
3768 * Optional helper text that appears under the label.
3769 * @type {?}
3770 */
3771 Select.prototype.helperText;
3772 /**
3773 * Sets the invalid text.
3774 * @type {?}
3775 */
3776 Select.prototype.invalidText;
3777 /**
3778 * Sets the unique ID. Defaults to `select-${total count of selects instantiated}`
3779 * @type {?}
3780 */
3781 Select.prototype.id;
3782 /**
3783 * Set to true to disable component.
3784 * @type {?}
3785 */
3786 Select.prototype.disabled;
3787 /**
3788 * Set to true for a loading select.
3789 * @type {?}
3790 */
3791 Select.prototype.skeleton;
3792 /**
3793 * Set to `true` for an invalid select component.
3794 * @type {?}
3795 */
3796 Select.prototype.invalid;
3797 /**
3798 * Set to `true` for an valid select component.
3799 * @type {?}
3800 */
3801 Select.prototype.valid;
3802 /**
3803 * emits the selected options `value`
3804 * @type {?}
3805 */
3806 Select.prototype.valueChange;
3807 /** @type {?} */
3808 Select.prototype.select;
3809 /**
3810 * placeholder declarations. Replaced by the functions provided to `registerOnChange` and `registerOnTouched`
3811 * @type {?}
3812 * @protected
3813 */
3814 Select.prototype.onChangeHandler;
3815 /**
3816 * @type {?}
3817 * @protected
3818 */
3819 Select.prototype.onTouchedHandler;
3820}
3821
3822/**
3823 * @fileoverview added by tsickle
3824 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3825 */
3826class Option {
3827 constructor() {
3828 this.inputClass = 'select-option';
3829 }
3830}
3831Option.decorators = [
3832 { type: Directive, args: [{
3833 // tslint:disable-next-line
3834 selector: "option"
3835 },] }
3836];
3837Option.propDecorators = {
3838 inputClass: [{ type: HostBinding, args: ['class',] }]
3839};
3840if (false) {
3841 /** @type {?} */
3842 Option.prototype.inputClass;
3843}
3844
3845/**
3846 * @fileoverview added by tsickle
3847 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3848 */
3849// tslint:disable-next-line: directive-class-suffix
3850class OptGroup {
3851 constructor() {
3852 this.inputClass = 'select-option';
3853 }
3854}
3855OptGroup.decorators = [
3856 { type: Directive, args: [{
3857 // tslint:disable-next-line
3858 selector: "optgroup"
3859 },] }
3860];
3861OptGroup.propDecorators = {
3862 inputClass: [{ type: HostBinding, args: ['class',] }]
3863};
3864if (false) {
3865 /** @type {?} */
3866 OptGroup.prototype.inputClass;
3867}
3868
3869/**
3870 * @fileoverview added by tsickle
3871 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3872 */
3873class SelectModule {
3874}
3875SelectModule.decorators = [
3876 { type: NgModule, args: [{
3877 declarations: [
3878 Select,
3879 Option,
3880 OptGroup
3881 ],
3882 exports: [
3883 Select,
3884 Option,
3885 OptGroup
3886 ],
3887 imports: [
3888 CommonModule,
3889 FormsModule,
3890 IconModule,
3891 ]
3892 },] }
3893];
3894
3895/**
3896 * @fileoverview added by tsickle
3897 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3898 */
3899class Label {
3900 constructor() {
3901 /**
3902 * Sets the unique ID. Defaults to `input-${total count of selects instantiated}`
3903 */
3904 this.id = `input-${Label.labelCounter++}`;
3905 /**
3906 * Set to `true` to display a loading label.
3907 */
3908 this.skeleton = false;
3909 /**
3910 * Set to `true` to display the invalid state.
3911 */
3912 this.invalid = false;
3913 /**
3914 * Set to `true` to display the valid state.
3915 */
3916 this.valid = false;
3917 this.labelClass = true;
3918 Label.labelCounter++;
3919 }
3920 /**
3921 * @return {?}
3922 */
3923 ngAfterContentInit() {
3924 this.wrapper.nativeElement.querySelector('input,textarea,div').setAttribute('id', this.id);
3925 }
3926 /**
3927 * @param {?} value
3928 * @return {?}
3929 */
3930 isTemplate(value) {
3931 return value instanceof TemplateRef;
3932 }
3933}
3934/**
3935 * Used to build the id of the input item associated with the `Label`.
3936 */
3937Label.labelCounter = 0;
3938Label.decorators = [
3939 { type: Component, args: [{
3940 selector: 'suka-label',
3941 template: `
3942 <label
3943 [for]="id"
3944 class="label"
3945 [ngClass]="{
3946 'skeleton': skeleton
3947 }">
3948 <ng-content></ng-content>
3949 </label>
3950 <div *ngIf="!skeleton && helperText" class="form__helper-text">{{helperText}}</div>
3951 <div class="text-input__field-wrapper" [attr.data-invalid]="(invalid ? true : null)" #wrapper>
3952 <suka-icon *ngIf="invalid" icon="alert-circle" class="text-input__invalid-icon text-area__invalid-icon"></suka-icon>
3953 <suka-icon *ngIf="valid" icon="check" class="text-input__valid-icon text-area__valid-icon"></suka-icon>
3954 <ng-content select="input,textarea,div"></ng-content>
3955 </div>
3956 <div *ngIf="invalid" class="form-requirement">
3957 <ng-container *ngIf="!isTemplate(invalidText)">{{invalidText}}</ng-container>
3958 <ng-template *ngIf="isTemplate(invalidText)" [ngTemplateOutlet]="invalidText"></ng-template>
3959 </div>
3960 `
3961 }] }
3962];
3963/** @nocollapse */
3964Label.ctorParameters = () => [];
3965Label.propDecorators = {
3966 id: [{ type: Input }],
3967 skeleton: [{ type: Input }],
3968 helperText: [{ type: Input }],
3969 invalidText: [{ type: Input }],
3970 invalid: [{ type: Input }],
3971 valid: [{ type: Input }],
3972 wrapper: [{ type: ViewChild, args: ['wrapper', { static: true },] }],
3973 labelClass: [{ type: HostBinding, args: ['class.form-item',] }]
3974};
3975if (false) {
3976 /**
3977 * Used to build the id of the input item associated with the `Label`.
3978 * @type {?}
3979 */
3980 Label.labelCounter;
3981 /**
3982 * Sets the unique ID. Defaults to `input-${total count of selects instantiated}`
3983 * @type {?}
3984 */
3985 Label.prototype.id;
3986 /**
3987 * Set to `true` to display a loading label.
3988 * @type {?}
3989 */
3990 Label.prototype.skeleton;
3991 /**
3992 * Sets the label helper text.
3993 * @type {?}
3994 */
3995 Label.prototype.helperText;
3996 /**
3997 * Sets the invalid text to display when the label is invalid.
3998 * @type {?}
3999 */
4000 Label.prototype.invalidText;
4001 /**
4002 * Set to `true` to display the invalid state.
4003 * @type {?}
4004 */
4005 Label.prototype.invalid;
4006 /**
4007 * Set to `true` to display the valid state.
4008 * @type {?}
4009 */
4010 Label.prototype.valid;
4011 /** @type {?} */
4012 Label.prototype.wrapper;
4013 /** @type {?} */
4014 Label.prototype.labelClass;
4015}
4016
4017/**
4018 * @fileoverview added by tsickle
4019 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4020 */
4021class TextInput {
4022 constructor() {
4023 this.inputClass = true;
4024 /**
4025 * Set to `true` to display the invalid state.
4026 */
4027 this.invalid = false;
4028 /**
4029 * Set to `true` to display the valid state.
4030 */
4031 this.valid = false;
4032 /**
4033 * Set to `true` to display a loading text input.
4034 */
4035 this.skeleton = false;
4036 }
4037}
4038TextInput.decorators = [
4039 { type: Directive, args: [{
4040 selector: '[sukaText]'
4041 },] }
4042];
4043TextInput.propDecorators = {
4044 inputClass: [{ type: HostBinding, args: ['class.text-input',] }],
4045 invalid: [{ type: HostBinding, args: ['class.text-input--invalid',] }, { type: Input }],
4046 valid: [{ type: HostBinding, args: ['class.text-input--valid',] }, { type: Input }],
4047 skeleton: [{ type: HostBinding, args: ['class.skeleton',] }, { type: Input }]
4048};
4049if (false) {
4050 /** @type {?} */
4051 TextInput.prototype.inputClass;
4052 /**
4053 * Set to `true` to display the invalid state.
4054 * @type {?}
4055 */
4056 TextInput.prototype.invalid;
4057 /**
4058 * Set to `true` to display the valid state.
4059 * @type {?}
4060 */
4061 TextInput.prototype.valid;
4062 /**
4063 * Set to `true` to display a loading text input.
4064 * @type {?}
4065 */
4066 TextInput.prototype.skeleton;
4067}
4068
4069/**
4070 * @fileoverview added by tsickle
4071 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4072 */
4073// tslint:disable-next-line: directive-class-suffix
4074class TextArea {
4075 constructor() {
4076 this.baseClass = true;
4077 /**
4078 * Set to `true` to display the invalid state.
4079 */
4080 this.invalid = false;
4081 /**
4082 * Set to `true` to display the valid state.
4083 */
4084 this.valid = false;
4085 /**
4086 * Set to `true` to display a loading text area.
4087 */
4088 this.skeleton = false;
4089 }
4090}
4091TextArea.decorators = [
4092 { type: Directive, args: [{
4093 selector: '[sukaTextArea]'
4094 },] }
4095];
4096TextArea.propDecorators = {
4097 baseClass: [{ type: HostBinding, args: ['class.text-area',] }],
4098 invalid: [{ type: HostBinding, args: ['class.text-area--invalid',] }, { type: Input }],
4099 valid: [{ type: HostBinding, args: ['class.text-area--valid',] }, { type: Input }],
4100 skeleton: [{ type: HostBinding, args: ['class.skeleton',] }, { type: Input }]
4101};
4102if (false) {
4103 /** @type {?} */
4104 TextArea.prototype.baseClass;
4105 /**
4106 * Set to `true` to display the invalid state.
4107 * @type {?}
4108 */
4109 TextArea.prototype.invalid;
4110 /**
4111 * Set to `true` to display the valid state.
4112 * @type {?}
4113 */
4114 TextArea.prototype.valid;
4115 /**
4116 * Set to `true` to display a loading text area.
4117 * @type {?}
4118 */
4119 TextArea.prototype.skeleton;
4120}
4121
4122/**
4123 * @fileoverview added by tsickle
4124 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4125 */
4126class InputModule {
4127}
4128InputModule.decorators = [
4129 { type: NgModule, args: [{
4130 declarations: [
4131 Label,
4132 TextInput,
4133 TextArea,
4134 ],
4135 exports: [
4136 Label,
4137 TextInput,
4138 TextArea,
4139 ],
4140 imports: [
4141 CommonModule,
4142 FormsModule,
4143 IconModule,
4144 ]
4145 },] }
4146];
4147
4148/**
4149 * @fileoverview added by tsickle
4150 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4151 */
4152class GridDirective {
4153 constructor() {
4154 this.baseClass = true;
4155 }
4156}
4157GridDirective.decorators = [
4158 { type: Directive, args: [{
4159 selector: '[sukaGrid]'
4160 },] }
4161];
4162GridDirective.propDecorators = {
4163 baseClass: [{ type: HostBinding, args: ['class.grid',] }]
4164};
4165if (false) {
4166 /** @type {?} */
4167 GridDirective.prototype.baseClass;
4168}
4169class RowDirective {
4170 constructor() {
4171 this.baseClass = true;
4172 /**
4173 * Set to `true` for no gutters between columns.
4174 */
4175 this.noGutters = false;
4176 /**
4177 * Set to `true` to make the columns distribute their height accordingly to the row total height.
4178 */
4179 this.rowDeck = false;
4180 }
4181}
4182RowDirective.decorators = [
4183 { type: Directive, args: [{
4184 selector: '[sukaRow]'
4185 },] }
4186];
4187RowDirective.propDecorators = {
4188 baseClass: [{ type: HostBinding, args: ['class.row',] }],
4189 noGutters: [{ type: HostBinding, args: ['class.no-gutters',] }, { type: Input }],
4190 rowDeck: [{ type: HostBinding, args: ['class.row-deck',] }, { type: Input }]
4191};
4192if (false) {
4193 /** @type {?} */
4194 RowDirective.prototype.baseClass;
4195 /**
4196 * Set to `true` for no gutters between columns.
4197 * @type {?}
4198 */
4199 RowDirective.prototype.noGutters;
4200 /**
4201 * Set to `true` to make the columns distribute their height accordingly to the row total height.
4202 * @type {?}
4203 */
4204 RowDirective.prototype.rowDeck;
4205}
4206class ColumnDirective {
4207 constructor() {
4208 /**
4209 * Sets the class
4210 */
4211 this.class = '';
4212 /**
4213 * Object that sets the column numbers according to the breakpoint.
4214 * Breakpoints can be:<br>
4215 * - xs: From 0px<br>
4216 * - sm: From 576px<br>
4217 * - md: From 768px<br>
4218 * - lg: From 992px<br>
4219 * - xl: From 1200px<br>
4220 * - xxl: From 1600px<br>
4221 * - nobreak: For all viewports.
4222 * <br>
4223 * Example:
4224 * ```{xs: 12, sm: 6, md: 4}```
4225 */
4226 this.columnNumbers = {};
4227 /**
4228 * Object that sets the column offset according to the breakpoint.
4229 * Breakpoints can be:<br>
4230 * - xs: From 0px<br>
4231 * - sm: From 576px<br>
4232 * - md: From 768px<br>
4233 * - lg: From 992px<br>
4234 * - xl: From 1200px<br>
4235 * - xxl: From 1600px<br>
4236 * - nobreak: For all viewports.
4237 * <br>
4238 * Example:
4239 * ```{xs: 12, sm: 6, md: 4}```
4240 */
4241 this.offsets = {};
4242 // tslint:disable-next-line: variable-name
4243 this._columnClasses = [];
4244 }
4245 /**
4246 * @return {?}
4247 */
4248 get columnClasses() {
4249 return this._columnClasses.join(' ');
4250 }
4251 /**
4252 * @param {?} classes
4253 * @return {?}
4254 */
4255 set(classes) {
4256 this._columnClasses = classes.split(' ');
4257 }
4258 /**
4259 * @return {?}
4260 */
4261 ngOnInit() {
4262 try {
4263 /** @type {?} */
4264 const columnKeys = Object.keys(this.columnNumbers);
4265 if (columnKeys.length <= 0) {
4266 this._columnClasses.push('col');
4267 }
4268 columnKeys.forEach((/**
4269 * @param {?} key
4270 * @return {?}
4271 */
4272 key => {
4273 if (this.columnNumbers[key] === 'nobreak') {
4274 this._columnClasses.push(`col-${key}`);
4275 }
4276 else {
4277 this._columnClasses.push(`col-${key}-${this.columnNumbers[key]}`);
4278 }
4279 }));
4280 Object.keys(this.offsets).forEach((/**
4281 * @param {?} key
4282 * @return {?}
4283 */
4284 key => {
4285 this._columnClasses.push(`offset-${key}-${this.offsets[key]}`);
4286 }));
4287 }
4288 catch (err) {
4289 console.error(`Malformed \`offsets\` or \`columnNumbers\`: ${err}`);
4290 }
4291 if (this.class) {
4292 this._columnClasses.push(this.class);
4293 }
4294 }
4295}
4296ColumnDirective.decorators = [
4297 { type: Directive, args: [{
4298 selector: '[sukaCol]'
4299 },] }
4300];
4301ColumnDirective.propDecorators = {
4302 class: [{ type: Input }],
4303 columnNumbers: [{ type: Input }],
4304 offsets: [{ type: Input }],
4305 columnClasses: [{ type: HostBinding, args: ['class',] }]
4306};
4307if (false) {
4308 /**
4309 * Sets the class
4310 * @type {?}
4311 */
4312 ColumnDirective.prototype.class;
4313 /**
4314 * Object that sets the column numbers according to the breakpoint.
4315 * Breakpoints can be:<br>
4316 * - xs: From 0px<br>
4317 * - sm: From 576px<br>
4318 * - md: From 768px<br>
4319 * - lg: From 992px<br>
4320 * - xl: From 1200px<br>
4321 * - xxl: From 1600px<br>
4322 * - nobreak: For all viewports.
4323 * <br>
4324 * Example:
4325 * ```{xs: 12, sm: 6, md: 4}```
4326 * @type {?}
4327 */
4328 ColumnDirective.prototype.columnNumbers;
4329 /**
4330 * Object that sets the column offset according to the breakpoint.
4331 * Breakpoints can be:<br>
4332 * - xs: From 0px<br>
4333 * - sm: From 576px<br>
4334 * - md: From 768px<br>
4335 * - lg: From 992px<br>
4336 * - xl: From 1200px<br>
4337 * - xxl: From 1600px<br>
4338 * - nobreak: For all viewports.
4339 * <br>
4340 * Example:
4341 * ```{xs: 12, sm: 6, md: 4}```
4342 * @type {?}
4343 */
4344 ColumnDirective.prototype.offsets;
4345 /**
4346 * @type {?}
4347 * @protected
4348 */
4349 ColumnDirective.prototype._columnClasses;
4350}
4351
4352/**
4353 * @fileoverview added by tsickle
4354 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4355 */
4356class GridModule {
4357}
4358GridModule.decorators = [
4359 { type: NgModule, args: [{
4360 declarations: [
4361 ColumnDirective,
4362 GridDirective,
4363 RowDirective
4364 ],
4365 exports: [
4366 ColumnDirective,
4367 GridDirective,
4368 RowDirective
4369 ],
4370 imports: [CommonModule]
4371 },] }
4372];
4373
4374/**
4375 * @fileoverview added by tsickle
4376 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4377 */
4378/** @enum {number} */
4379const ToggleState = {
4380 Init: 0,
4381 Checked: 1,
4382 Unchecked: 2,
4383};
4384ToggleState[ToggleState.Init] = 'Init';
4385ToggleState[ToggleState.Checked] = 'Checked';
4386ToggleState[ToggleState.Unchecked] = 'Unchecked';
4387class ToggleChange {
4388}
4389if (false) {
4390 /** @type {?} */
4391 ToggleChange.prototype.source;
4392 /** @type {?} */
4393 ToggleChange.prototype.checked;
4394}
4395// tslint:disable-next-line: component-class-suffix
4396class Toggle {
4397 /**
4398 * Creates an instance of `Toggle`.
4399 * @param {?} changeDetectorRef
4400 */
4401 constructor(changeDetectorRef) {
4402 this.changeDetectorRef = changeDetectorRef;
4403 /**
4404 * Set to `true` for toggle to be rendered without any classes on the host element.
4405 */
4406 this.inline = false;
4407 /**
4408 * Set to `true` for a disabled toggle.
4409 */
4410 this.disabled = false;
4411 /**
4412 * Set to `true` for a loading toggle.
4413 */
4414 this.skeleton = false;
4415 /**
4416 * Set to `true` to hide the toggle labels.
4417 */
4418 this.hideLabel = false;
4419 /**
4420 * The unique id for the toggle component.
4421 */
4422 this.id = `toggle-${Toggle.toggleCount}`;
4423 /**
4424 * Used to set the `aria-label` attribute on the input element.
4425 */
4426 // tslint:disable-next-line:no-input-rename
4427 this.ariaLabel = '';
4428 /**
4429 * Horizontal distribution of elements
4430 */
4431 this.distribution = 'equalSpacing';
4432 /**
4433 * Emits event notifying other classes when a change in state occurs on a toggle after a
4434 * click.
4435 */
4436 // tslint:disable-next-line: no-output-native
4437 this.change = new EventEmitter();
4438 /**
4439 * Set to `true` if the input toggle is selected (or checked).
4440 */
4441 // tslint:disable-next-line: variable-name
4442 this._checked = false;
4443 this.currentToggleState = ToggleState.Init;
4444 /**
4445 * Called when toggle is blurred. Needed to properly implement `ControlValueAccessor`.
4446 */
4447 this.onTouched = (/**
4448 * @return {?}
4449 */
4450 () => { });
4451 /**
4452 * Method set in `registerOnChange` to propagate changes back to the form.
4453 */
4454 this.propagateChange = (/**
4455 * @param {?} _
4456 * @return {?}
4457 */
4458 (_) => { });
4459 Toggle.toggleCount++;
4460 }
4461 /**
4462 * Returns value `true` if state is selected for the toggle.
4463 * @return {?}
4464 */
4465 get checked() {
4466 return this._checked;
4467 }
4468 /**
4469 * Updating the state of a toggle to match the state of the parameter passed in.
4470 * @param {?} checked
4471 * @return {?}
4472 */
4473 set checked(checked) {
4474 if (checked !== this.checked) {
4475 this._checked = checked;
4476 this.changeDetectorRef.markForCheck();
4477 }
4478 }
4479 /**
4480 * @return {?}
4481 */
4482 get toggleWrapperClass() {
4483 return !this.inline;
4484 }
4485 /**
4486 * @return {?}
4487 */
4488 get formItemClass() {
4489 return !this.inline;
4490 }
4491 /**
4492 * Toggle the selected state of the toggle.
4493 * @return {?}
4494 */
4495 toggle() {
4496 this.checked = !this.checked;
4497 }
4498 // this is the initial value set to the component
4499 /**
4500 * @param {?} value
4501 * @return {?}
4502 */
4503 writeValue(value) {
4504 this.checked = !!value;
4505 }
4506 /**
4507 * Sets a method in order to propagate changes back to the form.
4508 * @param {?} fn
4509 * @return {?}
4510 */
4511 registerOnChange(fn) {
4512 this.propagateChange = fn;
4513 }
4514 /**
4515 * Registers a callback to be triggered when the control has been touched.
4516 * @param {?} fn Callback to be triggered when the toggle is touched.
4517 * @return {?}
4518 */
4519 registerOnTouched(fn) {
4520 this.onTouched = fn;
4521 }
4522 /**
4523 * Executes on the event of a change within `Toggle` to block propagation.
4524 * @param {?} event
4525 * @return {?}
4526 */
4527 onChange(event) {
4528 event.stopPropagation();
4529 }
4530 /**
4531 * Handles click events on the `Toggle` and emits changes to other classes.
4532 * @param {?} event
4533 * @return {?}
4534 */
4535 onClick(event) {
4536 if (!this.disabled) {
4537 this.toggle();
4538 this.transitionToggleState(this._checked ? ToggleState.Checked : ToggleState.Unchecked);
4539 this.emitChangeEvent();
4540 }
4541 }
4542 /**
4543 * Handles changes between toggle states.
4544 * @param {?} newState
4545 * @return {?}
4546 */
4547 transitionToggleState(newState) {
4548 this.currentToggleState = newState;
4549 }
4550 /**
4551 * Creates instance of `ToggleChange` used to propagate the change event.
4552 * @return {?}
4553 */
4554 emitChangeEvent() {
4555 /** @type {?} */
4556 const event = new ToggleChange();
4557 event.source = this;
4558 event.checked = this.checked;
4559 this.propagateChange(this.checked);
4560 this.change.emit(event);
4561 }
4562}
4563/**
4564 * Variable used for creating unique ids for toggle components.
4565 */
4566Toggle.toggleCount = 0;
4567Toggle.decorators = [
4568 { type: Component, args: [{
4569 selector: 'suka-toggle',
4570 template: `
4571 <label
4572 class="
4573 toggle
4574 toggle--distribution-{{distribution}}
4575 "
4576 [ngClass]="{
4577 'skeleton' : skeleton,
4578 'disabled': disabled
4579 }"
4580 >
4581 <ng-content></ng-content>
4582 <input
4583 type="checkbox"
4584 [id]="id"
4585 [value]="value"
4586 [name]="name"
4587 [required]="required"
4588 [checked]="checked"
4589 [disabled]="disabled"
4590 [attr.aria-label]="ariaLabel"
4591 [attr.aria-labelledby]="ariaLabelledby"
4592 [attr.aria-checked]="checked"
4593 (change)="onChange($event)"
4594 (click)="onClick($event)"
4595 />
4596 <span class="toggle-body">
4597 <span class="toggle-switch"></span>
4598 <span class="toggle-track">
4599 <span class="toggle-bg"></span>
4600 <span class="toggle-bg toggle-bg_negative"></span>
4601 </span>
4602 </span>
4603 </label>
4604 `,
4605 providers: [
4606 {
4607 provide: NG_VALUE_ACCESSOR,
4608 useExisting: Toggle,
4609 multi: true
4610 }
4611 ],
4612 changeDetection: ChangeDetectionStrategy.OnPush
4613 }] }
4614];
4615/** @nocollapse */
4616Toggle.ctorParameters = () => [
4617 { type: ChangeDetectorRef }
4618];
4619Toggle.propDecorators = {
4620 nested: [{ type: Input }],
4621 inline: [{ type: Input }],
4622 disabled: [{ type: Input }],
4623 skeleton: [{ type: Input }],
4624 hideLabel: [{ type: Input }],
4625 name: [{ type: Input }],
4626 id: [{ type: Input }],
4627 required: [{ type: Input }],
4628 value: [{ type: Input }],
4629 ariaLabel: [{ type: Input, args: ['aria-label',] }],
4630 ariaLabelledby: [{ type: Input, args: ['aria-labelledby',] }],
4631 distribution: [{ type: Input }],
4632 checked: [{ type: Input }],
4633 toggleWrapperClass: [{ type: HostBinding, args: ['class.toggle-wrapper',] }],
4634 formItemClass: [{ type: HostBinding, args: ['class.form-item',] }],
4635 change: [{ type: Output }],
4636 inputToggle: [{ type: ViewChild, args: ['inputToggle', { static: true },] }]
4637};
4638if (false) {
4639 /**
4640 * Variable used for creating unique ids for toggle components.
4641 * @type {?}
4642 */
4643 Toggle.toggleCount;
4644 /**
4645 * Set to `true` for toggle to be rendered with nested styles.
4646 * @type {?}
4647 */
4648 Toggle.prototype.nested;
4649 /**
4650 * Set to `true` for toggle to be rendered without any classes on the host element.
4651 * @type {?}
4652 */
4653 Toggle.prototype.inline;
4654 /**
4655 * Set to `true` for a disabled toggle.
4656 * @type {?}
4657 */
4658 Toggle.prototype.disabled;
4659 /**
4660 * Set to `true` for a loading toggle.
4661 * @type {?}
4662 */
4663 Toggle.prototype.skeleton;
4664 /**
4665 * Set to `true` to hide the toggle labels.
4666 * @type {?}
4667 */
4668 Toggle.prototype.hideLabel;
4669 /**
4670 * Sets the name attribute on the `input` element.
4671 * @type {?}
4672 */
4673 Toggle.prototype.name;
4674 /**
4675 * The unique id for the toggle component.
4676 * @type {?}
4677 */
4678 Toggle.prototype.id;
4679 /**
4680 * Reflects the required attribute of the `input` element.
4681 * @type {?}
4682 */
4683 Toggle.prototype.required;
4684 /**
4685 * Sets the value attribute on the `input` element.
4686 * @type {?}
4687 */
4688 Toggle.prototype.value;
4689 /**
4690 * Used to set the `aria-label` attribute on the input element.
4691 * @type {?}
4692 */
4693 Toggle.prototype.ariaLabel;
4694 /**
4695 * Used to set the `aria-labelledby` attribute on the input element.
4696 * @type {?}
4697 */
4698 Toggle.prototype.ariaLabelledby;
4699 /**
4700 * Horizontal distribution of elements
4701 * @type {?}
4702 */
4703 Toggle.prototype.distribution;
4704 /**
4705 * Emits event notifying other classes when a change in state occurs on a toggle after a
4706 * click.
4707 * @type {?}
4708 */
4709 Toggle.prototype.change;
4710 /**
4711 * Set to `true` if the input toggle is selected (or checked).
4712 * @type {?}
4713 */
4714 Toggle.prototype._checked;
4715 /** @type {?} */
4716 Toggle.prototype.currentToggleState;
4717 /**
4718 * Maintains a reference to the view DOM element of the `Toggle`.
4719 * @type {?}
4720 */
4721 Toggle.prototype.inputToggle;
4722 /**
4723 * Called when toggle is blurred. Needed to properly implement `ControlValueAccessor`.
4724 * @type {?}
4725 */
4726 Toggle.prototype.onTouched;
4727 /**
4728 * Method set in `registerOnChange` to propagate changes back to the form.
4729 * @type {?}
4730 */
4731 Toggle.prototype.propagateChange;
4732 /**
4733 * @type {?}
4734 * @protected
4735 */
4736 Toggle.prototype.changeDetectorRef;
4737}
4738
4739/**
4740 * @fileoverview added by tsickle
4741 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4742 */
4743class ToggleModule {
4744}
4745ToggleModule.decorators = [
4746 { type: NgModule, args: [{
4747 declarations: [
4748 Toggle
4749 ],
4750 exports: [
4751 Toggle
4752 ],
4753 imports: [
4754 CommonModule,
4755 FormsModule,
4756 ]
4757 },] }
4758];
4759
4760/**
4761 * @fileoverview added by tsickle
4762 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4763 */
4764/**
4765 * Used to emit changes performed on a `Radio`.
4766 */
4767class RadioChange {
4768 /**
4769 * @param {?} source
4770 * @param {?} value
4771 */
4772 constructor(source, value) {
4773 this.source = source;
4774 this.value = value;
4775 }
4776}
4777if (false) {
4778 /**
4779 * Contains the `Radio` that has been changed.
4780 * @type {?}
4781 */
4782 RadioChange.prototype.source;
4783 /**
4784 * The value of the `Radio` encompassed in the `RadioChange` class.
4785 * @type {?}
4786 */
4787 RadioChange.prototype.value;
4788}
4789
4790/**
4791 * @fileoverview added by tsickle
4792 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4793 */
4794class Radio {
4795 constructor() {
4796 /**
4797 * Sets the checked status.
4798 */
4799 this.checked = false;
4800 /**
4801 * Sets the `Radio` `<input>` name.
4802 */
4803 this.name = '';
4804 /**
4805 * Set to `true` to disable the `Radio`.
4806 */
4807 this.disabled = false;
4808 /**
4809 * Sets the label placement. Default to `right`.
4810 */
4811 this.labelPlacement = 'right';
4812 /**
4813 * Sets the HTML required attribute
4814 */
4815 this.required = false;
4816 /**
4817 * The value of the `Radio`.
4818 */
4819 this.value = '';
4820 /**
4821 * Set to `true` for a loading radio.
4822 */
4823 this.skeleton = false;
4824 /**
4825 * The id for the `Radio`.
4826 */
4827 this.id = `radio-${Radio.radioCount++}`;
4828 /**
4829 * emits when the state of the radio changes
4830 */
4831 // tslint:disable-next-line: no-output-native
4832 this.change = new EventEmitter();
4833 /**
4834 * Binds 'radio' value to the role attribute for `Radio`.
4835 */
4836 this.role = 'radio';
4837 this.hostClass = true;
4838 // tslint:disable-next-line: variable-name
4839 this._labelledby = '';
4840 /**
4841 * Handler provided by the `RadioGroup` to bubble events up
4842 */
4843 this.radioChangeHandler = (/**
4844 * @param {?} event
4845 * @return {?}
4846 */
4847 (event) => { });
4848 }
4849 /**
4850 * @param {?} value
4851 * @return {?}
4852 */
4853 set ariaLabelledby(value) {
4854 this._labelledby = value;
4855 }
4856 /**
4857 * @return {?}
4858 */
4859 get ariaLabelledby() {
4860 if (this._labelledby) {
4861 return this._labelledby;
4862 }
4863 return `label-${this.id}`;
4864 }
4865 /**
4866 * @return {?}
4867 */
4868 get labelLeft() {
4869 return this.labelPlacement === 'left';
4870 }
4871 /**
4872 * Synchronizes with the `RadioGroup` in the event of a changed `Radio`.
4873 * Emits the changes of both the `RadioGroup` and `Radio`.
4874 * @param {?} event
4875 * @return {?}
4876 */
4877 onChange(event) {
4878 event.stopPropagation();
4879 this.checked = ((/** @type {?} */ (event.target))).checked;
4880 /** @type {?} */
4881 const radioEvent = new RadioChange(this, this.value);
4882 this.change.emit(radioEvent);
4883 this.radioChangeHandler(radioEvent);
4884 }
4885 /**
4886 * Method called by `RadioGroup` with a callback function to bubble `RadioChange` events
4887 * @param {?} fn callback that expects a `RadioChange` as an argument
4888 * @return {?}
4889 */
4890 registerRadioChangeHandler(fn) {
4891 this.radioChangeHandler = fn;
4892 }
4893}
4894/**
4895 * Used to dynamically create unique ids for the `Radio`.
4896 */
4897Radio.radioCount = 0;
4898Radio.decorators = [
4899 { type: Component, args: [{
4900 selector: 'suka-radio',
4901 template: `
4902 <input
4903 *ngIf="!skeleton"
4904 class="radio-button"
4905 type="radio"
4906 [checked]="checked"
4907 [disabled]="disabled"
4908 [name]="name"
4909 [id]="id"
4910 [required]="required"
4911 [value]="value"
4912 [attr.aria-labelledby]="ariaLabelledby"
4913 (change)="onChange($event)">
4914 <div *ngIf="skeleton" class="radio-button skeleton"></div>
4915 <label
4916 class="radio-button__label"
4917 [ngClass]="{
4918 'skeleton': skeleton
4919 }"
4920 [for]="id"
4921 id="label-{{id}}">
4922 <span class="radio-button__appearance"></span>
4923 <ng-content></ng-content>
4924 </label>
4925 `,
4926 providers: [
4927 {
4928 provide: NG_VALUE_ACCESSOR,
4929 useExisting: Radio,
4930 multi: true
4931 }
4932 ]
4933 }] }
4934];
4935Radio.propDecorators = {
4936 checked: [{ type: Input }],
4937 name: [{ type: Input }],
4938 disabled: [{ type: Input }],
4939 labelPlacement: [{ type: Input }],
4940 ariaLabelledby: [{ type: Input }],
4941 required: [{ type: Input }],
4942 value: [{ type: Input }],
4943 skeleton: [{ type: Input }],
4944 id: [{ type: Input }],
4945 change: [{ type: Output }],
4946 role: [{ type: HostBinding, args: ['attr.role',] }],
4947 hostClass: [{ type: HostBinding, args: ['class.radio-button-wrapper',] }],
4948 labelLeft: [{ type: HostBinding, args: ['class.radio-button-wrapper--label-left',] }]
4949};
4950if (false) {
4951 /**
4952 * Used to dynamically create unique ids for the `Radio`.
4953 * @type {?}
4954 */
4955 Radio.radioCount;
4956 /**
4957 * Sets the checked status.
4958 * @type {?}
4959 */
4960 Radio.prototype.checked;
4961 /**
4962 * Sets the `Radio` `<input>` name.
4963 * @type {?}
4964 */
4965 Radio.prototype.name;
4966 /**
4967 * Set to `true` to disable the `Radio`.
4968 * @type {?}
4969 */
4970 Radio.prototype.disabled;
4971 /**
4972 * Sets the label placement. Default to `right`.
4973 * @type {?}
4974 */
4975 Radio.prototype.labelPlacement;
4976 /**
4977 * Sets the HTML required attribute
4978 * @type {?}
4979 */
4980 Radio.prototype.required;
4981 /**
4982 * The value of the `Radio`.
4983 * @type {?}
4984 */
4985 Radio.prototype.value;
4986 /**
4987 * Set to `true` for a loading radio.
4988 * @type {?}
4989 */
4990 Radio.prototype.skeleton;
4991 /**
4992 * The id for the `Radio`.
4993 * @type {?}
4994 */
4995 Radio.prototype.id;
4996 /**
4997 * emits when the state of the radio changes
4998 * @type {?}
4999 */
5000 Radio.prototype.change;
5001 /**
5002 * Binds 'radio' value to the role attribute for `Radio`.
5003 * @type {?}
5004 */
5005 Radio.prototype.role;
5006 /** @type {?} */
5007 Radio.prototype.hostClass;
5008 /**
5009 * @type {?}
5010 * @protected
5011 */
5012 Radio.prototype._labelledby;
5013 /**
5014 * Handler provided by the `RadioGroup` to bubble events up
5015 * @type {?}
5016 */
5017 Radio.prototype.radioChangeHandler;
5018}
5019
5020/**
5021 * @fileoverview added by tsickle
5022 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5023 */
5024// tslint:disable-next-line: component-class-suffix
5025class RadioGroup {
5026 constructor() {
5027 this.orientation = 'horizontal';
5028 this.radioLabelPlacement = 'right';
5029 /**
5030 * Emits event notifying other classes of a change using a `RadioChange` class.
5031 */
5032 // tslint:disable-next-line: no-output-native
5033 this.change = new EventEmitter();
5034 /**
5035 * Set to true to disable the whole radio group
5036 */
5037 this.disabled = false;
5038 /**
5039 * Binds 'form-item' value to the class for `RadioGroup`.
5040 */
5041 this.radioButtonGroupClass = true;
5042 /**
5043 * To track whether the `RadioGroup` has been initialized.
5044 */
5045 this.isInitialized = false;
5046 /**
5047 * Reflects whether or not the input is disabled and cannot be selected.
5048 */
5049 this._disabled = false;
5050 /**
5051 * Reflects whether or not the dropdown is loading.
5052 */
5053 this._skeleton = false;
5054 /**
5055 * The value of the selected option within the `RadioGroup`.
5056 */
5057 this._value = null;
5058 /**
5059 * The `Radio` within the `RadioGroup` that is selected.
5060 */
5061 this._selected = null;
5062 /**
5063 * The name attribute associated with the `RadioGroup`.
5064 */
5065 this._name = `radio-group-${RadioGroup.radioGroupCount++}`;
5066 /**
5067 * Needed to properly implement ControlValueAccessor.
5068 */
5069 this.onTouched = (/**
5070 * @return {?}
5071 */
5072 () => { });
5073 /**
5074 * Method set in registerOnChange to propagate changes back to the form.
5075 */
5076 this.propagateChange = (/**
5077 * @param {?} _
5078 * @return {?}
5079 */
5080 (_) => { });
5081 }
5082 /**
5083 * Sets the passed in `Radio` item as the selected input within the `RadioGroup`.
5084 * @param {?} selected
5085 * @return {?}
5086 */
5087 set selected(selected) {
5088 this._selected = selected;
5089 this.value = selected ? selected.value : null;
5090 this.checkSelectedRadio();
5091 }
5092 /**
5093 * Returns the `Radio` that is selected within the `RadioGroup`.
5094 * @return {?}
5095 */
5096 get selected() {
5097 return this._selected;
5098 }
5099 /**
5100 * Sets the value/state of the selected `Radio` within the `RadioGroup` to the passed in value.
5101 * @param {?} newValue
5102 * @return {?}
5103 */
5104 set value(newValue) {
5105 if (this._value !== newValue) {
5106 this._value = newValue;
5107 this.updateSelectedRadioFromValue();
5108 this.checkSelectedRadio();
5109 }
5110 }
5111 /**
5112 * Returns the value/state of the selected `Radio` within the `RadioGroup`.
5113 * @return {?}
5114 */
5115 get value() {
5116 return this._value;
5117 }
5118 /**
5119 * Replaces the name associated with the `RadioGroup` with the provided parameter.
5120 * @param {?} name
5121 * @return {?}
5122 */
5123 set name(name) {
5124 this._name = name;
5125 this.updateRadios();
5126 }
5127 /**
5128 * Returns the associated name of the `RadioGroup`.
5129 * @return {?}
5130 */
5131 get name() {
5132 return this._name;
5133 }
5134 /**
5135 * Returns the skeleton value in the `RadioGroup` if there is one.
5136 * @return {?}
5137 */
5138 get skeleton() {
5139 return this._skeleton;
5140 }
5141 /**
5142 * Sets the skeleton value for all `Radio` to the skeleton value of `RadioGroup`.
5143 * @param {?} value
5144 * @return {?}
5145 */
5146 set skeleton(value) {
5147 this._skeleton = value;
5148 this.updateChildren();
5149 }
5150 /**
5151 * Updates the selected `Radio` to be checked (selected).
5152 * @return {?}
5153 */
5154 checkSelectedRadio() {
5155 if (this.selected && !this._selected.checked) {
5156 this.selected.checked = true;
5157 }
5158 }
5159 /**
5160 * Use the value of the `RadioGroup` to update the selected radio to the right state (selected state).
5161 * @return {?}
5162 */
5163 updateSelectedRadioFromValue() {
5164 /** @type {?} */
5165 const alreadySelected = this._selected != null && this._selected.value === this._value;
5166 if (this.radios && !alreadySelected) {
5167 this._selected = null;
5168 this.radios.forEach((/**
5169 * @param {?} radio
5170 * @return {?}
5171 */
5172 radio => {
5173 if (radio.checked) {
5174 this._selected = radio;
5175 }
5176 }));
5177 }
5178 }
5179 /**
5180 * Creates a class of `RadioChange` to emit the change in the `RadioGroup`.
5181 * @param {?} event
5182 * @return {?}
5183 */
5184 emitChangeEvent(event) {
5185 this.change.emit(event);
5186 this.propagateChange(event.value);
5187 this.onTouched();
5188 }
5189 /**
5190 * Synchronizes radio properties.
5191 * @return {?}
5192 */
5193 updateRadios() {
5194 if (this.radios) {
5195 setTimeout((/**
5196 * @return {?}
5197 */
5198 () => {
5199 this.radios.forEach((/**
5200 * @param {?} radio
5201 * @return {?}
5202 */
5203 radio => radio.name = this.name));
5204 if (this.radioLabelPlacement === 'left') {
5205 this.radios.forEach((/**
5206 * @param {?} radio
5207 * @return {?}
5208 */
5209 radio => radio.labelPlacement = 'left'));
5210 }
5211 }));
5212 }
5213 }
5214 /**
5215 * Updates the value of the `RadioGroup` using the provided parameter.
5216 * @param {?} value
5217 * @return {?}
5218 */
5219 writeValue(value) {
5220 this.value = value;
5221 }
5222 /**
5223 * @return {?}
5224 */
5225 ngAfterContentInit() {
5226 this.radios.changes.subscribe((/**
5227 * @return {?}
5228 */
5229 () => {
5230 this.updateRadios();
5231 this.updateRadioChangeHandler();
5232 }));
5233 this.updateChildren();
5234 this.updateRadioChangeHandler();
5235 }
5236 /**
5237 * @return {?}
5238 */
5239 ngAfterViewInit() {
5240 this.updateRadios();
5241 }
5242 /**
5243 * Used to set method to propagate changes back to the form.
5244 * @param {?} fn
5245 * @return {?}
5246 */
5247 registerOnChange(fn) {
5248 this.propagateChange = fn;
5249 }
5250 /**
5251 * Registers a callback to be triggered when the control has been touched.
5252 * @param {?} fn Callback to be triggered when the checkbox is touched.
5253 * @return {?}
5254 */
5255 registerOnTouched(fn) {
5256 this.onTouched = fn;
5257 }
5258 /**
5259 * @protected
5260 * @return {?}
5261 */
5262 updateChildren() {
5263 if (this.radios) {
5264 this.radios.forEach((/**
5265 * @param {?} child
5266 * @return {?}
5267 */
5268 child => child.skeleton = this.skeleton));
5269 }
5270 }
5271 /**
5272 * @protected
5273 * @return {?}
5274 */
5275 updateRadioChangeHandler() {
5276 this.radios.forEach((/**
5277 * @param {?} radio
5278 * @return {?}
5279 */
5280 radio => {
5281 radio.registerRadioChangeHandler((/**
5282 * @param {?} event
5283 * @return {?}
5284 */
5285 (event) => {
5286 // update selected and value from the event
5287 this._selected = event.source;
5288 this._value = event.value;
5289 // bubble the event
5290 this.emitChangeEvent(event);
5291 }));
5292 }));
5293 }
5294}
5295RadioGroup.radioGroupCount = 0;
5296RadioGroup.decorators = [
5297 { type: Component, args: [{
5298 selector: 'suka-radio-group',
5299 template: `
5300 <div
5301 class="radio-button-group"
5302 [ngClass]="{
5303 'radio-button-group--vertical': orientation === 'vertical',
5304 'radio-button-group--label-left': orientation === 'vertical' && radioLabelPlacement === 'left'
5305 }"
5306 role="radiogroup">
5307 <ng-content></ng-content>
5308 </div>
5309 `,
5310 providers: [
5311 {
5312 provide: NG_VALUE_ACCESSOR,
5313 useExisting: RadioGroup,
5314 multi: true
5315 }
5316 ]
5317 }] }
5318];
5319RadioGroup.propDecorators = {
5320 orientation: [{ type: Input }],
5321 radioLabelPlacement: [{ type: Input }],
5322 change: [{ type: Output }],
5323 radios: [{ type: ContentChildren, args: [forwardRef((/**
5324 * @return {?}
5325 */
5326 () => Radio)),] }],
5327 selected: [{ type: Input }],
5328 value: [{ type: Input }],
5329 name: [{ type: Input }],
5330 disabled: [{ type: Input }],
5331 skeleton: [{ type: Input }],
5332 radioButtonGroupClass: [{ type: HostBinding, args: ['class.form-item',] }]
5333};
5334if (false) {
5335 /** @type {?} */
5336 RadioGroup.radioGroupCount;
5337 /** @type {?} */
5338 RadioGroup.prototype.orientation;
5339 /** @type {?} */
5340 RadioGroup.prototype.radioLabelPlacement;
5341 /**
5342 * Emits event notifying other classes of a change using a `RadioChange` class.
5343 * @type {?}
5344 */
5345 RadioGroup.prototype.change;
5346 /**
5347 * The `Radio` input items in the `RadioGroup`.
5348 * @type {?}
5349 */
5350 RadioGroup.prototype.radios;
5351 /**
5352 * Set to true to disable the whole radio group
5353 * @type {?}
5354 */
5355 RadioGroup.prototype.disabled;
5356 /**
5357 * Binds 'form-item' value to the class for `RadioGroup`.
5358 * @type {?}
5359 */
5360 RadioGroup.prototype.radioButtonGroupClass;
5361 /**
5362 * To track whether the `RadioGroup` has been initialized.
5363 * @type {?}
5364 * @protected
5365 */
5366 RadioGroup.prototype.isInitialized;
5367 /**
5368 * Reflects whether or not the input is disabled and cannot be selected.
5369 * @type {?}
5370 * @protected
5371 */
5372 RadioGroup.prototype._disabled;
5373 /**
5374 * Reflects whether or not the dropdown is loading.
5375 * @type {?}
5376 * @protected
5377 */
5378 RadioGroup.prototype._skeleton;
5379 /**
5380 * The value of the selected option within the `RadioGroup`.
5381 * @type {?}
5382 * @protected
5383 */
5384 RadioGroup.prototype._value;
5385 /**
5386 * The `Radio` within the `RadioGroup` that is selected.
5387 * @type {?}
5388 * @protected
5389 */
5390 RadioGroup.prototype._selected;
5391 /**
5392 * The name attribute associated with the `RadioGroup`.
5393 * @type {?}
5394 * @protected
5395 */
5396 RadioGroup.prototype._name;
5397 /**
5398 * Needed to properly implement ControlValueAccessor.
5399 * @type {?}
5400 */
5401 RadioGroup.prototype.onTouched;
5402 /**
5403 * Method set in registerOnChange to propagate changes back to the form.
5404 * @type {?}
5405 */
5406 RadioGroup.prototype.propagateChange;
5407}
5408
5409/**
5410 * @fileoverview added by tsickle
5411 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5412 */
5413class RadioModule {
5414}
5415RadioModule.decorators = [
5416 { type: NgModule, args: [{
5417 declarations: [
5418 Radio,
5419 RadioGroup
5420 ],
5421 exports: [
5422 Radio,
5423 RadioGroup
5424 ],
5425 imports: [
5426 CommonModule,
5427 FormsModule
5428 ]
5429 },] }
5430];
5431
5432/**
5433 * @fileoverview added by tsickle
5434 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5435 */
5436/**
5437 * Used to emit changes performed on a `ButtonRadio`.
5438 */
5439class ButtonRadioChange {
5440 /**
5441 * @param {?} source
5442 * @param {?} value
5443 */
5444 constructor(source, value) {
5445 this.source = source;
5446 this.value = value;
5447 }
5448}
5449if (false) {
5450 /**
5451 * Contains the `ButtonRadio` that has been changed.
5452 * @type {?}
5453 */
5454 ButtonRadioChange.prototype.source;
5455 /**
5456 * The value of the `ButtonRadio` encompassed in the `ButtonRadioChange` class.
5457 * @type {?}
5458 */
5459 ButtonRadioChange.prototype.value;
5460}
5461
5462/**
5463 * @fileoverview added by tsickle
5464 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5465 */
5466// tslint:disable-next-line: component-class-suffix
5467class ButtonRadio {
5468 constructor() {
5469 /**
5470 * Sets the checked status
5471 */
5472 this.checked = false;
5473 /**
5474 * Sets the name of the `ButtonRadio`
5475 */
5476 this.name = '';
5477 /**
5478 * Set to `true` to disable it.
5479 */
5480 this.disabled = false;
5481 /**
5482 * Sets the HTML required attribute
5483 */
5484 this.required = false;
5485 /**
5486 * The value of the `ButtonRadio`.
5487 */
5488 this.value = '';
5489 /**
5490 * Set to `true` for a loading state.
5491 */
5492 this.skeleton = false;
5493 /**
5494 * The id for the `ButtonRadio`.
5495 */
5496 this.id = `button-radio-${ButtonRadio.buttonRadioCount++}`;
5497 /**
5498 * emits when the state of the button radio changes
5499 */
5500 // tslint:disable-next-line: no-output-native
5501 this.change = new EventEmitter();
5502 /**
5503 * Binds 'radio' value to the role attribute for `ButtonRadio`.
5504 */
5505 this.role = 'radio';
5506 this.hostClass = true;
5507 // tslint:disable-next-line: variable-name
5508 this._labelledby = '';
5509 /**
5510 * Handler provided by the `ButtonRadioGroup` to bubble events up
5511 */
5512 this.buttonRadioChangeHandler = (/**
5513 * @param {?} event
5514 * @return {?}
5515 */
5516 (event) => { });
5517 }
5518 /**
5519 * @param {?} value
5520 * @return {?}
5521 */
5522 set ariaLabelledby(value) {
5523 this._labelledby = value;
5524 }
5525 /**
5526 * @return {?}
5527 */
5528 get ariaLabelledby() {
5529 if (this._labelledby) {
5530 return this._labelledby;
5531 }
5532 return `label-${this.id}`;
5533 }
5534 /**
5535 * Synchronizes with the `ButtonRadioGroup` in the event of a changed `ButtonRadio`.
5536 * Emits the changes of both the `ButtonRadioGroup` and `ButtonRadio`.
5537 * @param {?} event
5538 * @return {?}
5539 */
5540 onChange(event) {
5541 event.stopPropagation();
5542 this.checked = ((/** @type {?} */ (event.target))).checked;
5543 /** @type {?} */
5544 const ButtonRadioEvent = new ButtonRadioChange(this, this.value);
5545 this.change.emit(ButtonRadioEvent);
5546 this.buttonRadioChangeHandler(ButtonRadioEvent);
5547 }
5548 /**
5549 * Method called by `ButtonRadioGroup` with a callback function to bubble `ButtonRadioChange` events
5550 * @param {?} fn callback that expects a `ButtonRadioChange` as an argument
5551 * @return {?}
5552 */
5553 registerButtonRadioChangeHandler(fn) {
5554 this.buttonRadioChangeHandler = fn;
5555 }
5556}
5557/**
5558 * Used to dynamically create unique ids for the `ButtonRadio`.
5559 */
5560ButtonRadio.buttonRadioCount = 0;
5561ButtonRadio.decorators = [
5562 { type: Component, args: [{
5563 selector: 'suka-button-radio',
5564 template: `
5565 <input
5566 *ngIf="!skeleton"
5567 class="button-radio"
5568 type="radio"
5569 [checked]="checked"
5570 [disabled]="disabled"
5571 [name]="name"
5572 [id]="id"
5573 [required]="required"
5574 [value]="value"
5575 [attr.aria-labelledby]="ariaLabelledby"
5576 (change)="onChange($event)">
5577 <div *ngIf="skeleton" class="button-radio skeleton"></div>
5578 <label
5579 class="button-radio__label"
5580 [ngClass]="{
5581 'skeleton': skeleton
5582 }"
5583 [for]="id"
5584 id="label-{{id}}">
5585 <ng-content></ng-content>
5586 </label>
5587 `,
5588 providers: [
5589 {
5590 provide: NG_VALUE_ACCESSOR,
5591 useExisting: ButtonRadio,
5592 multi: true
5593 }
5594 ]
5595 }] }
5596];
5597ButtonRadio.propDecorators = {
5598 checked: [{ type: Input }],
5599 name: [{ type: Input }],
5600 disabled: [{ type: Input }],
5601 ariaLabelledby: [{ type: Input }],
5602 required: [{ type: Input }],
5603 value: [{ type: Input }],
5604 skeleton: [{ type: Input }],
5605 id: [{ type: Input }],
5606 change: [{ type: Output }],
5607 role: [{ type: HostBinding, args: ['attr.role',] }],
5608 hostClass: [{ type: HostBinding, args: ['class.button-radio-wrapper',] }]
5609};
5610if (false) {
5611 /**
5612 * Used to dynamically create unique ids for the `ButtonRadio`.
5613 * @type {?}
5614 */
5615 ButtonRadio.buttonRadioCount;
5616 /**
5617 * Sets the checked status
5618 * @type {?}
5619 */
5620 ButtonRadio.prototype.checked;
5621 /**
5622 * Sets the name of the `ButtonRadio`
5623 * @type {?}
5624 */
5625 ButtonRadio.prototype.name;
5626 /**
5627 * Set to `true` to disable it.
5628 * @type {?}
5629 */
5630 ButtonRadio.prototype.disabled;
5631 /**
5632 * Sets the HTML required attribute
5633 * @type {?}
5634 */
5635 ButtonRadio.prototype.required;
5636 /**
5637 * The value of the `ButtonRadio`.
5638 * @type {?}
5639 */
5640 ButtonRadio.prototype.value;
5641 /**
5642 * Set to `true` for a loading state.
5643 * @type {?}
5644 */
5645 ButtonRadio.prototype.skeleton;
5646 /**
5647 * The id for the `ButtonRadio`.
5648 * @type {?}
5649 */
5650 ButtonRadio.prototype.id;
5651 /**
5652 * emits when the state of the button radio changes
5653 * @type {?}
5654 */
5655 ButtonRadio.prototype.change;
5656 /**
5657 * Binds 'radio' value to the role attribute for `ButtonRadio`.
5658 * @type {?}
5659 */
5660 ButtonRadio.prototype.role;
5661 /** @type {?} */
5662 ButtonRadio.prototype.hostClass;
5663 /**
5664 * @type {?}
5665 * @protected
5666 */
5667 ButtonRadio.prototype._labelledby;
5668 /**
5669 * Handler provided by the `ButtonRadioGroup` to bubble events up
5670 * @type {?}
5671 */
5672 ButtonRadio.prototype.buttonRadioChangeHandler;
5673}
5674
5675/**
5676 * @fileoverview added by tsickle
5677 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5678 */
5679// tslint:disable-next-line: component-class-suffix
5680class ButtonRadioGroup {
5681 constructor() {
5682 /**
5683 * Emits event notifying other classes of a change using a `ButtonRadioChange` class.
5684 */
5685 // tslint:disable-next-line: no-output-native
5686 this.change = new EventEmitter();
5687 /**
5688 * Set to true to disable the whole buttonRadio group
5689 */
5690 this.disabled = false;
5691 /**
5692 * Binds 'form-item' value to the class for `ButtonRadioGroup`.
5693 */
5694 this.buttonRadioButtonGroupClass = true;
5695 /**
5696 * To track whether the `ButtonRadioGroup` has been initialized.
5697 */
5698 this.isInitialized = false;
5699 /**
5700 * Reflects whether or not the input is disabled and cannot be selected.
5701 */
5702 this._disabled = false;
5703 /**
5704 * Reflects whether or not the dropdown is loading.
5705 */
5706 this._skeleton = false;
5707 /**
5708 * The value of the selected option within the `ButtonRadioGroup`.
5709 */
5710 this._value = null;
5711 /**
5712 * The `ButtonRadio` within the `ButtonRadioGroup` that is selected.
5713 */
5714 this._selected = null;
5715 /**
5716 * The name attribute associated with the `ButtonRadioGroup`.
5717 */
5718 this._name = `button-radio-group-${ButtonRadioGroup.buttonRadioGroupCount++}`;
5719 /**
5720 * Needed to properly implement ControlValueAccessor.
5721 */
5722 this.onTouched = (/**
5723 * @return {?}
5724 */
5725 () => { });
5726 /**
5727 * Method set in registerOnChange to propagate changes back to the form.
5728 */
5729 this.propagateChange = (/**
5730 * @param {?} _
5731 * @return {?}
5732 */
5733 (_) => { });
5734 }
5735 /**
5736 * Sets the passed in `ButtonRadio` item as the selected input within the `ButtonRadioGroup`.
5737 * @param {?} selected
5738 * @return {?}
5739 */
5740 set selected(selected) {
5741 this._selected = selected;
5742 this.value = selected ? selected.value : null;
5743 this.checkSelectedButtonRadio();
5744 }
5745 /**
5746 * Returns the `ButtonRadio` that is selected within the `ButtonRadioGroup`.
5747 * @return {?}
5748 */
5749 get selected() {
5750 return this._selected;
5751 }
5752 /**
5753 * Sets the value/state of the selected `ButtonRadio` within the `ButtonRadioGroup` to the passed in value.
5754 * @param {?} newValue
5755 * @return {?}
5756 */
5757 set value(newValue) {
5758 if (this._value !== newValue) {
5759 this._value = newValue;
5760 this.updateSelectedButtonRadioFromValue();
5761 this.checkSelectedButtonRadio();
5762 }
5763 }
5764 /**
5765 * Returns the value/state of the selected `ButtonRadio` within the `ButtonRadioGroup`.
5766 * @return {?}
5767 */
5768 get value() {
5769 return this._value;
5770 }
5771 /**
5772 * Replaces the name associated with the `ButtonRadioGroup` with the provided parameter.
5773 * @param {?} name
5774 * @return {?}
5775 */
5776 set name(name) {
5777 this._name = name;
5778 this.updateButtonRadios();
5779 }
5780 /**
5781 * Returns the associated name of the `ButtonRadioGroup`.
5782 * @return {?}
5783 */
5784 get name() {
5785 return this._name;
5786 }
5787 /**
5788 * Returns the skeleton value in the `ButtonRadioGroup` if there is one.
5789 * @return {?}
5790 */
5791 get skeleton() {
5792 return this._skeleton;
5793 }
5794 /**
5795 * Sets the skeleton value for all `ButtonRadio` to the skeleton value of `ButtonRadioGroup`.
5796 * @param {?} value
5797 * @return {?}
5798 */
5799 set skeleton(value) {
5800 this._skeleton = value;
5801 this.updateChildren();
5802 }
5803 /**
5804 * Updates the selected `ButtonRadio` to be checked (selected).
5805 * @return {?}
5806 */
5807 checkSelectedButtonRadio() {
5808 if (this.selected && !this._selected.checked) {
5809 this.selected.checked = true;
5810 }
5811 }
5812 /**
5813 * Use the value of the `ButtonRadioGroup` to update the selected buttonRadio to the right state (selected state).
5814 * @return {?}
5815 */
5816 updateSelectedButtonRadioFromValue() {
5817 /** @type {?} */
5818 const alreadySelected = this._selected != null && this._selected.value === this._value;
5819 if (this.buttonRadios && !alreadySelected) {
5820 this._selected = null;
5821 this.buttonRadios.forEach((/**
5822 * @param {?} buttonRadio
5823 * @return {?}
5824 */
5825 buttonRadio => {
5826 if (buttonRadio.checked) {
5827 this._selected = buttonRadio;
5828 }
5829 }));
5830 }
5831 }
5832 /**
5833 * Creates a class of `ButtonRadioChange` to emit the change in the `ButtonRadioGroup`.
5834 * @param {?} event
5835 * @return {?}
5836 */
5837 emitChangeEvent(event) {
5838 this.change.emit(event);
5839 this.propagateChange(event.value);
5840 this.onTouched();
5841 }
5842 /**
5843 * Synchronizes buttonRadio properties.
5844 * @return {?}
5845 */
5846 updateButtonRadios() {
5847 if (this.buttonRadios) {
5848 setTimeout((/**
5849 * @return {?}
5850 */
5851 () => {
5852 this.buttonRadios.forEach((/**
5853 * @param {?} buttonRadio
5854 * @return {?}
5855 */
5856 buttonRadio => buttonRadio.name = this.name));
5857 }));
5858 }
5859 }
5860 /**
5861 * Updates the value of the `ButtonRadioGroup` using the provided parameter.
5862 * @param {?} value
5863 * @return {?}
5864 */
5865 writeValue(value) {
5866 this.value = value;
5867 }
5868 /**
5869 * @return {?}
5870 */
5871 ngAfterContentInit() {
5872 this.buttonRadios.changes.subscribe((/**
5873 * @return {?}
5874 */
5875 () => {
5876 this.updateButtonRadios();
5877 this.updateButtonRadioChangeHandler();
5878 }));
5879 this.updateChildren();
5880 this.updateButtonRadioChangeHandler();
5881 }
5882 /**
5883 * @return {?}
5884 */
5885 ngAfterViewInit() {
5886 this.updateButtonRadios();
5887 }
5888 /**
5889 * Used to set method to propagate changes back to the form.
5890 * @param {?} fn
5891 * @return {?}
5892 */
5893 registerOnChange(fn) {
5894 this.propagateChange = fn;
5895 }
5896 /**
5897 * Registers a callback to be triggered when the control has been touched.
5898 * @param {?} fn Callback to be triggered when the checkbox is touched.
5899 * @return {?}
5900 */
5901 registerOnTouched(fn) {
5902 this.onTouched = fn;
5903 }
5904 /**
5905 * @protected
5906 * @return {?}
5907 */
5908 updateChildren() {
5909 if (this.buttonRadios) {
5910 this.buttonRadios.forEach((/**
5911 * @param {?} child
5912 * @return {?}
5913 */
5914 child => child.skeleton = this.skeleton));
5915 }
5916 }
5917 /**
5918 * @protected
5919 * @return {?}
5920 */
5921 updateButtonRadioChangeHandler() {
5922 this.buttonRadios.forEach((/**
5923 * @param {?} buttonRadio
5924 * @return {?}
5925 */
5926 buttonRadio => {
5927 buttonRadio.registerButtonRadioChangeHandler((/**
5928 * @param {?} event
5929 * @return {?}
5930 */
5931 (event) => {
5932 // update selected and value from the event
5933 this._selected = event.source;
5934 this._value = event.value;
5935 // bubble the event
5936 this.emitChangeEvent(event);
5937 }));
5938 }));
5939 }
5940}
5941ButtonRadioGroup.buttonRadioGroupCount = 0;
5942ButtonRadioGroup.decorators = [
5943 { type: Component, args: [{
5944 selector: 'suka-button-radio-group',
5945 template: `
5946 <div
5947 class="button-radio-group"
5948 role="buttonRadiogroup">
5949 <ng-content></ng-content>
5950 </div>
5951 `,
5952 providers: [
5953 {
5954 provide: NG_VALUE_ACCESSOR,
5955 useExisting: ButtonRadioGroup,
5956 multi: true
5957 }
5958 ]
5959 }] }
5960];
5961ButtonRadioGroup.propDecorators = {
5962 change: [{ type: Output }],
5963 buttonRadios: [{ type: ContentChildren, args: [forwardRef((/**
5964 * @return {?}
5965 */
5966 () => ButtonRadio)),] }],
5967 selected: [{ type: Input }],
5968 value: [{ type: Input }],
5969 name: [{ type: Input }],
5970 disabled: [{ type: Input }],
5971 skeleton: [{ type: Input }],
5972 buttonRadioButtonGroupClass: [{ type: HostBinding, args: ['class.form-item',] }]
5973};
5974if (false) {
5975 /** @type {?} */
5976 ButtonRadioGroup.buttonRadioGroupCount;
5977 /**
5978 * Emits event notifying other classes of a change using a `ButtonRadioChange` class.
5979 * @type {?}
5980 */
5981 ButtonRadioGroup.prototype.change;
5982 /**
5983 * The `ButtonRadio` input items in the `ButtonRadioGroup`.
5984 * @type {?}
5985 */
5986 ButtonRadioGroup.prototype.buttonRadios;
5987 /**
5988 * Set to true to disable the whole buttonRadio group
5989 * @type {?}
5990 */
5991 ButtonRadioGroup.prototype.disabled;
5992 /**
5993 * Binds 'form-item' value to the class for `ButtonRadioGroup`.
5994 * @type {?}
5995 */
5996 ButtonRadioGroup.prototype.buttonRadioButtonGroupClass;
5997 /**
5998 * To track whether the `ButtonRadioGroup` has been initialized.
5999 * @type {?}
6000 * @protected
6001 */
6002 ButtonRadioGroup.prototype.isInitialized;
6003 /**
6004 * Reflects whether or not the input is disabled and cannot be selected.
6005 * @type {?}
6006 * @protected
6007 */
6008 ButtonRadioGroup.prototype._disabled;
6009 /**
6010 * Reflects whether or not the dropdown is loading.
6011 * @type {?}
6012 * @protected
6013 */
6014 ButtonRadioGroup.prototype._skeleton;
6015 /**
6016 * The value of the selected option within the `ButtonRadioGroup`.
6017 * @type {?}
6018 * @protected
6019 */
6020 ButtonRadioGroup.prototype._value;
6021 /**
6022 * The `ButtonRadio` within the `ButtonRadioGroup` that is selected.
6023 * @type {?}
6024 * @protected
6025 */
6026 ButtonRadioGroup.prototype._selected;
6027 /**
6028 * The name attribute associated with the `ButtonRadioGroup`.
6029 * @type {?}
6030 * @protected
6031 */
6032 ButtonRadioGroup.prototype._name;
6033 /**
6034 * Needed to properly implement ControlValueAccessor.
6035 * @type {?}
6036 */
6037 ButtonRadioGroup.prototype.onTouched;
6038 /**
6039 * Method set in registerOnChange to propagate changes back to the form.
6040 * @type {?}
6041 */
6042 ButtonRadioGroup.prototype.propagateChange;
6043}
6044
6045/**
6046 * @fileoverview added by tsickle
6047 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6048 */
6049class ButtonRadioModule {
6050}
6051ButtonRadioModule.decorators = [
6052 { type: NgModule, args: [{
6053 declarations: [
6054 ButtonRadio,
6055 ButtonRadioGroup
6056 ],
6057 exports: [
6058 ButtonRadio,
6059 ButtonRadioGroup
6060 ],
6061 imports: [
6062 CommonModule,
6063 FormsModule
6064 ]
6065 },] }
6066];
6067
6068/**
6069 * @fileoverview added by tsickle
6070 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6071 */
6072class Container {
6073 constructor() {
6074 /**
6075 * Sets the container type. Set to `fluid` for a full width container.
6076 */
6077 this.sukaContainer = 'default';
6078 this.default = true;
6079 this.fluid = false;
6080 }
6081 /**
6082 * @return {?}
6083 */
6084 ngOnInit() {
6085 if (this.sukaContainer === 'fluid') {
6086 this.fluid = true;
6087 this.default = false;
6088 }
6089 }
6090}
6091Container.decorators = [
6092 { type: Directive, args: [{
6093 selector: '[sukaContainer]'
6094 },] }
6095];
6096Container.propDecorators = {
6097 sukaContainer: [{ type: Input }],
6098 default: [{ type: HostBinding, args: ['class.container',] }],
6099 fluid: [{ type: HostBinding, args: ['class.container--fluid',] }]
6100};
6101if (false) {
6102 /**
6103 * Sets the container type. Set to `fluid` for a full width container.
6104 * @type {?}
6105 */
6106 Container.prototype.sukaContainer;
6107 /** @type {?} */
6108 Container.prototype.default;
6109 /** @type {?} */
6110 Container.prototype.fluid;
6111}
6112
6113/**
6114 * @fileoverview added by tsickle
6115 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6116 */
6117class ContainerModule {
6118}
6119ContainerModule.decorators = [
6120 { type: NgModule, args: [{
6121 declarations: [
6122 Container,
6123 ],
6124 exports: [
6125 Container,
6126 ],
6127 imports: [
6128 CommonModule,
6129 ]
6130 },] }
6131];
6132
6133/**
6134 * @fileoverview added by tsickle
6135 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6136 */
6137class MarginDirective {
6138 /**
6139 * @param {?} elementRef
6140 */
6141 constructor(elementRef) {
6142 this.m = {};
6143 this.elementRef = elementRef;
6144 }
6145 /**
6146 * @return {?}
6147 */
6148 ngOnInit() {
6149 try {
6150 /** @type {?} */
6151 const marginKeys = Object.keys(this.m);
6152 marginKeys.forEach((/**
6153 * @param {?} key
6154 * @return {?}
6155 */
6156 key => {
6157 if (key === 'all') {
6158 this.elementRef.nativeElement.classList.add(`m-${this.m[key]}`);
6159 }
6160 else {
6161 this.elementRef.nativeElement.classList.add(`m-${key}-${this.m[key]}`);
6162 }
6163 }));
6164 }
6165 catch (err) {
6166 console.error(`Malformed margins\`: ${err}`);
6167 }
6168 }
6169}
6170MarginDirective.decorators = [
6171 { type: Directive, args: [{
6172 // tslint:disable-next-line: directive-selector
6173 selector: '[m]'
6174 },] }
6175];
6176/** @nocollapse */
6177MarginDirective.ctorParameters = () => [
6178 { type: ElementRef }
6179];
6180MarginDirective.propDecorators = {
6181 m: [{ type: Input }]
6182};
6183if (false) {
6184 /** @type {?} */
6185 MarginDirective.prototype.m;
6186 /**
6187 * @type {?}
6188 * @private
6189 */
6190 MarginDirective.prototype.elementRef;
6191}
6192class MarginTopDirective {
6193 /**
6194 * @param {?} elementRef
6195 */
6196 constructor(elementRef) {
6197 this.mt = {};
6198 this.elementRef = elementRef;
6199 }
6200 /**
6201 * @return {?}
6202 */
6203 ngOnInit() {
6204 try {
6205 /** @type {?} */
6206 const marginKeys = Object.keys(this.mt);
6207 marginKeys.forEach((/**
6208 * @param {?} key
6209 * @return {?}
6210 */
6211 key => {
6212 if (key === 'all') {
6213 this.elementRef.nativeElement.classList.add(`mt-${this.mt[key]}`);
6214 }
6215 else {
6216 this.elementRef.nativeElement.classList.add(`mt-${key}-${this.mt[key]}`);
6217 }
6218 }));
6219 }
6220 catch (err) {
6221 console.error(`Malformed margins\`: ${err}`);
6222 }
6223 }
6224}
6225MarginTopDirective.decorators = [
6226 { type: Directive, args: [{
6227 selector: '[mt]'
6228 },] }
6229];
6230/** @nocollapse */
6231MarginTopDirective.ctorParameters = () => [
6232 { type: ElementRef }
6233];
6234MarginTopDirective.propDecorators = {
6235 mt: [{ type: Input }]
6236};
6237if (false) {
6238 /** @type {?} */
6239 MarginTopDirective.prototype.mt;
6240 /**
6241 * @type {?}
6242 * @private
6243 */
6244 MarginTopDirective.prototype.elementRef;
6245}
6246class MarginBottomDirective {
6247 /**
6248 * @param {?} elementRef
6249 */
6250 constructor(elementRef) {
6251 this.mb = {};
6252 this.elementRef = elementRef;
6253 }
6254 /**
6255 * @return {?}
6256 */
6257 ngOnInit() {
6258 try {
6259 /** @type {?} */
6260 const marginKeys = Object.keys(this.mb);
6261 marginKeys.forEach((/**
6262 * @param {?} key
6263 * @return {?}
6264 */
6265 key => {
6266 if (key === 'all') {
6267 this.elementRef.nativeElement.classList.add(`mb-${this.mb[key]}`);
6268 }
6269 else {
6270 this.elementRef.nativeElement.classList.add(`mb-${key}-${this.mb[key]}`);
6271 }
6272 }));
6273 }
6274 catch (err) {
6275 console.error(`Malformed margins\`: ${err}`);
6276 }
6277 }
6278}
6279MarginBottomDirective.decorators = [
6280 { type: Directive, args: [{
6281 // tslint:disable-next-line: directive-selector
6282 selector: '[mb]'
6283 },] }
6284];
6285/** @nocollapse */
6286MarginBottomDirective.ctorParameters = () => [
6287 { type: ElementRef }
6288];
6289MarginBottomDirective.propDecorators = {
6290 mb: [{ type: Input }]
6291};
6292if (false) {
6293 /** @type {?} */
6294 MarginBottomDirective.prototype.mb;
6295 /**
6296 * @type {?}
6297 * @private
6298 */
6299 MarginBottomDirective.prototype.elementRef;
6300}
6301class MarginLeftDirective {
6302 /**
6303 * @param {?} elementRef
6304 */
6305 constructor(elementRef) {
6306 this.ml = {};
6307 this.elementRef = elementRef;
6308 }
6309 /**
6310 * @return {?}
6311 */
6312 ngOnInit() {
6313 try {
6314 /** @type {?} */
6315 const marginKeys = Object.keys(this.ml);
6316 marginKeys.forEach((/**
6317 * @param {?} key
6318 * @return {?}
6319 */
6320 key => {
6321 if (key === 'all') {
6322 this.elementRef.nativeElement.classList.add(`ml-${this.ml[key]}`);
6323 }
6324 else {
6325 this.elementRef.nativeElement.classList.add(`ml-${key}-${this.ml[key]}`);
6326 }
6327 }));
6328 }
6329 catch (err) {
6330 console.error(`Malformed margins\`: ${err}`);
6331 }
6332 }
6333}
6334MarginLeftDirective.decorators = [
6335 { type: Directive, args: [{
6336 // tslint:disable-next-line: directive-selector
6337 selector: '[ml]'
6338 },] }
6339];
6340/** @nocollapse */
6341MarginLeftDirective.ctorParameters = () => [
6342 { type: ElementRef }
6343];
6344MarginLeftDirective.propDecorators = {
6345 ml: [{ type: Input }]
6346};
6347if (false) {
6348 /** @type {?} */
6349 MarginLeftDirective.prototype.ml;
6350 /**
6351 * @type {?}
6352 * @private
6353 */
6354 MarginLeftDirective.prototype.elementRef;
6355}
6356class MarginRightDirective {
6357 /**
6358 * @param {?} elementRef
6359 */
6360 constructor(elementRef) {
6361 this.mr = {};
6362 this.elementRef = elementRef;
6363 }
6364 /**
6365 * @return {?}
6366 */
6367 ngOnInit() {
6368 try {
6369 /** @type {?} */
6370 const marginKeys = Object.keys(this.mr);
6371 marginKeys.forEach((/**
6372 * @param {?} key
6373 * @return {?}
6374 */
6375 key => {
6376 if (key === 'all') {
6377 this.elementRef.nativeElement.classList.add(`mr-${this.mr[key]}`);
6378 }
6379 else {
6380 this.elementRef.nativeElement.classList.add(`mr-${key}-${this.mr[key]}`);
6381 }
6382 }));
6383 }
6384 catch (err) {
6385 console.error(`Malformed margins\`: ${err}`);
6386 }
6387 }
6388}
6389MarginRightDirective.decorators = [
6390 { type: Directive, args: [{
6391 // tslint:disable-next-line: directive-selector
6392 selector: '[mr]'
6393 },] }
6394];
6395/** @nocollapse */
6396MarginRightDirective.ctorParameters = () => [
6397 { type: ElementRef }
6398];
6399MarginRightDirective.propDecorators = {
6400 mr: [{ type: Input }]
6401};
6402if (false) {
6403 /** @type {?} */
6404 MarginRightDirective.prototype.mr;
6405 /**
6406 * @type {?}
6407 * @private
6408 */
6409 MarginRightDirective.prototype.elementRef;
6410}
6411class MarginHorizontalDirective {
6412 /**
6413 * @param {?} elementRef
6414 */
6415 constructor(elementRef) {
6416 this.mx = {};
6417 this.elementRef = elementRef;
6418 }
6419 /**
6420 * @return {?}
6421 */
6422 ngOnInit() {
6423 try {
6424 /** @type {?} */
6425 const marginKeys = Object.keys(this.mx);
6426 marginKeys.forEach((/**
6427 * @param {?} key
6428 * @return {?}
6429 */
6430 key => {
6431 if (key === 'all') {
6432 this.elementRef.nativeElement.classList.add(`mx-${this.mx[key]}`);
6433 }
6434 else {
6435 this.elementRef.nativeElement.classList.add(`mx-${key}-${this.mx[key]}`);
6436 }
6437 }));
6438 }
6439 catch (err) {
6440 console.error(`Malformed margins\`: ${err}`);
6441 }
6442 }
6443}
6444MarginHorizontalDirective.decorators = [
6445 { type: Directive, args: [{
6446 // tslint:disable-next-line: directive-selector
6447 selector: '[mx]'
6448 },] }
6449];
6450/** @nocollapse */
6451MarginHorizontalDirective.ctorParameters = () => [
6452 { type: ElementRef }
6453];
6454MarginHorizontalDirective.propDecorators = {
6455 mx: [{ type: Input }]
6456};
6457if (false) {
6458 /** @type {?} */
6459 MarginHorizontalDirective.prototype.mx;
6460 /**
6461 * @type {?}
6462 * @private
6463 */
6464 MarginHorizontalDirective.prototype.elementRef;
6465}
6466class MarginVerticalDirective {
6467 /**
6468 * @param {?} elementRef
6469 */
6470 constructor(elementRef) {
6471 this.my = {};
6472 this.elementRef = elementRef;
6473 }
6474 /**
6475 * @return {?}
6476 */
6477 ngOnInit() {
6478 try {
6479 /** @type {?} */
6480 const marginKeys = Object.keys(this.my);
6481 marginKeys.forEach((/**
6482 * @param {?} key
6483 * @return {?}
6484 */
6485 key => {
6486 if (key === 'all') {
6487 this.elementRef.nativeElement.classList.add(`my-${this.my[key]}`);
6488 }
6489 else {
6490 this.elementRef.nativeElement.classList.add(`my-${key}-${this.my[key]}`);
6491 }
6492 }));
6493 }
6494 catch (err) {
6495 console.error(`Malformed margins\`: ${err}`);
6496 }
6497 }
6498}
6499MarginVerticalDirective.decorators = [
6500 { type: Directive, args: [{
6501 // tslint:disable-next-line: directive-selector
6502 selector: '[my]'
6503 },] }
6504];
6505/** @nocollapse */
6506MarginVerticalDirective.ctorParameters = () => [
6507 { type: ElementRef }
6508];
6509MarginVerticalDirective.propDecorators = {
6510 my: [{ type: Input }]
6511};
6512if (false) {
6513 /** @type {?} */
6514 MarginVerticalDirective.prototype.my;
6515 /**
6516 * @type {?}
6517 * @private
6518 */
6519 MarginVerticalDirective.prototype.elementRef;
6520}
6521
6522/**
6523 * @fileoverview added by tsickle
6524 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6525 */
6526class PaddingDirective {
6527 /**
6528 * @param {?} elementRef
6529 */
6530 constructor(elementRef) {
6531 this.p = {};
6532 this.elementRef = elementRef;
6533 }
6534 /**
6535 * @return {?}
6536 */
6537 ngOnInit() {
6538 try {
6539 /** @type {?} */
6540 const paddingKeys = Object.keys(this.p);
6541 paddingKeys.forEach((/**
6542 * @param {?} key
6543 * @return {?}
6544 */
6545 key => {
6546 if (key === 'all') {
6547 this.elementRef.nativeElement.classList.add(`p-${this.p[key]}`);
6548 }
6549 else {
6550 this.elementRef.nativeElement.classList.add(`p-${key}-${this.p[key]}`);
6551 }
6552 }));
6553 }
6554 catch (err) {
6555 console.error(`Malformed paddings\`: ${err}`);
6556 }
6557 }
6558}
6559PaddingDirective.decorators = [
6560 { type: Directive, args: [{
6561 // tslint:disable-next-line: directive-selector
6562 selector: '[p]'
6563 },] }
6564];
6565/** @nocollapse */
6566PaddingDirective.ctorParameters = () => [
6567 { type: ElementRef }
6568];
6569PaddingDirective.propDecorators = {
6570 p: [{ type: Input }]
6571};
6572if (false) {
6573 /** @type {?} */
6574 PaddingDirective.prototype.p;
6575 /**
6576 * @type {?}
6577 * @private
6578 */
6579 PaddingDirective.prototype.elementRef;
6580}
6581class PaddingTopDirective {
6582 /**
6583 * @param {?} elementRef
6584 */
6585 constructor(elementRef) {
6586 this.pt = {};
6587 this.elementRef = elementRef;
6588 }
6589 /**
6590 * @return {?}
6591 */
6592 ngOnInit() {
6593 try {
6594 /** @type {?} */
6595 const paddingKeys = Object.keys(this.pt);
6596 paddingKeys.forEach((/**
6597 * @param {?} key
6598 * @return {?}
6599 */
6600 key => {
6601 if (key === 'all') {
6602 this.elementRef.nativeElement.classList.add(`pt-${this.pt[key]}`);
6603 }
6604 else {
6605 this.elementRef.nativeElement.classList.add(`pt-${key}-${this.pt[key]}`);
6606 }
6607 }));
6608 }
6609 catch (err) {
6610 console.error(`Malformed paddings\`: ${err}`);
6611 }
6612 }
6613}
6614PaddingTopDirective.decorators = [
6615 { type: Directive, args: [{
6616 // tslint:disable-next-line: directive-selector
6617 selector: '[pt]'
6618 },] }
6619];
6620/** @nocollapse */
6621PaddingTopDirective.ctorParameters = () => [
6622 { type: ElementRef }
6623];
6624PaddingTopDirective.propDecorators = {
6625 pt: [{ type: Input }]
6626};
6627if (false) {
6628 /** @type {?} */
6629 PaddingTopDirective.prototype.pt;
6630 /**
6631 * @type {?}
6632 * @private
6633 */
6634 PaddingTopDirective.prototype.elementRef;
6635}
6636class PaddingBottomDirective {
6637 /**
6638 * @param {?} elementRef
6639 */
6640 constructor(elementRef) {
6641 this.pb = {};
6642 this.elementRef = elementRef;
6643 }
6644 /**
6645 * @return {?}
6646 */
6647 ngOnInit() {
6648 try {
6649 /** @type {?} */
6650 const paddingKeys = Object.keys(this.pb);
6651 paddingKeys.forEach((/**
6652 * @param {?} key
6653 * @return {?}
6654 */
6655 key => {
6656 if (key === 'all') {
6657 this.elementRef.nativeElement.classList.add(`pb-${this.pb[key]}`);
6658 }
6659 else {
6660 this.elementRef.nativeElement.classList.add(`pb-${key}-${this.pb[key]}`);
6661 }
6662 }));
6663 }
6664 catch (err) {
6665 console.error(`Malformed paddings\`: ${err}`);
6666 }
6667 }
6668}
6669PaddingBottomDirective.decorators = [
6670 { type: Directive, args: [{
6671 // tslint:disable-next-line: directive-selector
6672 selector: '[pb]'
6673 },] }
6674];
6675/** @nocollapse */
6676PaddingBottomDirective.ctorParameters = () => [
6677 { type: ElementRef }
6678];
6679PaddingBottomDirective.propDecorators = {
6680 pb: [{ type: Input }]
6681};
6682if (false) {
6683 /** @type {?} */
6684 PaddingBottomDirective.prototype.pb;
6685 /**
6686 * @type {?}
6687 * @private
6688 */
6689 PaddingBottomDirective.prototype.elementRef;
6690}
6691class PaddingLeftDirective {
6692 /**
6693 * @param {?} elementRef
6694 */
6695 constructor(elementRef) {
6696 this.pl = {};
6697 this.elementRef = elementRef;
6698 }
6699 /**
6700 * @return {?}
6701 */
6702 ngOnInit() {
6703 try {
6704 /** @type {?} */
6705 const paddingKeys = Object.keys(this.pl);
6706 paddingKeys.forEach((/**
6707 * @param {?} key
6708 * @return {?}
6709 */
6710 key => {
6711 if (key === 'all') {
6712 this.elementRef.nativeElement.classList.add(`pl-${this.pl[key]}`);
6713 }
6714 else {
6715 this.elementRef.nativeElement.classList.add(`pl-${key}-${this.pl[key]}`);
6716 }
6717 }));
6718 }
6719 catch (err) {
6720 console.error(`Malformed paddings\`: ${err}`);
6721 }
6722 }
6723}
6724PaddingLeftDirective.decorators = [
6725 { type: Directive, args: [{
6726 // tslint:disable-next-line: directive-selector
6727 selector: '[pl]'
6728 },] }
6729];
6730/** @nocollapse */
6731PaddingLeftDirective.ctorParameters = () => [
6732 { type: ElementRef }
6733];
6734PaddingLeftDirective.propDecorators = {
6735 pl: [{ type: Input }]
6736};
6737if (false) {
6738 /** @type {?} */
6739 PaddingLeftDirective.prototype.pl;
6740 /**
6741 * @type {?}
6742 * @private
6743 */
6744 PaddingLeftDirective.prototype.elementRef;
6745}
6746class PaddingRightDirective {
6747 /**
6748 * @param {?} elementRef
6749 */
6750 constructor(elementRef) {
6751 this.pr = {};
6752 this.elementRef = elementRef;
6753 }
6754 /**
6755 * @return {?}
6756 */
6757 ngOnInit() {
6758 try {
6759 /** @type {?} */
6760 const paddingKeys = Object.keys(this.pr);
6761 paddingKeys.forEach((/**
6762 * @param {?} key
6763 * @return {?}
6764 */
6765 key => {
6766 if (key === 'all') {
6767 this.elementRef.nativeElement.classList.add(`pr-${this.pr[key]}`);
6768 }
6769 else {
6770 this.elementRef.nativeElement.classList.add(`pr-${key}-${this.pr[key]}`);
6771 }
6772 }));
6773 }
6774 catch (err) {
6775 console.error(`Malformed paddings\`: ${err}`);
6776 }
6777 }
6778}
6779PaddingRightDirective.decorators = [
6780 { type: Directive, args: [{
6781 // tslint:disable-next-line: directive-selector
6782 selector: '[pr]'
6783 },] }
6784];
6785/** @nocollapse */
6786PaddingRightDirective.ctorParameters = () => [
6787 { type: ElementRef }
6788];
6789PaddingRightDirective.propDecorators = {
6790 pr: [{ type: Input }]
6791};
6792if (false) {
6793 /** @type {?} */
6794 PaddingRightDirective.prototype.pr;
6795 /**
6796 * @type {?}
6797 * @private
6798 */
6799 PaddingRightDirective.prototype.elementRef;
6800}
6801class PaddingHorizontalDirective {
6802 /**
6803 * @param {?} elementRef
6804 */
6805 constructor(elementRef) {
6806 this.px = {};
6807 this.elementRef = elementRef;
6808 }
6809 /**
6810 * @return {?}
6811 */
6812 ngOnInit() {
6813 try {
6814 /** @type {?} */
6815 const paddingKeys = Object.keys(this.px);
6816 paddingKeys.forEach((/**
6817 * @param {?} key
6818 * @return {?}
6819 */
6820 key => {
6821 if (key === 'all') {
6822 this.elementRef.nativeElement.classList.add(`px-${this.px[key]}`);
6823 }
6824 else {
6825 this.elementRef.nativeElement.classList.add(`px-${key}-${this.px[key]}`);
6826 }
6827 }));
6828 }
6829 catch (err) {
6830 console.error(`Malformed paddings\`: ${err}`);
6831 }
6832 }
6833}
6834PaddingHorizontalDirective.decorators = [
6835 { type: Directive, args: [{
6836 // tslint:disable-next-line: directive-selector
6837 selector: '[px]'
6838 },] }
6839];
6840/** @nocollapse */
6841PaddingHorizontalDirective.ctorParameters = () => [
6842 { type: ElementRef }
6843];
6844PaddingHorizontalDirective.propDecorators = {
6845 px: [{ type: Input }]
6846};
6847if (false) {
6848 /** @type {?} */
6849 PaddingHorizontalDirective.prototype.px;
6850 /**
6851 * @type {?}
6852 * @private
6853 */
6854 PaddingHorizontalDirective.prototype.elementRef;
6855}
6856class PaddingVerticalDirective {
6857 /**
6858 * @param {?} elementRef
6859 */
6860 constructor(elementRef) {
6861 this.py = {};
6862 this.elementRef = elementRef;
6863 }
6864 /**
6865 * @return {?}
6866 */
6867 ngOnInit() {
6868 try {
6869 /** @type {?} */
6870 const paddingKeys = Object.keys(this.py);
6871 paddingKeys.forEach((/**
6872 * @param {?} key
6873 * @return {?}
6874 */
6875 key => {
6876 if (key === 'all') {
6877 this.elementRef.nativeElement.classList.add(`py-${this.py[key]}`);
6878 }
6879 else {
6880 this.elementRef.nativeElement.classList.add(`py-${key}-${this.py[key]}`);
6881 }
6882 }));
6883 }
6884 catch (err) {
6885 console.error(`Malformed paddings\`: ${err}`);
6886 }
6887 }
6888}
6889PaddingVerticalDirective.decorators = [
6890 { type: Directive, args: [{
6891 // tslint:disable-next-line: directive-selector
6892 selector: '[py]'
6893 },] }
6894];
6895/** @nocollapse */
6896PaddingVerticalDirective.ctorParameters = () => [
6897 { type: ElementRef }
6898];
6899PaddingVerticalDirective.propDecorators = {
6900 py: [{ type: Input }]
6901};
6902if (false) {
6903 /** @type {?} */
6904 PaddingVerticalDirective.prototype.py;
6905 /**
6906 * @type {?}
6907 * @private
6908 */
6909 PaddingVerticalDirective.prototype.elementRef;
6910}
6911
6912/**
6913 * @fileoverview added by tsickle
6914 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6915 */
6916class SpacingModule {
6917}
6918SpacingModule.decorators = [
6919 { type: NgModule, args: [{
6920 declarations: [
6921 MarginDirective,
6922 MarginTopDirective,
6923 MarginBottomDirective,
6924 MarginLeftDirective,
6925 MarginRightDirective,
6926 MarginHorizontalDirective,
6927 MarginVerticalDirective,
6928 PaddingDirective,
6929 PaddingTopDirective,
6930 PaddingBottomDirective,
6931 PaddingLeftDirective,
6932 PaddingRightDirective,
6933 PaddingHorizontalDirective,
6934 PaddingVerticalDirective,
6935 ],
6936 exports: [
6937 MarginDirective,
6938 MarginTopDirective,
6939 MarginBottomDirective,
6940 MarginLeftDirective,
6941 MarginRightDirective,
6942 MarginHorizontalDirective,
6943 MarginVerticalDirective,
6944 PaddingDirective,
6945 PaddingTopDirective,
6946 PaddingBottomDirective,
6947 PaddingLeftDirective,
6948 PaddingRightDirective,
6949 PaddingHorizontalDirective,
6950 PaddingVerticalDirective,
6951 ],
6952 imports: [CommonModule]
6953 },] }
6954];
6955
6956/**
6957 * @fileoverview added by tsickle
6958 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6959 */
6960class Card {
6961 constructor() {
6962 /**
6963 * Callback for the primary action
6964 */
6965 this.primaryFooterAction = new EventEmitter();
6966 /**
6967 * Callback for the secondary action
6968 */
6969 this.secondaryFooterAction = new EventEmitter();
6970 /**
6971 * Callback for the card header action
6972 */
6973 this.headerAction = new EventEmitter();
6974 this.cardClass = true;
6975 /**
6976 * Set to `true` to display a loading card.
6977 */
6978 this.skeleton = false;
6979 /**
6980 * Display footer state.
6981 */
6982 this.showFooter = false;
6983 }
6984 /**
6985 * @return {?}
6986 */
6987 ngOnInit() {
6988 this.showFooter = this.primaryFooterAction.observers.length > 0;
6989 }
6990 /**
6991 * Emits the cards primary footer action callback
6992 * @param {?} $event
6993 * @return {?}
6994 */
6995 onPrimaryFooterAction($event) {
6996 this.primaryFooterAction.emit($event);
6997 }
6998 /**
6999 * Emits the cards secondary footer action callback
7000 * @param {?} $event
7001 * @return {?}
7002 */
7003 onSecondaryFooterAction($event) {
7004 this.secondaryFooterAction.emit($event);
7005 }
7006 /**
7007 * Emits the cards header action callback
7008 * @param {?} $event
7009 * @return {?}
7010 */
7011 onHeaderAction($event) {
7012 this.headerAction.emit($event);
7013 }
7014}
7015Card.decorators = [
7016 { type: Component, args: [{
7017 selector: 'suka-card',
7018 template: `
7019 <suka-card-header
7020 *ngIf="title"
7021 (action)="onHeaderAction($event)"
7022 [actionLabel]="headerActionLabel"
7023 [skeleton]="skeleton"
7024 >
7025 {{title}}
7026 </suka-card-header>
7027
7028 <suka-card-section
7029 *ngIf='(sectioned !== false) else elseTpl'
7030 >
7031 <ng-container *ngTemplateOutlet="elseTpl"></ng-container>
7032 </suka-card-section>
7033
7034 <suka-card-footer
7035 *ngIf='!skeleton && showFooter'
7036 (primaryAction)="onPrimaryFooterAction($event)"
7037 [primaryLabel]="primaryFooterActionLabel"
7038 (secondaryAction)="onSecondaryFooterAction($event)"
7039 [secondaryLabel]="secondaryFooterActionLabel"
7040 >
7041 </suka-card-footer>
7042
7043 <ng-template #elseTpl><ng-content></ng-content></ng-template>
7044 `,
7045 encapsulation: ViewEncapsulation.None
7046 }] }
7047];
7048Card.propDecorators = {
7049 title: [{ type: Input }],
7050 sectioned: [{ type: Input }],
7051 primaryFooterActionLabel: [{ type: Input }],
7052 primaryFooterAction: [{ type: Output }],
7053 secondaryFooterActionLabel: [{ type: Input }],
7054 secondaryFooterAction: [{ type: Output }],
7055 headerActionLabel: [{ type: Input }],
7056 headerAction: [{ type: Output }],
7057 cardClass: [{ type: HostBinding, args: ['class.card',] }],
7058 skeleton: [{ type: Input }]
7059};
7060if (false) {
7061 /**
7062 * Title content for the card.
7063 * @type {?}
7064 */
7065 Card.prototype.title;
7066 /**
7067 * Set to `true` to auto-wrap content in section
7068 * @type {?}
7069 */
7070 Card.prototype.sectioned;
7071 /**
7072 * Primary action label.
7073 * @type {?}
7074 */
7075 Card.prototype.primaryFooterActionLabel;
7076 /**
7077 * Callback for the primary action
7078 * @type {?}
7079 */
7080 Card.prototype.primaryFooterAction;
7081 /**
7082 * Secondary action label.
7083 * @type {?}
7084 */
7085 Card.prototype.secondaryFooterActionLabel;
7086 /**
7087 * Callback for the secondary action
7088 * @type {?}
7089 */
7090 Card.prototype.secondaryFooterAction;
7091 /**
7092 * Card header action label
7093 * @type {?}
7094 */
7095 Card.prototype.headerActionLabel;
7096 /**
7097 * Callback for the card header action
7098 * @type {?}
7099 */
7100 Card.prototype.headerAction;
7101 /** @type {?} */
7102 Card.prototype.cardClass;
7103 /**
7104 * Set to `true` to display a loading card.
7105 * @type {?}
7106 */
7107 Card.prototype.skeleton;
7108 /**
7109 * Display footer state.
7110 * @type {?}
7111 */
7112 Card.prototype.showFooter;
7113}
7114
7115/**
7116 * @fileoverview added by tsickle
7117 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7118 */
7119class CardHeader {
7120 constructor() {
7121 this.showAction = false;
7122 this.cardHeaderClass = true;
7123 this.skeleton = false;
7124 this.action = new EventEmitter();
7125 }
7126 /**
7127 * @return {?}
7128 */
7129 ngOnInit() {
7130 this.showAction = this.action.observers.length > 0;
7131 }
7132 /**
7133 * @param {?} $event
7134 * @return {?}
7135 */
7136 onClick($event) {
7137 this.action.emit($event);
7138 }
7139}
7140CardHeader.decorators = [
7141 { type: Component, args: [{
7142 selector: 'suka-card-header',
7143 template: `
7144 <h5 *ngIf="skeleton" class="skeleton__text skeleton__heading"></h5>
7145 <h5 *ngIf="!skeleton"><ng-content></ng-content></h5>
7146 <button
7147 *ngIf="!skeleton && showAction"
7148 sukaButton="plain"
7149 (click)="onClick($event)"
7150 >
7151 {{actionLabel}}
7152 </button>
7153 `,
7154 encapsulation: ViewEncapsulation.None
7155 }] }
7156];
7157CardHeader.propDecorators = {
7158 cardHeaderClass: [{ type: HostBinding, args: ['class.card-header',] }],
7159 skeleton: [{ type: Input }],
7160 actionLabel: [{ type: Input }],
7161 action: [{ type: Output }]
7162};
7163if (false) {
7164 /** @type {?} */
7165 CardHeader.prototype.showAction;
7166 /** @type {?} */
7167 CardHeader.prototype.cardHeaderClass;
7168 /** @type {?} */
7169 CardHeader.prototype.skeleton;
7170 /** @type {?} */
7171 CardHeader.prototype.actionLabel;
7172 /** @type {?} */
7173 CardHeader.prototype.action;
7174}
7175
7176/**
7177 * @fileoverview added by tsickle
7178 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7179 */
7180class CardSection {
7181 constructor() {
7182 this.cardSectionClass = true;
7183 }
7184}
7185CardSection.decorators = [
7186 { type: Component, args: [{
7187 selector: 'suka-card-section',
7188 template: `
7189 <ng-content></ng-content>
7190 `,
7191 encapsulation: ViewEncapsulation.None
7192 }] }
7193];
7194CardSection.propDecorators = {
7195 cardSectionClass: [{ type: HostBinding, args: ['class.card-section',] }]
7196};
7197if (false) {
7198 /** @type {?} */
7199 CardSection.prototype.cardSectionClass;
7200}
7201
7202/**
7203 * @fileoverview added by tsickle
7204 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7205 */
7206class CardFooter {
7207 constructor() {
7208 this.showSecondaryButton = false;
7209 this.baseClass = true;
7210 this.primaryAction = new EventEmitter();
7211 this.secondaryAction = new EventEmitter();
7212 }
7213 /**
7214 * @return {?}
7215 */
7216 ngOnInit() {
7217 this.showSecondaryButton = this.secondaryAction.observers.length > 0;
7218 }
7219 /**
7220 * @param {?} buttonType
7221 * @return {?}
7222 */
7223 onButtonClick(buttonType) {
7224 if (buttonType === 'primary') {
7225 this.primaryAction.emit();
7226 }
7227 if (buttonType === 'secondary') {
7228 this.secondaryAction.emit();
7229 }
7230 }
7231}
7232CardFooter.decorators = [
7233 { type: Component, args: [{
7234 selector: 'suka-card-footer',
7235 template: `
7236 <suka-button-group>
7237 <button
7238 *ngIf="showSecondaryButton"
7239 sukaButton="plain"
7240 (click)="onButtonClick('secondary')"
7241 >
7242 {{secondaryLabel}}
7243 </button>
7244 <button
7245 sukaButton="primary"
7246 (click)="onButtonClick('primary')"
7247 >
7248 {{primaryLabel}}
7249 </button>
7250 </suka-button-group>
7251 `,
7252 encapsulation: ViewEncapsulation.None
7253 }] }
7254];
7255CardFooter.propDecorators = {
7256 baseClass: [{ type: HostBinding, args: ['class.card-footer',] }],
7257 primaryLabel: [{ type: Input }],
7258 secondaryLabel: [{ type: Input }],
7259 primaryAction: [{ type: Output }],
7260 secondaryAction: [{ type: Output }]
7261};
7262if (false) {
7263 /** @type {?} */
7264 CardFooter.prototype.showSecondaryButton;
7265 /** @type {?} */
7266 CardFooter.prototype.baseClass;
7267 /** @type {?} */
7268 CardFooter.prototype.primaryLabel;
7269 /** @type {?} */
7270 CardFooter.prototype.secondaryLabel;
7271 /** @type {?} */
7272 CardFooter.prototype.primaryAction;
7273 /** @type {?} */
7274 CardFooter.prototype.secondaryAction;
7275}
7276
7277/**
7278 * @fileoverview added by tsickle
7279 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7280 */
7281class CardModule {
7282}
7283CardModule.decorators = [
7284 { type: NgModule, args: [{
7285 declarations: [
7286 Card,
7287 CardHeader,
7288 CardSection,
7289 CardFooter,
7290 ],
7291 exports: [
7292 Card,
7293 CardHeader,
7294 CardSection,
7295 CardFooter,
7296 ],
7297 imports: [
7298 CommonModule,
7299 ButtonModule,
7300 ]
7301 },] }
7302];
7303
7304/**
7305 * @fileoverview added by tsickle
7306 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7307 */
7308class Accordion {
7309 constructor() {
7310 this._skeleton = false;
7311 this.openCloseItems = new Subject();
7312 this.skeletons = new Subject();
7313 /**
7314 * Set to `true` to allow multiple accordion items to be expanded.
7315 */
7316 this.multi = false;
7317 this.role = 'list';
7318 this.baseClass = true;
7319 }
7320 /**
7321 * Set to `true` to display a loading accordion.
7322 * @param {?} value
7323 * @return {?}
7324 */
7325 set skeleton(value) {
7326 this._skeleton = value;
7327 this.updateSkeletons();
7328 }
7329 /**
7330 * @return {?}
7331 */
7332 get skeleton() {
7333 return this._skeleton;
7334 }
7335 /**
7336 * @protected
7337 * @return {?}
7338 */
7339 updateSkeletons() {
7340 this.skeletons.next(this._skeleton);
7341 }
7342}
7343Accordion.decorators = [
7344 { type: Component, args: [{
7345 selector: 'suka-accordion',
7346 template: `
7347 <ng-content select="suka-accordion-item"></ng-content>
7348 `
7349 }] }
7350];
7351Accordion.propDecorators = {
7352 multi: [{ type: Input }],
7353 role: [{ type: HostBinding, args: ['attr.role',] }],
7354 baseClass: [{ type: HostBinding, args: ['class.accordion',] }],
7355 skeleton: [{ type: Input }]
7356};
7357if (false) {
7358 /**
7359 * @type {?}
7360 * @protected
7361 */
7362 Accordion.prototype._skeleton;
7363 /** @type {?} */
7364 Accordion.prototype.openCloseItems;
7365 /** @type {?} */
7366 Accordion.prototype.skeletons;
7367 /**
7368 * Set to `true` to allow multiple accordion items to be expanded.
7369 * @type {?}
7370 */
7371 Accordion.prototype.multi;
7372 /** @type {?} */
7373 Accordion.prototype.role;
7374 /** @type {?} */
7375 Accordion.prototype.baseClass;
7376}
7377
7378/**
7379 * @fileoverview added by tsickle
7380 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7381 */
7382class AccordionItem {
7383 /**
7384 * @param {?} accordion
7385 */
7386 constructor(accordion) {
7387 this.accordion = accordion;
7388 /**
7389 * Sets the accordion title. Can be a `string` or a `TemplateRef`. Defaults to Title plus the current accordion item count.
7390 */
7391 this.title = `Title ${AccordionItem.accordionItemCount}`;
7392 /**
7393 * Used to set a custom id to the element. Defaults to a counter
7394 */
7395 this.id = `accordion-item-${AccordionItem.accordionItemCount}`;
7396 /**
7397 * Skeleton state. Set to `true` to display a skeleton accordion.
7398 */
7399 this.skeleton = false;
7400 /**
7401 * Emits an event when the accordion item is opened.
7402 */
7403 this.opened = new EventEmitter();
7404 /**
7405 * Emits an event when the accordion item is closed.
7406 */
7407 this.closed = new EventEmitter();
7408 this.itemClass = true;
7409 /**
7410 * Sets if the item is expanded.
7411 */
7412 this.expanded = false;
7413 this.itemType = 'list-item';
7414 this.role = 'heading';
7415 this.ariaLevel = 3;
7416 this.alive = true;
7417 AccordionItem.accordionItemCount++;
7418 }
7419 /**
7420 * Toggles the accordion opened state.
7421 * @return {?}
7422 */
7423 toggle() {
7424 if (!this.skeleton) {
7425 if (!this.expanded) {
7426 if (!this.accordion.multi) {
7427 this.accordion.openCloseItems.next(true);
7428 }
7429 this.open();
7430 }
7431 else {
7432 this.close();
7433 }
7434 }
7435 }
7436 /**
7437 * @protected
7438 * @return {?}
7439 */
7440 open() {
7441 if (!this.expanded) {
7442 this.opened.emit({ id: this.id });
7443 }
7444 this.expanded = true;
7445 }
7446 /**
7447 * @protected
7448 * @return {?}
7449 */
7450 close() {
7451 if (this.expanded) {
7452 this.closed.emit({ id: this.id });
7453 }
7454 this.expanded = false;
7455 }
7456 /**
7457 * @return {?}
7458 */
7459 ngOnInit() {
7460 this.openSubscription = this.accordion.openCloseItems
7461 .pipe(takeWhile((/**
7462 * @return {?}
7463 */
7464 () => this.alive)))
7465 .subscribe((/**
7466 * @param {?} collapsed
7467 * @return {?}
7468 */
7469 collapsed => {
7470 if (!this.skeleton) {
7471 collapsed ? this.close() : this.open();
7472 }
7473 }));
7474 this.skeletonSubscription = this.accordion.skeletons
7475 .pipe(takeWhile((/**
7476 * @return {?}
7477 */
7478 () => this.alive)))
7479 .subscribe((/**
7480 * @param {?} skeletonValue
7481 * @return {?}
7482 */
7483 skeletonValue => this.skeleton = skeletonValue));
7484 this.skeleton = this.accordion.skeleton;
7485 }
7486 /**
7487 * @return {?}
7488 */
7489 ngOnDestroy() {
7490 this.alive = false;
7491 this.openSubscription.unsubscribe();
7492 this.skeletonSubscription.unsubscribe();
7493 }
7494 /**
7495 * @param {?} value
7496 * @return {?}
7497 */
7498 isTemplate(value) {
7499 return value instanceof TemplateRef;
7500 }
7501}
7502AccordionItem.accordionItemCount = 0;
7503AccordionItem.decorators = [
7504 { type: Component, args: [{
7505 selector: 'suka-accordion-item',
7506 template: `
7507 <button
7508 [attr.aria-expanded]="expanded"
7509 [attr.aria-controls]="id"
7510 (click)="toggle()"
7511 class="accordion__heading">
7512 <suka-icon icon="chevron-down" class="accordion__arrow"></suka-icon>
7513
7514 <div *ngIf="isTemplate(title) && !skeleton" class="accordion__title-content">
7515 <ng-template [ngTemplateOutlet]="title"></ng-template>
7516 </div>
7517
7518 <p
7519 *ngIf="!isTemplate(title)"
7520 class="accordion__title"
7521 [ngClass]="{
7522 'skeleton__text': skeleton
7523 }">
7524 {{!skeleton ? title : null}}
7525 </p>
7526 </button>
7527 <div [id]="id" class="accordion__content">
7528 <ng-content *ngIf="!skeleton; else skeletonTemplate"></ng-content>
7529 <ng-template #skeletonTemplate>
7530 <p class="skeleton__text" style="width: 90%"></p>
7531 <p class="skeleton__text" style="width: 80%"></p>
7532 <p class="skeleton__text" style="width: 95%"></p>
7533 </ng-template>
7534 </div>
7535 `
7536 }] }
7537];
7538/** @nocollapse */
7539AccordionItem.ctorParameters = () => [
7540 { type: Accordion, decorators: [{ type: Host }] }
7541];
7542AccordionItem.propDecorators = {
7543 title: [{ type: Input }],
7544 id: [{ type: Input }],
7545 skeleton: [{ type: Input }],
7546 opened: [{ type: Output }],
7547 closed: [{ type: Output }],
7548 itemClass: [{ type: HostBinding, args: ['class.accordion__item',] }],
7549 expanded: [{ type: HostBinding, args: ['class.accordion__item--active',] }, { type: Input }],
7550 itemType: [{ type: HostBinding, args: ['style.display',] }],
7551 role: [{ type: HostBinding, args: ['attr.role',] }],
7552 ariaLevel: [{ type: HostBinding, args: ['attr.aria-level',] }, { type: Input }]
7553};
7554if (false) {
7555 /** @type {?} */
7556 AccordionItem.accordionItemCount;
7557 /**
7558 * Sets the accordion title. Can be a `string` or a `TemplateRef`. Defaults to Title plus the current accordion item count.
7559 * @type {?}
7560 */
7561 AccordionItem.prototype.title;
7562 /**
7563 * Used to set a custom id to the element. Defaults to a counter
7564 * @type {?}
7565 */
7566 AccordionItem.prototype.id;
7567 /**
7568 * Skeleton state. Set to `true` to display a skeleton accordion.
7569 * @type {?}
7570 */
7571 AccordionItem.prototype.skeleton;
7572 /**
7573 * Emits an event when the accordion item is opened.
7574 * @type {?}
7575 */
7576 AccordionItem.prototype.opened;
7577 /**
7578 * Emits an event when the accordion item is closed.
7579 * @type {?}
7580 */
7581 AccordionItem.prototype.closed;
7582 /** @type {?} */
7583 AccordionItem.prototype.itemClass;
7584 /**
7585 * Sets if the item is expanded.
7586 * @type {?}
7587 */
7588 AccordionItem.prototype.expanded;
7589 /** @type {?} */
7590 AccordionItem.prototype.itemType;
7591 /** @type {?} */
7592 AccordionItem.prototype.role;
7593 /** @type {?} */
7594 AccordionItem.prototype.ariaLevel;
7595 /**
7596 * @type {?}
7597 * @private
7598 */
7599 AccordionItem.prototype.alive;
7600 /**
7601 * @type {?}
7602 * @private
7603 */
7604 AccordionItem.prototype.skeletonSubscription;
7605 /**
7606 * @type {?}
7607 * @private
7608 */
7609 AccordionItem.prototype.openSubscription;
7610 /**
7611 * @type {?}
7612 * @private
7613 */
7614 AccordionItem.prototype.accordion;
7615}
7616
7617/**
7618 * @fileoverview added by tsickle
7619 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7620 */
7621class AccordionModule {
7622}
7623AccordionModule.decorators = [
7624 { type: NgModule, args: [{
7625 declarations: [
7626 Accordion,
7627 AccordionItem
7628 ],
7629 exports: [
7630 Accordion,
7631 AccordionItem
7632 ],
7633 imports: [
7634 CommonModule,
7635 IconModule,
7636 ]
7637 },] }
7638];
7639
7640/**
7641 * @fileoverview added by tsickle
7642 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7643 */
7644class ListItemDirective {
7645 constructor() {
7646 this.wrapper = true;
7647 }
7648}
7649ListItemDirective.decorators = [
7650 { type: Directive, args: [{
7651 selector: '[sukaListItem]'
7652 },] }
7653];
7654ListItemDirective.propDecorators = {
7655 wrapper: [{ type: HostBinding, args: ['class.list__item',] }]
7656};
7657if (false) {
7658 /** @type {?} */
7659 ListItemDirective.prototype.wrapper;
7660}
7661
7662/**
7663 * @fileoverview added by tsickle
7664 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7665 */
7666class List {
7667 /**
7668 * @param {?} elementRef
7669 */
7670 constructor(elementRef) {
7671 this.elementRef = elementRef;
7672 }
7673 /**
7674 * @return {?}
7675 */
7676 get ordered() {
7677 if (this.nested) {
7678 return false;
7679 }
7680 return this.elementRef.nativeElement.tagName === 'OL';
7681 }
7682 /**
7683 * @return {?}
7684 */
7685 get unordered() {
7686 if (this.nested) {
7687 return false;
7688 }
7689 return this.elementRef.nativeElement.tagName === 'UL';
7690 }
7691 /**
7692 * @return {?}
7693 */
7694 get nested() {
7695 return this.elementRef.nativeElement.parentElement.tagName === 'LI';
7696 }
7697}
7698List.decorators = [
7699 { type: Directive, args: [{
7700 selector: '[sukaList]'
7701 },] }
7702];
7703/** @nocollapse */
7704List.ctorParameters = () => [
7705 { type: ElementRef }
7706];
7707List.propDecorators = {
7708 ordered: [{ type: HostBinding, args: ['class.list--ordered',] }],
7709 unordered: [{ type: HostBinding, args: ['class.list--unordered',] }],
7710 nested: [{ type: HostBinding, args: ['class.list--nested',] }]
7711};
7712if (false) {
7713 /**
7714 * @type {?}
7715 * @protected
7716 */
7717 List.prototype.elementRef;
7718}
7719
7720/**
7721 * @fileoverview added by tsickle
7722 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7723 */
7724class ListModule {
7725}
7726ListModule.decorators = [
7727 { type: NgModule, args: [{
7728 declarations: [
7729 ListItemDirective,
7730 List
7731 ],
7732 exports: [
7733 ListItemDirective,
7734 List
7735 ],
7736 imports: [CommonModule]
7737 },] }
7738];
7739
7740/**
7741 * @fileoverview added by tsickle
7742 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7743 */
7744/**
7745 * Used to emit changes performed on number input components.
7746 */
7747class NumberChange {
7748}
7749if (false) {
7750 /**
7751 * Contains the `Number` that has been changed.
7752 * @type {?}
7753 */
7754 NumberChange.prototype.source;
7755 /**
7756 * The value of the `Number` field encompassed in the `NumberChange` class.
7757 * @type {?}
7758 */
7759 NumberChange.prototype.value;
7760}
7761
7762/**
7763 * @fileoverview added by tsickle
7764 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7765 */
7766// tslint:disable-next-line: component-class-suffix
7767class Number {
7768 /**
7769 * Creates an instance of `Number`.
7770 */
7771 constructor() {
7772 this.containerClass = true;
7773 /**
7774 * Set to `true` for a disabled number input.
7775 */
7776 this.disabled = false;
7777 /**
7778 * Set to `true` for a loading number component.
7779 */
7780 this.skeleton = false;
7781 /**
7782 * Set to `true` for an invalid number component.
7783 */
7784 this.invalid = false;
7785 /**
7786 * Set to `true` for a valid number component.
7787 */
7788 this.valid = false;
7789 /**
7790 * The unique id for the number component.
7791 */
7792 this.id = `number-input-${Number.numberCount}`;
7793 /**
7794 * Sets the value attribute on the `input` element.
7795 */
7796 this.value = 0;
7797 /**
7798 * Sets the min attribute on the `input` element.
7799 */
7800 this.min = null;
7801 /**
7802 * Sets the max attribute on the `input` element.
7803 */
7804 this.max = null;
7805 /**
7806 * Emits event notifying other classes when a change in state occurs in the input.
7807 */
7808 // tslint:disable-next-line: no-output-native
7809 this.change = new EventEmitter();
7810 /**
7811 * Called when number input is blurred. Needed to properly implement `ControlValueAccessor`.
7812 */
7813 this.onTouched = (/**
7814 * @return {?}
7815 */
7816 () => { });
7817 /**
7818 * Method set in `registerOnChange` to propagate changes back to the form.
7819 */
7820 this.propagateChange = (/**
7821 * @param {?} _
7822 * @return {?}
7823 */
7824 (_) => { });
7825 Number.numberCount++;
7826 }
7827 /**
7828 * This is the initial value set to the component
7829 * @param {?} value The input value.
7830 * @return {?}
7831 */
7832 writeValue(value) {
7833 this.value = value;
7834 }
7835 /**
7836 * Sets a method in order to propagate changes back to the form.
7837 * @param {?} fn
7838 * @return {?}
7839 */
7840 registerOnChange(fn) {
7841 this.propagateChange = fn;
7842 }
7843 /**
7844 * Registers a callback to be triggered when the control has been touched.
7845 * @param {?} fn Callback to be triggered when the number input is touched.
7846 * @return {?}
7847 */
7848 registerOnTouched(fn) {
7849 this.onTouched = fn;
7850 }
7851 /**
7852 * Sets the disabled state through the model
7853 * @param {?} isDisabled
7854 * @return {?}
7855 */
7856 setDisabledState(isDisabled) {
7857 this.disabled = isDisabled;
7858 }
7859 /**
7860 * Adds 1 to the current `value`.
7861 * @return {?}
7862 */
7863 onIncrement() {
7864 if (this.max === null || this.value < this.max) {
7865 this.value++;
7866 this.emitChangeEvent();
7867 }
7868 }
7869 /**
7870 * Subtracts 1 to the current `value`.
7871 * @return {?}
7872 */
7873 onDecrement() {
7874 if (this.min === null || this.value > this.min) {
7875 this.value--;
7876 this.emitChangeEvent();
7877 }
7878 }
7879 /**
7880 * Creates a class of `NumberChange` to emit the change in the `Number`.
7881 * @return {?}
7882 */
7883 emitChangeEvent() {
7884 /** @type {?} */
7885 const event = new NumberChange();
7886 event.source = this;
7887 event.value = this.value;
7888 this.change.emit(event);
7889 this.propagateChange(this.value);
7890 }
7891 /**
7892 * @param {?} event
7893 * @return {?}
7894 */
7895 onNumberInputChange(event) {
7896 this.value = event.target.value;
7897 this.emitChangeEvent();
7898 }
7899 /**
7900 * @param {?} value
7901 * @return {?}
7902 */
7903 isTemplate(value) {
7904 return value instanceof TemplateRef;
7905 }
7906}
7907/**
7908 * Variable used for creating unique ids for number input components.
7909 */
7910Number.numberCount = 0;
7911Number.decorators = [
7912 { type: Component, args: [{
7913 selector: 'suka-number',
7914 template: `
7915 <label *ngIf="skeleton && label" class="label skeleton"></label>
7916 <label *ngIf="!skeleton && label" [for]="id" class="label">
7917 <ng-container *ngIf="!isTemplate(label)">{{label}}</ng-container>
7918 <ng-template *ngIf="isTemplate(label)" [ngTemplateOutlet]="label"></ng-template>
7919 </label>
7920 <div *ngIf="!skeleton && helperText" class="form__helper-text">
7921 <ng-container *ngIf="!isTemplate(helperText)">{{helperText}}</ng-container>
7922 <ng-template *ngIf="isTemplate(helperText)" [ngTemplateOutlet]="helperText"></ng-template>
7923 </div>
7924 <div
7925 data-numberinput
7926 [attr.data-invalid]="(invalid ? true : null)"
7927 [attr.data-valid]="(valid ? true : null)"
7928 class="number-input"
7929 [ngClass]="{
7930 'number-input--nolabel': !label,
7931 'number-input--helpertext': helperText,
7932 'skeleton' : skeleton,
7933 'number-input--disabled': disabled
7934 }">
7935 <div class="number-input__input-wrapper">
7936 <span class="number-input__prefix" *ngIf="!skeleton && prefix">
7937 <ng-container *ngIf="!isTemplate(prefix)">{{prefix}}</ng-container>
7938 <ng-template *ngIf="isTemplate(prefix)" [ngTemplateOutlet]="prefix"></ng-template>
7939 </span>
7940 <input
7941 type="number"
7942 [id]="id"
7943 [value]="value"
7944 [attr.min]="min"
7945 [attr.max]="max"
7946 [disabled]="disabled"
7947 [required]="required"
7948 (input)="onNumberInputChange($event)"/>
7949 <suka-icon *ngIf="!skeleton && invalid" icon="alert-circle" class="number-input__invalid"></suka-icon>
7950 <suka-icon *ngIf="!skeleton && valid" icon="check" class="number-input__valid"></suka-icon>
7951 <div *ngIf="!skeleton" class="number-input__controls">
7952 <button
7953 class="number-input__control-btn up-icon"
7954 type="button"
7955 aria-live="polite"
7956 aria-atomic="true"
7957 (click)="onIncrement()">
7958 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" height="16" width="16"><path fill="currentColor" d="M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z"></path></svg>
7959 </button>
7960 <button
7961 class="number-input__control-btn down-icon"
7962 type="button"
7963 aria-live="polite"
7964 aria-atomic="true"
7965 (click)="onDecrement()">
7966 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" height="16" width="16"><path fill="currentColor" d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"></path></svg>
7967 </button>
7968 </div>
7969 </div>
7970 <div *ngIf="invalid" class="form-requirement">
7971 <ng-container *ngIf="!isTemplate(invalidText)">{{invalidText}}</ng-container>
7972 <ng-template *ngIf="isTemplate(invalidText)" [ngTemplateOutlet]="invalidText"></ng-template>
7973 </div>
7974 </div>
7975 `,
7976 providers: [
7977 {
7978 provide: NG_VALUE_ACCESSOR,
7979 useExisting: Number,
7980 multi: true
7981 }
7982 ]
7983 }] }
7984];
7985/** @nocollapse */
7986Number.ctorParameters = () => [];
7987Number.propDecorators = {
7988 containerClass: [{ type: HostBinding, args: ['class.form-item',] }],
7989 disabled: [{ type: Input }],
7990 skeleton: [{ type: Input }],
7991 invalid: [{ type: Input }],
7992 valid: [{ type: Input }],
7993 id: [{ type: Input }],
7994 required: [{ type: Input }],
7995 value: [{ type: Input }],
7996 min: [{ type: Input }],
7997 max: [{ type: Input }],
7998 label: [{ type: Input }],
7999 prefix: [{ type: Input }],
8000 helperText: [{ type: Input }],
8001 invalidText: [{ type: Input }],
8002 change: [{ type: Output }]
8003};
8004if (false) {
8005 /**
8006 * Variable used for creating unique ids for number input components.
8007 * @type {?}
8008 */
8009 Number.numberCount;
8010 /** @type {?} */
8011 Number.prototype.containerClass;
8012 /**
8013 * Set to `true` for a disabled number input.
8014 * @type {?}
8015 */
8016 Number.prototype.disabled;
8017 /**
8018 * Set to `true` for a loading number component.
8019 * @type {?}
8020 */
8021 Number.prototype.skeleton;
8022 /**
8023 * Set to `true` for an invalid number component.
8024 * @type {?}
8025 */
8026 Number.prototype.invalid;
8027 /**
8028 * Set to `true` for a valid number component.
8029 * @type {?}
8030 */
8031 Number.prototype.valid;
8032 /**
8033 * The unique id for the number component.
8034 * @type {?}
8035 */
8036 Number.prototype.id;
8037 /**
8038 * Reflects the required attribute of the `input` element.
8039 * @type {?}
8040 */
8041 Number.prototype.required;
8042 /**
8043 * Sets the value attribute on the `input` element.
8044 * @type {?}
8045 */
8046 Number.prototype.value;
8047 /**
8048 * Sets the min attribute on the `input` element.
8049 * @type {?}
8050 */
8051 Number.prototype.min;
8052 /**
8053 * Sets the max attribute on the `input` element.
8054 * @type {?}
8055 */
8056 Number.prototype.max;
8057 /**
8058 * Sets the text inside the `label` tag.
8059 * @type {?}
8060 */
8061 Number.prototype.label;
8062 /**
8063 * Sets the a prefix for the input wrapper.
8064 * @type {?}
8065 */
8066 Number.prototype.prefix;
8067 /**
8068 * Sets the optional helper text.
8069 * @type {?}
8070 */
8071 Number.prototype.helperText;
8072 /**
8073 * Sets the invalid text.
8074 * @type {?}
8075 */
8076 Number.prototype.invalidText;
8077 /**
8078 * Emits event notifying other classes when a change in state occurs in the input.
8079 * @type {?}
8080 */
8081 Number.prototype.change;
8082 /**
8083 * Called when number input is blurred. Needed to properly implement `ControlValueAccessor`.
8084 * @type {?}
8085 */
8086 Number.prototype.onTouched;
8087 /**
8088 * Method set in `registerOnChange` to propagate changes back to the form.
8089 * @type {?}
8090 */
8091 Number.prototype.propagateChange;
8092}
8093
8094/**
8095 * @fileoverview added by tsickle
8096 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
8097 */
8098class NumberModule {
8099}
8100NumberModule.decorators = [
8101 { type: NgModule, args: [{
8102 declarations: [
8103 Number
8104 ],
8105 exports: [
8106 Number
8107 ],
8108 imports: [
8109 FormsModule,
8110 CommonModule,
8111 IconModule,
8112 ]
8113 },] }
8114];
8115
8116/**
8117 * @fileoverview added by tsickle
8118 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
8119 */
8120// tslint:disable-next-line: component-class-suffix
8121class Search {
8122 /**
8123 * Creates an instance of `Search`.
8124 * @param {?} elementRef
8125 */
8126 constructor(elementRef) {
8127 this.elementRef = elementRef;
8128 /**
8129 * Set to `true` for a disabled search input.
8130 */
8131 this.disabled = false;
8132 /**
8133 * Set to `true` for a toolbar search component.
8134 */
8135 this.toolbar = false;
8136 /**
8137 * Set to `true` for a loading search component.
8138 */
8139 this.skeleton = false;
8140 /**
8141 * Set to `true` to expand the toolbar search component.
8142 */
8143 this.active = false;
8144 /**
8145 * Specifies whether the search component is used in the table toolbar.
8146 */
8147 this.tableSearch = false;
8148 /**
8149 * The unique id for the search component.
8150 */
8151 this.id = `search-${Search.searchCount}`;
8152 /**
8153 * Sets the value attribute on the `input` element.
8154 */
8155 this.value = '';
8156 /**
8157 * Sets the autocomplete attribute on the `input` element.
8158 * For reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#Values
8159 */
8160 this.autocomplete = 'on';
8161 /**
8162 * Sets the text inside the `label` tag.
8163 */
8164 this.label = 'Búsqueda'; // TODO: i18n
8165 // TODO: i18n
8166 /**
8167 * Sets the placeholder attribute on the `input` element.
8168 */
8169 this.placeholder = 'Buscar'; // TODO: i18n
8170 // TODO: i18n
8171 /**
8172 * Used to set the `title` attribute of the clear button.
8173 */
8174 this.clearButtonTitle = 'Limpiar'; // TODO: i18n
8175 // TODO: i18n
8176 /**
8177 * Emits an event when value is changed.
8178 */
8179 this.valueChange = new EventEmitter();
8180 /**
8181 * Emits an event when the clear button is clicked.
8182 */
8183 this.clear = new EventEmitter();
8184 /**
8185 * Called when search input is blurred. Needed to properly implement `ControlValueAccessor`.
8186 */
8187 this.onTouched = (/**
8188 * @return {?}
8189 */
8190 () => { });
8191 /**
8192 * Method set in `registerOnChange` to propagate changes back to the form.
8193 */
8194 this.propagateChange = (/**
8195 * @param {?} _
8196 * @return {?}
8197 */
8198 (_) => { });
8199 Search.searchCount++;
8200 }
8201 /**
8202 * @return {?}
8203 */
8204 get containerClass() { return !this.toolbar; }
8205 /**
8206 * This is the initial value set to the component
8207 * @param {?} value The input value.
8208 * @return {?}
8209 */
8210 writeValue(value) {
8211 this.value = value;
8212 }
8213 /**
8214 * Sets a method in order to propagate changes back to the form.
8215 * @param {?} fn
8216 * @return {?}
8217 */
8218 registerOnChange(fn) {
8219 this.propagateChange = fn;
8220 }
8221 /**
8222 * Registers a callback to be triggered when the control has been touched.
8223 * @param {?} fn Callback to be triggered when the search input is touched.
8224 * @return {?}
8225 */
8226 registerOnTouched(fn) {
8227 this.onTouched = fn;
8228 }
8229 /**
8230 * Called when text is written in the input.
8231 * @param {?} search The input text.
8232 * @return {?}
8233 */
8234 onSearch(search) {
8235 this.value = search;
8236 this.doValueChange();
8237 }
8238 /**
8239 * Called when clear button is clicked.
8240 * @return {?}
8241 */
8242 clearSearch() {
8243 this.value = '';
8244 this.clear.emit();
8245 this.propagateChange(this.value);
8246 }
8247 /**
8248 * @return {?}
8249 */
8250 doValueChange() {
8251 this.valueChange.emit(this.value);
8252 this.propagateChange(this.value);
8253 }
8254 /**
8255 * @return {?}
8256 */
8257 openSearch() {
8258 this.active = true;
8259 setTimeout((/**
8260 * @return {?}
8261 */
8262 () => this.inputRef.nativeElement.focus()));
8263 }
8264 /**
8265 * @param {?} event
8266 * @return {?}
8267 */
8268 keyDown(event) {
8269 if (this.toolbar) {
8270 if (event.key === 'Escape') {
8271 this.active = false;
8272 }
8273 else if (event.key === 'Enter') {
8274 this.openSearch();
8275 }
8276 }
8277 }
8278 /**
8279 * @param {?} event
8280 * @return {?}
8281 */
8282 focusOut(event) {
8283 if (this.toolbar &&
8284 this.inputRef.nativeElement.value === '' &&
8285 event.relatedTarget === null) {
8286 this.active = false;
8287 }
8288 }
8289}
8290/**
8291 * Variable used for creating unique ids for search components.
8292 */
8293Search.searchCount = 0;
8294Search.decorators = [
8295 { type: Component, args: [{
8296 selector: 'suka-search',
8297 template: `
8298 <div
8299 class="search"
8300 [ngClass]="{
8301 'skeleton': skeleton,
8302 'toolbar-search': toolbar,
8303 'toolbar-search--active': toolbar && active
8304 }"
8305 role="search"
8306 >
8307 <label class="label" [for]="id">{{label}}</label>
8308
8309 <div *ngIf="skeleton; else enableInput" class="search-input"></div>
8310 <ng-template #enableInput>
8311 <input
8312 #input
8313 *ngIf="!toolbar || active || value !== ''"
8314 class="search-input"
8315 [type]="tableSearch || !toolbar ? 'text' : 'search'"
8316 role="search"
8317 [id]="id"
8318 [value]="value"
8319 [autocomplete]="autocomplete"
8320 [placeholder]="placeholder"
8321 [disabled]="disabled"
8322 [required]="required"
8323 (input)="onSearch($event.target.value)"/>
8324 <button *ngIf="!tableSearch && toolbar" class="toolbar-search__btn" (click)="openSearch()">
8325 <suka-icon icon="search"></suka-icon>
8326 </button>
8327 <suka-icon icon="search" *ngIf="tableSearch || !toolbar" (click)="openSearch()" class="search-magnifier"></suka-icon>
8328 </ng-template>
8329
8330 <button
8331 *ngIf="tableSearch || !toolbar"
8332 class="search-close"
8333 [ngClass]="{
8334 'search-close--hidden': !value || value.length === 0
8335 }"
8336 [title]="clearButtonTitle"
8337 [attr.aria-label]="clearButtonTitle"
8338 (click)="clearSearch()"
8339 >
8340 <suka-icon icon="x-circle"></suka-icon>
8341 </button>
8342 </div>
8343 `,
8344 providers: [
8345 {
8346 provide: NG_VALUE_ACCESSOR,
8347 useExisting: Search,
8348 multi: true
8349 }
8350 ]
8351 }] }
8352];
8353/** @nocollapse */
8354Search.ctorParameters = () => [
8355 { type: ElementRef }
8356];
8357Search.propDecorators = {
8358 containerClass: [{ type: HostBinding, args: ['class.form-item',] }],
8359 disabled: [{ type: Input }],
8360 toolbar: [{ type: Input }],
8361 skeleton: [{ type: Input }],
8362 active: [{ type: Input }],
8363 tableSearch: [{ type: Input }],
8364 name: [{ type: Input }],
8365 id: [{ type: Input }],
8366 required: [{ type: Input }],
8367 value: [{ type: Input }],
8368 autocomplete: [{ type: Input }],
8369 label: [{ type: Input }],
8370 placeholder: [{ type: Input }],
8371 clearButtonTitle: [{ type: Input }],
8372 valueChange: [{ type: Output }],
8373 clear: [{ type: Output }],
8374 inputRef: [{ type: ViewChild, args: ['input', { static: false },] }],
8375 keyDown: [{ type: HostListener, args: ['keydown', ['$event'],] }],
8376 focusOut: [{ type: HostListener, args: ['focusout', ['$event'],] }]
8377};
8378if (false) {
8379 /**
8380 * Variable used for creating unique ids for search components.
8381 * @type {?}
8382 */
8383 Search.searchCount;
8384 /**
8385 * Set to `true` for a disabled search input.
8386 * @type {?}
8387 */
8388 Search.prototype.disabled;
8389 /**
8390 * Set to `true` for a toolbar search component.
8391 * @type {?}
8392 */
8393 Search.prototype.toolbar;
8394 /**
8395 * Set to `true` for a loading search component.
8396 * @type {?}
8397 */
8398 Search.prototype.skeleton;
8399 /**
8400 * Set to `true` to expand the toolbar search component.
8401 * @type {?}
8402 */
8403 Search.prototype.active;
8404 /**
8405 * Specifies whether the search component is used in the table toolbar.
8406 * @type {?}
8407 */
8408 Search.prototype.tableSearch;
8409 /**
8410 * Sets the name attribute on the `input` element.
8411 * @type {?}
8412 */
8413 Search.prototype.name;
8414 /**
8415 * The unique id for the search component.
8416 * @type {?}
8417 */
8418 Search.prototype.id;
8419 /**
8420 * Reflects the required attribute of the `input` element.
8421 * @type {?}
8422 */
8423 Search.prototype.required;
8424 /**
8425 * Sets the value attribute on the `input` element.
8426 * @type {?}
8427 */
8428 Search.prototype.value;
8429 /**
8430 * Sets the autocomplete attribute on the `input` element.
8431 * For reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#Values
8432 * @type {?}
8433 */
8434 Search.prototype.autocomplete;
8435 /**
8436 * Sets the text inside the `label` tag.
8437 * @type {?}
8438 */
8439 Search.prototype.label;
8440 /**
8441 * Sets the placeholder attribute on the `input` element.
8442 * @type {?}
8443 */
8444 Search.prototype.placeholder;
8445 /**
8446 * Used to set the `title` attribute of the clear button.
8447 * @type {?}
8448 */
8449 Search.prototype.clearButtonTitle;
8450 /**
8451 * Emits an event when value is changed.
8452 * @type {?}
8453 */
8454 Search.prototype.valueChange;
8455 /**
8456 * Emits an event when the clear button is clicked.
8457 * @type {?}
8458 */
8459 Search.prototype.clear;
8460 /** @type {?} */
8461 Search.prototype.inputRef;
8462 /**
8463 * Called when search input is blurred. Needed to properly implement `ControlValueAccessor`.
8464 * @type {?}
8465 */
8466 Search.prototype.onTouched;
8467 /**
8468 * Method set in `registerOnChange` to propagate changes back to the form.
8469 * @type {?}
8470 */
8471 Search.prototype.propagateChange;
8472 /**
8473 * @type {?}
8474 * @protected
8475 */
8476 Search.prototype.elementRef;
8477}
8478
8479/**
8480 * @fileoverview added by tsickle
8481 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
8482 */
8483class SearchModule {
8484}
8485SearchModule.decorators = [
8486 { type: NgModule, args: [{
8487 declarations: [
8488 Search
8489 ],
8490 exports: [
8491 Search
8492 ],
8493 imports: [
8494 FormsModule,
8495 CommonModule,
8496 IconModule,
8497 ]
8498 },] }
8499];
8500
8501/**
8502 * @fileoverview added by tsickle
8503 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
8504 */
8505class TabItem {
8506 constructor() {
8507 /**
8508 * Set to `true` to activate the tab (display it).
8509 */
8510 this.active = false;
8511 /**
8512 * Callback when the tab is selected.
8513 */
8514 this.selected = new EventEmitter();
8515 }
8516 /**
8517 * @return {?}
8518 */
8519 ngOnChanges() {
8520 if (this.active === true) {
8521 this.selected.emit(this.title);
8522 }
8523 }
8524}
8525TabItem.decorators = [
8526 { type: Component, args: [{
8527 selector: 'suka-tab',
8528 template: `
8529 <div [hidden]="!active" class="tabs__tab-item">
8530 <ng-content></ng-content>
8531 </div>
8532 `
8533 }] }
8534];
8535TabItem.propDecorators = {
8536 title: [{ type: Input }],
8537 active: [{ type: Input }],
8538 selected: [{ type: Output }]
8539};
8540if (false) {
8541 /**
8542 * Sets the tab title.
8543 * @type {?}
8544 */
8545 TabItem.prototype.title;
8546 /**
8547 * Set to `true` to activate the tab (display it).
8548 * @type {?}
8549 */
8550 TabItem.prototype.active;
8551 /**
8552 * Callback when the tab is selected.
8553 * @type {?}
8554 */
8555 TabItem.prototype.selected;
8556}
8557
8558/**
8559 * @fileoverview added by tsickle
8560 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
8561 */
8562class Tabs {
8563 constructor() {
8564 /**
8565 * Set to `true` to fit tabs to container.
8566 */
8567 this.fitted = false;
8568 }
8569 /**
8570 * @return {?}
8571 */
8572 ngAfterContentInit() {
8573 /** @type {?} */
8574 const activeTabs = this.tabs.filter((/**
8575 * @param {?} tab
8576 * @return {?}
8577 */
8578 (tab) => tab.active));
8579 if (activeTabs.length === 0) {
8580 this.selectTab(this.tabs.first);
8581 }
8582 }
8583 /**
8584 * Selects a particular tab and activates it.
8585 * @param {?} tabItem
8586 * @return {?}
8587 */
8588 selectTab(tabItem) {
8589 this.tabs.toArray().forEach((/**
8590 * @param {?} tab
8591 * @return {?}
8592 */
8593 tab => tab.active = false));
8594 tabItem.active = true;
8595 tabItem.ngOnChanges();
8596 }
8597}
8598Tabs.decorators = [
8599 { type: Component, args: [{
8600 selector: 'suka-tabs',
8601 template: `
8602 <ul class="tabs">
8603 <li
8604 *ngFor="let tab of tabs"
8605 (click)="selectTab(tab)"
8606 [class.tabs__tab-container--selected]="tab.active"
8607 class="tabs__tab-container"
8608 >
8609 <button class="tabs__tab" type="button" role="tab">
8610 <span class="tabs__title">{{tab.title}}</span>
8611 </button>
8612 </li>
8613 </ul>
8614 <ng-content></ng-content>
8615 `
8616 }] }
8617];
8618Tabs.propDecorators = {
8619 fitted: [{ type: HostBinding, args: ['class.tabs-fitted',] }, { type: Input }],
8620 tabs: [{ type: ContentChildren, args: [TabItem,] }]
8621};
8622if (false) {
8623 /**
8624 * Set to `true` to fit tabs to container.
8625 * @type {?}
8626 */
8627 Tabs.prototype.fitted;
8628 /**
8629 * List of tabs associated to the main wrapper.
8630 * @type {?}
8631 */
8632 Tabs.prototype.tabs;
8633}
8634
8635/**
8636 * @fileoverview added by tsickle
8637 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
8638 */
8639class TabsModule {
8640}
8641TabsModule.decorators = [
8642 { type: NgModule, args: [{
8643 declarations: [
8644 Tabs,
8645 TabItem,
8646 ],
8647 exports: [
8648 Tabs,
8649 TabItem,
8650 ],
8651 imports: [
8652 CommonModule
8653 ]
8654 },] }
8655];
8656
8657/**
8658 * @fileoverview added by tsickle
8659 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
8660 */
8661class TooltipContainer {
8662 constructor() {
8663 this.renderMethod = 'component';
8664 this.position = 'bottom';
8665 }
8666 /**
8667 * @return {?}
8668 */
8669 ngOnInit() {
8670 if (typeof this.content === 'string') {
8671 this.renderMethod = 'text';
8672 }
8673 if (this.content instanceof TemplateRef) {
8674 this.renderMethod = 'template';
8675 }
8676 }
8677}
8678TooltipContainer.decorators = [
8679 { type: Component, args: [{
8680 selector: 'suka-tooltip',
8681 template: `
8682 <div @tooltip class="tooltip tooltip-{{position}}">
8683 <span class="tooltip__caret"></span>
8684 <ng-container [ngSwitch]="renderMethod">
8685 <div *ngSwitchCase="'text'" [innerHTML]="content"></div>
8686 <ng-container *ngSwitchCase="'template'">
8687 <ng-container *ngTemplateOutlet="content"></ng-container>
8688 </ng-container>
8689 <ng-container *ngSwitchCase="'component'">
8690 <ng-container *ngComponentOutlet="content"></ng-container>
8691 </ng-container>
8692 </ng-container>
8693 </div>`,
8694 animations: [
8695 trigger('tooltip', [
8696 transition(':enter', [
8697 style({ opacity: 0 }),
8698 animate('0.2s ease-in', style({ opacity: 1 })),
8699 ]),
8700 transition(':leave', [
8701 animate(200, style({ opacity: 0 })),
8702 ]),
8703 ]),
8704 ]
8705 }] }
8706];
8707TooltipContainer.propDecorators = {
8708 content: [{ type: Input }],
8709 position: [{ type: Input }]
8710};
8711if (false) {
8712 /** @type {?} */
8713 TooltipContainer.prototype.renderMethod;
8714 /** @type {?} */
8715 TooltipContainer.prototype.content;
8716 /** @type {?} */
8717 TooltipContainer.prototype.position;
8718}
8719
8720/**
8721 * @fileoverview added by tsickle
8722 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
8723 */
8724/** @type {?} */
8725const positions = {
8726 top: {
8727 originX: 'center',
8728 originY: 'top',
8729 overlayX: 'center',
8730 overlayY: 'bottom',
8731 offsetY: -8,
8732 },
8733 right: {
8734 originX: 'end',
8735 originY: 'center',
8736 overlayX: 'start',
8737 overlayY: 'center',
8738 offsetX: 8,
8739 },
8740 bottom: {
8741 originX: 'center',
8742 originY: 'bottom',
8743 overlayX: 'center',
8744 overlayY: 'top',
8745 offsetY: 8,
8746 },
8747 left: {
8748 originX: 'start',
8749 originY: 'center',
8750 overlayX: 'end',
8751 overlayY: 'center',
8752 offsetX: -8,
8753 }
8754};
8755class Tooltip {
8756 /**
8757 * @param {?} overlay
8758 * @param {?} overlayPositionBuilder
8759 * @param {?} elementRef
8760 */
8761 constructor(overlay, overlayPositionBuilder, elementRef) {
8762 this.overlay = overlay;
8763 this.overlayPositionBuilder = overlayPositionBuilder;
8764 this.elementRef = elementRef;
8765 this.open = false;
8766 /**
8767 * The tooltip content
8768 */
8769 this.content = '';
8770 /**
8771 * Sets the tooltip trigger behaviour. Defaults to `hover`.
8772 */
8773 this.trigger = 'hover';
8774 /**
8775 * Sets the tooltip position according to the trigger component.
8776 */
8777 this.position = 'bottom';
8778 }
8779 /**
8780 * @return {?}
8781 */
8782 ngOnInit() {
8783 /** @type {?} */
8784 const positionStrategy = this.overlayPositionBuilder
8785 .flexibleConnectedTo(this.elementRef)
8786 .withPositions([(/** @type {?} */ (positions[this.position]))]);
8787 this.overlayRef = this.overlay.create({
8788 positionStrategy,
8789 scrollStrategy: this.overlay.scrollStrategies.close(),
8790 });
8791 }
8792 /**
8793 * @private
8794 * @return {?}
8795 */
8796 show() {
8797 this.open = true;
8798 /** @type {?} */
8799 const tooltipRef = this.overlayRef.attach(new ComponentPortal(TooltipContainer));
8800 tooltipRef.instance.content = this.content;
8801 tooltipRef.instance.position = this.position;
8802 }
8803 /**
8804 * @private
8805 * @return {?}
8806 */
8807 hide() {
8808 this.open = false;
8809 this.overlayRef.detach();
8810 }
8811 /**
8812 * @return {?}
8813 */
8814 onMouseEnter() {
8815 if (this.trigger === 'hover') {
8816 this.show();
8817 }
8818 }
8819 /**
8820 * @return {?}
8821 */
8822 onMouseOut() {
8823 if (this.trigger === 'hover') {
8824 this.hide();
8825 }
8826 }
8827 /**
8828 * @return {?}
8829 */
8830 onClick() {
8831 if (this.trigger === 'click') {
8832 this.open ? this.hide() : this.show();
8833 if (this.duration) {
8834 setTimeout((/**
8835 * @return {?}
8836 */
8837 () => {
8838 this.hide();
8839 }), this.duration);
8840 }
8841 }
8842 }
8843}
8844Tooltip.decorators = [
8845 { type: Directive, args: [{ selector: '[sukaTooltip]' },] }
8846];
8847/** @nocollapse */
8848Tooltip.ctorParameters = () => [
8849 { type: Overlay },
8850 { type: OverlayPositionBuilder },
8851 { type: ElementRef }
8852];
8853Tooltip.propDecorators = {
8854 content: [{ type: Input, args: ['sukaTooltip',] }],
8855 trigger: [{ type: Input, args: ['tooltipTrigger',] }],
8856 position: [{ type: Input, args: ['tooltipPosition',] }],
8857 duration: [{ type: Input, args: ['tooltipDuration',] }],
8858 onMouseEnter: [{ type: HostListener, args: ['mouseenter',] }],
8859 onMouseOut: [{ type: HostListener, args: ['mouseout',] }],
8860 onClick: [{ type: HostListener, args: ['click',] }]
8861};
8862if (false) {
8863 /**
8864 * @type {?}
8865 * @private
8866 */
8867 Tooltip.prototype.overlayRef;
8868 /**
8869 * @type {?}
8870 * @private
8871 */
8872 Tooltip.prototype.open;
8873 /**
8874 * The tooltip content
8875 * @type {?}
8876 */
8877 Tooltip.prototype.content;
8878 /**
8879 * Sets the tooltip trigger behaviour. Defaults to `hover`.
8880 * @type {?}
8881 */
8882 Tooltip.prototype.trigger;
8883 /**
8884 * Sets the tooltip position according to the trigger component.
8885 * @type {?}
8886 */
8887 Tooltip.prototype.position;
8888 /**
8889 * Sets a duration for the tooltip. If not set, it runs indefinitely.
8890 * @type {?}
8891 */
8892 Tooltip.prototype.duration;
8893 /**
8894 * @type {?}
8895 * @private
8896 */
8897 Tooltip.prototype.overlay;
8898 /**
8899 * @type {?}
8900 * @private
8901 */
8902 Tooltip.prototype.overlayPositionBuilder;
8903 /**
8904 * @type {?}
8905 * @private
8906 */
8907 Tooltip.prototype.elementRef;
8908}
8909
8910/**
8911 * @fileoverview added by tsickle
8912 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
8913 */
8914class TooltipModule {
8915}
8916TooltipModule.decorators = [
8917 { type: NgModule, args: [{
8918 declarations: [
8919 TooltipContainer,
8920 Tooltip,
8921 ],
8922 exports: [
8923 TooltipContainer,
8924 Tooltip,
8925 ],
8926 imports: [
8927 CommonModule,
8928 OverlayModule
8929 ],
8930 entryComponents: [
8931 TooltipContainer
8932 ]
8933 },] }
8934];
8935
8936/**
8937 * @fileoverview added by tsickle
8938 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
8939 */
8940const ɵ0 = /**
8941 * @param {?} iconDef
8942 * @return {?}
8943 */
8944iconDef => iconDef.name === 'arrow-right';
8945/** @type {?} */
8946const arrowImg = iconDefs.find((ɵ0)).template;
8947const ɵ1 = /**
8948 * @param {?} iconDef
8949 * @return {?}
8950 */
8951iconDef => iconDef.name === 'external-link';
8952/** @type {?} */
8953const externalImg = iconDefs.find((ɵ1)).template;
8954class Link {
8955 /**
8956 * @param {?} elementRef
8957 * @param {?} renderer
8958 * @param {?} document
8959 */
8960 constructor(elementRef, renderer, document) {
8961 this.elementRef = elementRef;
8962 this.renderer = renderer;
8963 this.document = document;
8964 this.baseClass = true;
8965 /**
8966 * Set to `true` to display an arrow next to the link
8967 */
8968 this.arrow = false;
8969 }
8970 /**
8971 * Set to `true` to disable the link.
8972 * @param {?} disabled
8973 * @return {?}
8974 */
8975 set disabled(disabled) {
8976 this._disabled = disabled;
8977 this.tabindex = this.disabled ? -1 : null;
8978 }
8979 /**
8980 * @return {?}
8981 */
8982 get disabled() {
8983 return this._disabled;
8984 }
8985 /**
8986 * Set to `true` to display an icon describing an external link (going to a new page)
8987 * @param {?} external
8988 * @return {?}
8989 */
8990 set external(external) {
8991 this._external = external;
8992 this.target = this.external ? '_blank' : null;
8993 this.ref = this.external ? 'noopener' : null;
8994 }
8995 /**
8996 * @return {?}
8997 */
8998 get external() {
8999 return this._external;
9000 }
9001 /**
9002 * @return {?}
9003 */
9004 ngOnInit() {
9005 if (this.arrow || this.external) {
9006 /** @type {?} */
9007 const child = document.createElement('span');
9008 child.className = 'link__icon';
9009 if (this.arrow) {
9010 child.className += ' link__icon--arrow';
9011 child.innerHTML = arrowImg;
9012 }
9013 if (this.external) {
9014 child.innerHTML = externalImg;
9015 }
9016 this.renderer.appendChild(this.elementRef.nativeElement, child);
9017 }
9018 }
9019}
9020Link.decorators = [
9021 { type: Directive, args: [{
9022 selector: '[sukaLink]'
9023 },] }
9024];
9025/** @nocollapse */
9026Link.ctorParameters = () => [
9027 { type: ElementRef },
9028 { type: Renderer2 },
9029 { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
9030];
9031Link.propDecorators = {
9032 baseClass: [{ type: HostBinding, args: ['class.link',] }],
9033 tabindex: [{ type: HostBinding, args: ['attr.tabindex',] }],
9034 target: [{ type: HostBinding, args: ['attr.target',] }],
9035 ref: [{ type: HostBinding, args: ['attr.ref',] }],
9036 disabled: [{ type: Input }, { type: HostBinding, args: ['attr.aria-disabled',] }, { type: HostBinding, args: ['class.link--disabled',] }],
9037 arrow: [{ type: HostBinding, args: ['class.link--arrow',] }, { type: Input }],
9038 external: [{ type: Input }, { type: HostBinding, args: ['class.link--external',] }]
9039};
9040if (false) {
9041 /** @type {?} */
9042 Link.prototype.baseClass;
9043 /**
9044 * Automatically set to `-1` when link is disabled.
9045 * @type {?}
9046 */
9047 Link.prototype.tabindex;
9048 /**
9049 * Set target and ref for external links
9050 * @type {?}
9051 */
9052 Link.prototype.target;
9053 /** @type {?} */
9054 Link.prototype.ref;
9055 /**
9056 * @type {?}
9057 * @private
9058 */
9059 Link.prototype._disabled;
9060 /**
9061 * Set to `true` to display an arrow next to the link
9062 * @type {?}
9063 */
9064 Link.prototype.arrow;
9065 /**
9066 * @type {?}
9067 * @private
9068 */
9069 Link.prototype._external;
9070 /**
9071 * @type {?}
9072 * @private
9073 */
9074 Link.prototype.elementRef;
9075 /**
9076 * @type {?}
9077 * @private
9078 */
9079 Link.prototype.renderer;
9080 /**
9081 * @type {?}
9082 * @private
9083 */
9084 Link.prototype.document;
9085}
9086
9087/**
9088 * @fileoverview added by tsickle
9089 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
9090 */
9091class LinkModule {
9092}
9093LinkModule.decorators = [
9094 { type: NgModule, args: [{
9095 declarations: [
9096 Link
9097 ],
9098 exports: [
9099 Link
9100 ],
9101 imports: [
9102 CommonModule
9103 ]
9104 },] }
9105];
9106
9107/**
9108 * @fileoverview added by tsickle
9109 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
9110 */
9111// tslint:disable-next-line: component-class-suffix
9112class InputGroup {
9113 constructor() {
9114 this.containerClass = true;
9115 /**
9116 * Set to `true` for an invalid input group component.
9117 */
9118 this.invalid = false;
9119 /**
9120 * Set to `true` for a condesned input group component;
9121 */
9122 this.condensed = false;
9123 }
9124 /**
9125 * @param {?} value
9126 * @return {?}
9127 */
9128 isTemplate(value) {
9129 return value instanceof TemplateRef;
9130 }
9131}
9132InputGroup.decorators = [
9133 { type: Component, args: [{
9134 selector: 'suka-input-group',
9135 template: `
9136 <label *ngIf="label" class="label">
9137 <ng-container *ngIf="!isTemplate(label)">{{label}}</ng-container>
9138 <ng-template *ngIf="isTemplate(label)" [ngTemplateOutlet]="label"></ng-template>
9139 </label>
9140 <div *ngIf="helperText" class="form__helper-text">
9141 <ng-container *ngIf="!isTemplate(helperText)">{{helperText}}</ng-container>
9142 <ng-template *ngIf="isTemplate(helperText)" [ngTemplateOutlet]="helperText"></ng-template>
9143 </div>
9144 <div class="input-group-wrapper">
9145 <div
9146 class="input-group-content"
9147 [ngClass]="{
9148 'input-group-content--condensed': condensed
9149 }"
9150 [attr.data-invalid]="(invalid ? true : null)"
9151 >
9152 <ng-content></ng-content>
9153 </div>
9154 <div *ngIf="invalid" class="form-requirement">
9155 <ng-container *ngIf="!isTemplate(invalidText)">{{invalidText}}</ng-container>
9156 <ng-template *ngIf="isTemplate(invalidText)" [ngTemplateOutlet]="invalidText"></ng-template>
9157 </div>
9158 </div>
9159 `
9160 }] }
9161];
9162InputGroup.propDecorators = {
9163 containerClass: [{ type: HostBinding, args: ['class.form-item',] }],
9164 invalid: [{ type: Input }],
9165 label: [{ type: Input }],
9166 helperText: [{ type: Input }],
9167 invalidText: [{ type: Input }],
9168 condensed: [{ type: Input }]
9169};
9170if (false) {
9171 /** @type {?} */
9172 InputGroup.prototype.containerClass;
9173 /**
9174 * Set to `true` for an invalid input group component.
9175 * @type {?}
9176 */
9177 InputGroup.prototype.invalid;
9178 /**
9179 * Sets the text inside the `label` tag.
9180 * @type {?}
9181 */
9182 InputGroup.prototype.label;
9183 /**
9184 * Sets the optional helper text.
9185 * @type {?}
9186 */
9187 InputGroup.prototype.helperText;
9188 /**
9189 * Sets the invalid text.
9190 * @type {?}
9191 */
9192 InputGroup.prototype.invalidText;
9193 /**
9194 * Set to `true` for a condesned input group component;
9195 * @type {?}
9196 */
9197 InputGroup.prototype.condensed;
9198}
9199
9200/**
9201 * @fileoverview added by tsickle
9202 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
9203 */
9204class InputGroupItem {
9205 constructor() {
9206 this.type = 'default';
9207 this.baseClass = true;
9208 this.auto = false;
9209 this.full = false;
9210 }
9211 /**
9212 * @return {?}
9213 */
9214 ngOnChanges() {
9215 this.auto = this.full = false;
9216 switch (this.type) {
9217 case 'auto':
9218 this.auto = true;
9219 break;
9220 case 'full':
9221 this.full = true;
9222 break;
9223 default: break;
9224 }
9225 }
9226}
9227InputGroupItem.decorators = [
9228 { type: Directive, args: [{
9229 selector: '[sukaInputGroupItem]'
9230 },] }
9231];
9232InputGroupItem.propDecorators = {
9233 type: [{ type: Input, args: ['sukaInputGroupItem',] }],
9234 baseClass: [{ type: HostBinding, args: ['class.input-group__item',] }],
9235 auto: [{ type: HostBinding, args: ['class.input-group__item--auto',] }],
9236 full: [{ type: HostBinding, args: ['class.input-group__item--full',] }]
9237};
9238if (false) {
9239 /** @type {?} */
9240 InputGroupItem.prototype.type;
9241 /** @type {?} */
9242 InputGroupItem.prototype.baseClass;
9243 /** @type {?} */
9244 InputGroupItem.prototype.auto;
9245 /** @type {?} */
9246 InputGroupItem.prototype.full;
9247}
9248
9249/**
9250 * @fileoverview added by tsickle
9251 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
9252 */
9253class InputGroupModule {
9254}
9255InputGroupModule.decorators = [
9256 { type: NgModule, args: [{
9257 declarations: [
9258 InputGroup,
9259 InputGroupItem,
9260 ],
9261 exports: [
9262 InputGroup,
9263 InputGroupItem,
9264 ],
9265 imports: [
9266 CommonModule,
9267 ]
9268 },] }
9269];
9270
9271/**
9272 * @fileoverview added by tsickle
9273 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
9274 */
9275class ModalRef {
9276 /**
9277 * @param {?} overlayRef
9278 */
9279 constructor(overlayRef) {
9280 this.overlayRef = overlayRef;
9281 this._beforeClose = new Subject();
9282 this._afterClosed = new Subject();
9283 }
9284 /**
9285 * @param {?=} data
9286 * @return {?}
9287 */
9288 close(data) {
9289 this._result = data;
9290 // Listen for animation 'start' events
9291 this.componentInstance.animationStateChanged.pipe(filter((/**
9292 * @param {?} event
9293 * @return {?}
9294 */
9295 event => event.phaseName === 'start')), take(1)).subscribe((/**
9296 * @return {?}
9297 */
9298 () => {
9299 this._beforeClose.next(this._result);
9300 this._beforeClose.complete();
9301 this.overlayRef.detachBackdrop();
9302 }));
9303 // Listen for animation 'done' events
9304 this.componentInstance.animationStateChanged.pipe(filter((/**
9305 * @param {?} event
9306 * @return {?}
9307 */
9308 event => event.phaseName === 'done' && event.toState === 'leave')), take(1)).subscribe((/**
9309 * @return {?}
9310 */
9311 () => {
9312 this._afterClosed.next(this._result);
9313 this._afterClosed.complete();
9314 this.overlayRef.dispose();
9315 // Make sure to also clear the reference to the
9316 // component instance to avoid memory leaks
9317 // tslint:disable-next-line: no-non-null-assertion
9318 this.componentInstance = (/** @type {?} */ (null));
9319 }));
9320 // Start exit animation
9321 this.componentInstance.startExitAnimation();
9322 }
9323 /**
9324 * @return {?}
9325 */
9326 afterClosed() {
9327 return this._afterClosed.asObservable();
9328 }
9329 /**
9330 * @return {?}
9331 */
9332 beforeClose() {
9333 return this._beforeClose.asObservable();
9334 }
9335}
9336if (false) {
9337 /** @type {?} */
9338 ModalRef.prototype.componentInstance;
9339 /**
9340 * @type {?}
9341 * @private
9342 */
9343 ModalRef.prototype._beforeClose;
9344 /**
9345 * @type {?}
9346 * @private
9347 */
9348 ModalRef.prototype._afterClosed;
9349 /**
9350 * @type {?}
9351 * @private
9352 */
9353 ModalRef.prototype._result;
9354 /**
9355 * @type {?}
9356 * @private
9357 */
9358 ModalRef.prototype.overlayRef;
9359}
9360
9361/**
9362 * @fileoverview added by tsickle
9363 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
9364 */
9365/** @type {?} */
9366const MODAL_CONTENT_DATA = new InjectionToken('MODAL_CONTENT_DATA');
9367
9368/**
9369 * @fileoverview added by tsickle
9370 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
9371 */
9372/** @type {?} */
9373const ESCAPE_KEY = 27;
9374/** @type {?} */
9375const MODAL_ANIMATION_TIMINGS = '200ms cubic-bezier(0.64, 0, 0.35, 1)';
9376class ModalContainer {
9377 /**
9378 * @param {?} dialogRef
9379 * @param {?} content
9380 */
9381 constructor(dialogRef, content) {
9382 this.dialogRef = dialogRef;
9383 this.content = content;
9384 this.animationState = 'enter';
9385 this.animationStateChanged = new EventEmitter();
9386 this.showFooter = false;
9387 this.baseClass = true;
9388 }
9389 /**
9390 * @return {?}
9391 */
9392 ngOnInit() {
9393 if (this.content.actions && this.content.actions.length > 0) {
9394 this.showFooter = true;
9395 this.primaryActions = this.content.actions.filter((/**
9396 * @param {?} action
9397 * @return {?}
9398 */
9399 (action) => action.type === 'primary'));
9400 this.secondaryActions = this.content.actions.filter((/**
9401 * @param {?} action
9402 * @return {?}
9403 */
9404 (action) => action.type === 'secondary'));
9405 }
9406 }
9407 /**
9408 * @param {?} value
9409 * @return {?}
9410 */
9411 isTemplate(value) {
9412 return value instanceof TemplateRef;
9413 }
9414 /**
9415 * @param {?=} event
9416 * @return {?}
9417 */
9418 onClose(event) {
9419 this.dialogRef.close('cancel');
9420 }
9421 /**
9422 * @param {?} tag
9423 * @return {?}
9424 */
9425 onAction(tag) {
9426 this.dialogRef.close(tag);
9427 }
9428 /**
9429 * @param {?} event
9430 * @return {?}
9431 */
9432 handleKeydown(event) {
9433 // tslint:disable-next-line: deprecation
9434 if (event.keyCode === ESCAPE_KEY) {
9435 this.dialogRef.close('cancel');
9436 }
9437 }
9438 /**
9439 * @param {?} event
9440 * @return {?}
9441 */
9442 onAnimationStart(event) {
9443 this.animationStateChanged.emit(event);
9444 }
9445 /**
9446 * @param {?} event
9447 * @return {?}
9448 */
9449 onAnimationDone(event) {
9450 this.animationStateChanged.emit(event);
9451 }
9452 /**
9453 * @return {?}
9454 */
9455 startExitAnimation() {
9456 this.animationState = 'leave';
9457 }
9458 /**
9459 * @param {?} $event
9460 * @return {?}
9461 */
9462 closeModal($event) {
9463 this.dialogRef.close($event);
9464 }
9465}
9466ModalContainer.decorators = [
9467 { type: Component, args: [{
9468 selector: 'suka-modal',
9469 template: `
9470 <div class="modal"
9471 [@slideContent]="animationState"
9472 (@slideContent.start)="onAnimationStart($event)"
9473 (@slideContent.done)="onAnimationDone($event)"
9474 cdkTrapFocus
9475 >
9476 <div class="modal__header">
9477 <h5>
9478 <ng-container *ngIf="!isTemplate(content.title)">{{content.title}}</ng-container>
9479 <ng-template *ngIf="isTemplate(content.title)" [ngTemplateOutlet]="content.title"></ng-template>
9480 </h5>
9481 <button
9482 *ngIf="content.closeButton"
9483 sukaButton="plain"
9484 (click)="onClose($event)"
9485 >
9486 <suka-icon icon="x"></suka-icon>
9487 </button>
9488 </div>
9489 <div class="modal__content">
9490 <ng-container *ngIf="!isTemplate(content.body)">{{content.body}}</ng-container>
9491 <ng-container *ngIf="isTemplate(content.body)">
9492 <ng-container
9493 *ngTemplateOutlet="content.body; context: {closeModal: closeModal.bind(this)}"
9494 ></ng-container>
9495 </ng-container>
9496 </div>
9497 <div class="modal__footer" *ngIf="showFooter">
9498 <suka-button-group>
9499 <button
9500 *ngFor="let secondaryAction of secondaryActions"
9501 sukaButton="plain"
9502 (click)="onAction(secondaryAction.tag)"
9503 >
9504 {{secondaryAction.label}}
9505 </button>
9506 <button
9507 *ngFor="let primaryAction of primaryActions"
9508 sukaButton="primary"
9509 (click)="onAction(primaryAction.tag)"
9510 >
9511 {{primaryAction.label}}
9512 </button>
9513 </suka-button-group>
9514 </div>
9515 </div>
9516 `,
9517 animations: [
9518 trigger('slideContent', [
9519 state('void', style({ transform: 'translate3d(0, 20rem, 0)', opacity: 0 })),
9520 state('enter', style({ transform: 'none', opacity: 1 })),
9521 state('leave', style({ transform: 'translate3d(0, 20rem, 0)', opacity: 0 })),
9522 transition('* => *', animate(MODAL_ANIMATION_TIMINGS)),
9523 ])
9524 ]
9525 }] }
9526];
9527/** @nocollapse */
9528ModalContainer.ctorParameters = () => [
9529 { type: ModalRef },
9530 { type: undefined, decorators: [{ type: Inject, args: [MODAL_CONTENT_DATA,] }] }
9531];
9532ModalContainer.propDecorators = {
9533 baseClass: [{ type: HostBinding, args: ['class.modal--default',] }],
9534 handleKeydown: [{ type: HostListener, args: ['document:keydown', ['$event'],] }]
9535};
9536if (false) {
9537 /** @type {?} */
9538 ModalContainer.prototype.animationState;
9539 /** @type {?} */
9540 ModalContainer.prototype.animationStateChanged;
9541 /** @type {?} */
9542 ModalContainer.prototype.showFooter;
9543 /** @type {?} */
9544 ModalContainer.prototype.primaryActions;
9545 /** @type {?} */
9546 ModalContainer.prototype.secondaryActions;
9547 /** @type {?} */
9548 ModalContainer.prototype.baseClass;
9549 /** @type {?} */
9550 ModalContainer.prototype.dialogRef;
9551 /** @type {?} */
9552 ModalContainer.prototype.content;
9553}
9554
9555/**
9556 * @fileoverview added by tsickle
9557 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
9558 */
9559/**
9560 * @record
9561 */
9562function ModalContent() { }
9563if (false) {
9564 /** @type {?|undefined} */
9565 ModalContent.prototype.title;
9566 /** @type {?|undefined} */
9567 ModalContent.prototype.body;
9568 /** @type {?|undefined} */
9569 ModalContent.prototype.closeButton;
9570 /** @type {?|undefined} */
9571 ModalContent.prototype.actions;
9572}
9573/**
9574 * @record
9575 */
9576function ModalConfig() { }
9577if (false) {
9578 /** @type {?|undefined} */
9579 ModalConfig.prototype.closeOnBackdropClick;
9580 /** @type {?|undefined} */
9581 ModalConfig.prototype.panelClass;
9582 /** @type {?|undefined} */
9583 ModalConfig.prototype.hasBackdrop;
9584 /** @type {?|undefined} */
9585 ModalConfig.prototype.backdropClass;
9586 /** @type {?|undefined} */
9587 ModalConfig.prototype.content;
9588}
9589/** @type {?} */
9590const DEFAULT_CONFIG = {
9591 closeOnBackdropClick: true,
9592 hasBackdrop: true,
9593 backdropClass: 'backdrop--dark',
9594 panelClass: 'modal--default',
9595 content: null
9596};
9597class ModalService {
9598 /**
9599 * @param {?} injector
9600 * @param {?} overlay
9601 */
9602 constructor(injector, overlay) {
9603 this.injector = injector;
9604 this.overlay = overlay;
9605 }
9606 /**
9607 * @param {?=} config
9608 * @return {?}
9609 */
9610 open(config = {}) {
9611 // Override default configuration
9612 /** @type {?} */
9613 const dialogConfig = Object.assign({}, DEFAULT_CONFIG, config);
9614 // Returns an OverlayRef which is a PortalHost
9615 /** @type {?} */
9616 const overlayRef = this.createOverlay(dialogConfig);
9617 // Instantiate remote control
9618 /** @type {?} */
9619 const modalRef = new ModalRef(overlayRef);
9620 /** @type {?} */
9621 const overlayComponent = this.attachModalContainer(overlayRef, dialogConfig, modalRef);
9622 modalRef.componentInstance = overlayComponent;
9623 if (dialogConfig.closeOnBackdropClick) {
9624 overlayRef.backdropClick().subscribe((/**
9625 * @param {?} _
9626 * @return {?}
9627 */
9628 _ => modalRef.close('cancel')));
9629 }
9630 return modalRef;
9631 }
9632 /**
9633 * @private
9634 * @param {?} config
9635 * @return {?}
9636 */
9637 createOverlay(config) {
9638 /** @type {?} */
9639 const overlayConfig = this.getOverlayConfig(config);
9640 return this.overlay.create(overlayConfig);
9641 }
9642 /**
9643 * @private
9644 * @param {?} overlayRef
9645 * @param {?} config
9646 * @param {?} modalRef
9647 * @return {?}
9648 */
9649 attachModalContainer(overlayRef, config, modalRef) {
9650 /** @type {?} */
9651 const injector = this.createInjector(config, modalRef);
9652 /** @type {?} */
9653 const containerPortal = new ComponentPortal(ModalContainer, null, injector);
9654 /** @type {?} */
9655 const containerRef = overlayRef.attach(containerPortal);
9656 return containerRef.instance;
9657 }
9658 /**
9659 * @private
9660 * @param {?} config
9661 * @param {?} modalRef
9662 * @return {?}
9663 */
9664 createInjector(config, modalRef) {
9665 /** @type {?} */
9666 const injectionTokens = new WeakMap();
9667 injectionTokens.set(ModalRef, modalRef);
9668 injectionTokens.set(MODAL_CONTENT_DATA, config.content);
9669 return new PortalInjector(this.injector, injectionTokens);
9670 }
9671 /**
9672 * @private
9673 * @param {?} config
9674 * @return {?}
9675 */
9676 getOverlayConfig(config) {
9677 /** @type {?} */
9678 const positionStrategy = this.overlay.position()
9679 .global()
9680 .centerHorizontally()
9681 .centerVertically();
9682 /** @type {?} */
9683 const overlayConfig = new OverlayConfig({
9684 hasBackdrop: config.hasBackdrop,
9685 backdropClass: config.backdropClass,
9686 panelClass: config.panelClass,
9687 scrollStrategy: this.overlay.scrollStrategies.block(),
9688 positionStrategy
9689 });
9690 return overlayConfig;
9691 }
9692}
9693ModalService.decorators = [
9694 { type: Injectable }
9695];
9696/** @nocollapse */
9697ModalService.ctorParameters = () => [
9698 { type: Injector },
9699 { type: Overlay }
9700];
9701if (false) {
9702 /**
9703 * @type {?}
9704 * @private
9705 */
9706 ModalService.prototype.injector;
9707 /**
9708 * @type {?}
9709 * @private
9710 */
9711 ModalService.prototype.overlay;
9712}
9713
9714/**
9715 * @fileoverview added by tsickle
9716 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
9717 */
9718/** @type {?} */
9719const PRIMARY_ACTION_TAG = 'primaryAction';
9720/** @type {?} */
9721const SECONDARY_ACTION_TAG = 'secondaryAction';
9722/**
9723 * Modals are overlays that prevent users from interacting with the rest of the application until a specific action is taken. They can be disruptive because they require users to take an action before they can continue interacting with the rest of the application.
9724 * It should be used thoughtfully and sparingly.
9725 */
9726class ModalDirective {
9727 /**
9728 * @param {?} modalService
9729 */
9730 constructor(modalService) {
9731 this.modalService = modalService;
9732 /**
9733 * Set to `true` to show a close button on the top right corner. Defaults to `false`.
9734 */
9735 this.closeButton = false;
9736 /**
9737 * Sets to `false` to stop the modal from closing when the user clicks on the backdrop. Defaults to `true`.
9738 */
9739 this.closeOnBackdropClick = true;
9740 /**
9741 * Callback when the modal closes.
9742 */
9743 this.close = new EventEmitter();
9744 /**
9745 * Callback when the secondary action is triggered.
9746 */
9747 this.secondaryAction = new EventEmitter();
9748 /**
9749 * Callback when the primary action is triggered.
9750 */
9751 this.primaryAction = new EventEmitter();
9752 }
9753 /**
9754 * @return {?}
9755 */
9756 onClick() {
9757 this.openModal();
9758 }
9759 /**
9760 * Opens the modal.
9761 * @private
9762 * @return {?}
9763 */
9764 openModal() {
9765 /** @type {?} */
9766 const modalConfig = {
9767 closeOnBackdropClick: this.closeOnBackdropClick,
9768 content: {
9769 closeButton: this.closeButton,
9770 title: this.title,
9771 body: this.body,
9772 }
9773 };
9774 if (this.primaryActionLabel || this.secondaryActionLabel) {
9775 modalConfig.content.actions = [];
9776 if (this.primaryActionLabel) {
9777 modalConfig.content.actions.push({
9778 label: this.primaryActionLabel,
9779 type: 'primary',
9780 tag: PRIMARY_ACTION_TAG
9781 });
9782 }
9783 if (this.secondaryActionLabel) {
9784 modalConfig.content.actions.push({
9785 label: this.secondaryActionLabel,
9786 type: 'secondary',
9787 tag: SECONDARY_ACTION_TAG
9788 });
9789 }
9790 }
9791 /** @type {?} */
9792 const modalRef = this.modalService.open(modalConfig);
9793 modalRef.afterClosed().subscribe((/**
9794 * @param {?} result
9795 * @return {?}
9796 */
9797 (result) => {
9798 switch (result) {
9799 case PRIMARY_ACTION_TAG:
9800 if (this.primaryAction.observers.length > 0) {
9801 this.primaryAction.emit(result);
9802 }
9803 break;
9804 case SECONDARY_ACTION_TAG:
9805 if (this.secondaryAction.observers.length > 0) {
9806 this.secondaryAction.emit(result);
9807 }
9808 break;
9809 default:
9810 if (this.close.observers.length > 0) {
9811 this.close.emit();
9812 }
9813 break;
9814 }
9815 }));
9816 }
9817}
9818ModalDirective.decorators = [
9819 { type: Directive, args: [{
9820 selector: '[sukaModal]'
9821 },] }
9822];
9823/** @nocollapse */
9824ModalDirective.ctorParameters = () => [
9825 { type: ModalService }
9826];
9827ModalDirective.propDecorators = {
9828 closeButton: [{ type: Input, args: ['modalCloseButton',] }],
9829 title: [{ type: Input, args: ['modalTitle',] }],
9830 body: [{ type: Input, args: ['modalBody',] }],
9831 closeOnBackdropClick: [{ type: Input, args: ['modalCloseOnBackdropClick',] }],
9832 close: [{ type: Output, args: ['modalClose',] }],
9833 secondaryActionLabel: [{ type: Input, args: ['modalSecondaryActionLabel',] }],
9834 secondaryAction: [{ type: Output, args: ['modalSecondaryAction',] }],
9835 primaryActionLabel: [{ type: Input, args: ['modalPrimaryActionLabel',] }],
9836 primaryAction: [{ type: Output, args: ['modalPrimaryAction',] }],
9837 onClick: [{ type: HostListener, args: ['click',] }]
9838};
9839if (false) {
9840 /**
9841 * Set to `true` to show a close button on the top right corner. Defaults to `false`.
9842 * @type {?}
9843 */
9844 ModalDirective.prototype.closeButton;
9845 /**
9846 * Sets the modal title.
9847 * @type {?}
9848 */
9849 ModalDirective.prototype.title;
9850 /**
9851 * Sets the body of the modal.
9852 * @type {?}
9853 */
9854 ModalDirective.prototype.body;
9855 /**
9856 * Sets to `false` to stop the modal from closing when the user clicks on the backdrop. Defaults to `true`.
9857 * @type {?}
9858 */
9859 ModalDirective.prototype.closeOnBackdropClick;
9860 /**
9861 * Callback when the modal closes.
9862 * @type {?}
9863 */
9864 ModalDirective.prototype.close;
9865 /**
9866 * Sets the modal secondary action button label.
9867 * @type {?}
9868 */
9869 ModalDirective.prototype.secondaryActionLabel;
9870 /**
9871 * Callback when the secondary action is triggered.
9872 * @type {?}
9873 */
9874 ModalDirective.prototype.secondaryAction;
9875 /**
9876 * Sets the modal primary action button label.
9877 * @type {?}
9878 */
9879 ModalDirective.prototype.primaryActionLabel;
9880 /**
9881 * Callback when the primary action is triggered.
9882 * @type {?}
9883 */
9884 ModalDirective.prototype.primaryAction;
9885 /**
9886 * @type {?}
9887 * @protected
9888 */
9889 ModalDirective.prototype.modalService;
9890}
9891
9892/**
9893 * @fileoverview added by tsickle
9894 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
9895 */
9896class ModalModule {
9897}
9898ModalModule.decorators = [
9899 { type: NgModule, args: [{
9900 declarations: [
9901 ModalContainer,
9902 ModalDirective,
9903 ],
9904 exports: [
9905 ModalContainer,
9906 ModalDirective,
9907 ],
9908 imports: [
9909 CommonModule,
9910 OverlayModule,
9911 ButtonModule,
9912 IconModule,
9913 ],
9914 entryComponents: [
9915 ModalContainer
9916 ],
9917 providers: [
9918 ModalService,
9919 ],
9920 },] }
9921];
9922
9923/**
9924 * @fileoverview added by tsickle
9925 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
9926 */
9927/** @type {?} */
9928const POPOVER_CONTENT_DATA = new InjectionToken('POPOVER_CONTENT_DATA');
9929
9930/**
9931 * @fileoverview added by tsickle
9932 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
9933 */
9934class PopoverRef {
9935 /**
9936 * @param {?} overlayRef
9937 */
9938 constructor(overlayRef) {
9939 this.overlayRef = overlayRef;
9940 this._beforeClose = new Subject();
9941 this._afterClosed = new Subject();
9942 }
9943 /**
9944 * @param {?=} data
9945 * @return {?}
9946 */
9947 close(data) {
9948 this._result = data;
9949 // Listen for animation 'start' events
9950 this.componentInstance.animationStateChanged.pipe(filter((/**
9951 * @param {?} event
9952 * @return {?}
9953 */
9954 event => event.phaseName === 'start')), take(1)).subscribe((/**
9955 * @return {?}
9956 */
9957 () => {
9958 this._beforeClose.next(this._result);
9959 this._beforeClose.complete();
9960 this.overlayRef.detachBackdrop();
9961 }));
9962 // Listen for animation 'done' events
9963 this.componentInstance.animationStateChanged.pipe(filter((/**
9964 * @param {?} event
9965 * @return {?}
9966 */
9967 event => event.phaseName === 'done' && event.toState === 'leave')), take(1)).subscribe((/**
9968 * @return {?}
9969 */
9970 () => {
9971 this._afterClosed.next(this._result);
9972 this._afterClosed.complete();
9973 this.overlayRef.dispose();
9974 // Make sure to also clear the reference to the
9975 // component instance to avoid memory leaks
9976 // tslint:disable-next-line: no-non-null-assertion
9977 this.componentInstance = (/** @type {?} */ (null));
9978 }));
9979 // Start exit animation
9980 this.componentInstance.startExitAnimation();
9981 }
9982 /**
9983 * @return {?}
9984 */
9985 afterClosed() {
9986 return this._afterClosed.asObservable();
9987 }
9988 /**
9989 * @return {?}
9990 */
9991 beforeClose() {
9992 return this._beforeClose.asObservable();
9993 }
9994}
9995if (false) {
9996 /** @type {?} */
9997 PopoverRef.prototype.componentInstance;
9998 /**
9999 * @type {?}
10000 * @private
10001 */
10002 PopoverRef.prototype._beforeClose;
10003 /**
10004 * @type {?}
10005 * @private
10006 */
10007 PopoverRef.prototype._afterClosed;
10008 /**
10009 * @type {?}
10010 * @private
10011 */
10012 PopoverRef.prototype._result;
10013 /**
10014 * @type {?}
10015 * @private
10016 */
10017 PopoverRef.prototype.overlayRef;
10018}
10019
10020/**
10021 * @fileoverview added by tsickle
10022 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10023 */
10024/** @type {?} */
10025const ESCAPE_KEY$1 = 27;
10026/** @type {?} */
10027const POPOVER_ANIMATION_TIMINGS = '200ms cubic-bezier(0.64, 0, 0.35, 1)';
10028class PopoverContainer {
10029 /**
10030 * @param {?} popoverRef
10031 * @param {?} content
10032 */
10033 constructor(popoverRef, content) {
10034 this.popoverRef = popoverRef;
10035 this.content = content;
10036 this.animationState = 'enter';
10037 this.animationStateChanged = new EventEmitter();
10038 this.renderMethod = 'component';
10039 this.position = 'bottom';
10040 this.sectioned = false;
10041 }
10042 /**
10043 * @return {?}
10044 */
10045 ngOnInit() {
10046 if (typeof this.content.body === 'string') {
10047 this.renderMethod = 'text';
10048 }
10049 if (this.content.body instanceof TemplateRef) {
10050 this.renderMethod = 'template';
10051 }
10052 if (this.content.sectioned) {
10053 this.sectioned = true;
10054 }
10055 }
10056 /**
10057 * @param {?} $event
10058 * @return {?}
10059 */
10060 closePopover($event) {
10061 this.popoverRef.close($event);
10062 }
10063 /**
10064 * @param {?} event
10065 * @return {?}
10066 */
10067 handleKeydown(event) {
10068 // tslint:disable-next-line: deprecation
10069 if (event.keyCode === ESCAPE_KEY$1) {
10070 this.popoverRef.close();
10071 }
10072 }
10073 /**
10074 * @param {?} event
10075 * @return {?}
10076 */
10077 onAnimationStart(event) {
10078 this.animationStateChanged.emit(event);
10079 }
10080 /**
10081 * @param {?} event
10082 * @return {?}
10083 */
10084 onAnimationDone(event) {
10085 this.animationStateChanged.emit(event);
10086 }
10087 /**
10088 * @return {?}
10089 */
10090 startExitAnimation() {
10091 this.animationState = 'leave';
10092 }
10093}
10094PopoverContainer.decorators = [
10095 { type: Component, args: [{
10096 selector: 'suka-popover',
10097 template: `
10098 <div
10099 [@popover]="animationState"
10100 (@popover.start)="onAnimationStart($event)"
10101 (@popover.done)="onAnimationDone($event)"
10102 cdkTrapFocus
10103 class="popover popover-{{position}}"
10104 role="dialog"
10105 >
10106 <suka-popover-section
10107 *ngIf="(sectioned !== false)
10108 else elseTpl"
10109 >
10110 <ng-container *ngTemplateOutlet="elseTpl"></ng-container>
10111 </suka-popover-section>
10112 </div>
10113
10114 <ng-template #elseTpl>
10115 <ng-container [ngSwitch]="renderMethod">
10116 <div *ngSwitchCase="'text'" [innerHTML]="content.body"></div>
10117 <ng-container *ngSwitchCase="'template'">
10118 <ng-container *ngTemplateOutlet="content.body; context: {closePopover: closePopover.bind(this)}"></ng-container>
10119 </ng-container>
10120 <ng-container *ngSwitchCase="'component'">
10121 <ng-container *ngComponentOutlet="content.body"></ng-container>
10122 </ng-container>
10123 </ng-container>
10124 </ng-template>
10125 `,
10126 animations: [
10127 trigger('popover', [
10128 state('void', style({ transform: 'scale(.9)', opacity: 0 })),
10129 state('enter', style({ transform: 'none', opacity: 1 })),
10130 state('leave', style({ transform: 'scale(.8)', opacity: 0 })),
10131 transition('* => *', animate(POPOVER_ANIMATION_TIMINGS)),
10132 ]),
10133 ]
10134 }] }
10135];
10136/** @nocollapse */
10137PopoverContainer.ctorParameters = () => [
10138 { type: PopoverRef },
10139 { type: undefined, decorators: [{ type: Inject, args: [POPOVER_CONTENT_DATA,] }] }
10140];
10141PopoverContainer.propDecorators = {
10142 position: [{ type: Input }],
10143 sectioned: [{ type: Input }],
10144 handleKeydown: [{ type: HostListener, args: ['document:keydown', ['$event'],] }]
10145};
10146if (false) {
10147 /** @type {?} */
10148 PopoverContainer.prototype.animationState;
10149 /** @type {?} */
10150 PopoverContainer.prototype.animationStateChanged;
10151 /** @type {?} */
10152 PopoverContainer.prototype.renderMethod;
10153 /** @type {?} */
10154 PopoverContainer.prototype.position;
10155 /** @type {?} */
10156 PopoverContainer.prototype.sectioned;
10157 /** @type {?} */
10158 PopoverContainer.prototype.popoverRef;
10159 /** @type {?} */
10160 PopoverContainer.prototype.content;
10161}
10162
10163/**
10164 * @fileoverview added by tsickle
10165 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10166 */
10167/** @type {?} */
10168const positions$1 = {
10169 bottom: {
10170 originY: 'bottom',
10171 overlayY: 'top',
10172 offsetY: 4,
10173 },
10174 top: {
10175 originY: 'top',
10176 overlayY: 'bottom',
10177 offsetY: -4,
10178 }
10179};
10180/** @type {?} */
10181const alignments = {
10182 left: {
10183 originX: 'start',
10184 overlayX: 'start',
10185 },
10186 right: {
10187 originX: 'end',
10188 overlayX: 'end',
10189 },
10190 center: {
10191 originX: 'center',
10192 overlayX: 'center',
10193 }
10194};
10195/**
10196 * @record
10197 */
10198function PopoverConfig() { }
10199if (false) {
10200 /** @type {?|undefined} */
10201 PopoverConfig.prototype.content;
10202 /** @type {?} */
10203 PopoverConfig.prototype.position;
10204 /** @type {?} */
10205 PopoverConfig.prototype.alignment;
10206}
10207/** @type {?} */
10208const DEFAULT_CONFIG$1 = {
10209 content: null,
10210 position: 'bottom',
10211 alignment: 'left',
10212};
10213class PopoverService {
10214 /**
10215 * @param {?} injector
10216 * @param {?} overlay
10217 * @param {?} overlayPositionBuilder
10218 */
10219 constructor(injector, overlay, overlayPositionBuilder) {
10220 this.injector = injector;
10221 this.overlay = overlay;
10222 this.overlayPositionBuilder = overlayPositionBuilder;
10223 }
10224 /**
10225 * @param {?=} config
10226 * @param {?=} target
10227 * @return {?}
10228 */
10229 open(config = DEFAULT_CONFIG$1, target) {
10230 // Override default configuration
10231 /** @type {?} */
10232 const popoverConfig = Object.assign({}, DEFAULT_CONFIG$1, config);
10233 // Returns an OverlayRef which is a PortalHost
10234 /** @type {?} */
10235 const overlayRef = this.createOverlay(popoverConfig, target);
10236 // Instantiate remote control
10237 /** @type {?} */
10238 const popoverRef = new PopoverRef(overlayRef);
10239 /** @type {?} */
10240 const overlayComponent = this.attachPopoverContainer(overlayRef, popoverConfig, popoverRef);
10241 popoverRef.componentInstance = overlayComponent;
10242 overlayRef.backdropClick().subscribe((/**
10243 * @param {?} _
10244 * @return {?}
10245 */
10246 _ => popoverRef.close()));
10247 return popoverRef;
10248 }
10249 /**
10250 * @private
10251 * @param {?} config
10252 * @param {?} target
10253 * @return {?}
10254 */
10255 createOverlay(config, target) {
10256 /** @type {?} */
10257 const overlayConfig = this.getOverlayConfig(config, target);
10258 return this.overlay.create(overlayConfig);
10259 }
10260 /**
10261 * @private
10262 * @param {?} overlayRef
10263 * @param {?} config
10264 * @param {?} popoverRef
10265 * @return {?}
10266 */
10267 attachPopoverContainer(overlayRef, config, popoverRef) {
10268 /** @type {?} */
10269 const injector = this.createInjector(config, popoverRef);
10270 /** @type {?} */
10271 const containerPortal = new ComponentPortal(PopoverContainer, null, injector);
10272 /** @type {?} */
10273 const containerRef = overlayRef.attach(containerPortal);
10274 return containerRef.instance;
10275 }
10276 /**
10277 * @private
10278 * @param {?} config
10279 * @param {?} popoverRef
10280 * @return {?}
10281 */
10282 createInjector(config, popoverRef) {
10283 /** @type {?} */
10284 const injectionTokens = new WeakMap();
10285 injectionTokens.set(PopoverRef, popoverRef);
10286 injectionTokens.set(POPOVER_CONTENT_DATA, config.content);
10287 return new PortalInjector(this.injector, injectionTokens);
10288 }
10289 /**
10290 * @private
10291 * @param {?} config
10292 * @param {?} target
10293 * @return {?}
10294 */
10295 getOverlayConfig(config, target) {
10296 /** @type {?} */
10297 const positionStrategy = this.overlayPositionBuilder
10298 .flexibleConnectedTo(target)
10299 .withPositions([(/** @type {?} */ (Object.assign({}, positions$1[config.position], alignments[config.alignment])))]);
10300 /** @type {?} */
10301 const overlayConfig = new OverlayConfig({
10302 hasBackdrop: true,
10303 backdropClass: 'cdk-overlay-transparent-backdrop',
10304 scrollStrategy: this.overlay.scrollStrategies.reposition(),
10305 positionStrategy
10306 });
10307 return overlayConfig;
10308 }
10309}
10310PopoverService.decorators = [
10311 { type: Injectable }
10312];
10313/** @nocollapse */
10314PopoverService.ctorParameters = () => [
10315 { type: Injector },
10316 { type: Overlay },
10317 { type: OverlayPositionBuilder }
10318];
10319if (false) {
10320 /**
10321 * @type {?}
10322 * @private
10323 */
10324 PopoverService.prototype.injector;
10325 /**
10326 * @type {?}
10327 * @private
10328 */
10329 PopoverService.prototype.overlay;
10330 /**
10331 * @type {?}
10332 * @private
10333 */
10334 PopoverService.prototype.overlayPositionBuilder;
10335}
10336
10337/**
10338 * @fileoverview added by tsickle
10339 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10340 */
10341class Popover {
10342 /**
10343 * @param {?} popoverService
10344 * @param {?} elementRef
10345 */
10346 constructor(popoverService, elementRef) {
10347 this.popoverService = popoverService;
10348 this.elementRef = elementRef;
10349 this.open = false;
10350 /**
10351 * The `Popover` body
10352 */
10353 this.body = '';
10354 /**
10355 * Sets the vertical position of the popover. Defaults to `bottom`.
10356 */
10357 this.position = 'bottom';
10358 /**
10359 * Sets the horizontal `Popover' alignment. Defaults to `left`.
10360 */
10361 this.alignment = 'left';
10362 /**
10363 * Set to `true` to auto-wrap content in section
10364 */
10365 this.sectioned = false;
10366 }
10367 /**
10368 * @private
10369 * @return {?}
10370 */
10371 show() {
10372 this.popoverRef = this.popoverService.open({
10373 content: {
10374 body: this.body,
10375 sectioned: this.sectioned,
10376 },
10377 position: this.position,
10378 alignment: this.alignment,
10379 }, this.elementRef);
10380 this.open = true;
10381 this.popoverRef.afterClosed().subscribe((/**
10382 * @param {?} result
10383 * @return {?}
10384 */
10385 (result) => {
10386 this.open = false;
10387 }));
10388 }
10389 /**
10390 * @return {?}
10391 */
10392 onClick() {
10393 if (!this.open) {
10394 this.show();
10395 }
10396 }
10397}
10398Popover.decorators = [
10399 { type: Directive, args: [{ selector: '[sukaPopover]' },] }
10400];
10401/** @nocollapse */
10402Popover.ctorParameters = () => [
10403 { type: PopoverService },
10404 { type: ElementRef }
10405];
10406Popover.propDecorators = {
10407 body: [{ type: Input, args: ['sukaPopover',] }],
10408 position: [{ type: Input, args: ['popoverPosition',] }],
10409 alignment: [{ type: Input, args: ['popoverAlignment',] }],
10410 sectioned: [{ type: Input, args: ['popoverSectioned',] }],
10411 onClick: [{ type: HostListener, args: ['click',] }]
10412};
10413if (false) {
10414 /**
10415 * @type {?}
10416 * @private
10417 */
10418 Popover.prototype.popoverRef;
10419 /**
10420 * @type {?}
10421 * @private
10422 */
10423 Popover.prototype.open;
10424 /**
10425 * The `Popover` body
10426 * @type {?}
10427 */
10428 Popover.prototype.body;
10429 /**
10430 * Sets the vertical position of the popover. Defaults to `bottom`.
10431 * @type {?}
10432 */
10433 Popover.prototype.position;
10434 /**
10435 * Sets the horizontal `Popover' alignment. Defaults to `left`.
10436 * @type {?}
10437 */
10438 Popover.prototype.alignment;
10439 /**
10440 * Set to `true` to auto-wrap content in section
10441 * @type {?}
10442 */
10443 Popover.prototype.sectioned;
10444 /**
10445 * @type {?}
10446 * @protected
10447 */
10448 Popover.prototype.popoverService;
10449 /**
10450 * @type {?}
10451 * @private
10452 */
10453 Popover.prototype.elementRef;
10454}
10455
10456/**
10457 * @fileoverview added by tsickle
10458 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10459 */
10460class PopoverSection {
10461 constructor() {
10462 this.baseClass = true;
10463 }
10464}
10465PopoverSection.decorators = [
10466 { type: Component, args: [{
10467 selector: 'suka-popover-section',
10468 template: `
10469 <ng-content></ng-content>
10470 `
10471 }] }
10472];
10473PopoverSection.propDecorators = {
10474 baseClass: [{ type: HostBinding, args: ['class.popover__section',] }]
10475};
10476if (false) {
10477 /** @type {?} */
10478 PopoverSection.prototype.baseClass;
10479}
10480
10481/**
10482 * @fileoverview added by tsickle
10483 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10484 */
10485class PopoverActionList {
10486 constructor() {
10487 this.baseClass = true;
10488 }
10489}
10490PopoverActionList.decorators = [
10491 { type: Component, args: [{
10492 selector: 'suka-popover-action-list',
10493 template: `
10494 <ng-content></ng-content>
10495 `
10496 }] }
10497];
10498PopoverActionList.propDecorators = {
10499 baseClass: [{ type: HostBinding, args: ['class.popover__action-list',] }]
10500};
10501if (false) {
10502 /** @type {?} */
10503 PopoverActionList.prototype.baseClass;
10504}
10505
10506/**
10507 * @fileoverview added by tsickle
10508 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10509 */
10510class PopoverActionItem {
10511 constructor() {
10512 this.baseClass = true;
10513 this.destructive = false;
10514 this.selected = new EventEmitter();
10515 }
10516 /**
10517 * @param {?} $event
10518 * @return {?}
10519 */
10520 onClick($event) {
10521 this.selected.emit($event);
10522 }
10523}
10524PopoverActionItem.decorators = [
10525 { type: Component, args: [{
10526 selector: 'suka-popover-action-item',
10527 template: `
10528 <button type="button" (click)="onClick($event)">
10529 <div class="action-list__item__content">
10530 <suka-icon *ngIf="icon" [icon]="icon" class="popover__icon"></suka-icon>
10531 <ng-content></ng-content>
10532 </div>
10533 </button>
10534 `
10535 }] }
10536];
10537PopoverActionItem.propDecorators = {
10538 baseClass: [{ type: HostBinding, args: ['class.popover__action-list__item',] }],
10539 destructive: [{ type: HostBinding, args: ['class.action-list__item--destructive',] }, { type: Input }],
10540 icon: [{ type: Input }],
10541 selected: [{ type: Output }]
10542};
10543if (false) {
10544 /** @type {?} */
10545 PopoverActionItem.prototype.baseClass;
10546 /** @type {?} */
10547 PopoverActionItem.prototype.destructive;
10548 /** @type {?} */
10549 PopoverActionItem.prototype.icon;
10550 /** @type {?} */
10551 PopoverActionItem.prototype.selected;
10552}
10553
10554/**
10555 * @fileoverview added by tsickle
10556 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10557 */
10558class PopoverModule {
10559}
10560PopoverModule.decorators = [
10561 { type: NgModule, args: [{
10562 declarations: [
10563 PopoverContainer,
10564 PopoverSection,
10565 PopoverActionList,
10566 PopoverActionItem,
10567 Popover,
10568 ],
10569 exports: [
10570 PopoverContainer,
10571 PopoverSection,
10572 PopoverActionList,
10573 PopoverActionItem,
10574 Popover,
10575 ],
10576 imports: [
10577 CommonModule,
10578 OverlayModule,
10579 IconModule,
10580 ],
10581 entryComponents: [
10582 PopoverContainer,
10583 ],
10584 providers: [
10585 PopoverService,
10586 ],
10587 },] }
10588];
10589
10590/**
10591 * @fileoverview added by tsickle
10592 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10593 */
10594class Stack {
10595 constructor() {
10596 this.baseClass = true;
10597 /**
10598 * Make stack vertical (inverts axis of alignment and distribution inputs)
10599 */
10600 this.vertical = false;
10601 /**
10602 * Spacing between elements
10603 */
10604 this.spacing = 'default';
10605 /**
10606 * Horizontal alignment of elements (vertical alignment on vertical stack)
10607 */
10608 this.distribution = 'leading';
10609 /**
10610 * Vertical alignment of elements (horizontal alignment on vertical stack)
10611 */
10612 this.alignment = 'leading';
10613 /**
10614 * Wrap stack elements to additional rows as needed on small screens.
10615 */
10616 this.wrap = true;
10617 }
10618}
10619Stack.decorators = [
10620 { type: Component, args: [{
10621 selector: 'suka-stack',
10622 template: `
10623 <div
10624 class="
10625 stack__wrapper
10626 stack--spacing-{{spacing}}
10627 stack--distribution-{{distribution}}
10628 stack--alignment-{{alignment}}
10629 "
10630 [ngClass]="{
10631 'stack--vertical': vertical,
10632 'stack--no-wrap': !wrap
10633 }"
10634 >
10635 <ng-content></ng-content>
10636 </div>
10637 `,
10638 encapsulation: ViewEncapsulation.None
10639 }] }
10640];
10641Stack.propDecorators = {
10642 baseClass: [{ type: HostBinding, args: ['class.stack',] }],
10643 vertical: [{ type: HostBinding, args: ['class.stack--vertical',] }, { type: Input }],
10644 spacing: [{ type: Input }],
10645 distribution: [{ type: Input }],
10646 alignment: [{ type: Input }],
10647 wrap: [{ type: Input }]
10648};
10649if (false) {
10650 /** @type {?} */
10651 Stack.prototype.baseClass;
10652 /**
10653 * Make stack vertical (inverts axis of alignment and distribution inputs)
10654 * @type {?}
10655 */
10656 Stack.prototype.vertical;
10657 /**
10658 * Spacing between elements
10659 * @type {?}
10660 */
10661 Stack.prototype.spacing;
10662 /**
10663 * Horizontal alignment of elements (vertical alignment on vertical stack)
10664 * @type {?}
10665 */
10666 Stack.prototype.distribution;
10667 /**
10668 * Vertical alignment of elements (horizontal alignment on vertical stack)
10669 * @type {?}
10670 */
10671 Stack.prototype.alignment;
10672 /**
10673 * Wrap stack elements to additional rows as needed on small screens.
10674 * @type {?}
10675 */
10676 Stack.prototype.wrap;
10677}
10678
10679/**
10680 * @fileoverview added by tsickle
10681 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10682 */
10683class StackItem {
10684 constructor() {
10685 this.baseClass = true;
10686 /**
10687 * Set to `true` to make the `StackItem` fill the remaining horizontal space on the stack.
10688 */
10689 this.fill = false;
10690 }
10691}
10692StackItem.decorators = [
10693 { type: Directive, args: [{
10694 selector: '[sukaStackItem]'
10695 },] }
10696];
10697StackItem.propDecorators = {
10698 baseClass: [{ type: HostBinding, args: ['class.stack__item',] }],
10699 fill: [{ type: HostBinding, args: ['class.stack__item--fill',] }, { type: Input }]
10700};
10701if (false) {
10702 /** @type {?} */
10703 StackItem.prototype.baseClass;
10704 /**
10705 * Set to `true` to make the `StackItem` fill the remaining horizontal space on the stack.
10706 * @type {?}
10707 */
10708 StackItem.prototype.fill;
10709}
10710
10711/**
10712 * @fileoverview added by tsickle
10713 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10714 */
10715class StackModule {
10716}
10717StackModule.decorators = [
10718 { type: NgModule, args: [{
10719 declarations: [
10720 Stack,
10721 StackItem,
10722 ],
10723 exports: [
10724 Stack,
10725 StackItem,
10726 ],
10727 imports: [
10728 CommonModule,
10729 ]
10730 },] }
10731];
10732
10733/**
10734 * @fileoverview added by tsickle
10735 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10736 */
10737class FormLayout {
10738 constructor() {
10739 this.baseClass = true;
10740 }
10741}
10742FormLayout.decorators = [
10743 { type: Component, args: [{
10744 selector: 'suka-form-layout',
10745 template: `
10746 <div class="form-layout__wrapper">
10747 <ng-content></ng-content>
10748 </div>
10749 `
10750 }] }
10751];
10752FormLayout.propDecorators = {
10753 baseClass: [{ type: HostBinding, args: ['class.form-layout',] }]
10754};
10755if (false) {
10756 /** @type {?} */
10757 FormLayout.prototype.baseClass;
10758}
10759
10760/**
10761 * @fileoverview added by tsickle
10762 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10763 */
10764class FormLayoutModule {
10765}
10766FormLayoutModule.decorators = [
10767 { type: NgModule, args: [{
10768 declarations: [
10769 FormLayout,
10770 ],
10771 exports: [
10772 FormLayout,
10773 ],
10774 imports: [
10775 CommonModule,
10776 ]
10777 },] }
10778];
10779
10780/**
10781 * @fileoverview added by tsickle
10782 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10783 */
10784/**
10785 * Wrapper for the CdkTable with Suka design styles.
10786 * @template T
10787 */
10788class SukaTable extends CdkTable {
10789 constructor() {
10790 super(...arguments);
10791 this.baseClass = true;
10792 /**
10793 * Set to `true` to make the table full width.
10794 */
10795 this.fullWidth = false;
10796 /**
10797 * Set to `true` to apply hover styles to the table rows.
10798 */
10799 this.hover = false;
10800 /**
10801 * Overrides the sticky CSS class set by the `CdkTable`.
10802 */
10803 this.stickyCssClass = 'suka-table-sticky';
10804 }
10805}
10806SukaTable.decorators = [
10807 { type: Component, args: [{
10808 selector: 'suka-table, table[suka-table]',
10809 exportAs: 'sukaTable',
10810 template: CDK_TABLE_TEMPLATE,
10811 providers: [{ provide: CdkTable, useExisting: SukaTable }],
10812 encapsulation: ViewEncapsulation.None,
10813 // See note on CdkTable for explanation on why this uses the default change detection strategy.
10814 changeDetection: ChangeDetectionStrategy.Default
10815 }] }
10816];
10817SukaTable.propDecorators = {
10818 baseClass: [{ type: HostBinding, args: ['class.suka-table',] }],
10819 fullWidth: [{ type: HostBinding, args: ['class.suka-table--full-width',] }, { type: Input }],
10820 hover: [{ type: HostBinding, args: ['class.suka-table--hover',] }, { type: Input }]
10821};
10822if (false) {
10823 /** @type {?} */
10824 SukaTable.prototype.baseClass;
10825 /**
10826 * Set to `true` to make the table full width.
10827 * @type {?}
10828 */
10829 SukaTable.prototype.fullWidth;
10830 /**
10831 * Set to `true` to apply hover styles to the table rows.
10832 * @type {?}
10833 */
10834 SukaTable.prototype.hover;
10835 /**
10836 * Overrides the sticky CSS class set by the `CdkTable`.
10837 * @type {?}
10838 * @protected
10839 */
10840 SukaTable.prototype.stickyCssClass;
10841}
10842
10843/**
10844 * @fileoverview added by tsickle
10845 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10846 */
10847/**
10848 * Cell definition for the suka-table.
10849 * Captures the template of a column's data row cell as well as cell-specific properties.
10850 */
10851class SukaCellDef extends CdkCellDef {
10852}
10853SukaCellDef.decorators = [
10854 { type: Directive, args: [{
10855 selector: '[sukaCellDef]',
10856 providers: [{ provide: CdkCellDef, useExisting: SukaCellDef }]
10857 },] }
10858];
10859/**
10860 * Header cell definition for the suka-table.
10861 * Captures the template of a column's header cell and as well as cell-specific properties.
10862 */
10863class SukaHeaderCellDef extends CdkHeaderCellDef {
10864}
10865SukaHeaderCellDef.decorators = [
10866 { type: Directive, args: [{
10867 selector: '[sukaHeaderCellDef]',
10868 providers: [{ provide: CdkHeaderCellDef, useExisting: SukaHeaderCellDef }]
10869 },] }
10870];
10871/**
10872 * Footer cell definition for the suka-table.
10873 * Captures the template of a column's footer cell and as well as cell-specific properties.
10874 */
10875class SukaFooterCellDef extends CdkFooterCellDef {
10876}
10877SukaFooterCellDef.decorators = [
10878 { type: Directive, args: [{
10879 selector: '[sukaFooterCellDef]',
10880 providers: [{ provide: CdkFooterCellDef, useExisting: SukaFooterCellDef }]
10881 },] }
10882];
10883/**
10884 * Column definition for the suka-table.
10885 * Defines a set of cells available for a table column.
10886 */
10887class SukaColumnDef extends CdkColumnDef {
10888}
10889SukaColumnDef.decorators = [
10890 { type: Directive, args: [{
10891 selector: '[sukaColumnDef]',
10892 providers: [
10893 { provide: CdkColumnDef, useExisting: SukaColumnDef },
10894 { provide: 'SUKA_SORT_HEADER_COLUMN_DEF', useExisting: SukaColumnDef }
10895 ],
10896 },] }
10897];
10898SukaColumnDef.propDecorators = {
10899 name: [{ type: Input, args: ['sukaColumnDef',] }],
10900 sticky: [{ type: Input }],
10901 stickyEnd: [{ type: Input }]
10902};
10903if (false) {
10904 /**
10905 * Unique name for this column.
10906 * @type {?}
10907 */
10908 SukaColumnDef.prototype.name;
10909 /**
10910 * Whether this column should be sticky positioned at the start of the row
10911 * @type {?}
10912 */
10913 SukaColumnDef.prototype.sticky;
10914 /**
10915 * Whether this column should be sticky positioned on the end of the row
10916 * @type {?}
10917 */
10918 SukaColumnDef.prototype.stickyEnd;
10919}
10920/**
10921 * Header cell template container that adds the right classes and role.
10922 */
10923class SukaHeaderCell extends CdkHeaderCell {
10924 /**
10925 * @param {?} columnDef
10926 * @param {?} elementRef
10927 */
10928 constructor(columnDef, elementRef) {
10929 super(columnDef, elementRef);
10930 elementRef.nativeElement.classList.add(`suka-column-${columnDef.cssClassFriendlyName}`);
10931 }
10932}
10933SukaHeaderCell.decorators = [
10934 { type: Directive, args: [{
10935 selector: 'suka-header-cell, th[suka-header-cell]',
10936 host: {
10937 class: 'suka-header-cell',
10938 role: 'columnheader',
10939 },
10940 },] }
10941];
10942/** @nocollapse */
10943SukaHeaderCell.ctorParameters = () => [
10944 { type: CdkColumnDef },
10945 { type: ElementRef }
10946];
10947/**
10948 * Footer cell template container that adds the right classes and role.
10949 */
10950class SukaFooterCell extends CdkFooterCell {
10951 /**
10952 * @param {?} columnDef
10953 * @param {?} elementRef
10954 */
10955 constructor(columnDef, elementRef) {
10956 super(columnDef, elementRef);
10957 elementRef.nativeElement.classList.add(`suka-column-${columnDef.cssClassFriendlyName}`);
10958 }
10959}
10960SukaFooterCell.decorators = [
10961 { type: Directive, args: [{
10962 selector: 'suka-footer-cell, td[suka-footer-cell]',
10963 host: {
10964 class: 'suka-footer-cell',
10965 role: 'gridcell',
10966 },
10967 },] }
10968];
10969/** @nocollapse */
10970SukaFooterCell.ctorParameters = () => [
10971 { type: CdkColumnDef },
10972 { type: ElementRef }
10973];
10974/**
10975 * Cell template container that adds the right classes and role.
10976 */
10977class SukaCell extends CdkCell {
10978 /**
10979 * @param {?} columnDef
10980 * @param {?} elementRef
10981 */
10982 constructor(columnDef, elementRef) {
10983 super(columnDef, elementRef);
10984 elementRef.nativeElement.classList.add(`suka-column-${columnDef.cssClassFriendlyName}`);
10985 }
10986}
10987SukaCell.decorators = [
10988 { type: Directive, args: [{
10989 selector: 'suka-cell, td[suka-cell]',
10990 host: {
10991 class: 'suka-cell',
10992 role: 'gridcell',
10993 },
10994 },] }
10995];
10996/** @nocollapse */
10997SukaCell.ctorParameters = () => [
10998 { type: CdkColumnDef },
10999 { type: ElementRef }
11000];
11001
11002/**
11003 * @fileoverview added by tsickle
11004 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
11005 */
11006/**
11007 * Header row definition for the suka-table.
11008 * Captures the header row's template and other header properties such as the columns to display.
11009 */
11010class SukaHeaderRowDef extends CdkHeaderRowDef {
11011}
11012SukaHeaderRowDef.decorators = [
11013 { type: Directive, args: [{
11014 selector: '[sukaHeaderRowDef]',
11015 providers: [{ provide: CdkHeaderRowDef, useExisting: SukaHeaderRowDef }],
11016 inputs: ['columns: sukaHeaderRowDef', 'sticky: sukaHeaderRowDefSticky'],
11017 },] }
11018];
11019/**
11020 * Footer row definition for the suka-table.
11021 * Captures the footer row's template and other footer properties such as the columns to display.
11022 */
11023class SukaFooterRowDef extends CdkFooterRowDef {
11024}
11025SukaFooterRowDef.decorators = [
11026 { type: Directive, args: [{
11027 selector: '[sukaFooterRowDef]',
11028 providers: [{ provide: CdkFooterRowDef, useExisting: SukaFooterRowDef }],
11029 inputs: ['columns: sukaFooterRowDef', 'sticky: sukaFooterRowDefSticky'],
11030 },] }
11031];
11032/**
11033 * Data row definition for the suka-table.
11034 * Captures the data row's template and other properties such as the columns to display and
11035 * a when predicate that describes when this row should be used.
11036 * @template T
11037 */
11038class SukaRowDef extends CdkRowDef {
11039}
11040SukaRowDef.decorators = [
11041 { type: Directive, args: [{
11042 selector: '[sukaRowDef]',
11043 providers: [{ provide: CdkRowDef, useExisting: SukaRowDef }],
11044 inputs: ['columns: sukaRowDefColumns', 'when: sukaRowDefWhen'],
11045 },] }
11046];
11047/**
11048 * Footer template container that contains the cell outlet. Adds the right class and role.
11049 */
11050class SukaHeaderRow extends CdkHeaderRow {
11051 constructor() {
11052 super(...arguments);
11053 this.baseClass = true;
11054 this.role = 'row';
11055 }
11056}
11057SukaHeaderRow.decorators = [
11058 { type: Component, args: [{
11059 selector: 'suka-header-row, tr[suka-header-row]',
11060 template: CDK_ROW_TEMPLATE,
11061 // See note on CdkTable for explanation on why this uses the default change detection strategy.
11062 // tslint:disable-next-line:validate-decorators
11063 changeDetection: ChangeDetectionStrategy.Default,
11064 encapsulation: ViewEncapsulation.None,
11065 exportAs: 'sukaHeaderRow',
11066 providers: [{ provide: CdkHeaderRow, useExisting: SukaHeaderRow }]
11067 }] }
11068];
11069SukaHeaderRow.propDecorators = {
11070 baseClass: [{ type: HostBinding, args: ['class.suka-header-row',] }],
11071 role: [{ type: HostBinding, args: ['attr.role',] }]
11072};
11073if (false) {
11074 /** @type {?} */
11075 SukaHeaderRow.prototype.baseClass;
11076 /** @type {?} */
11077 SukaHeaderRow.prototype.role;
11078}
11079/**
11080 * Footer template container that contains the cell outlet. Adds the right class and role.
11081 */
11082class SukaFooterRow extends CdkFooterRow {
11083 constructor() {
11084 super(...arguments);
11085 this.baseClass = true;
11086 this.role = 'row';
11087 }
11088}
11089SukaFooterRow.decorators = [
11090 { type: Component, args: [{
11091 selector: 'suka-footer-row, tr[suka-footer-row]',
11092 template: CDK_ROW_TEMPLATE,
11093 // See note on CdkTable for explanation on why this uses the default change detection strategy.
11094 // tslint:disable-next-line:validate-decorators
11095 changeDetection: ChangeDetectionStrategy.Default,
11096 encapsulation: ViewEncapsulation.None,
11097 exportAs: 'sukaFooterRow',
11098 providers: [{ provide: CdkFooterRow, useExisting: SukaFooterRow }]
11099 }] }
11100];
11101SukaFooterRow.propDecorators = {
11102 baseClass: [{ type: HostBinding, args: ['class.suka-footer-row',] }],
11103 role: [{ type: HostBinding, args: ['attr.role',] }]
11104};
11105if (false) {
11106 /** @type {?} */
11107 SukaFooterRow.prototype.baseClass;
11108 /** @type {?} */
11109 SukaFooterRow.prototype.role;
11110}
11111/**
11112 * Data row template container that contains the cell outlet. Adds the right class and role.
11113 */
11114class SukaRow extends CdkRow {
11115 constructor() {
11116 super(...arguments);
11117 this.baseClass = true;
11118 this.role = 'row';
11119 }
11120}
11121SukaRow.decorators = [
11122 { type: Component, args: [{
11123 selector: 'suka-row, tr[suka-row]',
11124 template: CDK_ROW_TEMPLATE,
11125 // See note on CdkTable for explanation on why this uses the default change detection strategy.
11126 // tslint:disable-next-line:validate-decorators
11127 changeDetection: ChangeDetectionStrategy.Default,
11128 encapsulation: ViewEncapsulation.None,
11129 exportAs: 'sukaRow',
11130 providers: [{ provide: CdkRow, useExisting: SukaRow }]
11131 }] }
11132];
11133SukaRow.propDecorators = {
11134 baseClass: [{ type: HostBinding, args: ['class.suka-row',] }],
11135 role: [{ type: HostBinding, args: ['attr.role',] }]
11136};
11137if (false) {
11138 /** @type {?} */
11139 SukaRow.prototype.baseClass;
11140 /** @type {?} */
11141 SukaRow.prototype.role;
11142}
11143
11144/**
11145 * @fileoverview added by tsickle
11146 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
11147 */
11148/**
11149 * @param {?} pageNumber
11150 * @param {?} currentPage
11151 * @param {?} spacing
11152 * @return {?}
11153 */
11154function buildPaginationArray(pageNumber, currentPage, spacing) {
11155 /** @type {?} */
11156 const pageArray = [];
11157 /** @type {?} */
11158 const startingPosition = Math.max(currentPage - spacing, 1);
11159 /** @type {?} */
11160 const endPosition = Math.min(currentPage + spacing, pageNumber);
11161 for (let i = startingPosition; i <= endPosition; i++) {
11162 pageArray.push(i);
11163 }
11164 if (currentPage - spacing > 1) {
11165 appendFirstPages(pageArray);
11166 }
11167 if (currentPage + spacing < pageNumber) {
11168 appendLastPages(pageArray, pageNumber);
11169 }
11170 return pageArray;
11171}
11172/**
11173 * @param {?} array
11174 * @return {?}
11175 */
11176function appendFirstPages(array) {
11177 /** @type {?} */
11178 const initialValue = array[0];
11179 if (initialValue - 1 > 1) {
11180 array.unshift('...');
11181 }
11182 array.unshift(1);
11183}
11184/**
11185 * @param {?} array
11186 * @param {?} lastPageNumber
11187 * @return {?}
11188 */
11189function appendLastPages(array, lastPageNumber) {
11190 if (array[array.length - 1] + 1 < lastPageNumber) {
11191 array.push('...');
11192 }
11193 array.push(lastPageNumber);
11194}
11195
11196/**
11197 * @fileoverview added by tsickle
11198 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
11199 */
11200/**
11201 * The default page size if there is no page size and there are no provided page size options.
11202 * @type {?}
11203 */
11204const DEFAULT_PAGE_SIZE = 50;
11205/**
11206 * Change event object that is emitted when the user selects a
11207 * different page size or navigates to another page.
11208 */
11209class PageEvent {
11210}
11211if (false) {
11212 /**
11213 * The current page index.
11214 * @type {?}
11215 */
11216 PageEvent.prototype.pageIndex;
11217 /**
11218 * Index of the page that was selected previously.
11219 * @type {?}
11220 */
11221 PageEvent.prototype.previousPageIndex;
11222 /**
11223 * The current page size
11224 * @type {?}
11225 */
11226 PageEvent.prototype.pageSize;
11227 /**
11228 * The current total number of items being paged
11229 * @type {?}
11230 */
11231 PageEvent.prototype.length;
11232}
11233/**
11234 * Component to provide navigation between paged information. Displays the size of the current
11235 * page, user-selectable options to change that size, what items are being shown, and
11236 * navigational button to go to the previous or next page.
11237 */
11238class Pagination {
11239 /**
11240 * @param {?} _changeDetectorRef
11241 */
11242 constructor(_changeDetectorRef) {
11243 this._changeDetectorRef = _changeDetectorRef;
11244 this.initialized = new Subject();
11245 /**
11246 * Sets to `true` to disable pagination.
11247 */
11248 this.disabled = false;
11249 this.baseClass = true;
11250 this._pageIndex = 0;
11251 this._length = 0;
11252 this._pageSizeOptions = [];
11253 this._hidePageSize = false;
11254 this._showFirstLastButtons = false;
11255 /**
11256 * Event emitted when the pagination changes the page size or page index.
11257 */
11258 this.page = new EventEmitter();
11259 /**
11260 * Displayed pages array
11261 */
11262 this._pagesArray = [];
11263 /**
11264 * Calculate the page range
11265 */
11266 this.getRangeLabel = (/**
11267 * @param {?} page
11268 * @param {?} pageSize
11269 * @param {?} length
11270 * @return {?}
11271 */
11272 (page, pageSize, length) => {
11273 if (length === 0 || pageSize === 0) {
11274 return `0 de ${length}`;
11275 }
11276 length = Math.max(length, 0);
11277 /** @type {?} */
11278 const startIndex = page * pageSize;
11279 // If the start index exceeds the list length, do not try and fix the end index to the end.
11280 /** @type {?} */
11281 const endIndex = startIndex < length ?
11282 Math.min(startIndex + pageSize, length) :
11283 startIndex + pageSize;
11284 return `${startIndex + 1}${endIndex} de ${length}`;
11285 });
11286 }
11287 /**
11288 * The zero-based page index of the displayed list of items. Defaulted to 0.
11289 * @return {?}
11290 */
11291 get pageIndex() { return this._pageIndex; }
11292 /**
11293 * @param {?} value
11294 * @return {?}
11295 */
11296 set pageIndex(value) {
11297 this._pageIndex = Math.max(coerceNumberProperty(value), 0);
11298 this._changeDetectorRef.markForCheck();
11299 }
11300 /**
11301 * The length of the total number of items that are being paginated. Defaulted to 0.
11302 * @return {?}
11303 */
11304 get length() { return this._length; }
11305 /**
11306 * @param {?} value
11307 * @return {?}
11308 */
11309 set length(value) {
11310 this._length = coerceNumberProperty(value);
11311 this._changeDetectorRef.markForCheck();
11312 this._updateDisplayedPagesArray();
11313 }
11314 /**
11315 * Number of items to display on a page. By default set to 20.
11316 * @return {?}
11317 */
11318 get pageSize() { return this._pageSize; }
11319 /**
11320 * @param {?} value
11321 * @return {?}
11322 */
11323 set pageSize(value) {
11324 this._pageSize = Math.max(coerceNumberProperty(value), 0);
11325 this._updateDisplayedPageSizeOptions();
11326 this._updateDisplayedPagesArray();
11327 }
11328 /**
11329 * The set of provided page size options to display to the user.
11330 * @return {?}
11331 */
11332 get pageSizeOptions() { return this._pageSizeOptions; }
11333 /**
11334 * @param {?} value
11335 * @return {?}
11336 */
11337 set pageSizeOptions(value) {
11338 this._pageSizeOptions = (value || []).map((/**
11339 * @param {?} p
11340 * @return {?}
11341 */
11342 p => coerceNumberProperty(p)));
11343 this._updateDisplayedPageSizeOptions();
11344 }
11345 /**
11346 * Whether to hide the page size selection UI from the user.
11347 * @return {?}
11348 */
11349 get hidePageSize() { return this._hidePageSize; }
11350 /**
11351 * @param {?} value
11352 * @return {?}
11353 */
11354 set hidePageSize(value) {
11355 this._hidePageSize = coerceBooleanProperty(value);
11356 }
11357 /**
11358 * Whether to show the first/last buttons UI to the user.
11359 * @return {?}
11360 */
11361 get showFirstLastButtons() { return this._showFirstLastButtons; }
11362 /**
11363 * @param {?} value
11364 * @return {?}
11365 */
11366 set showFirstLastButtons(value) {
11367 this._showFirstLastButtons = coerceBooleanProperty(value);
11368 }
11369 /**
11370 * @return {?}
11371 */
11372 ngOnInit() {
11373 this._initialized = true;
11374 this.initialized.next(true);
11375 this._updateDisplayedPageSizeOptions();
11376 }
11377 /**
11378 * Advances to the next page if it exists.
11379 * @return {?}
11380 */
11381 nextPage() {
11382 if (!this.hasNextPage()) {
11383 return;
11384 }
11385 /** @type {?} */
11386 const previousPageIndex = this.pageIndex;
11387 this.pageIndex++;
11388 this._updateDisplayedPagesArray();
11389 this._emitPageEvent(previousPageIndex);
11390 }
11391 /**
11392 * Move back to the previous page if it exists.
11393 * @return {?}
11394 */
11395 previousPage() {
11396 if (!this.hasPreviousPage()) {
11397 return;
11398 }
11399 /** @type {?} */
11400 const previousPageIndex = this.pageIndex;
11401 this.pageIndex--;
11402 this._updateDisplayedPagesArray();
11403 this._emitPageEvent(previousPageIndex);
11404 }
11405 /**
11406 * Move to the first page if not already there.
11407 * @return {?}
11408 */
11409 firstPage() {
11410 // hasPreviousPage being false implies at the start
11411 if (!this.hasPreviousPage()) {
11412 return;
11413 }
11414 /** @type {?} */
11415 const previousPageIndex = this.pageIndex;
11416 this.pageIndex = 0;
11417 this._updateDisplayedPagesArray();
11418 this._emitPageEvent(previousPageIndex);
11419 }
11420 /**
11421 * Move to the last page if not already there.
11422 * @return {?}
11423 */
11424 lastPage() {
11425 // hasNextPage being false implies at the end
11426 if (!this.hasNextPage()) {
11427 return;
11428 }
11429 /** @type {?} */
11430 const previousPageIndex = this.pageIndex;
11431 this.pageIndex = this.getNumberOfPages() - 1;
11432 this._updateDisplayedPagesArray();
11433 this._emitPageEvent(previousPageIndex);
11434 }
11435 /**
11436 * Move to an specific page.
11437 * @param {?} page
11438 * @return {?}
11439 */
11440 goToPage(page) {
11441 /** @type {?} */
11442 const previousPageIndex = this.pageIndex;
11443 this.pageIndex = page - 1;
11444 this._updateDisplayedPagesArray();
11445 this._emitPageEvent(previousPageIndex);
11446 }
11447 /**
11448 * Whether there is a previous page.
11449 * @return {?}
11450 */
11451 hasPreviousPage() {
11452 return this.pageIndex >= 1 && this.pageSize !== 0;
11453 }
11454 /**
11455 * Whether there is a next page.
11456 * @return {?}
11457 */
11458 hasNextPage() {
11459 /** @type {?} */
11460 const maxPageIndex = this.getNumberOfPages() - 1;
11461 return this.pageIndex < maxPageIndex && this.pageSize !== 0;
11462 }
11463 /**
11464 * Calculate the number of pages
11465 * @return {?}
11466 */
11467 getNumberOfPages() {
11468 if (!this.pageSize) {
11469 return 0;
11470 }
11471 return Math.ceil(this.length / this.pageSize);
11472 }
11473 /**
11474 * Changes the page size so that the first item displayed on the page will still be
11475 * displayed using the new page size.
11476 *
11477 * For example, if the page size is 10 and on the second page (items indexed 10-19) then
11478 * switching so that the page size is 5 will set the third page as the current page so
11479 * that the 10th item will still be displayed.
11480 * @param {?} pageSize
11481 * @return {?}
11482 */
11483 _changePageSize(pageSize) {
11484 // Current page needs to be updated to reflect the new page size. Navigate to the page
11485 // containing the previous page's first item.
11486 /** @type {?} */
11487 const startIndex = this.pageIndex * this.pageSize;
11488 /** @type {?} */
11489 const previousPageIndex = this.pageIndex;
11490 this.pageIndex = Math.floor(startIndex / pageSize) || 0;
11491 this.pageSize = pageSize;
11492 this._emitPageEvent(previousPageIndex);
11493 }
11494 /**
11495 * Checks whether the buttons for going forwards should be disabled.
11496 * @return {?}
11497 */
11498 _nextButtonsDisabled() {
11499 return this.disabled || !this.hasNextPage();
11500 }
11501 /**
11502 * Checks whether the buttons for going backwards should be disabled.
11503 * @return {?}
11504 */
11505 _previousButtonsDisabled() {
11506 return this.disabled || !this.hasPreviousPage();
11507 }
11508 /**
11509 * Updates the list of page size options to display to the user. Includes making sure that
11510 * the page size is an option and that the list is sorted.
11511 * @private
11512 * @return {?}
11513 */
11514 _updateDisplayedPageSizeOptions() {
11515 if (!this._initialized) {
11516 return;
11517 }
11518 // If no page size is provided, use the first page size option or the default page size.
11519 if (!this.pageSize) {
11520 this._pageSize = this.pageSizeOptions.length !== 0 ?
11521 this.pageSizeOptions[0] :
11522 DEFAULT_PAGE_SIZE;
11523 }
11524 this._displayedPageSizeOptions = this.pageSizeOptions.slice();
11525 if (this._displayedPageSizeOptions.indexOf(this.pageSize) === -1) {
11526 this._displayedPageSizeOptions.push(this.pageSize);
11527 }
11528 // Sort the numbers using a number-specific sort function.
11529 this._displayedPageSizeOptions.sort((/**
11530 * @param {?} a
11531 * @param {?} b
11532 * @return {?}
11533 */
11534 (a, b) => a - b));
11535 this._changeDetectorRef.markForCheck();
11536 }
11537 /**
11538 * @private
11539 * @return {?}
11540 */
11541 _updateDisplayedPagesArray() {
11542 this._pagesArray = buildPaginationArray(this.getNumberOfPages(), this.pageIndex + 1, 3);
11543 }
11544 /**
11545 * Emits an event notifying that a change of the pagination's properties has been triggered.
11546 * @private
11547 * @param {?} previousPageIndex
11548 * @return {?}
11549 */
11550 _emitPageEvent(previousPageIndex) {
11551 this.page.emit({
11552 previousPageIndex,
11553 pageIndex: this.pageIndex,
11554 pageSize: this.pageSize,
11555 length: this.length
11556 });
11557 }
11558}
11559Pagination.decorators = [
11560 { type: Component, args: [{
11561 selector: 'suka-pagination',
11562 exportAs: 'sukaPagination',
11563 template: `
11564 <div class="suka-pagination-outer-container">
11565 <div class="suka-pagination-container">
11566 <div class="suka-pagination-results">
11567 Mostrando <span class="suka-pagination-result">{{getRangeLabel(pageIndex, pageSize, length)}}</span>
11568 </div>
11569
11570 <div class="suka-pagination-actions">
11571 <button
11572 type="button" class="suka-pagination-navigation-first"
11573 (click)="firstPage()"
11574 [disabled]="_previousButtonsDisabled()"
11575 *ngIf="showFirstLastButtons"
11576 sukaButton="plain"
11577 size="sm"
11578 >
11579 <suka-icon icon="chevrons-left" class="suka-pagination-icon"></suka-icon>
11580 </button>
11581 <button
11582 type="button" class="suka-pagination-navigation-previous"
11583 (click)="previousPage()"
11584 [disabled]="_previousButtonsDisabled()"
11585 sukaButton="plain"
11586 size="sm"
11587 >
11588 <suka-icon icon="chevron-left" class="suka-pagination-icon"></suka-icon>
11589 Anterior
11590 </button>
11591 <button
11592 *ngFor="let pageNumber of _pagesArray"
11593 type="button"
11594 class="suka-pagination-navigation-page"
11595 (click)="goToPage(pageNumber)"
11596 [disabled]="pageNumber === '...'"
11597 sukaButton="plain"
11598 size="sm"
11599 [ngClass]="{
11600 'suka-pagination-navigation-page--selected': pageNumber === pageIndex + 1
11601 }"
11602 >
11603 {{pageNumber}}
11604 </button>
11605 <button
11606 type="button"
11607 class="suka-pagination-navigation-next"
11608 (click)="nextPage()"
11609 [disabled]="_nextButtonsDisabled()"
11610 sukaButton="plain"
11611 size="sm"
11612 >
11613 Siguiente
11614 <suka-icon icon="chevron-right" class="suka-pagination-icon"></suka-icon>
11615 </button>
11616 <button
11617 type="button" class="suka-pagination-navigation-last"
11618 (click)="lastPage()"
11619 [disabled]="_nextButtonsDisabled()"
11620 *ngIf="showFirstLastButtons"
11621 sukaButton="plain"
11622 size="sm"
11623 >
11624 <suka-icon icon="chevrons-right" class="suka-pagination-icon"></suka-icon>
11625 </button>
11626 </div>
11627 </div>
11628 </div>
11629
11630 `,
11631 changeDetection: ChangeDetectionStrategy.OnPush,
11632 encapsulation: ViewEncapsulation.None
11633 }] }
11634];
11635/** @nocollapse */
11636Pagination.ctorParameters = () => [
11637 { type: ChangeDetectorRef }
11638];
11639Pagination.propDecorators = {
11640 disabled: [{ type: Input }],
11641 baseClass: [{ type: HostBinding, args: ['class.suka-pagination',] }],
11642 pageIndex: [{ type: Input }],
11643 length: [{ type: Input }],
11644 pageSize: [{ type: Input }],
11645 pageSizeOptions: [{ type: Input }],
11646 hidePageSize: [{ type: Input }],
11647 showFirstLastButtons: [{ type: Input }],
11648 page: [{ type: Output }]
11649};
11650if (false) {
11651 /**
11652 * @type {?}
11653 * @private
11654 */
11655 Pagination.prototype._initialized;
11656 /** @type {?} */
11657 Pagination.prototype.initialized;
11658 /**
11659 * Sets to `true` to disable pagination.
11660 * @type {?}
11661 */
11662 Pagination.prototype.disabled;
11663 /** @type {?} */
11664 Pagination.prototype.baseClass;
11665 /**
11666 * @type {?}
11667 * @private
11668 */
11669 Pagination.prototype._pageIndex;
11670 /**
11671 * @type {?}
11672 * @private
11673 */
11674 Pagination.prototype._length;
11675 /**
11676 * @type {?}
11677 * @private
11678 */
11679 Pagination.prototype._pageSize;
11680 /**
11681 * @type {?}
11682 * @private
11683 */
11684 Pagination.prototype._pageSizeOptions;
11685 /**
11686 * @type {?}
11687 * @private
11688 */
11689 Pagination.prototype._hidePageSize;
11690 /**
11691 * @type {?}
11692 * @private
11693 */
11694 Pagination.prototype._showFirstLastButtons;
11695 /**
11696 * Event emitted when the pagination changes the page size or page index.
11697 * @type {?}
11698 */
11699 Pagination.prototype.page;
11700 /**
11701 * Displayed set of page size options. Will be sorted and include current page size.
11702 * @type {?}
11703 */
11704 Pagination.prototype._displayedPageSizeOptions;
11705 /**
11706 * Displayed pages array
11707 * @type {?}
11708 */
11709 Pagination.prototype._pagesArray;
11710 /**
11711 * Calculate the page range
11712 * @type {?}
11713 */
11714 Pagination.prototype.getRangeLabel;
11715 /**
11716 * @type {?}
11717 * @private
11718 */
11719 Pagination.prototype._changeDetectorRef;
11720}
11721
11722/**
11723 * @fileoverview added by tsickle
11724 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
11725 */
11726class PaginationModule {
11727}
11728PaginationModule.decorators = [
11729 { type: NgModule, args: [{
11730 imports: [
11731 CommonModule,
11732 ButtonModule,
11733 IconModule,
11734 ],
11735 exports: [
11736 Pagination
11737 ],
11738 declarations: [
11739 Pagination
11740 ],
11741 },] }
11742];
11743
11744/**
11745 * @fileoverview added by tsickle
11746 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
11747 */
11748/**
11749 * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to
11750 * flaky browser support and the value not being defined in Closure's typings.
11751 * @type {?}
11752 */
11753const MAX_SAFE_INTEGER = 9007199254740991;
11754/**
11755 * Data source that accepts a client-side data array and includes native support of filtering,
11756 * sorting (using SukaSort), and pagination (using SukaPaginator).
11757 *
11758 * Allows for sort customization by overriding sortingDataAccessor, which defines how data
11759 * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,
11760 * which defines how row data is converted to a string for filter matching.
11761 *
11762 * **Note:** This class is meant to be a simple data source to help you get started. As such
11763 * it isn't equipped to handle some more advanced cases like robust i18n support or server-side
11764 * interactions. If your app needs to support more advanced use cases, consider implementing your
11765 * own `DataSource`.
11766 * @template T
11767 */
11768class SukaTableDataSource extends DataSource {
11769 /**
11770 * @param {?=} initialData
11771 */
11772 constructor(initialData = []) {
11773 super();
11774 /**
11775 * Stream emitting render data to the table (depends on ordered data changes).
11776 */
11777 this._renderData = new BehaviorSubject([]);
11778 /**
11779 * Stream that emits when a new filter string is set on the data source.
11780 */
11781 this._filter = new BehaviorSubject('');
11782 /**
11783 * Used to react to internal changes of the paginator that are made by the data source itself.
11784 */
11785 this._internalPageChanges = new Subject();
11786 /**
11787 * Subscription to the changes that should trigger an update to the table's rendered rows, such
11788 * as filtering, sorting, pagination, or base data changes.
11789 */
11790 this._renderChangesSubscription = Subscription.EMPTY;
11791 /**
11792 * Data accessor function that is used for accessing data properties for sorting through
11793 * the default sortData function.
11794 * This default function assumes that the sort header IDs (which defaults to the column name)
11795 * matches the data's properties (e.g. column Xyz represents data['Xyz']).
11796 * May be set to a custom function for different behavior.
11797 * @param data Data object that is being accessed.
11798 * @param sortHeaderId The name of the column that represents the data.
11799 */
11800 // sortingDataAccessor: ((data: T, sortHeaderId: string) => string | number) =
11801 // (data: T, sortHeaderId: string): string | number => {
11802 // const value = (data as { [key: string]: any })[sortHeaderId];
11803 // if (_isNumberValue(value)) {
11804 // const numberValue = Number(value);
11805 // // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we
11806 // // leave them as strings. For more info: https://goo.gl/y5vbSg
11807 // return numberValue < MAX_SAFE_INTEGER ? numberValue : value;
11808 // }
11809 // return value;
11810 // }
11811 /**
11812 * Gets a sorted copy of the data array based on the state of the SukaSort. Called
11813 * after changes are made to the filtered data or when sort changes are emitted from SukaSort.
11814 * By default, the function retrieves the active sort and its direction and compares data
11815 * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation
11816 * of data ordering.
11817 * @param data The array of data that should be sorted.
11818 * @param sort The connected SukaSort that holds the current sort state.
11819 */
11820 // sortData: ((data: T[], sort: SukaSort) => T[]) = (data: T[], sort: SukaSort): T[] => {
11821 // const active = sort.active;
11822 // const direction = sort.direction;
11823 // if (!active || direction == '') { return data; }
11824 // return data.sort((a, b) => {
11825 // let valueA = this.sortingDataAccessor(a, active);
11826 // let valueB = this.sortingDataAccessor(b, active);
11827 // // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if
11828 // // one value exists while the other doesn't. In this case, existing value should come last.
11829 // // This avoids inconsistent results when comparing values to undefined/null.
11830 // // If neither value exists, return 0 (equal).
11831 // let comparatorResult = 0;
11832 // if (valueA != null && valueB != null) {
11833 // // Check if one value is greater than the other; if equal, comparatorResult should remain 0.
11834 // if (valueA > valueB) {
11835 // comparatorResult = 1;
11836 // } else if (valueA < valueB) {
11837 // comparatorResult = -1;
11838 // }
11839 // } else if (valueA != null) {
11840 // comparatorResult = 1;
11841 // } else if (valueB != null) {
11842 // comparatorResult = -1;
11843 // }
11844 // return comparatorResult * (direction == 'asc' ? 1 : -1);
11845 // });
11846 // }
11847 /**
11848 * Checks if a data object matches the data source's filter string. By default, each data object
11849 * is converted to a string of its properties and returns true if the filter has
11850 * at least one occurrence in that string. By default, the filter string has its whitespace
11851 * trimmed and the match is case-insensitive. May be overridden for a custom implementation of
11852 * filter matching.
11853 * @param data Data object used to check against the filter.
11854 * @param filter Filter string that has been set on the data source.
11855 * @return Whether the filter matches against the data
11856 */
11857 this.filterPredicate = (/**
11858 * @param {?} data
11859 * @param {?} filter
11860 * @return {?}
11861 */
11862 (data, filter) => {
11863 // Transform the data into a lowercase string of all property values.
11864 /** @type {?} */
11865 const dataStr = Object.keys(data).reduce((/**
11866 * @param {?} currentTerm
11867 * @param {?} key
11868 * @return {?}
11869 */
11870 (currentTerm, key) => {
11871 // Use an obscure Unicode character to delimit the words in the concatenated string.
11872 // This avoids matches where the values of two columns combined will match the user's query
11873 // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something
11874 // that has a very low chance of being typed in by somebody in a text field. This one in
11875 // particular is "White up-pointing triangle with dot" from
11876 // https://en.wikipedia.org/wiki/List_of_Unicode_characters
11877 return currentTerm + ((/** @type {?} */ (data)))[key] + '◬';
11878 }), '').toLowerCase();
11879 // Transform the filter by converting it to lowercase and removing whitespace.
11880 /** @type {?} */
11881 const transformedFilter = filter.trim().toLowerCase();
11882 return dataStr.indexOf(transformedFilter) !== -1;
11883 });
11884 this._data = new BehaviorSubject(initialData);
11885 this._updateChangeSubscription();
11886 }
11887 /**
11888 * Array of data that should be rendered by the table, where each object represents one row.
11889 * @return {?}
11890 */
11891 get data() { return this._data.value; }
11892 /**
11893 * @param {?} data
11894 * @return {?}
11895 */
11896 set data(data) { this._data.next(data); }
11897 /**
11898 * Filter term that should be used to filter out objects from the data array. To override how
11899 * data objects match to this filter string, provide a custom function for filterPredicate.
11900 * @return {?}
11901 */
11902 get filter() { return this._filter.value; }
11903 /**
11904 * @param {?} filter
11905 * @return {?}
11906 */
11907 set filter(filter) { this._filter.next(filter); }
11908 /**
11909 * Instance of the SukaSort directive used by the table to control its sorting. Sort changes
11910 * emitted by the SukaSort will trigger an update to the table's rendered data.
11911 */
11912 // get sort(): SukaSort | null { return this._sort; }
11913 // set sort(sort: SukaSort | null) {
11914 // this._sort = sort;
11915 // this._updateChangeSubscription();
11916 // }
11917 // private _sort: SukaSort | null;
11918 /**
11919 * Instance of the Pagination component used by the table to control what page of the data is
11920 * displayed. Page changes emitted by the Pagination will trigger an update to the
11921 * table's rendered data.
11922 *
11923 * Note that the data source uses the pagination's properties to calculate which page of data
11924 * should be displayed. If the pagination receives its properties as template inputs,
11925 * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the pagination's view has been
11926 * initialized before assigning it to this data source.
11927 * @return {?}
11928 */
11929 get paginator() { return this._paginator; }
11930 /**
11931 * @param {?} paginator
11932 * @return {?}
11933 */
11934 set paginator(paginator) {
11935 this._paginator = paginator;
11936 this._updateChangeSubscription();
11937 }
11938 /**
11939 * Subscribe to changes that should trigger an update to the table's rendered rows. When the
11940 * changes occur, process the current state of the filter, sort, and pagination along with
11941 * the provided base data and send it to the table for rendering.
11942 * @return {?}
11943 */
11944 _updateChangeSubscription() {
11945 // Sorting and/or pagination should be watched if SukaSort and/or SukaPaginator are provided.
11946 // The events should emit whenever the component emits a change or initializes, or if no
11947 // component is provided, a stream with just a null event should be provided.
11948 // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the
11949 // pipeline can progress to the next step. Note that the value from these streams are not used,
11950 // they purely act as a signal to progress in the pipeline.
11951 // const sortChange: Observable<Sort | null | void> = this._sort ?
11952 // merge(this._sort.sortChange, this._sort.initialized) as Observable<Sort | void> :
11953 // observableOf(null);
11954 /** @type {?} */
11955 const pageChange = this._paginator ?
11956 (/** @type {?} */ (merge(this._paginator.page, this._internalPageChanges, this._paginator.initialized))) :
11957 of(null);
11958 /** @type {?} */
11959 const dataStream = this._data;
11960 // Watch for base data or filter changes to provide a filtered set of data.
11961 /** @type {?} */
11962 const filteredData = combineLatest([dataStream, this._filter])
11963 .pipe(map((/**
11964 * @param {?} __0
11965 * @return {?}
11966 */
11967 ([data]) => this._filterData(data))));
11968 // Watch for filtered data or sort changes to provide an ordered set of data.
11969 // const orderedData = combineLatest([filteredData, sortChange])
11970 // .pipe(map(([data]) => this._orderData(data)));
11971 // Watch for ordered data or page changes to provide a paged set of data.
11972 // const paginatedData = combineLatest([orderedData, pageChange])
11973 // .pipe(map(([data]) => this._pageData(data)));
11974 /** @type {?} */
11975 const paginatedData = combineLatest([filteredData, pageChange])
11976 .pipe(map((/**
11977 * @param {?} __0
11978 * @return {?}
11979 */
11980 ([data]) => this._pageData(data))));
11981 // Watched for paged data changes and send the result to the table to render.
11982 this._renderChangesSubscription.unsubscribe();
11983 this._renderChangesSubscription = paginatedData.subscribe((/**
11984 * @param {?} data
11985 * @return {?}
11986 */
11987 data => this._renderData.next(data)));
11988 }
11989 /**
11990 * Returns a filtered data array where each filter object contains the filter string within
11991 * the result of the filterTermAccessor function. If no filter is set, returns the data array
11992 * as provided.
11993 * @param {?} data
11994 * @return {?}
11995 */
11996 _filterData(data) {
11997 // If there is a filter string, filter out data that does not contain it.
11998 // Each data object is converted to a string using the function defined by filterTermAccessor.
11999 // May be overridden for customization.
12000 this.filteredData =
12001 !this.filter ? data : data.filter((/**
12002 * @param {?} obj
12003 * @return {?}
12004 */
12005 obj => this.filterPredicate(obj, this.filter)));
12006 if (this.paginator) {
12007 this._updatePaginator(this.filteredData.length);
12008 }
12009 return this.filteredData;
12010 }
12011 /**
12012 * Returns a sorted copy of the data if SukaSort has a sort applied, otherwise just returns the
12013 * data array as provided. Uses the default data accessor for data lookup, unless a
12014 * sortDataAccessor function is defined.
12015 */
12016 // _orderData(data: T[]): T[] {
12017 // // If there is no active sort or direction, return the data without trying to sort.
12018 // if (!this.sort) { return data; }
12019 // return this.sortData(data.slice(), this.sort);
12020 // }
12021 /**
12022 * Returns a paged slice of the provided data array according to the provided SukaPaginator's page
12023 * index and length. If there is no paginator provided, returns the data array as provided.
12024 * @param {?} data
12025 * @return {?}
12026 */
12027 _pageData(data) {
12028 if (!this.paginator) {
12029 return data;
12030 }
12031 /** @type {?} */
12032 const startIndex = this.paginator.pageIndex * this.paginator.pageSize;
12033 return data.slice(startIndex, startIndex + this.paginator.pageSize);
12034 }
12035 /**
12036 * Updates the paginator to reflect the length of the filtered data, and makes sure that the page
12037 * index does not exceed the paginator's last page. Values are changed in a resolved promise to
12038 * guard against making property changes within a round of change detection.
12039 * @param {?} filteredDataLength
12040 * @return {?}
12041 */
12042 _updatePaginator(filteredDataLength) {
12043 Promise.resolve().then((/**
12044 * @return {?}
12045 */
12046 () => {
12047 /** @type {?} */
12048 const paginator = this.paginator;
12049 if (!paginator) {
12050 return;
12051 }
12052 paginator.length = filteredDataLength;
12053 // If the page index is set beyond the page, reduce it to the last page.
12054 if (paginator.pageIndex > 0) {
12055 /** @type {?} */
12056 const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;
12057 /** @type {?} */
12058 const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);
12059 if (newPageIndex !== paginator.pageIndex) {
12060 paginator.pageIndex = newPageIndex;
12061 // Since the paginator only emits after user-generated changes,
12062 // we need our own stream so we know to should re-render the data.
12063 this._internalPageChanges.next();
12064 }
12065 }
12066 }));
12067 }
12068 /**
12069 * Used by the SukaTable. Called when it connects to the data source.
12070 * \@docs-private
12071 * @return {?}
12072 */
12073 connect() { return this._renderData; }
12074 /**
12075 * Used by the SukaTable. Called when it is destroyed. No-op.
12076 * \@docs-private
12077 * @return {?}
12078 */
12079 disconnect() { }
12080}
12081if (false) {
12082 /**
12083 * Stream that emits when a new data array is set on the data source.
12084 * @type {?}
12085 * @private
12086 */
12087 SukaTableDataSource.prototype._data;
12088 /**
12089 * Stream emitting render data to the table (depends on ordered data changes).
12090 * @type {?}
12091 * @private
12092 */
12093 SukaTableDataSource.prototype._renderData;
12094 /**
12095 * Stream that emits when a new filter string is set on the data source.
12096 * @type {?}
12097 * @private
12098 */
12099 SukaTableDataSource.prototype._filter;
12100 /**
12101 * Used to react to internal changes of the paginator that are made by the data source itself.
12102 * @type {?}
12103 * @private
12104 */
12105 SukaTableDataSource.prototype._internalPageChanges;
12106 /**
12107 * Subscription to the changes that should trigger an update to the table's rendered rows, such
12108 * as filtering, sorting, pagination, or base data changes.
12109 * @type {?}
12110 */
12111 SukaTableDataSource.prototype._renderChangesSubscription;
12112 /**
12113 * The filtered set of data that has been matched by the filter string, or all the data if there
12114 * is no filter. Useful for knowing the set of data the table represents.
12115 * For example, a 'selectAll()' function would likely want to select the set of filtered data
12116 * shown to the user rather than all the data.
12117 * @type {?}
12118 */
12119 SukaTableDataSource.prototype.filteredData;
12120 /**
12121 * @type {?}
12122 * @private
12123 */
12124 SukaTableDataSource.prototype._paginator;
12125 /**
12126 * Checks if a data object matches the data source's filter string. By default, each data object
12127 * is converted to a string of its properties and returns true if the filter has
12128 * at least one occurrence in that string. By default, the filter string has its whitespace
12129 * trimmed and the match is case-insensitive. May be overridden for a custom implementation of
12130 * filter matching.
12131 * \@param data Data object used to check against the filter.
12132 * \@param filter Filter string that has been set on the data source.
12133 * \@return Whether the filter matches against the data
12134 * @type {?}
12135 */
12136 SukaTableDataSource.prototype.filterPredicate;
12137}
12138
12139/**
12140 * @fileoverview added by tsickle
12141 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
12142 */
12143class SukaTableSkeleton {
12144 constructor() {
12145 this.baseClass = true;
12146 this.fullWidth = false;
12147 this.skeleton = false;
12148 this.columns = [];
12149 this.rowNumber = 5;
12150 this.rows = Array(this.rowNumber).fill(0).map((/**
12151 * @param {?} x
12152 * @param {?} i
12153 * @return {?}
12154 */
12155 (x, i) => i));
12156 }
12157}
12158SukaTableSkeleton.decorators = [
12159 { type: Component, args: [{
12160 selector: 'suka-table-skeleton, table[suka-table-skeleton]',
12161 exportAs: 'sukaTableSkeleton',
12162 template: `
12163 <tr class="suka-header-row">
12164 <th *ngFor="let column of columns" class="suka-header-cell"><div class="skeleton__text"></div></th>
12165 </tr>
12166 <tr class="suka-row" *ngFor="let row of rows">
12167 <td *ngFor="let column of columns" class="suka-cell"><div class="skeleton__text"></div></td>
12168 </tr>
12169 `
12170 }] }
12171];
12172SukaTableSkeleton.propDecorators = {
12173 baseClass: [{ type: HostBinding, args: ['class.suka-table',] }],
12174 fullWidth: [{ type: HostBinding, args: ['class.suka-table--full-width',] }, { type: Input }],
12175 skeleton: [{ type: Input }],
12176 columns: [{ type: Input }],
12177 rowNumber: [{ type: Input }]
12178};
12179if (false) {
12180 /** @type {?} */
12181 SukaTableSkeleton.prototype.baseClass;
12182 /** @type {?} */
12183 SukaTableSkeleton.prototype.fullWidth;
12184 /** @type {?} */
12185 SukaTableSkeleton.prototype.skeleton;
12186 /** @type {?} */
12187 SukaTableSkeleton.prototype.columns;
12188 /** @type {?} */
12189 SukaTableSkeleton.prototype.rowNumber;
12190 /** @type {?} */
12191 SukaTableSkeleton.prototype.rows;
12192}
12193
12194/**
12195 * @fileoverview added by tsickle
12196 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
12197 */
12198/** @type {?} */
12199const EXPORTED_DECLARATIONS = [
12200 // Table
12201 SukaTable,
12202 SukaTableSkeleton,
12203 // Template defs
12204 SukaHeaderCellDef,
12205 SukaHeaderRowDef,
12206 SukaColumnDef,
12207 SukaCellDef,
12208 SukaRowDef,
12209 SukaFooterCellDef,
12210 SukaFooterRowDef,
12211 // Cell directives
12212 SukaHeaderCell,
12213 SukaCell,
12214 SukaFooterCell,
12215 // Row directives
12216 SukaHeaderRow,
12217 SukaRow,
12218 SukaFooterRow,
12219];
12220class TableModule {
12221}
12222TableModule.decorators = [
12223 { type: NgModule, args: [{
12224 imports: [
12225 CommonModule,
12226 CdkTableModule,
12227 PaginationModule,
12228 ],
12229 exports: [...EXPORTED_DECLARATIONS],
12230 declarations: [EXPORTED_DECLARATIONS],
12231 },] }
12232];
12233
12234/**
12235 * @fileoverview added by tsickle
12236 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
12237 */
12238class Navigation {
12239 constructor() {
12240 this.role = 'complementary';
12241 this.hostClass = true;
12242 /**
12243 * Controls the expanded (`true`) or collapsed (`false`) state when on a small screen.
12244 */
12245 this.expanded = true;
12246 /**
12247 * Controls the hidden (`true`) or visible (`false`) state
12248 */
12249 this.hidden = false;
12250 }
12251 /**
12252 * Toggles the `Navigation` expanded state.
12253 * @return {?}
12254 */
12255 toggle() {
12256 this.expanded = !this.expanded;
12257 }
12258}
12259Navigation.decorators = [
12260 { type: Component, args: [{
12261 selector: 'suka-navigation',
12262 template: `
12263 <nav role="navigation__container">
12264 <ul class="navigation__items">
12265 <ng-content></ng-content>
12266 </ul>
12267 </nav>
12268 `,
12269 encapsulation: ViewEncapsulation.None
12270 }] }
12271];
12272Navigation.propDecorators = {
12273 role: [{ type: HostBinding, args: ['attr.role',] }],
12274 hostClass: [{ type: HostBinding, args: ['class.navigation',] }],
12275 expanded: [{ type: HostBinding, args: ['class.navigation--expanded',] }, { type: Input }],
12276 hidden: [{ type: HostBinding, args: ['class.navigation--hidden',] }, { type: Input }]
12277};
12278if (false) {
12279 /** @type {?} */
12280 Navigation.prototype.role;
12281 /** @type {?} */
12282 Navigation.prototype.hostClass;
12283 /**
12284 * Controls the expanded (`true`) or collapsed (`false`) state when on a small screen.
12285 * @type {?}
12286 */
12287 Navigation.prototype.expanded;
12288 /**
12289 * Controls the hidden (`true`) or visible (`false`) state
12290 * @type {?}
12291 */
12292 Navigation.prototype.hidden;
12293}
12294
12295/**
12296 * @fileoverview added by tsickle
12297 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
12298 */
12299class NavigationItem {
12300 /**
12301 * @param {?} domSanitizer
12302 * @param {?} router
12303 */
12304 constructor(domSanitizer, router) {
12305 this.domSanitizer = domSanitizer;
12306 this.router = router;
12307 /**
12308 * Toggles the active (current page) state for the link.
12309 */
12310 this.active = false;
12311 /**
12312 * Emits the navigation status promise when the link is activated
12313 */
12314 this.navigation = new EventEmitter();
12315 this.isSubMenu = false;
12316 this._href = 'javascript:void(0)';
12317 if (router && this.route) {
12318 this.subscription = router.events.subscribe((/**
12319 * @param {?} s
12320 * @return {?}
12321 */
12322 (s) => {
12323 if (s instanceof NavigationEnd) {
12324 this.update();
12325 }
12326 }));
12327 }
12328 }
12329 /**
12330 * Link for the item. NOTE: *do not* pass unsafe or untrusted values, this has the potential to open you up to XSS attacks
12331 * @param {?} v
12332 * @return {?}
12333 */
12334 set href(v) {
12335 this._href = v;
12336 }
12337 /**
12338 * @return {?}
12339 */
12340 get href() {
12341 return (/** @type {?} */ (this.domSanitizer.bypassSecurityTrustUrl(this._href)));
12342 }
12343 /**
12344 * @param {?} event
12345 * @return {?}
12346 */
12347 navigate(event) {
12348 if (this.router && this.route) {
12349 event.preventDefault();
12350 /** @type {?} */
12351 const status = this.router.navigate(this.route, this.routeExtras);
12352 this.navigation.emit(status);
12353 }
12354 }
12355 /**
12356 * @return {?}
12357 */
12358 ngOnDestroy() {
12359 if (this.subscription) {
12360 this.subscription.unsubscribe();
12361 }
12362 }
12363 /**
12364 * @private
12365 * @return {?}
12366 */
12367 isActive() {
12368 if (this.router && this.route) {
12369 /** @type {?} */
12370 const itemUrl = this.router.createUrlTree(this.route, this.routeExtras);
12371 return this.router.isActive(itemUrl, true);
12372 }
12373 return false;
12374 }
12375 /**
12376 * @private
12377 * @return {?}
12378 */
12379 update() {
12380 if (this.isActive()) {
12381 this.active = true;
12382 }
12383 else {
12384 this.active = false;
12385 }
12386 }
12387}
12388NavigationItem.decorators = [
12389 { type: Component, args: [{
12390 selector: 'suka-navigation-item',
12391 template: `
12392 <li [ngClass]="{
12393 'navigation__item': !isSubMenu,
12394 'navigation__menu-item': isSubMenu
12395 }"
12396 [attr.role]="(isSubMenu ? 'none' : null)">
12397 <a
12398 class="navigation__link"
12399 [href]="href"
12400 [attr.role]="(isSubMenu ? 'menuitem' : null)"
12401 [attr.aria-current]="(active ? 'page' : null)"
12402 (click)="navigate($event)">
12403 <div *ngIf="!isSubMenu" class="navigation__icon">
12404 <ng-content select="suka-icon"></ng-content>
12405 </div>
12406 <span class="navigation__link-text">
12407 <ng-content></ng-content>
12408 </span>
12409 </a>
12410 </li>
12411 `
12412 }] }
12413];
12414/** @nocollapse */
12415NavigationItem.ctorParameters = () => [
12416 { type: DomSanitizer },
12417 { type: Router, decorators: [{ type: Optional }] }
12418];
12419NavigationItem.propDecorators = {
12420 href: [{ type: Input }],
12421 active: [{ type: Input }],
12422 route: [{ type: Input }],
12423 routeExtras: [{ type: Input }],
12424 navigation: [{ type: Output }]
12425};
12426if (false) {
12427 /**
12428 * @type {?}
12429 * @private
12430 */
12431 NavigationItem.prototype.subscription;
12432 /**
12433 * Toggles the active (current page) state for the link.
12434 * @type {?}
12435 */
12436 NavigationItem.prototype.active;
12437 /**
12438 * Array of commands to send to the router when the link is activated
12439 * See: https://angular.io/api/router/Router#navigate
12440 * @type {?}
12441 */
12442 NavigationItem.prototype.route;
12443 /**
12444 * Router options. Used in conjunction with `route`
12445 * See: https://angular.io/api/router/Router#navigate
12446 * @type {?}
12447 */
12448 NavigationItem.prototype.routeExtras;
12449 /**
12450 * Emits the navigation status promise when the link is activated
12451 * @type {?}
12452 */
12453 NavigationItem.prototype.navigation;
12454 /** @type {?} */
12455 NavigationItem.prototype.isSubMenu;
12456 /**
12457 * @type {?}
12458 * @protected
12459 */
12460 NavigationItem.prototype._href;
12461 /**
12462 * @type {?}
12463 * @protected
12464 */
12465 NavigationItem.prototype.domSanitizer;
12466 /**
12467 * @type {?}
12468 * @protected
12469 */
12470 NavigationItem.prototype.router;
12471}
12472
12473/**
12474 * @fileoverview added by tsickle
12475 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
12476 */
12477/**
12478 * `SideNavMenu` provides a method to group `SideNavItem`s under a common heading.
12479 */
12480class NavigationMenu {
12481 constructor() {
12482 /**
12483 * Controls the visibility of the child `SideNavItem`s
12484 */
12485 this.expanded = false;
12486 this.childrenHeight = 0;
12487 }
12488 /**
12489 * @return {?}
12490 */
12491 ngAfterContentInit() {
12492 setTimeout((/**
12493 * @return {?}
12494 */
12495 () => {
12496 this.navigationItems.forEach((/**
12497 * @param {?} item
12498 * @return {?}
12499 */
12500 item => {
12501 item.isSubMenu = true;
12502 }));
12503 }));
12504 setTimeout((/**
12505 * @return {?}
12506 */
12507 () => {
12508 this.navigationNativeItems.forEach((/**
12509 * @param {?} item
12510 * @return {?}
12511 */
12512 item => {
12513 item.nativeElement.children.forEach((/**
12514 * @param {?} children
12515 * @return {?}
12516 */
12517 children => {
12518 this.childrenHeight += children.offsetHeight;
12519 }));
12520 }));
12521 }));
12522 }
12523 /**
12524 * @return {?}
12525 */
12526 toggle() {
12527 this.expanded = !this.expanded;
12528 }
12529}
12530NavigationMenu.decorators = [
12531 { type: Component, args: [{
12532 selector: 'suka-navigation-menu',
12533 template: `
12534 <li class="navigation__item navigation__item--icon">
12535 <button
12536 (click)="toggle()"
12537 class="navigation__sub-menu"
12538 aria-haspopup="true"
12539 [attr.aria-expanded]="expanded"
12540 type="button">
12541 <div class="navigation__icon">
12542 <ng-content select="suka-icon"></ng-content>
12543 </div>
12544 <span class="navigation__sub-menu-title">{{title}}</span>
12545 <suka-icon icon="chevron-down" class="navigation__sub-menu-icon"></suka-icon>
12546 </button>
12547 <ul class="navigation__menu" role="menu" [ngStyle]="{'max-height': expanded ? childrenHeight + 'px' : '0px'}">
12548 <ng-content></ng-content>
12549 </ul>
12550 </li>
12551 `
12552 }] }
12553];
12554NavigationMenu.propDecorators = {
12555 title: [{ type: Input }],
12556 expanded: [{ type: Input }],
12557 navigationItems: [{ type: ContentChildren, args: [NavigationItem,] }],
12558 navigationNativeItems: [{ type: ContentChildren, args: [NavigationItem, { read: ElementRef },] }]
12559};
12560if (false) {
12561 /**
12562 * Heading for the gorup
12563 * @type {?}
12564 */
12565 NavigationMenu.prototype.title;
12566 /**
12567 * Controls the visibility of the child `SideNavItem`s
12568 * @type {?}
12569 */
12570 NavigationMenu.prototype.expanded;
12571 /** @type {?} */
12572 NavigationMenu.prototype.navigationItems;
12573 /** @type {?} */
12574 NavigationMenu.prototype.navigationNativeItems;
12575 /** @type {?} */
12576 NavigationMenu.prototype.childrenHeight;
12577}
12578
12579/**
12580 * @fileoverview added by tsickle
12581 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
12582 */
12583class MobileNavigation {
12584 constructor() {
12585 this.role = 'complementary';
12586 this.hostClass = true;
12587 /**
12588 * Controls the expanded (`true`) or collapsed (`false`) state when on a small screen.
12589 */
12590 this.expanded = false;
12591 /**
12592 * Controls the hidden (`true`) or visible (`false`) state
12593 */
12594 this.hidden = false;
12595 }
12596 /**
12597 * @return {?}
12598 */
12599 toggle() {
12600 this.expanded = !this.expanded;
12601 }
12602}
12603MobileNavigation.decorators = [
12604 { type: Component, args: [{
12605 selector: 'suka-mobile-navigation',
12606 template: `
12607 <button class="nav-toggle" (click)="toggle()"><suka-icon icon="menu"></suka-icon> Navegación</button>
12608 <div class="backdrop--dark"></div>
12609 <div class="mobile-navigation__nav-wrapper">
12610 <div class="mobile-nav-trigger" (click)="toggle()"></div>
12611 <div class="mobile-nav">
12612 <div class="mobile-nav__header">
12613 Navegación
12614 <button sukaButton="plain" (click)="toggle()" size="sm"><suka-icon icon="x"></suka-icon></button>
12615 </div>
12616 <ng-content></ng-content>
12617 </div>
12618 </div>
12619 `,
12620 encapsulation: ViewEncapsulation.None
12621 }] }
12622];
12623/** @nocollapse */
12624MobileNavigation.ctorParameters = () => [];
12625MobileNavigation.propDecorators = {
12626 role: [{ type: HostBinding, args: ['attr.role',] }],
12627 hostClass: [{ type: HostBinding, args: ['class.mobile-navigation',] }],
12628 expanded: [{ type: HostBinding, args: ['class.mobile-navigation--expanded',] }, { type: Input }],
12629 hidden: [{ type: HostBinding, args: ['class.mobile-navigation--hidden',] }, { type: Input }]
12630};
12631if (false) {
12632 /** @type {?} */
12633 MobileNavigation.prototype.role;
12634 /** @type {?} */
12635 MobileNavigation.prototype.hostClass;
12636 /**
12637 * Controls the expanded (`true`) or collapsed (`false`) state when on a small screen.
12638 * @type {?}
12639 */
12640 MobileNavigation.prototype.expanded;
12641 /**
12642 * Controls the hidden (`true`) or visible (`false`) state
12643 * @type {?}
12644 */
12645 MobileNavigation.prototype.hidden;
12646}
12647
12648/**
12649 * @fileoverview added by tsickle
12650 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
12651 */
12652class NavigationModule {
12653}
12654NavigationModule.decorators = [
12655 { type: NgModule, args: [{
12656 declarations: [
12657 Navigation,
12658 NavigationItem,
12659 NavigationMenu,
12660 MobileNavigation,
12661 ],
12662 imports: [
12663 CommonModule,
12664 IconModule,
12665 ButtonModule,
12666 ],
12667 exports: [
12668 Navigation,
12669 NavigationItem,
12670 NavigationMenu,
12671 MobileNavigation,
12672 ]
12673 },] }
12674];
12675
12676/**
12677 * @fileoverview added by tsickle
12678 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
12679 */
12680class Badge {
12681 constructor() {
12682 /**
12683 * Sets the badge type. Can be `default`, `info`, `success`, `attention`, `alert` or `disabled`. Defaults to `default`.
12684 */
12685 this.type = 'default';
12686 /**
12687 * Badge size. Defaults to `md`.
12688 */
12689 this.size = 'md';
12690 this.class = '';
12691 }
12692 /**
12693 * @return {?}
12694 */
12695 get attrClass() {
12696 return `badge badge--${this.type} badge--${this.size} ${this.class}`;
12697 }
12698}
12699Badge.decorators = [
12700 { type: Component, args: [{
12701 selector: 'suka-badge',
12702 template: `<ng-content></ng-content>`
12703 }] }
12704];
12705Badge.propDecorators = {
12706 type: [{ type: Input }],
12707 size: [{ type: Input }],
12708 class: [{ type: Input }],
12709 attrClass: [{ type: HostBinding, args: ['attr.class',] }]
12710};
12711if (false) {
12712 /**
12713 * Sets the badge type. Can be `default`, `info`, `success`, `attention`, `alert` or `disabled`. Defaults to `default`.
12714 * @type {?}
12715 */
12716 Badge.prototype.type;
12717 /**
12718 * Badge size. Defaults to `md`.
12719 * @type {?}
12720 */
12721 Badge.prototype.size;
12722 /** @type {?} */
12723 Badge.prototype.class;
12724}
12725
12726/**
12727 * @fileoverview added by tsickle
12728 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
12729 */
12730class BadgeModule {
12731}
12732BadgeModule.decorators = [
12733 { type: NgModule, args: [{
12734 declarations: [
12735 Badge
12736 ],
12737 exports: [
12738 Badge
12739 ],
12740 imports: [
12741 CommonModule
12742 ]
12743 },] }
12744];
12745
12746/**
12747 * @fileoverview added by tsickle
12748 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
12749 */
12750class Topbar {
12751 /**
12752 * @param {?} domSanitizer
12753 * @param {?} router
12754 */
12755 constructor(domSanitizer, router) {
12756 this.domSanitizer = domSanitizer;
12757 this.router = router;
12758 /**
12759 * Put topbar contents inside a container. Defaults to `false`
12760 */
12761 this.insideContainer = false;
12762 /**
12763 * Top level branding. Defaults to "Kushki"
12764 */
12765 this.brand = 'Kushki';
12766 /**
12767 * Emits the navigation status promise when the link is activated
12768 */
12769 this.navigation = new EventEmitter();
12770 this._href = 'javascript:void(0)';
12771 }
12772 /**
12773 * Optional link for the header
12774 * @param {?} v
12775 * @return {?}
12776 */
12777 set href(v) {
12778 this._href = v;
12779 }
12780 /**
12781 * @return {?}
12782 */
12783 get href() {
12784 return (/** @type {?} */ (this.domSanitizer.bypassSecurityTrustUrl(this._href)));
12785 }
12786 /**
12787 * @param {?} value
12788 * @return {?}
12789 */
12790 isTemplate(value) {
12791 return value instanceof TemplateRef;
12792 }
12793 /**
12794 * @param {?} event
12795 * @return {?}
12796 */
12797 navigate(event) {
12798 if (this.router && this.route) {
12799 event.preventDefault();
12800 /** @type {?} */
12801 const status = this.router.navigate(this.route, this.routeExtras);
12802 this.navigation.emit(status);
12803 }
12804 }
12805}
12806Topbar.decorators = [
12807 { type: Component, args: [{
12808 selector: 'suka-topbar',
12809 template: `
12810 <header
12811 class="topbar"
12812 role="banner"
12813 [attr.aria-label]="brand + ' ' + productName">
12814
12815 <div class="container" *ngIf="insideContainer else elseTpl">
12816 <ng-container *ngTemplateOutlet="elseTpl"></ng-container>
12817 </div>
12818
12819 <ng-template #elseTpl>
12820 <ng-template
12821 *ngIf="isTemplate(brand)"
12822 [ngTemplateOutlet]="brand">
12823 </ng-template>
12824 <a
12825 *ngIf="!isTemplate(brand)"
12826 class="topbar__name"
12827 [href]="href"
12828 (click)="navigate($event)">
12829 <img *ngIf="logoSrc" [src]="logoSrc" class="topbar__logo" [attr.alt]="brand" />
12830 <span *ngIf="!logoSrc" class="topbar__name--prefix">{{brand}}</span>
12831 <span *ngIf="productName" class="topbar__name--suffix">{{productName}}</span>
12832 </a>
12833 <ng-content></ng-content>
12834 </ng-template>
12835 </header>
12836 `
12837 }] }
12838];
12839/** @nocollapse */
12840Topbar.ctorParameters = () => [
12841 { type: DomSanitizer },
12842 { type: Router, decorators: [{ type: Optional }] }
12843];
12844Topbar.propDecorators = {
12845 insideContainer: [{ type: Input }],
12846 productName: [{ type: Input }],
12847 logoSrc: [{ type: Input }],
12848 brand: [{ type: Input }],
12849 href: [{ type: Input }],
12850 route: [{ type: Input }],
12851 routeExtras: [{ type: Input }],
12852 navigation: [{ type: Output }]
12853};
12854if (false) {
12855 /**
12856 * Put topbar contents inside a container. Defaults to `false`
12857 * @type {?}
12858 */
12859 Topbar.prototype.insideContainer;
12860 /**
12861 * Label that shows to the right of the `brand`.
12862 * @type {?}
12863 */
12864 Topbar.prototype.productName;
12865 /**
12866 * Source for the header logo.
12867 * @type {?}
12868 */
12869 Topbar.prototype.logoSrc;
12870 /**
12871 * Top level branding. Defaults to "Kushki"
12872 * @type {?}
12873 */
12874 Topbar.prototype.brand;
12875 /**
12876 * Array of commands to send to the router when the link is activated
12877 * See: https://angular.io/api/router/Router#navigate
12878 * @type {?}
12879 */
12880 Topbar.prototype.route;
12881 /**
12882 * Router options. Used in conjunction with `route`
12883 * See: https://angular.io/api/router/Router#navigate
12884 * @type {?}
12885 */
12886 Topbar.prototype.routeExtras;
12887 /**
12888 * Emits the navigation status promise when the link is activated
12889 * @type {?}
12890 */
12891 Topbar.prototype.navigation;
12892 /**
12893 * @type {?}
12894 * @protected
12895 */
12896 Topbar.prototype._href;
12897 /**
12898 * @type {?}
12899 * @protected
12900 */
12901 Topbar.prototype.domSanitizer;
12902 /**
12903 * @type {?}
12904 * @protected
12905 */
12906 Topbar.prototype.router;
12907}
12908
12909/**
12910 * @fileoverview added by tsickle
12911 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
12912 */
12913class TopbarGlobal {
12914 constructor() {
12915 this.hostClass = true;
12916 }
12917}
12918TopbarGlobal.decorators = [
12919 { type: Component, args: [{
12920 selector: 'suka-topbar-global',
12921 template: `
12922 <ng-content></ng-content>
12923 `
12924 }] }
12925];
12926TopbarGlobal.propDecorators = {
12927 hostClass: [{ type: HostBinding, args: ['class.topbar__global',] }]
12928};
12929if (false) {
12930 /** @type {?} */
12931 TopbarGlobal.prototype.hostClass;
12932}
12933
12934/**
12935 * @fileoverview added by tsickle
12936 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
12937 */
12938class TopbarNavigation {
12939}
12940TopbarNavigation.decorators = [
12941 { type: Component, args: [{
12942 selector: 'suka-topbar-navigation',
12943 template: `
12944 <nav class="topbar__nav" [attr.aria-label]="ariaLabel">
12945 <ul class="topbar__menu-bar" role="menubar">
12946 <ng-content></ng-content>
12947 </ul>
12948 </nav>
12949 `
12950 }] }
12951];
12952TopbarNavigation.propDecorators = {
12953 ariaLabel: [{ type: Input }]
12954};
12955if (false) {
12956 /** @type {?} */
12957 TopbarNavigation.prototype.ariaLabel;
12958}
12959
12960/**
12961 * @fileoverview added by tsickle
12962 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
12963 */
12964class TopbarItem {
12965 /**
12966 * @param {?} domSanitizer
12967 * @param {?} router
12968 */
12969 constructor(domSanitizer, router) {
12970 this.domSanitizer = domSanitizer;
12971 this.router = router;
12972 /**
12973 * Emits the navigation status promise when the link is activated
12974 */
12975 this.navigation = new EventEmitter();
12976 this._href = 'javascript:void(0)';
12977 }
12978 /**
12979 * @param {?} v
12980 * @return {?}
12981 */
12982 set href(v) {
12983 this._href = v;
12984 }
12985 /**
12986 * @return {?}
12987 */
12988 get href() {
12989 return (/** @type {?} */ (this.domSanitizer.bypassSecurityTrustUrl(this._href)));
12990 }
12991 /**
12992 * @param {?} event
12993 * @return {?}
12994 */
12995 navigate(event) {
12996 if (this.router && this.route) {
12997 event.preventDefault();
12998 /** @type {?} */
12999 const status = this.router.navigate(this.route, this.routeExtras);
13000 this.navigation.emit(status);
13001 }
13002 }
13003}
13004TopbarItem.decorators = [
13005 { type: Component, args: [{
13006 selector: 'suka-topbar-item',
13007 template: `
13008 <li style="height: 100%">
13009 <a
13010 class="topbar__menu-item"
13011 role="menuitem"
13012 tabindex="0"
13013 [href]="href"
13014 (click)="navigate($event)">
13015 <suka-icon *ngIf="icon" [icon]="icon" class="topbar__menu-item__icon"></suka-icon>
13016 <ng-content></ng-content>
13017 </a>
13018 </li>
13019 `
13020 }] }
13021];
13022/** @nocollapse */
13023TopbarItem.ctorParameters = () => [
13024 { type: DomSanitizer },
13025 { type: Router, decorators: [{ type: Optional }] }
13026];
13027TopbarItem.propDecorators = {
13028 href: [{ type: Input }],
13029 route: [{ type: Input }],
13030 routeExtras: [{ type: Input }],
13031 navigation: [{ type: Output }],
13032 icon: [{ type: Input }]
13033};
13034if (false) {
13035 /**
13036 * Array of commands to send to the router when the link is activated
13037 * See: https://angular.io/api/router/Router#navigate
13038 * @type {?}
13039 */
13040 TopbarItem.prototype.route;
13041 /**
13042 * Router options. Used in conjunction with `route`
13043 * See: https://angular.io/api/router/Router#navigate
13044 * @type {?}
13045 */
13046 TopbarItem.prototype.routeExtras;
13047 /**
13048 * Emits the navigation status promise when the link is activated
13049 * @type {?}
13050 */
13051 TopbarItem.prototype.navigation;
13052 /**
13053 * Icon for topbar item.
13054 * @type {?}
13055 */
13056 TopbarItem.prototype.icon;
13057 /**
13058 * @type {?}
13059 * @protected
13060 */
13061 TopbarItem.prototype._href;
13062 /**
13063 * @type {?}
13064 * @protected
13065 */
13066 TopbarItem.prototype.domSanitizer;
13067 /**
13068 * @type {?}
13069 * @protected
13070 */
13071 TopbarItem.prototype.router;
13072}
13073
13074/**
13075 * @fileoverview added by tsickle
13076 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
13077 */
13078class TopbarMenu {
13079 /**
13080 * @param {?} domSanitizer
13081 * @param {?} elementRef
13082 */
13083 constructor(domSanitizer, elementRef) {
13084 this.domSanitizer = domSanitizer;
13085 this.elementRef = elementRef;
13086 this.trigger = 'click';
13087 this.expanded = false;
13088 this._href = 'javascript:void(0)';
13089 }
13090 /**
13091 * @param {?} v
13092 * @return {?}
13093 */
13094 set href(v) {
13095 this._href = v;
13096 }
13097 /**
13098 * @return {?}
13099 */
13100 get href() {
13101 return (/** @type {?} */ (this.domSanitizer.bypassSecurityTrustUrl(this._href)));
13102 }
13103 /**
13104 * @return {?}
13105 */
13106 onClick() {
13107 if (this.trigger === 'click') {
13108 this.expanded = !this.expanded;
13109 }
13110 }
13111 /**
13112 * @return {?}
13113 */
13114 onMouseOver() {
13115 if (this.trigger === 'mouseover') {
13116 this.expanded = true;
13117 }
13118 }
13119 /**
13120 * @return {?}
13121 */
13122 onMouseOut() {
13123 if (this.trigger === 'mouseover') {
13124 this.expanded = false;
13125 }
13126 }
13127 /**
13128 * @param {?} event
13129 * @return {?}
13130 */
13131 onFocusOut(event) {
13132 if (!this.elementRef.nativeElement.contains(event.relatedTarget)) {
13133 this.expanded = false;
13134 }
13135 }
13136}
13137TopbarMenu.decorators = [
13138 { type: Component, args: [{
13139 selector: 'suka-topbar-menu',
13140 template: `
13141 <li
13142 class="topbar__sub-menu"
13143 style="height: 100%"
13144 >
13145 <a
13146 class="topbar__menu-item topbar__menu-title"
13147 [href]="href"
13148 role="menuitem"
13149 tabindex="0"
13150 aria-haspopup="true"
13151 [attr.aria-expanded]="expanded">
13152 <ng-content></ng-content>
13153 <suka-icon icon="chevron-down" class="topbar__menu-arrow" aria-hidden="true"></suka-icon>
13154 </a>
13155 <ul class="topbar__menu" role="menu">
13156 <ng-content select="suka-topbar-item"></ng-content>
13157 </ul>
13158 </li>
13159 `
13160 }] }
13161];
13162/** @nocollapse */
13163TopbarMenu.ctorParameters = () => [
13164 { type: DomSanitizer },
13165 { type: ElementRef }
13166];
13167TopbarMenu.propDecorators = {
13168 href: [{ type: Input }],
13169 trigger: [{ type: Input }],
13170 onClick: [{ type: HostListener, args: ['click',] }],
13171 onMouseOver: [{ type: HostListener, args: ['mouseover',] }],
13172 onMouseOut: [{ type: HostListener, args: ['mouseout',] }],
13173 onFocusOut: [{ type: HostListener, args: ['focusout', ['$event'],] }]
13174};
13175if (false) {
13176 /** @type {?} */
13177 TopbarMenu.prototype.trigger;
13178 /** @type {?} */
13179 TopbarMenu.prototype.expanded;
13180 /**
13181 * @type {?}
13182 * @protected
13183 */
13184 TopbarMenu.prototype._href;
13185 /**
13186 * @type {?}
13187 * @protected
13188 */
13189 TopbarMenu.prototype.domSanitizer;
13190 /**
13191 * @type {?}
13192 * @protected
13193 */
13194 TopbarMenu.prototype.elementRef;
13195}
13196
13197/**
13198 * @fileoverview added by tsickle
13199 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
13200 */
13201class TopbarModule {
13202}
13203TopbarModule.decorators = [
13204 { type: NgModule, args: [{
13205 declarations: [
13206 Topbar,
13207 TopbarGlobal,
13208 TopbarNavigation,
13209 TopbarItem,
13210 TopbarMenu,
13211 ],
13212 imports: [
13213 CommonModule,
13214 IconModule,
13215 ],
13216 exports: [
13217 Topbar,
13218 TopbarGlobal,
13219 TopbarNavigation,
13220 TopbarItem,
13221 TopbarMenu,
13222 ]
13223 },] }
13224];
13225
13226/**
13227 * @fileoverview added by tsickle
13228 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
13229 */
13230class Frame {
13231 /**
13232 * @param {?} breakpointObserver
13233 */
13234 constructor(breakpointObserver) {
13235 this.baseClass = true;
13236 this.mobile = false;
13237 breakpointObserver.observe('(max-width: 768px)').subscribe((/**
13238 * @param {?} result
13239 * @return {?}
13240 */
13241 result => {
13242 if (result.matches) {
13243 this.activateHandsetLayout();
13244 }
13245 else {
13246 this.activateDesktopLayout();
13247 }
13248 }));
13249 }
13250 /**
13251 * Activates handset layout
13252 * @return {?}
13253 */
13254 activateHandsetLayout() {
13255 this.mobile = true;
13256 }
13257 /**
13258 * Activates desktop layout
13259 * @return {?}
13260 */
13261 activateDesktopLayout() {
13262 this.mobile = false;
13263 }
13264}
13265Frame.decorators = [
13266 { type: Component, args: [{
13267 selector: 'suka-frame',
13268 template: `
13269 <div class="frame__header">
13270 <ng-content select="suka-topbar"></ng-content>
13271 </div>
13272
13273 <ng-template #navigationTemplate>
13274 <ng-content select="suka-navigation"></ng-content>
13275 </ng-template>
13276
13277 <div class="frame__nav" *ngIf="!mobile">
13278 <ng-container *ngTemplateOutlet="navigationTemplate"></ng-container>
13279 </div>
13280
13281 <div class="frame__main">
13282 <ng-content select="suka-page"></ng-content>
13283 </div>
13284
13285 <div class="frame__mobile-nav" *ngIf="mobile">
13286 <suka-mobile-navigation>
13287 <ng-container *ngTemplateOutlet="navigationTemplate"></ng-container>
13288 </suka-mobile-navigation>
13289 </div>
13290
13291 <ng-content></ng-content>
13292 `
13293 }] }
13294];
13295/** @nocollapse */
13296Frame.ctorParameters = () => [
13297 { type: BreakpointObserver }
13298];
13299Frame.propDecorators = {
13300 baseClass: [{ type: HostBinding, args: ['class.frame',] }],
13301 mobile: [{ type: HostBinding, args: ['class.frame--mobile',] }]
13302};
13303if (false) {
13304 /** @type {?} */
13305 Frame.prototype.baseClass;
13306 /** @type {?} */
13307 Frame.prototype.mobile;
13308}
13309
13310/**
13311 * @fileoverview added by tsickle
13312 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
13313 */
13314class FrameModule {
13315}
13316FrameModule.decorators = [
13317 { type: NgModule, args: [{
13318 declarations: [
13319 Frame,
13320 ],
13321 exports: [
13322 Frame,
13323 ],
13324 imports: [
13325 CommonModule,
13326 LayoutModule$1,
13327 NavigationModule,
13328 ]
13329 },] }
13330];
13331
13332/**
13333 * @fileoverview added by tsickle
13334 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
13335 */
13336class Breadcrumb {
13337 // Build your breadcrumb starting with the root route of your current activated route
13338 /**
13339 * @param {?} activatedRoute
13340 * @param {?} router
13341 */
13342 constructor(activatedRoute, router) {
13343 this.activatedRoute = activatedRoute;
13344 this.router = router;
13345 }
13346 /**
13347 * @return {?}
13348 */
13349 ngOnInit() {
13350 if (this.router) {
13351 this.breadcrumbs$ = this.router.events.pipe(filter((/**
13352 * @param {?} event
13353 * @return {?}
13354 */
13355 event => event instanceof NavigationEnd)), distinctUntilChanged(), map((/**
13356 * @param {?} event
13357 * @return {?}
13358 */
13359 event => this.buildBreadcrumb(this.activatedRoute.root))));
13360 }
13361 }
13362 /**
13363 * @param {?} route
13364 * @param {?=} url
13365 * @param {?=} breadcrumbs
13366 * @return {?}
13367 */
13368 buildBreadcrumb(route, url = '', breadcrumbs = []) {
13369 // If no routeConfig is avalailable we are on the root path
13370 /** @type {?} */
13371 const label = route.routeConfig ? route.routeConfig.data['breadcrumb'] : 'Inicio';
13372 /** @type {?} */
13373 const path = route.routeConfig ? route.routeConfig.path : '';
13374 // In the routeConfig the complete path is not available,
13375 // so we rebuild it each time
13376 /** @type {?} */
13377 const nextUrl = `${url}${path}/`;
13378 /** @type {?} */
13379 const breadcrumb = {
13380 label,
13381 url: nextUrl,
13382 };
13383 /** @type {?} */
13384 const newBreadcrumbs = [...breadcrumbs, breadcrumb];
13385 if (route.firstChild) {
13386 // If we are not on our current path yet,
13387 // there will be more children to look after, to build our breadcumb
13388 return this.buildBreadcrumb(route.firstChild, nextUrl, newBreadcrumbs);
13389 }
13390 return newBreadcrumbs;
13391 }
13392}
13393Breadcrumb.decorators = [
13394 { type: Component, args: [{
13395 selector: 'suka-breadcrumb',
13396 template: `
13397 <ol class="breadcrumb" *ngIf="router">
13398 <li
13399 *ngFor="let breadcrumb of breadcrumbs$ | async; last as isLast;"
13400 class="breadcrumb-item"
13401 [ngClass]="{'active': isLast}" aria-current="page"
13402 >
13403 <a
13404 *ngIf="!isLast; else lastRoute"
13405 [routerLink]="[breadcrumb.url]"
13406 routerLinkActive="active"
13407 >
13408 <suka-icon icon="home" *ngIf="breadcrumb.label === 'Inicio'"></suka-icon> {{ breadcrumb.label }}
13409 <suka-icon icon="chevron-right"></suka-icon>
13410 </a>
13411 <ng-template #lastRoute>
13412 <suka-icon icon="home" *ngIf="breadcrumb.label === 'Inicio'"></suka-icon> {{ breadcrumb.label }}
13413 </ng-template>
13414 </li>
13415 </ol>
13416 `,
13417 encapsulation: ViewEncapsulation.None
13418 }] }
13419];
13420/** @nocollapse */
13421Breadcrumb.ctorParameters = () => [
13422 { type: ActivatedRoute, decorators: [{ type: Optional }] },
13423 { type: Router, decorators: [{ type: Optional }] }
13424];
13425if (false) {
13426 /**
13427 * @ignore
13428 * @type {?}
13429 */
13430 Breadcrumb.prototype.breadcrumbs$;
13431 /**
13432 * @type {?}
13433 * @private
13434 */
13435 Breadcrumb.prototype.activatedRoute;
13436 /** @type {?} */
13437 Breadcrumb.prototype.router;
13438}
13439
13440/**
13441 * @fileoverview added by tsickle
13442 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
13443 */
13444class BreadcrumbModule {
13445}
13446BreadcrumbModule.decorators = [
13447 { type: NgModule, args: [{
13448 declarations: [
13449 Breadcrumb,
13450 ],
13451 exports: [
13452 Breadcrumb,
13453 ],
13454 imports: [
13455 CommonModule,
13456 RouterModule,
13457 IconModule,
13458 ]
13459 },] }
13460];
13461
13462/**
13463 * @fileoverview added by tsickle
13464 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
13465 */
13466class Page {
13467 constructor() {
13468 this.narrow = false;
13469 this.default = true;
13470 this._fluid = false;
13471 this.breadcrumb = true;
13472 }
13473 /**
13474 * @return {?}
13475 */
13476 ngOnInit() {
13477 if (this.fluid) {
13478 this._fluid = true;
13479 this.default = false;
13480 }
13481 }
13482}
13483Page.decorators = [
13484 { type: Component, args: [{
13485 selector: 'suka-page',
13486 template: `
13487 <suka-page-header [breadcrumb]="breadcrumb" [title]="title" [subtitle]="subtitle" [actions]="actions"></suka-page-header>
13488
13489 <ng-content></ng-content>
13490 `
13491 }] }
13492];
13493Page.propDecorators = {
13494 fluid: [{ type: Input }],
13495 narrow: [{ type: HostBinding, args: ['class.page--narrow',] }, { type: Input }],
13496 default: [{ type: HostBinding, args: ['class.page',] }],
13497 _fluid: [{ type: HostBinding, args: ['class.page--fluid',] }],
13498 title: [{ type: Input }],
13499 subtitle: [{ type: Input }],
13500 actions: [{ type: Input }],
13501 breadcrumb: [{ type: Input }]
13502};
13503if (false) {
13504 /** @type {?} */
13505 Page.prototype.fluid;
13506 /** @type {?} */
13507 Page.prototype.narrow;
13508 /** @type {?} */
13509 Page.prototype.default;
13510 /** @type {?} */
13511 Page.prototype._fluid;
13512 /** @type {?} */
13513 Page.prototype.title;
13514 /** @type {?} */
13515 Page.prototype.subtitle;
13516 /** @type {?} */
13517 Page.prototype.actions;
13518 /** @type {?} */
13519 Page.prototype.breadcrumb;
13520}
13521
13522/**
13523 * @fileoverview added by tsickle
13524 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
13525 */
13526class PageHeader {
13527 constructor() {
13528 this.baseClass = true;
13529 this.breadcrumb = true;
13530 }
13531 /**
13532 * @param {?} value
13533 * @return {?}
13534 */
13535 isTemplate(value) {
13536 return value instanceof TemplateRef;
13537 }
13538}
13539PageHeader.decorators = [
13540 { type: Component, args: [{
13541 selector: `suka-page-header`,
13542 template: `
13543 <suka-breadcrumb *ngIf="breadcrumb"></suka-breadcrumb>
13544
13545 <suka-stack
13546 alignment="center"
13547 >
13548 <div sukaStackItem fill="true">
13549 <ng-container *ngIf="!isTemplate(title)">
13550 <h3 class="page__header__title">{{title}}</h3>
13551 <span *ngIf="subtitle" class="page__header__subtitle">{{subtitle}}</span>
13552 </ng-container>
13553
13554 <ng-template *ngIf="isTemplate(title)" [ngTemplateOutlet]="title"></ng-template>
13555 </div>
13556
13557 <ng-template [ngTemplateOutlet]="actions"></ng-template>
13558 </suka-stack>
13559 `
13560 }] }
13561];
13562PageHeader.propDecorators = {
13563 baseClass: [{ type: HostBinding, args: ['class.page__header',] }],
13564 title: [{ type: Input }],
13565 subtitle: [{ type: Input }],
13566 actions: [{ type: Input }],
13567 breadcrumb: [{ type: Input }]
13568};
13569if (false) {
13570 /** @type {?} */
13571 PageHeader.prototype.baseClass;
13572 /** @type {?} */
13573 PageHeader.prototype.title;
13574 /** @type {?} */
13575 PageHeader.prototype.subtitle;
13576 /** @type {?} */
13577 PageHeader.prototype.actions;
13578 /** @type {?} */
13579 PageHeader.prototype.breadcrumb;
13580}
13581
13582/**
13583 * @fileoverview added by tsickle
13584 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
13585 */
13586class PageModule {
13587}
13588PageModule.decorators = [
13589 { type: NgModule, args: [{
13590 declarations: [
13591 Page,
13592 PageHeader,
13593 ],
13594 exports: [
13595 Page,
13596 PageHeader,
13597 ],
13598 imports: [
13599 CommonModule,
13600 RouterModule,
13601 BreadcrumbModule,
13602 StackModule,
13603 ]
13604 },] }
13605];
13606
13607/**
13608 * @fileoverview added by tsickle
13609 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
13610 */
13611/** @type {?} */
13612const noop = (/**
13613 * @return {?}
13614 */
13615() => { });
13616const ɵ0$1 = noop;
13617class FileUploader {
13618 constructor() {
13619 /**
13620 * Accessible text for the button that opens the upload window.
13621 */
13622 this.buttonText = 'Agregar archivo(s)';
13623 /**
13624 * Type set for button
13625 */
13626 this.buttonType = 'basic';
13627 /**
13628 * Specify the types of files that the input should be able to receive
13629 */
13630 this.accept = [];
13631 /**
13632 * Set to `false` to tell the component to only accept a single file on upload.
13633 *
13634 * Defaults to `true`. Accepts multiple files.
13635 */
13636 this.multiple = true;
13637 /**
13638 * Set to `true` for a loading file uploader.
13639 */
13640 this.skeleton = false;
13641 /**
13642 * Provides a unique id for the underlying `<input>` node
13643 */
13644 this.fileUploaderId = `file-uploader-${FileUploader.fileUploaderCount}`;
13645 /**
13646 * The list of files that have been submitted to be uploaded
13647 */
13648 this.files = new Set();
13649 /**
13650 * Emits an event to other classes when files change
13651 */
13652 this.filesChange = new EventEmitter();
13653 this.baseClass = true;
13654 this.onTouchedCallback = noop;
13655 this.onChangeCallback = noop;
13656 FileUploader.fileUploaderCount++;
13657 }
13658 /**
13659 * Specifies the property to be used as the return value to `ngModel`
13660 * @return {?}
13661 */
13662 get value() {
13663 return this.files;
13664 }
13665 /**
13666 * @param {?} v
13667 * @return {?}
13668 */
13669 set value(v) {
13670 if (v !== this.files) {
13671 this.files = v;
13672 this.onChangeCallback(v);
13673 }
13674 }
13675 /**
13676 * @return {?}
13677 */
13678 onBlur() {
13679 this.onTouchedCallback();
13680 }
13681 /**
13682 * Propagates the injected `value`.
13683 * @param {?} value
13684 * @return {?}
13685 */
13686 writeValue(value) {
13687 if (value !== this.value) {
13688 this.files = value;
13689 }
13690 }
13691 /**
13692 * @return {?}
13693 */
13694 onFilesAdded() {
13695 /** @type {?} */
13696 const files = this.fileInput.nativeElement.files;
13697 if (!this.multiple) {
13698 this.files.clear();
13699 }
13700 for (let file of files) {
13701 /** @type {?} */
13702 const fileItem = {
13703 file,
13704 uploaded: false,
13705 state: 'edit',
13706 invalid: false,
13707 invalidText: '',
13708 };
13709 this.files.add(fileItem);
13710 this.filesChange.emit(this.files);
13711 }
13712 this.value = this.files;
13713 }
13714 /**
13715 * @param {?} fileItem
13716 * @return {?}
13717 */
13718 removeFile(fileItem) {
13719 this.files.delete(fileItem);
13720 this.fileInput.nativeElement.value = '';
13721 this.filesChange.emit(this.files);
13722 }
13723 /**
13724 * Registers the injected function to control the touch use of the `FileUploader`.
13725 * @param {?} fn
13726 * @return {?}
13727 */
13728 registerOnTouched(fn) {
13729 this.onTouchedCallback = fn;
13730 }
13731 /**
13732 * Sets a method in order to propagate changes back to the form.
13733 * @param {?} fn
13734 * @return {?}
13735 */
13736 registerOnChange(fn) {
13737 this.onChangeCallback = fn;
13738 }
13739}
13740/**
13741 * Counter used to create unique ids for file-uploader components
13742 */
13743FileUploader.fileUploaderCount = 0;
13744FileUploader.decorators = [
13745 { type: Component, args: [{
13746 selector: 'suka-file-uploader',
13747 template: `
13748 <ng-container *ngIf="!skeleton; else skeletonTemplate">
13749 <label class="label">{{title}}</label>
13750 <div *ngIf="description" class="form__helper-text">{{description}}</div>
13751 <div class="file">
13752 <button
13753 type="button"
13754 [sukaButton]="buttonType"
13755 (click)="fileInput.click()"
13756 [attr.for]="fileUploaderId"
13757 [size]="size">
13758 {{buttonText}}
13759 </button>
13760 <input
13761 #fileInput
13762 type="file"
13763 class="file-input"
13764 [accept]="accept"
13765 [id]="fileUploaderId"
13766 [multiple]="multiple"
13767 tabindex="-1"
13768 (change)="onFilesAdded()"/>
13769 <div class="file-container">
13770 <div *ngFor="let fileItem of files">
13771 <suka-file [fileItem]="fileItem" (remove)="removeFile(fileItem)"></suka-file>
13772 <div *ngIf="fileItem.invalid" class="form-requirement">
13773 {{fileItem.invalidText}}
13774 </div>
13775 </div>
13776 </div>
13777 </div>
13778 </ng-container>
13779 <ng-template #skeletonTemplate>
13780 <div class="skeleton__text" style="width: 100px"></div>
13781 <div class="skeleton__text" style="width: 225px"></div>
13782 <button sukaButton skeleton="true"></button>
13783 </ng-template>
13784 `,
13785 providers: [
13786 {
13787 provide: NG_VALUE_ACCESSOR,
13788 useExisting: FileUploader,
13789 multi: true
13790 }
13791 ]
13792 }] }
13793];
13794/** @nocollapse */
13795FileUploader.ctorParameters = () => [];
13796FileUploader.propDecorators = {
13797 buttonText: [{ type: Input }],
13798 buttonType: [{ type: Input }],
13799 title: [{ type: Input }],
13800 description: [{ type: Input }],
13801 accept: [{ type: Input }],
13802 multiple: [{ type: Input }],
13803 skeleton: [{ type: Input }],
13804 size: [{ type: Input }],
13805 fileUploaderId: [{ type: Input }],
13806 fileInput: [{ type: ViewChild, args: ['fileInput', { static: false },] }],
13807 files: [{ type: Input }],
13808 filesChange: [{ type: Output }],
13809 baseClass: [{ type: HostBinding, args: ['class.file-uploader',] }]
13810};
13811if (false) {
13812 /**
13813 * Counter used to create unique ids for file-uploader components
13814 * @type {?}
13815 */
13816 FileUploader.fileUploaderCount;
13817 /**
13818 * Accessible text for the button that opens the upload window.
13819 * @type {?}
13820 */
13821 FileUploader.prototype.buttonText;
13822 /**
13823 * Type set for button
13824 * @type {?}
13825 */
13826 FileUploader.prototype.buttonType;
13827 /**
13828 * Text set to the title
13829 * @type {?}
13830 */
13831 FileUploader.prototype.title;
13832 /**
13833 * Text set to the description
13834 * @type {?}
13835 */
13836 FileUploader.prototype.description;
13837 /**
13838 * Specify the types of files that the input should be able to receive
13839 * @type {?}
13840 */
13841 FileUploader.prototype.accept;
13842 /**
13843 * Set to `false` to tell the component to only accept a single file on upload.
13844 *
13845 * Defaults to `true`. Accepts multiple files.
13846 * @type {?}
13847 */
13848 FileUploader.prototype.multiple;
13849 /**
13850 * Set to `true` for a loading file uploader.
13851 * @type {?}
13852 */
13853 FileUploader.prototype.skeleton;
13854 /**
13855 * Sets the size of the button.
13856 * @type {?}
13857 */
13858 FileUploader.prototype.size;
13859 /**
13860 * Provides a unique id for the underlying `<input>` node
13861 * @type {?}
13862 */
13863 FileUploader.prototype.fileUploaderId;
13864 /**
13865 * Maintains a reference to the view DOM element of the underlying `<input>` node
13866 * @type {?}
13867 */
13868 FileUploader.prototype.fileInput;
13869 /**
13870 * The list of files that have been submitted to be uploaded
13871 * @type {?}
13872 */
13873 FileUploader.prototype.files;
13874 /**
13875 * Emits an event to other classes when files change
13876 * @type {?}
13877 */
13878 FileUploader.prototype.filesChange;
13879 /** @type {?} */
13880 FileUploader.prototype.baseClass;
13881 /**
13882 * @type {?}
13883 * @protected
13884 */
13885 FileUploader.prototype.onTouchedCallback;
13886 /**
13887 * @type {?}
13888 * @protected
13889 */
13890 FileUploader.prototype.onChangeCallback;
13891}
13892
13893/**
13894 * @fileoverview added by tsickle
13895 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
13896 */
13897class File {
13898 constructor() {
13899 this.remove = new EventEmitter();
13900 this.selectedFile = true;
13901 }
13902 /**
13903 * @return {?}
13904 */
13905 get isInvalidText() {
13906 return this.fileItem.invalidText;
13907 }
13908 /**
13909 * @return {?}
13910 */
13911 get isValid() {
13912 return this.fileItem.state === 'complete';
13913 }
13914}
13915File.decorators = [
13916 { type: Component, args: [{
13917 selector: 'suka-file',
13918 template: `
13919 <p class="file-filename">{{fileItem.file.name}}</p>
13920 <span
13921 *ngIf="fileItem.state === 'edit'"
13922 class="file__state-container"
13923 (click)="remove.emit()"
13924 (keyup.enter)="remove.emit()"
13925 (keyup.space)="remove.emit()"
13926 tabindex="0">
13927 <suka-icon
13928 *ngIf="isInvalidText"
13929 icon="alert-circle"
13930 class="file--invalid">
13931 </suka-icon>
13932 <suka-icon
13933 icon="x"
13934 class="file-close">
13935 </suka-icon>
13936 </span>
13937 <span *ngIf="fileItem.state === 'upload'">
13938 <suka-loading size="sm"></suka-loading>
13939 </span>
13940 <span
13941 *ngIf="fileItem.state === 'complete'"
13942 class="file__state-container"
13943 tabindex="0">
13944 <suka-icon
13945 icon="check"
13946 class="file-complete">
13947 </suka-icon>
13948 </span>
13949 `
13950 }] }
13951];
13952File.propDecorators = {
13953 fileItem: [{ type: Input }],
13954 remove: [{ type: Output }],
13955 selectedFile: [{ type: HostBinding, args: ['class.file__selected-file',] }],
13956 isInvalidText: [{ type: HostBinding, args: ['class.file__selected-file--invalid',] }],
13957 isValid: [{ type: HostBinding, args: ['class.file__selected-file--valid',] }]
13958};
13959if (false) {
13960 /**
13961 * A single `FileItem` from the set of `FileItem`s
13962 * @type {?}
13963 */
13964 File.prototype.fileItem;
13965 /** @type {?} */
13966 File.prototype.remove;
13967 /** @type {?} */
13968 File.prototype.selectedFile;
13969}
13970
13971/**
13972 * @fileoverview added by tsickle
13973 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
13974 */
13975class FileUploaderModule {
13976}
13977FileUploaderModule.decorators = [
13978 { type: NgModule, args: [{
13979 declarations: [
13980 FileUploader,
13981 File
13982 ],
13983 exports: [
13984 FileUploader
13985 ],
13986 imports: [
13987 CommonModule,
13988 ButtonModule,
13989 IconModule,
13990 LoadingModule,
13991 ]
13992 },] }
13993];
13994
13995/**
13996 * @fileoverview added by tsickle
13997 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
13998 */
13999class Avatar {
14000 constructor() {
14001 /**
14002 * Sets the avatar color.
14003 */
14004 this.color = 'gray';
14005 /**
14006 * Sets the avatar class
14007 */
14008 this.class = '';
14009 /**
14010 * Sets the avatar size.
14011 */
14012 this.size = 'md';
14013 }
14014 /**
14015 * @return {?}
14016 */
14017 get attrClass() {
14018 return `avatar avatar--${this.color} avatar--${this.size} ${this.class}`;
14019 }
14020 /**
14021 * Sets the avatar initials according to the name input.
14022 * @return {?}
14023 */
14024 getInitials() {
14025 if (this.name === '') {
14026 return '';
14027 }
14028 /** @type {?} */
14029 const names = this.name.split(' ');
14030 /** @type {?} */
14031 let initials = names[0].substring(0, 1).toUpperCase();
14032 if (names.length > 1) {
14033 initials += names[names.length - 1].substring(0, 1).toUpperCase();
14034 }
14035 return initials;
14036 }
14037}
14038Avatar.decorators = [
14039 { type: Component, args: [{
14040 selector: `suka-avatar`,
14041 template: `
14042 <ng-container *ngIf="!imgSrc">{{getInitials()}}</ng-container>
14043 <img *ngIf="imgSrc" [src]="imgSrc" />
14044 `
14045 }] }
14046];
14047Avatar.propDecorators = {
14048 imgSrc: [{ type: Input }],
14049 name: [{ type: Input }],
14050 color: [{ type: Input }],
14051 class: [{ type: Input }],
14052 size: [{ type: Input }],
14053 attrClass: [{ type: HostBinding, args: ['attr.class',] }]
14054};
14055if (false) {
14056 /**
14057 * Sets an image url for the avatar. If it is set, it displays instead of the name initials.
14058 * @type {?}
14059 */
14060 Avatar.prototype.imgSrc;
14061 /**
14062 * Avatar name. Used to display its initials (Max 2).
14063 * @type {?}
14064 */
14065 Avatar.prototype.name;
14066 /**
14067 * Sets the avatar color.
14068 * @type {?}
14069 */
14070 Avatar.prototype.color;
14071 /**
14072 * Sets the avatar class
14073 * @type {?}
14074 */
14075 Avatar.prototype.class;
14076 /**
14077 * Sets the avatar size.
14078 * @type {?}
14079 */
14080 Avatar.prototype.size;
14081}
14082
14083/**
14084 * @fileoverview added by tsickle
14085 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
14086 */
14087class AvatarModule {
14088}
14089AvatarModule.decorators = [
14090 { type: NgModule, args: [{
14091 declarations: [Avatar],
14092 exports: [Avatar],
14093 imports: [CommonModule]
14094 },] }
14095];
14096
14097/**
14098 * @fileoverview added by tsickle
14099 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
14100 */
14101class DatePickerInput {
14102 /**
14103 * @param {?} elementRef
14104 */
14105 constructor(elementRef) {
14106 this.elementRef = elementRef;
14107 /**
14108 * Select a calendar type for the `model`.
14109 */
14110 this.type = 'simple';
14111 /**
14112 * Sets the id for the `DatePickerInput`.
14113 */
14114 this.id = `datepicker-${DatePickerInput.datePickerCount++}`;
14115 /**
14116 * Set to `true` to display a calendar icon
14117 */
14118 this.hasIcon = false;
14119 /**
14120 * Sets the input's placeholder.
14121 */
14122 this.placeholder = 'dd/mm/yyyy';
14123 /**
14124 * Sets the pattern to follow.
14125 */
14126 this.pattern = '^\\d{1,2}/\\d{1,2}/\\d{4}$';
14127 /**
14128 * Emits event notifying other classes of a value change.
14129 */
14130 this.valueChange = new EventEmitter();
14131 /**
14132 * Set to `true` to disable the input
14133 */
14134 this.disabled = false;
14135 /**
14136 * Set to `true` to display invalid state.
14137 */
14138 this.invalid = false;
14139 /**
14140 * Skeleton state.
14141 */
14142 this.skeleton = false;
14143 /**
14144 * Sets the `DatepickerInput` value.
14145 */
14146 this.value = '';
14147 this.onTouched = (/**
14148 * @return {?}
14149 */
14150 () => { });
14151 this.propagateChange = (/**
14152 * @param {?} _
14153 * @return {?}
14154 */
14155 (_) => { });
14156 }
14157 /**
14158 * Sets the value, marks the input as touched and emits a value change event.
14159 * @param {?} event
14160 * @return {?}
14161 */
14162 onChange(event) {
14163 this.value = event.target.value;
14164 this.valueChange.emit(this.value);
14165 this.propagateChange(this.value);
14166 this.onTouched();
14167 }
14168 /**
14169 * @param {?} value
14170 * @return {?}
14171 */
14172 writeValue(value) {
14173 this.value = value;
14174 }
14175 /**
14176 * @param {?} fn
14177 * @return {?}
14178 */
14179 registerOnChange(fn) {
14180 this.propagateChange = fn;
14181 }
14182 /**
14183 * @param {?} fn
14184 * @return {?}
14185 */
14186 registerOnTouched(fn) {
14187 this.onTouched = fn;
14188 }
14189 /**
14190 * @param {?} value
14191 * @return {?}
14192 */
14193 isTemplate(value) {
14194 return value instanceof TemplateRef;
14195 }
14196}
14197DatePickerInput.datePickerCount = 0;
14198DatePickerInput.decorators = [
14199 { type: Component, args: [{
14200 selector: 'suka-date-picker-input',
14201 template: `
14202 <div class="date-picker-input"
14203 [ngClass]="{
14204 'date-picker--single' : type === 'single',
14205 'date-picker--range' : type === 'range',
14206 'skeleton' : skeleton
14207 }">
14208 <div class="date-picker-input-container">
14209 <label *ngIf="label" [for]="id" class="label">
14210 <ng-container *ngIf="!isTemplate(label)">{{label}}</ng-container>
14211 <ng-template *ngIf="isTemplate(label)" [ngTemplateOutlet]="label"></ng-template>
14212 </label>
14213 <div class="date-picker-input__wrapper">
14214 <input
14215 *ngIf="!skeleton"
14216 autocomplete="off"
14217 type="text"
14218 class="date-picker__input"
14219 [value]="value"
14220 [pattern]="pattern"
14221 [placeholder]="placeholder"
14222 [id]= "id"
14223 [disabled]="disabled"
14224 (change)="onChange($event)"/>
14225 <suka-icon
14226 icon="calendar"
14227 class="date-picker__icon">
14228 </suka-icon>
14229 </div>
14230 <div *ngIf="invalid" class="form-requirement">
14231 <ng-container *ngIf="!isTemplate(invalidText)">{{invalidText}}</ng-container>
14232 <ng-template *ngIf="isTemplate(invalidText)" [ngTemplateOutlet]="invalidText"></ng-template>
14233 </div>
14234 </div>
14235 </div>
14236 `,
14237 providers: [
14238 {
14239 provide: NG_VALUE_ACCESSOR,
14240 useExisting: DatePickerInput,
14241 multi: true
14242 }
14243 ]
14244 }] }
14245];
14246/** @nocollapse */
14247DatePickerInput.ctorParameters = () => [
14248 { type: ElementRef }
14249];
14250DatePickerInput.propDecorators = {
14251 type: [{ type: Input }],
14252 id: [{ type: Input }],
14253 hasIcon: [{ type: Input }],
14254 label: [{ type: Input }],
14255 placeholder: [{ type: Input }],
14256 pattern: [{ type: Input }],
14257 valueChange: [{ type: Output }],
14258 disabled: [{ type: Input }],
14259 invalid: [{ type: Input }],
14260 invalidText: [{ type: Input }],
14261 skeleton: [{ type: Input }],
14262 value: [{ type: Input }]
14263};
14264if (false) {
14265 /**
14266 * @type {?}
14267 * @private
14268 */
14269 DatePickerInput.datePickerCount;
14270 /**
14271 * Select a calendar type for the `model`.
14272 * @type {?}
14273 */
14274 DatePickerInput.prototype.type;
14275 /**
14276 * Sets the id for the `DatePickerInput`.
14277 * @type {?}
14278 */
14279 DatePickerInput.prototype.id;
14280 /**
14281 * Set to `true` to display a calendar icon
14282 * @type {?}
14283 */
14284 DatePickerInput.prototype.hasIcon;
14285 /**
14286 * label content.
14287 * @type {?}
14288 */
14289 DatePickerInput.prototype.label;
14290 /**
14291 * Sets the input's placeholder.
14292 * @type {?}
14293 */
14294 DatePickerInput.prototype.placeholder;
14295 /**
14296 * Sets the pattern to follow.
14297 * @type {?}
14298 */
14299 DatePickerInput.prototype.pattern;
14300 /**
14301 * Emits event notifying other classes of a value change.
14302 * @type {?}
14303 */
14304 DatePickerInput.prototype.valueChange;
14305 /**
14306 * Set to `true` to disable the input
14307 * @type {?}
14308 */
14309 DatePickerInput.prototype.disabled;
14310 /**
14311 * Set to `true` to display invalid state.
14312 * @type {?}
14313 */
14314 DatePickerInput.prototype.invalid;
14315 /**
14316 * Feedback message to display when `DatepickerInput` is invalid.
14317 * @type {?}
14318 */
14319 DatePickerInput.prototype.invalidText;
14320 /**
14321 * Skeleton state.
14322 * @type {?}
14323 */
14324 DatePickerInput.prototype.skeleton;
14325 /**
14326 * Sets the `DatepickerInput` value.
14327 * @type {?}
14328 */
14329 DatePickerInput.prototype.value;
14330 /** @type {?} */
14331 DatePickerInput.prototype.onTouched;
14332 /** @type {?} */
14333 DatePickerInput.prototype.propagateChange;
14334 /**
14335 * @type {?}
14336 * @protected
14337 */
14338 DatePickerInput.prototype.elementRef;
14339}
14340
14341/**
14342 * @fileoverview added by tsickle
14343 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
14344 */
14345class DatePickerInputModule {
14346}
14347DatePickerInputModule.decorators = [
14348 { type: NgModule, args: [{
14349 declarations: [
14350 DatePickerInput
14351 ],
14352 exports: [
14353 DatePickerInput
14354 ],
14355 imports: [
14356 CommonModule,
14357 IconModule,
14358 ]
14359 },] }
14360];
14361
14362/**
14363 * @fileoverview added by tsickle
14364 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
14365 */
14366/** @type {?} */
14367const monthToStr = (/**
14368 * @param {?} monthNumber
14369 * @param {?} shorthand
14370 * @param {?} locale
14371 * @return {?}
14372 */
14373(monthNumber, shorthand, locale) => locale.months[shorthand ? 'shorthand' : 'longhand'][monthNumber]);
14374const ɵ0$2 = monthToStr;
14375/** @type {?} */
14376const config = {
14377 selectorInit: '[data-date-picker]',
14378 selectorDatePickerInput: '[data-date-picker-input]',
14379 selectorDatePickerInputFrom: '[data-date-picker-input-from]',
14380 selectorDatePickerInputTo: '[data-date-picker-input-to]',
14381 selectorDatePickerIcon: '[data-date-picker-icon]',
14382 selectorFlatpickrMonthYearContainer: '.flatpickr-current-month',
14383 selectorFlatpickrYearContainer: '.numInputWrapper',
14384 selectorFlatpickrCurrentMonth: '.cur-month',
14385 classCalendarContainer: `date-picker__calendar`,
14386 classMonth: `date-picker__month`,
14387 classWeekdays: `date-picker__weekdays`,
14388 classDays: `date-picker__days`,
14389 classWeekday: `date-picker__weekday`,
14390 classDay: `date-picker__day`,
14391 classFocused: `focused`,
14392 classVisuallyHidden: `visually-hidden`,
14393 classFlatpickrCurrentMonth: 'cur-month',
14394 attribType: 'data-date-picker-type',
14395 dateFormat: 'd/m/Y',
14396 shorthand: false
14397};
14398/** @type {?} */
14399const sukaFlatpickrMonthSelectPlugin = (/**
14400 * @param {?} fp
14401 * @return {?}
14402 */
14403fp => {
14404 /** @type {?} */
14405 const setupElements = (/**
14406 * @return {?}
14407 */
14408 () => {
14409 if (!fp.monthElements) {
14410 return;
14411 }
14412 fp.monthElements.forEach((/**
14413 * @param {?} elem
14414 * @return {?}
14415 */
14416 elem => {
14417 if (!elem.parentNode) {
14418 return;
14419 }
14420 elem.parentNode.removeChild(elem);
14421 }));
14422 fp.monthElements.splice(0, fp.monthElements.length, ...fp.monthElements.map((/**
14423 * @return {?}
14424 */
14425 () => {
14426 /** @type {?} */
14427 const monthElement = fp._createElement('span', config.classFlatpickrCurrentMonth);
14428 monthElement.textContent = monthToStr(fp.currentMonth, config.shorthand === true, fp.l10n);
14429 fp.yearElements[0]
14430 .closest(config.selectorFlatpickrMonthYearContainer)
14431 .insertBefore(monthElement, fp.yearElements[0].closest(config.selectorFlatpickrYearContainer));
14432 return monthElement;
14433 })));
14434 });
14435 /** @type {?} */
14436 const updateCurrentMonth = (/**
14437 * @return {?}
14438 */
14439 () => {
14440 /** @type {?} */
14441 const monthStr = monthToStr(fp.currentMonth, config.shorthand === true, fp.l10n);
14442 if (fp.yearElements) {
14443 fp.yearElements.forEach((/**
14444 * @param {?} elem
14445 * @return {?}
14446 */
14447 elem => {
14448 /** @type {?} */
14449 const currentMonthContainer = elem.closest(config.selectorFlatpickrMonthYearContainer);
14450 Array.prototype.forEach.call(currentMonthContainer.querySelectorAll('.cur-month'), (/**
14451 * @param {?} monthElement
14452 * @return {?}
14453 */
14454 monthElement => {
14455 monthElement.textContent = monthStr;
14456 }));
14457 }));
14458 }
14459 });
14460 /** @type {?} */
14461 const register = (/**
14462 * @return {?}
14463 */
14464 () => {
14465 fp.loadedPlugins.push('sukaFlatpickrMonthSelectPlugin');
14466 });
14467 return {
14468 onMonthChange: updateCurrentMonth,
14469 onOpen: updateCurrentMonth,
14470 onReady: [setupElements, updateCurrentMonth, register]
14471 };
14472});
14473
14474/**
14475 * @fileoverview added by tsickle
14476 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
14477 */
14478class DatePicker {
14479 /**
14480 * @param {?} elementRef
14481 */
14482 constructor(elementRef) {
14483 this.elementRef = elementRef;
14484 /**
14485 * Select calendar range mode
14486 */
14487 this.range = false;
14488 /**
14489 * Format of date
14490 *
14491 * For reference: https://flatpickr.js.org/formatting/
14492 */
14493 this.dateFormat = 'd/m/Y';
14494 /**
14495 * Sets the placeholder text.
14496 */
14497 this.placeholder = 'dd/mm/yyyy';
14498 /**
14499 * Sets the pattern to follow.
14500 */
14501 this.pattern = '^\\d{1,2}/\\d{1,2}/\\d{4}$';
14502 /**
14503 * Date picker id.
14504 */
14505 this.id = `datepicker-${DatePicker.datePickerCount++}`;
14506 /**
14507 * Set to `true` to disable the `Datepicker`
14508 */
14509 this.disabled = false;
14510 /**
14511 * Set to `true` to display invalid state.
14512 */
14513 this.invalid = false;
14514 /**
14515 * Skeleton state.
14516 */
14517 this.skeleton = false;
14518 /**
14519 * Array of date picker plugins.
14520 */
14521 this.plugins = [];
14522 /**
14523 * Emits event notifying other classes of a change.
14524 */
14525 this.valueChange = new EventEmitter();
14526 this._value = [];
14527 this._flatpickrOptions = {
14528 allowInput: true
14529 };
14530 this.flatpickrBaseOptions = {
14531 mode: 'single',
14532 dateFormat: 'd/m/Y',
14533 locale: Spanish,
14534 plugins: this.plugins,
14535 onOpen: (/**
14536 * @return {?}
14537 */
14538 () => { this.updateClassNames(); }),
14539 value: this.value
14540 };
14541 this.flatpickrInstance = null;
14542 this.onTouched = (/**
14543 * @return {?}
14544 */
14545 () => { });
14546 this.propagateChange = (/**
14547 * @param {?} _
14548 * @return {?}
14549 */
14550 (_) => { });
14551 }
14552 /**
14553 * Sets the value.
14554 * @param {?} v
14555 * @return {?}
14556 */
14557 set value(v) {
14558 if (!v) {
14559 v = [];
14560 }
14561 this._value = v;
14562 }
14563 /**
14564 * @return {?}
14565 */
14566 get value() {
14567 return this._value;
14568 }
14569 /**
14570 * Flatpickr options
14571 * @param {?} options
14572 * @return {?}
14573 */
14574 set flatpickrOptions(options) {
14575 this._flatpickrOptions = Object.assign({}, this._flatpickrOptions, options);
14576 }
14577 /**
14578 * @return {?}
14579 */
14580 get flatpickrOptions() {
14581 /** @type {?} */
14582 const plugins = [...this.plugins, sukaFlatpickrMonthSelectPlugin];
14583 if (this.range) {
14584 plugins.push(rangePlugin({ input: `#${this.id}-rangeInput`, position: 'left' }));
14585 }
14586 return Object.assign({}, this._flatpickrOptions, this.flatpickrBaseOptions, {
14587 mode: this.range ? 'range' : 'single',
14588 plugins,
14589 dateFormat: this.dateFormat
14590 });
14591 }
14592 /**
14593 * @param {?} changes
14594 * @return {?}
14595 */
14596 ngOnChanges(changes) {
14597 if (this.isFlatpickrLoaded()) {
14598 /** @type {?} */
14599 let dates = this.flatpickrInstance.selectedDates;
14600 if (changes.value && this.didDateValueChange(changes.value.currentValue, changes.value.previousValue)) {
14601 dates = changes.value.currentValue;
14602 }
14603 // only reset the flatpickr instance on Input changes
14604 this.flatpickrInstance = flatpickr(`#${this.id}`, this.flatpickrOptions);
14605 this.setDateValues(dates);
14606 }
14607 }
14608 // because the actual view may be delayed in loading (think projection into a tab pane)
14609 // and because we rely on a library that operates outside the Angular view of the world
14610 // we need to keep trying to load the library, until the relevant DOM is actually live
14611 /**
14612 * @return {?}
14613 */
14614 ngAfterViewChecked() {
14615 if (!this.isFlatpickrLoaded()) {
14616 this.flatpickrInstance = flatpickr(`#${this.id}`, this.flatpickrOptions);
14617 // if (and only if) the initialization succeeded, we can set the date values
14618 if (this.isFlatpickrLoaded()) {
14619 if (this.value.length > 0) {
14620 this.setDateValues(this.value);
14621 }
14622 }
14623 }
14624 }
14625 /**
14626 * @return {?}
14627 */
14628 onFocus() {
14629 this.onTouched();
14630 }
14631 /**
14632 * Writes a value from the model to the component. Expects the value to be `null` or `(Date | string)[]`
14633 * @param {?} value value received from the model
14634 * @return {?}
14635 */
14636 writeValue(value) {
14637 this.value = value;
14638 if (this.isFlatpickrLoaded() && this.flatpickrInstance.config) {
14639 this.setDateValues(this.value);
14640 }
14641 }
14642 /**
14643 * @param {?} fn
14644 * @return {?}
14645 */
14646 registerOnChange(fn) {
14647 this.propagateChange = fn;
14648 }
14649 /**
14650 * @param {?} fn
14651 * @return {?}
14652 */
14653 registerOnTouched(fn) {
14654 this.onTouched = fn;
14655 }
14656 /**
14657 * Cleans up our flatpickr instance
14658 * @return {?}
14659 */
14660 ngOnDestroy() {
14661 if (!this.isFlatpickrLoaded()) {
14662 return;
14663 }
14664 this.flatpickrInstance.destroy();
14665 }
14666 /**
14667 * Handles the `valueChange` event from the primary/single input
14668 * @param {?} event
14669 * @return {?}
14670 */
14671 onValueChange(event) {
14672 if (this.isFlatpickrLoaded()) {
14673 /** @type {?} */
14674 const date = this.flatpickrInstance.parseDate(event, this.dateFormat);
14675 if (this.range) {
14676 this.setDateValues([date, this.flatpickrInstance.selectedDates[1]]);
14677 }
14678 else {
14679 this.setDateValues([date]);
14680 }
14681 this.doSelect(this.flatpickrInstance.selectedDates);
14682 }
14683 }
14684 /**
14685 * Handles the `valueChange` event from the range input
14686 * @param {?} event
14687 * @return {?}
14688 */
14689 onRangeValueChange(event) {
14690 if (this.isFlatpickrLoaded()) {
14691 /** @type {?} */
14692 const date = this.flatpickrInstance.parseDate(event, this.dateFormat);
14693 this.setDateValues([this.flatpickrInstance.selectedDates[0], date]);
14694 this.doSelect(this.flatpickrInstance.selectedDates);
14695 }
14696 }
14697 /**
14698 * Carbon uses a number of specific classnames for parts of the flatpickr - this idempotent method applies them if needed.
14699 * @protected
14700 * @return {?}
14701 */
14702 updateClassNames() {
14703 if (!this.elementRef) {
14704 return;
14705 }
14706 // get all the possible flatpickrs in the document - we need to add classes to (potentially) all of them
14707 /** @type {?} */
14708 const calendarContainer = document.querySelectorAll('.flatpickr-calendar');
14709 /** @type {?} */
14710 const monthContainer = document.querySelectorAll('.flatpickr-month');
14711 /** @type {?} */
14712 const weekdaysContainer = document.querySelectorAll('.flatpickr-weekdays');
14713 /** @type {?} */
14714 const weekdayContainer = document.querySelectorAll('.flatpickr-weekday');
14715 /** @type {?} */
14716 const daysContainer = document.querySelectorAll('.flatpickr-days');
14717 /** @type {?} */
14718 const dayContainer = document.querySelectorAll('.flatpickr-day');
14719 // add classes to lists of elements
14720 /** @type {?} */
14721 const addClassIfNotExists = (/**
14722 * @param {?} classname
14723 * @param {?} elementList
14724 * @return {?}
14725 */
14726 (classname, elementList) => {
14727 Array.from(elementList).forEach((/**
14728 * @param {?} element
14729 * @return {?}
14730 */
14731 element => {
14732 if (!element.classList.contains(classname)) {
14733 element.classList.add(classname);
14734 }
14735 }));
14736 });
14737 // add classes (but only if they don't exist, small perf win)
14738 addClassIfNotExists('date-picker__calendar', calendarContainer);
14739 addClassIfNotExists('date-picker__month', monthContainer);
14740 addClassIfNotExists('date-picker__weekdays', weekdaysContainer);
14741 addClassIfNotExists('date-picker__days', daysContainer);
14742 // add weekday classes and format the text
14743 Array.from(weekdayContainer).forEach((/**
14744 * @param {?} element
14745 * @return {?}
14746 */
14747 element => {
14748 element.innerHTML = element.innerHTML.replace(/\s+/g, '');
14749 element.classList.add('date-picker__weekday');
14750 }));
14751 // add day classes and special case the "today" element based on `this.value`
14752 Array.from(dayContainer).forEach((/**
14753 * @param {?} element
14754 * @return {?}
14755 */
14756 element => {
14757 element.classList.add('date-picker__day');
14758 if (!this.value) {
14759 return;
14760 }
14761 if (element.classList.contains('today') && this.value.length > 0) {
14762 element.classList.add('no-border');
14763 }
14764 else if (element.classList.contains('today') && this.value.length === 0) {
14765 element.classList.remove('no-border');
14766 }
14767 }));
14768 }
14769 /**
14770 * Applies the given date value array to both the flatpickr instance and the `input`(s)
14771 * @protected
14772 * @param {?} dates the date values to apply
14773 * @return {?}
14774 */
14775 setDateValues(dates) {
14776 if (this.isFlatpickrLoaded()) {
14777 /** @type {?} */
14778 const singleInput = this.elementRef.nativeElement.querySelector(`#${this.id}`);
14779 /** @type {?} */
14780 const rangeInput = this.elementRef.nativeElement.querySelector(`#${this.id}-rangeInput`);
14781 // set the date on the instance
14782 this.flatpickrInstance.setDate(dates);
14783 // we can either set a date value or an empty string, so we start with an empty string
14784 /** @type {?} */
14785 let singleDate = '';
14786 // if date is a string, parse and format
14787 if (typeof this.flatpickrInstance.selectedDates[0] === 'string') {
14788 singleDate = this.flatpickrInstance.parseDate(this.flatpickrInstance.selectedDates[0], this.dateFormat);
14789 singleDate = this.flatpickrInstance.formatDate(singleDate, this.dateFormat);
14790 // if date is not a string we can assume it's a Date and we should format
14791 }
14792 else if (!!this.flatpickrInstance.selectedDates[0]) {
14793 singleDate = this.flatpickrInstance.formatDate(this.flatpickrInstance.selectedDates[0], this.dateFormat);
14794 }
14795 if (rangeInput) {
14796 // we can either set a date value or an empty string, so we start with an empty string
14797 /** @type {?} */
14798 let rangeDate = '';
14799 // if date is a string, parse and format
14800 if (typeof this.flatpickrInstance.selectedDates[1] === 'string') {
14801 rangeDate = this.flatpickrInstance.parseDate(this.flatpickrInstance.selectedDates[1].toString(), this.dateFormat);
14802 rangeDate = this.flatpickrInstance.formatDate(rangeDate, this.dateFormat);
14803 // if date is not a string we can assume it's a Date and we should format
14804 }
14805 else if (!!this.flatpickrInstance.selectedDates[1]) {
14806 rangeDate = this.flatpickrInstance.formatDate(this.flatpickrInstance.selectedDates[1], this.dateFormat);
14807 }
14808 setTimeout((/**
14809 * @return {?}
14810 */
14811 () => {
14812 // apply the values
14813 rangeInput.value = rangeDate;
14814 singleInput.value = singleDate;
14815 }));
14816 }
14817 }
14818 }
14819 /**
14820 * @protected
14821 * @param {?} selectedValue
14822 * @return {?}
14823 */
14824 doSelect(selectedValue) {
14825 this.valueChange.emit(selectedValue);
14826 this.propagateChange(selectedValue);
14827 }
14828 /**
14829 * @protected
14830 * @param {?} currentValue
14831 * @param {?} previousValue
14832 * @return {?}
14833 */
14834 didDateValueChange(currentValue, previousValue) {
14835 return currentValue[0] !== previousValue[0] || currentValue[1] !== previousValue[1];
14836 }
14837 /**
14838 * More advanced checking of the loaded state of flatpickr
14839 * @protected
14840 * @return {?}
14841 */
14842 isFlatpickrLoaded() {
14843 // cast the instance to a boolean, and some method that has to exist for the library to be loaded in this case `setDate`
14844 return !!this.flatpickrInstance && !!this.flatpickrInstance.setDate;
14845 }
14846}
14847DatePicker.datePickerCount = 0;
14848DatePicker.decorators = [
14849 { type: Component, args: [{
14850 selector: 'suka-date-picker',
14851 template: `
14852 <div class="form-item">
14853 <div
14854 class="date-picker"
14855 [ngClass]="{
14856 'date-picker--range' : range,
14857 'date-picker--single' : !range,
14858 'skeleton' : skeleton
14859 }">
14860 <div class="date-picker-container">
14861 <suka-date-picker-input
14862 [label]="label"
14863 [placeholder]="placeholder"
14864 [pattern]="pattern"
14865 [id]="id"
14866 [type]="(range ? 'range' : 'single')"
14867 [hasIcon]="(range ? false : true)"
14868 [disabled]="disabled"
14869 [invalid]="invalid"
14870 [invalidText]="invalidText"
14871 [skeleton]="skeleton"
14872 (valueChange)="onValueChange($event)">
14873 </suka-date-picker-input>
14874 </div>
14875 <div *ngIf="range" class="date-picker-container">
14876 <suka-date-picker-input
14877 [label]="rangeLabel"
14878 [placeholder]="placeholder"
14879 [pattern]="pattern"
14880 [id]="id + '-rangeInput'"
14881 [type]="(range ? 'range' : 'single')"
14882 [hasIcon]="(range ? true : null)"
14883 [disabled]="disabled"
14884 [invalid]="invalid"
14885 [invalidText]="invalidText"
14886 [skeleton]="skeleton"
14887 (valueChange)="onRangeValueChange($event)">
14888 </suka-date-picker-input>
14889 </div>
14890 </div>
14891 </div>
14892 `,
14893 providers: [
14894 {
14895 provide: NG_VALUE_ACCESSOR,
14896 useExisting: DatePicker,
14897 multi: true
14898 }
14899 ],
14900 encapsulation: ViewEncapsulation.None
14901 }] }
14902];
14903/** @nocollapse */
14904DatePicker.ctorParameters = () => [
14905 { type: ElementRef }
14906];
14907DatePicker.propDecorators = {
14908 range: [{ type: Input }],
14909 dateFormat: [{ type: Input }],
14910 label: [{ type: Input }],
14911 rangeLabel: [{ type: Input }],
14912 placeholder: [{ type: Input }],
14913 pattern: [{ type: Input }],
14914 id: [{ type: Input }],
14915 value: [{ type: Input }],
14916 disabled: [{ type: Input }],
14917 invalid: [{ type: Input }],
14918 invalidText: [{ type: Input }],
14919 skeleton: [{ type: Input }],
14920 plugins: [{ type: Input }],
14921 flatpickrOptions: [{ type: Input }],
14922 valueChange: [{ type: Output }],
14923 onFocus: [{ type: HostListener, args: ['focusin',] }]
14924};
14925if (false) {
14926 /**
14927 * @type {?}
14928 * @private
14929 */
14930 DatePicker.datePickerCount;
14931 /**
14932 * Select calendar range mode
14933 * @type {?}
14934 */
14935 DatePicker.prototype.range;
14936 /**
14937 * Format of date
14938 *
14939 * For reference: https://flatpickr.js.org/formatting/
14940 * @type {?}
14941 */
14942 DatePicker.prototype.dateFormat;
14943 /**
14944 * Date picker label.
14945 * @type {?}
14946 */
14947 DatePicker.prototype.label;
14948 /**
14949 * Label for date range selector.
14950 * @type {?}
14951 */
14952 DatePicker.prototype.rangeLabel;
14953 /**
14954 * Sets the placeholder text.
14955 * @type {?}
14956 */
14957 DatePicker.prototype.placeholder;
14958 /**
14959 * Sets the pattern to follow.
14960 * @type {?}
14961 */
14962 DatePicker.prototype.pattern;
14963 /**
14964 * Date picker id.
14965 * @type {?}
14966 */
14967 DatePicker.prototype.id;
14968 /**
14969 * Set to `true` to disable the `Datepicker`
14970 * @type {?}
14971 */
14972 DatePicker.prototype.disabled;
14973 /**
14974 * Set to `true` to display invalid state.
14975 * @type {?}
14976 */
14977 DatePicker.prototype.invalid;
14978 /**
14979 * Feedback message to display when `Datepicker` is invalid.
14980 * @type {?}
14981 */
14982 DatePicker.prototype.invalidText;
14983 /**
14984 * Skeleton state.
14985 * @type {?}
14986 */
14987 DatePicker.prototype.skeleton;
14988 /**
14989 * Array of date picker plugins.
14990 * @type {?}
14991 */
14992 DatePicker.prototype.plugins;
14993 /**
14994 * Emits event notifying other classes of a change.
14995 * @type {?}
14996 */
14997 DatePicker.prototype.valueChange;
14998 /**
14999 * @type {?}
15000 * @protected
15001 */
15002 DatePicker.prototype._value;
15003 /**
15004 * @type {?}
15005 * @protected
15006 */
15007 DatePicker.prototype._flatpickrOptions;
15008 /**
15009 * @type {?}
15010 * @protected
15011 */
15012 DatePicker.prototype.flatpickrBaseOptions;
15013 /**
15014 * @type {?}
15015 * @protected
15016 */
15017 DatePicker.prototype.flatpickrInstance;
15018 /** @type {?} */
15019 DatePicker.prototype.onTouched;
15020 /** @type {?} */
15021 DatePicker.prototype.propagateChange;
15022 /**
15023 * @type {?}
15024 * @protected
15025 */
15026 DatePicker.prototype.elementRef;
15027}
15028
15029/**
15030 * @fileoverview added by tsickle
15031 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
15032 */
15033class DatePickerModule {
15034}
15035DatePickerModule.decorators = [
15036 { type: NgModule, args: [{
15037 declarations: [
15038 DatePicker
15039 ],
15040 exports: [
15041 DatePicker,
15042 DatePickerInputModule
15043 ],
15044 imports: [
15045 CommonModule,
15046 DatePickerInputModule
15047 ]
15048 },] }
15049];
15050
15051/**
15052 * @fileoverview added by tsickle
15053 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
15054 */
15055class ToastRef {
15056 /**
15057 * @param {?} overlayRef
15058 */
15059 constructor(overlayRef) {
15060 this.overlayRef = overlayRef;
15061 }
15062 /**
15063 * @return {?}
15064 */
15065 isVisible() {
15066 return this.overlayRef && this.overlayRef.overlayElement;
15067 }
15068 /**
15069 * @return {?}
15070 */
15071 getPosition() {
15072 return this.overlayRef.overlayElement.getBoundingClientRect();
15073 }
15074 /**
15075 * @param {?=} data
15076 * @return {?}
15077 */
15078 close(data) {
15079 this.overlayRef.dispose();
15080 // tslint:disable-next-line: no-non-null-assertion
15081 this.componentInstance = (/** @type {?} */ (null));
15082 }
15083}
15084if (false) {
15085 /** @type {?} */
15086 ToastRef.prototype.componentInstance;
15087 /**
15088 * @type {?}
15089 * @private
15090 */
15091 ToastRef.prototype.overlayRef;
15092}
15093
15094/**
15095 * @fileoverview added by tsickle
15096 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
15097 */
15098/** @type {?} */
15099const TOAST_CONFIG_DATA = new InjectionToken('TOAST_CONFIG_DATA');
15100
15101/**
15102 * @fileoverview added by tsickle
15103 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
15104 */
15105/** @type {?} */
15106const toastAnimations = {
15107 fadeToast: trigger('fadeAnimation', [
15108 state('default', style({ opacity: 1, transform: '*' })),
15109 transition('void => *', [style({ opacity: 0, transform: 'scale(.9) translate3d(0, -50%, 0)' }), animate('{{ fadeIn }}ms')]),
15110 transition('default => closing', animate('{{ fadeOut }}ms', style({ opacity: 0 }))),
15111 ]),
15112};
15113
15114/**
15115 * @fileoverview added by tsickle
15116 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
15117 */
15118class ToastContainer {
15119 /**
15120 * @param {?} toastRef
15121 * @param {?} toastConfig
15122 */
15123 constructor(toastRef, toastConfig) {
15124 this.toastRef = toastRef;
15125 this.toastConfig = toastConfig;
15126 this.animationState = 'default';
15127 this.animationStateChanged = new EventEmitter();
15128 this.showFooter = false;
15129 this.baseClass = true;
15130 }
15131 /**
15132 * @param {?} value
15133 * @return {?}
15134 */
15135 isTemplate(value) {
15136 return value instanceof TemplateRef;
15137 }
15138 /**
15139 * @return {?}
15140 */
15141 ngOnInit() {
15142 this.content = this.toastConfig.content;
15143 this.intervalId = window.setTimeout((/**
15144 * @return {?}
15145 */
15146 () => this.startExitAnimation()), 5000);
15147 }
15148 /**
15149 * @return {?}
15150 */
15151 ngOnDestroy() {
15152 clearTimeout(this.intervalId);
15153 }
15154 /**
15155 * @return {?}
15156 */
15157 close() {
15158 this.toastRef.close();
15159 }
15160 /**
15161 * @param {?} event
15162 * @return {?}
15163 */
15164 onAnimationStart(event) {
15165 this.animationStateChanged.emit(event);
15166 }
15167 /**
15168 * @param {?} event
15169 * @return {?}
15170 */
15171 onAnimationDone(event) {
15172 this.animationStateChanged.emit(event);
15173 }
15174 /**
15175 * @param {?} $event
15176 * @return {?}
15177 */
15178 closeToast($event) {
15179 this.toastRef.close();
15180 }
15181 /**
15182 * @param {?} event
15183 * @return {?}
15184 */
15185 onFadeFinished(event) {
15186 const { toState } = event;
15187 /** @type {?} */
15188 const isFadeOut = ((/** @type {?} */ (toState))) === 'closing';
15189 /** @type {?} */
15190 const itFinished = this.animationState === 'closing';
15191 if (isFadeOut && itFinished) {
15192 this.close();
15193 }
15194 }
15195 /**
15196 * @return {?}
15197 */
15198 startExitAnimation() {
15199 this.animationState = 'closing';
15200 }
15201}
15202ToastContainer.decorators = [
15203 { type: Component, args: [{
15204 selector: 'suka-toast',
15205 template: `
15206 <div class="toast"
15207 [@fadeAnimation]="{
15208 value: animationState,
15209 params: {
15210 fadeIn: toastConfig.animation.fadeIn,
15211 fadeOut: toastConfig.animation.fadeOut
15212 }
15213 }"
15214 (@fadeAnimation.done)="onFadeFinished($event)"
15215 [ngClass]="{
15216 'toast--success': content.type === 'success',
15217 'toast--alert': content.type === 'alert',
15218 'toast--attention': content.type === 'attention'
15219 }"
15220 >
15221 <suka-icon icon="check" *ngIf="content.type === 'success'" class="toast__icon--success"></suka-icon>
15222 <suka-icon icon="alert-circle" *ngIf="content.type === 'alert'" class="toast__icon--alert"></suka-icon>
15223 <suka-icon icon="alert-triangle" *ngIf="content.type === 'attention'" class="toast__icon--attention"></suka-icon>
15224 <div>{{ content.body }}</div>
15225 <suka-icon icon="x" (click)="close()" class="toast__close">close</suka-icon>
15226 </div>
15227 `,
15228 animations: [toastAnimations.fadeToast]
15229 }] }
15230];
15231/** @nocollapse */
15232ToastContainer.ctorParameters = () => [
15233 { type: ToastRef },
15234 { type: undefined, decorators: [{ type: Inject, args: [TOAST_CONFIG_DATA,] }] }
15235];
15236ToastContainer.propDecorators = {
15237 baseClass: [{ type: HostBinding, args: ['class.toast--default',] }]
15238};
15239if (false) {
15240 /**
15241 * @type {?}
15242 * @private
15243 */
15244 ToastContainer.prototype.intervalId;
15245 /** @type {?} */
15246 ToastContainer.prototype.animationState;
15247 /** @type {?} */
15248 ToastContainer.prototype.animationStateChanged;
15249 /** @type {?} */
15250 ToastContainer.prototype.showFooter;
15251 /** @type {?} */
15252 ToastContainer.prototype.primaryActions;
15253 /** @type {?} */
15254 ToastContainer.prototype.secondaryActions;
15255 /** @type {?} */
15256 ToastContainer.prototype.content;
15257 /** @type {?} */
15258 ToastContainer.prototype.baseClass;
15259 /** @type {?} */
15260 ToastContainer.prototype.toastRef;
15261 /** @type {?} */
15262 ToastContainer.prototype.toastConfig;
15263}
15264
15265/**
15266 * @fileoverview added by tsickle
15267 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
15268 */
15269/**
15270 * @record
15271 */
15272function ToastContent() { }
15273if (false) {
15274 /** @type {?} */
15275 ToastContent.prototype.type;
15276 /** @type {?|undefined} */
15277 ToastContent.prototype.body;
15278}
15279/**
15280 * @record
15281 */
15282function ToastConfig() { }
15283if (false) {
15284 /** @type {?|undefined} */
15285 ToastConfig.prototype.content;
15286 /** @type {?|undefined} */
15287 ToastConfig.prototype.position;
15288 /** @type {?|undefined} */
15289 ToastConfig.prototype.animation;
15290}
15291/** @type {?} */
15292const DEFAULT_CONFIG$2 = {
15293 position: {
15294 top: 20,
15295 },
15296 animation: {
15297 fadeOut: 2500,
15298 fadeIn: 150,
15299 },
15300 content: null,
15301};
15302class ToastService {
15303 /**
15304 * @param {?} injector
15305 * @param {?} overlay
15306 */
15307 constructor(injector, overlay) {
15308 this.injector = injector;
15309 this.overlay = overlay;
15310 }
15311 /**
15312 * @param {?=} config
15313 * @return {?}
15314 */
15315 show(config = {}) {
15316 // Override default configuration
15317 /** @type {?} */
15318 const dialogConfig = Object.assign({}, DEFAULT_CONFIG$2, config);
15319 // Returns an OverlayRef which is a PortalHost
15320 /** @type {?} */
15321 const overlayRef = this.createOverlay(dialogConfig);
15322 // Instantiate remote control
15323 /** @type {?} */
15324 const toastRef = new ToastRef(overlayRef);
15325 this.lastToast = toastRef;
15326 /** @type {?} */
15327 const overlayComponent = this.attachToastContainer(overlayRef, dialogConfig, toastRef);
15328 toastRef.componentInstance = overlayComponent;
15329 return toastRef;
15330 }
15331 /**
15332 * @private
15333 * @param {?} config
15334 * @return {?}
15335 */
15336 createOverlay(config) {
15337 /** @type {?} */
15338 const overlayConfig = this.getOverlayConfig(config);
15339 return this.overlay.create(overlayConfig);
15340 }
15341 /**
15342 * @private
15343 * @param {?} overlayRef
15344 * @param {?} config
15345 * @param {?} toastRef
15346 * @return {?}
15347 */
15348 attachToastContainer(overlayRef, config, toastRef) {
15349 /** @type {?} */
15350 const injector = this.createInjector(config, toastRef);
15351 /** @type {?} */
15352 const containerPortal = new ComponentPortal(ToastContainer, null, injector);
15353 /** @type {?} */
15354 const containerRef = overlayRef.attach(containerPortal);
15355 return containerRef.instance;
15356 }
15357 /**
15358 * @private
15359 * @param {?} config
15360 * @param {?} toastRef
15361 * @return {?}
15362 */
15363 createInjector(config, toastRef) {
15364 /** @type {?} */
15365 const injectionTokens = new WeakMap();
15366 injectionTokens.set(ToastRef, toastRef);
15367 injectionTokens.set(TOAST_CONFIG_DATA, config);
15368 return new PortalInjector(this.injector, injectionTokens);
15369 }
15370 /**
15371 * @private
15372 * @param {?} config
15373 * @return {?}
15374 */
15375 getOverlayConfig(config) {
15376 /** @type {?} */
15377 const positionStrategy = this.overlay.position()
15378 .global()
15379 .centerHorizontally()
15380 .top(this.getPosition(config));
15381 /** @type {?} */
15382 const overlayConfig = new OverlayConfig({
15383 positionStrategy
15384 });
15385 return overlayConfig;
15386 }
15387 /**
15388 * @param {?} config
15389 * @return {?}
15390 */
15391 getPosition(config) {
15392 /** @type {?} */
15393 const lastToastIsVisible = this.lastToast && this.lastToast.isVisible();
15394 /** @type {?} */
15395 const position = lastToastIsVisible
15396 ? this.lastToast.getPosition().bottom
15397 : config.position.top;
15398 return position + 'px';
15399 }
15400}
15401ToastService.decorators = [
15402 { type: Injectable }
15403];
15404/** @nocollapse */
15405ToastService.ctorParameters = () => [
15406 { type: Injector },
15407 { type: Overlay }
15408];
15409if (false) {
15410 /**
15411 * @type {?}
15412 * @private
15413 */
15414 ToastService.prototype.lastToast;
15415 /**
15416 * @type {?}
15417 * @private
15418 */
15419 ToastService.prototype.injector;
15420 /**
15421 * @type {?}
15422 * @private
15423 */
15424 ToastService.prototype.overlay;
15425}
15426
15427/**
15428 * @fileoverview added by tsickle
15429 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
15430 */
15431class ToastModule {
15432}
15433ToastModule.decorators = [
15434 { type: NgModule, args: [{
15435 declarations: [
15436 ToastContainer,
15437 ],
15438 exports: [
15439 ToastContainer,
15440 ],
15441 imports: [
15442 CommonModule,
15443 OverlayModule,
15444 ButtonModule,
15445 IconModule,
15446 ],
15447 entryComponents: [
15448 ToastContainer
15449 ],
15450 providers: [
15451 ToastService,
15452 ],
15453 },] }
15454];
15455
15456/**
15457 * @fileoverview added by tsickle
15458 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
15459 */
15460class Progress {
15461 constructor() {
15462 this.baseClass = true;
15463 /**
15464 * Set to `true` to make the progress linear. This allows the user to access any of the steps at any time (like tabs).
15465 */
15466 this.linear = false;
15467 /**
15468 * Set to `true` to allow the user to edit a step after completed.
15469 */
15470 this.editable = false;
15471 /**
15472 * Emits an event when a index is selected
15473 */
15474 this.selected = new EventEmitter();
15475 /**
15476 * Emits an event when the steps change.
15477 */
15478 this.stepsChange = new EventEmitter();
15479 }
15480 /**
15481 * Sets the steps for the `Progress` component.
15482 * @return {?}
15483 */
15484 get steps() {
15485 return this._steps;
15486 }
15487 /**
15488 * @param {?} value
15489 * @return {?}
15490 */
15491 set steps(value) {
15492 this._steps = value;
15493 this.stepsChange.emit(this._steps);
15494 }
15495 /**
15496 * @param {?} newIndex
15497 * @return {?}
15498 */
15499 select(newIndex) {
15500 this._steps.forEach((/**
15501 * @param {?} step
15502 * @param {?} index
15503 * @return {?}
15504 */
15505 (step, index) => {
15506 if (index === newIndex) {
15507 step.current = true;
15508 }
15509 else if (step.current) {
15510 delete step.current;
15511 }
15512 }));
15513 this.selected.emit(newIndex);
15514 this.steps = this._steps;
15515 }
15516 /**
15517 * Step is completed.
15518 * @param {?} step
15519 * @return {?}
15520 */
15521 isComplete(step) {
15522 return step.state === 'complete';
15523 }
15524 /**
15525 * Step is editable.
15526 * @param {?} step
15527 * @return {?}
15528 */
15529 isEditable(step) {
15530 return step.state === 'complete' && this.editable;
15531 }
15532 /**
15533 * Step is unclickable.
15534 * @param {?} step
15535 * @param {?} index
15536 * @return {?}
15537 */
15538 isUnclickable(step, index) {
15539 if (step.state === 'complete' && !this.editable) {
15540 return true;
15541 }
15542 if (step.state === 'incomplete' && !this.linear && index !== this.getNextStep()) {
15543 return true;
15544 }
15545 return false;
15546 }
15547 /**
15548 * Returns the next uncompleted step.
15549 * @return {?}
15550 */
15551 getNextStep() {
15552 for (const [index, step] of this.steps.entries()) {
15553 if (step.state === 'incomplete') {
15554 return index;
15555 }
15556 }
15557 return -1;
15558 }
15559}
15560Progress.decorators = [
15561 { type: Component, args: [{
15562 selector: 'suka-progress',
15563 template: `
15564 <div class="progress__wrapper">
15565 <ul class="progress-bar">
15566 <li
15567 *ngFor="let step of steps; let i = index"
15568 class="progress-bar__step"
15569 [ngClass]="{
15570 'progress-bar__step--complete': isComplete(step),
15571 'progress-bar__step--editable': isEditable(step),
15572 'progress-bar__step--error': step.state === 'error',
15573 'progress-bar__step--current': step.current,
15574 'progress-bar__step--unclickable': isUnclickable(step, i)
15575 }"
15576 >
15577 <div class="step" role="button" (click)="select(i)">
15578 <div class="step__indicator">
15579 <ng-container *ngIf="step.state !== 'complete' || step.current">{{ i + 1 }}</ng-container>
15580 <suka-icon icon="check" *ngIf="isComplete(step) && !isEditable(step) && !step.current"></suka-icon>
15581 <suka-icon icon="edit-2" *ngIf="isEditable(step) && !step.current"></suka-icon>
15582 </div>
15583 <span class="step__label"> {{ step.label }}</span>
15584 </div>
15585 </li>
15586 </ul>
15587 </div>
15588 `
15589 }] }
15590];
15591Progress.propDecorators = {
15592 baseClass: [{ type: HostBinding, args: ['class.progress',] }],
15593 linear: [{ type: Input }],
15594 editable: [{ type: Input }],
15595 selected: [{ type: Output }],
15596 stepsChange: [{ type: Output }],
15597 steps: [{ type: Input }]
15598};
15599if (false) {
15600 /**
15601 * @type {?}
15602 * @private
15603 */
15604 Progress.prototype._steps;
15605 /** @type {?} */
15606 Progress.prototype.baseClass;
15607 /**
15608 * Set to `true` to make the progress linear. This allows the user to access any of the steps at any time (like tabs).
15609 * @type {?}
15610 */
15611 Progress.prototype.linear;
15612 /**
15613 * Set to `true` to allow the user to edit a step after completed.
15614 * @type {?}
15615 */
15616 Progress.prototype.editable;
15617 /**
15618 * Emits an event when a index is selected
15619 * @type {?}
15620 */
15621 Progress.prototype.selected;
15622 /**
15623 * Emits an event when the steps change.
15624 * @type {?}
15625 */
15626 Progress.prototype.stepsChange;
15627}
15628
15629/**
15630 * @fileoverview added by tsickle
15631 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
15632 */
15633class ProgressModule {
15634}
15635ProgressModule.decorators = [
15636 { type: NgModule, args: [{
15637 declarations: [
15638 Progress
15639 ],
15640 exports: [
15641 Progress
15642 ],
15643 imports: [
15644 CommonModule,
15645 IconModule,
15646 ]
15647 },] }
15648];
15649
15650/**
15651 * @fileoverview added by tsickle
15652 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
15653 */
15654class Layout {
15655 constructor() {
15656 this.baseClass = true;
15657 }
15658}
15659Layout.decorators = [
15660 { type: Component, args: [{
15661 selector: `suka-layout`,
15662 template: `
15663 <ng-content></ng-content>
15664 `
15665 }] }
15666];
15667Layout.propDecorators = {
15668 baseClass: [{ type: HostBinding, args: ['class.layout',] }]
15669};
15670if (false) {
15671 /** @type {?} */
15672 Layout.prototype.baseClass;
15673}
15674
15675/**
15676 * @fileoverview added by tsickle
15677 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
15678 */
15679class LayoutSection {
15680 constructor() {
15681 this.baseClass = true;
15682 this.secondary = false;
15683 this.oneHalf = false;
15684 this.oneThird = false;
15685 this.annotated = false;
15686 }
15687}
15688LayoutSection.decorators = [
15689 { type: Component, args: [{
15690 selector: 'suka-layout-section',
15691 template: `
15692 <div *ngIf="annotated else elseTpl" class="annotation__wrapper">
15693 <div class="annotation">
15694 <h5>{{title}}</h5>
15695 <p>{{description}}</p>
15696 </div>
15697 <div class="annotation-content">
15698 <ng-content *ngTemplateOutlet="elseTpl"></ng-content>
15699 </div>
15700 </div>
15701
15702 <ng-template #elseTpl>
15703 <ng-content></ng-content>
15704 </ng-template>
15705 `
15706 }] }
15707];
15708LayoutSection.propDecorators = {
15709 baseClass: [{ type: HostBinding, args: ['class.layout__section',] }],
15710 secondary: [{ type: HostBinding, args: ['class.layout__section--secondary',] }, { type: Input }],
15711 oneHalf: [{ type: HostBinding, args: ['class.layout__section--one-half',] }, { type: Input }],
15712 oneThird: [{ type: HostBinding, args: ['class.layout__section--one-third',] }, { type: Input }],
15713 annotated: [{ type: HostBinding, args: ['class.layout__section--annotated',] }, { type: Input }],
15714 title: [{ type: Input }],
15715 description: [{ type: Input }]
15716};
15717if (false) {
15718 /** @type {?} */
15719 LayoutSection.prototype.baseClass;
15720 /** @type {?} */
15721 LayoutSection.prototype.secondary;
15722 /** @type {?} */
15723 LayoutSection.prototype.oneHalf;
15724 /** @type {?} */
15725 LayoutSection.prototype.oneThird;
15726 /** @type {?} */
15727 LayoutSection.prototype.annotated;
15728 /**
15729 * Sets the title for an annotated layout section.
15730 * @type {?}
15731 */
15732 LayoutSection.prototype.title;
15733 /**
15734 * Sets the description for an annotated layout section.
15735 * @type {?}
15736 */
15737 LayoutSection.prototype.description;
15738}
15739
15740/**
15741 * @fileoverview added by tsickle
15742 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
15743 */
15744class LayoutModule {
15745}
15746LayoutModule.decorators = [
15747 { type: NgModule, args: [{
15748 declarations: [
15749 Layout,
15750 LayoutSection,
15751 ],
15752 exports: [
15753 Layout,
15754 LayoutSection,
15755 ],
15756 imports: [
15757 CommonModule,
15758 ]
15759 },] }
15760];
15761
15762/**
15763 * @fileoverview added by tsickle
15764 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
15765 */
15766/**
15767 * Informa a los usuarios sobre cambios importantes o condiciones persistentes.
15768 *
15769 * Usa este componente si necesitas comunicar a los usuarios de una manera prominente. Los Banner son ubicados en la parte superior de una página o sección al que aplican, abajo del header de los mismos.
15770 */
15771class Banner {
15772 constructor() {
15773 this.hide = false;
15774 this.animationState = 'default';
15775 /**
15776 * Sets the status for the banner
15777 */
15778 this.status = 'default';
15779 /**
15780 * Displays a close button
15781 */
15782 this.dismissable = true;
15783 /**
15784 * Action label content
15785 */
15786 this.actionLabel = '';
15787 /**
15788 * Callback when the action
15789 */
15790 this.action = new EventEmitter();
15791 /**
15792 * Callback when the banner is dismissed.
15793 */
15794 this.dismiss = new EventEmitter();
15795 }
15796 /**
15797 * @return {?}
15798 */
15799 ngOnInit() {
15800 switch (this.status) {
15801 case 'info':
15802 this.statusIcon = 'info';
15803 break;
15804 case 'success':
15805 this.statusIcon = 'check';
15806 break;
15807 case 'attention':
15808 this.statusIcon = 'alert-triangle';
15809 break;
15810 case 'alert':
15811 this.statusIcon = 'alert-circle';
15812 break;
15813 }
15814 }
15815 /**
15816 * Emits the action callback.
15817 * @return {?}
15818 */
15819 onAction() {
15820 this.action.emit();
15821 }
15822 /**
15823 * Closes the banner.
15824 * Emits the dismiss callback.
15825 * @param {?=} event
15826 * @return {?}
15827 */
15828 onClose(event) {
15829 this.animationState = 'closing';
15830 this.dismiss.emit();
15831 }
15832 /**
15833 * @param {?} event
15834 * @return {?}
15835 */
15836 onFadeFinished(event) {
15837 /** @type {?} */
15838 const itFinished = this.animationState === 'closing';
15839 if (itFinished) {
15840 this.hide = true;
15841 }
15842 }
15843}
15844Banner.decorators = [
15845 { type: Component, args: [{
15846 selector: 'suka-banner',
15847 template: `
15848 <div
15849 [@fadeAnimation]="{
15850 value: animationState,
15851 params: {
15852 fadeIn: 200,
15853 fadeOut: 200
15854 }
15855 }"
15856 (@fadeAnimation.done)="onFadeFinished($event)"
15857 class="banner banner--{{status}}"
15858 [ngClass]="{
15859 'banner--hidden': hide
15860 }"
15861 >
15862 <button
15863 *ngIf="dismissable"
15864 sukaButton="plain"
15865 (click)="onClose($event)"
15866 class="banner__close-button"
15867 >
15868 <suka-icon icon="x"></suka-icon>
15869 </button>
15870
15871 <div class="banner__status-icon" *ngIf="status !== 'default'">
15872 <div class="banner__status-icon__wrapper">
15873 <suka-icon [icon]="statusIcon"></suka-icon>
15874 </div>
15875 </div>
15876
15877 <div class="banner__content">
15878 <h5>{{title}}</h5>
15879 <div class="banner__description">
15880 <ng-content></ng-content>
15881 </div>
15882 <button *ngIf="actionLabel" sukaButton outline="true" (click)="onAction()">{{actionLabel}}</button>
15883 </div>
15884 </div>
15885 `,
15886 animations: [
15887 trigger('fadeAnimation', [
15888 state('default', style({ opacity: 1, transform: '*' })),
15889 transition('void => *', [style({ opacity: 0, transform: 'scale(.9)' }), animate('150ms cubic-bezier(.17,.67,.78,1.21)')]),
15890 transition('default => closing', animate('150ms', style({ opacity: 0, transform: 'scale(.9)' }))),
15891 ]),
15892 ]
15893 }] }
15894];
15895Banner.propDecorators = {
15896 title: [{ type: Input }],
15897 status: [{ type: Input }],
15898 dismissable: [{ type: Input }],
15899 actionLabel: [{ type: Input }],
15900 action: [{ type: Output }],
15901 dismiss: [{ type: Output }]
15902};
15903if (false) {
15904 /** @type {?} */
15905 Banner.prototype.statusIcon;
15906 /** @type {?} */
15907 Banner.prototype.hide;
15908 /** @type {?} */
15909 Banner.prototype.animationState;
15910 /**
15911 * Title content for the banner
15912 * @type {?}
15913 */
15914 Banner.prototype.title;
15915 /**
15916 * Sets the status for the banner
15917 * @type {?}
15918 */
15919 Banner.prototype.status;
15920 /**
15921 * Displays a close button
15922 * @type {?}
15923 */
15924 Banner.prototype.dismissable;
15925 /**
15926 * Action label content
15927 * @type {?}
15928 */
15929 Banner.prototype.actionLabel;
15930 /**
15931 * Callback when the action
15932 * @type {?}
15933 */
15934 Banner.prototype.action;
15935 /**
15936 * Callback when the banner is dismissed.
15937 * @type {?}
15938 */
15939 Banner.prototype.dismiss;
15940}
15941
15942/**
15943 * @fileoverview added by tsickle
15944 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
15945 */
15946class BannerModule {
15947}
15948BannerModule.decorators = [
15949 { type: NgModule, args: [{
15950 declarations: [
15951 Banner
15952 ],
15953 exports: [
15954 Banner
15955 ],
15956 imports: [
15957 CommonModule,
15958 IconModule,
15959 ButtonModule,
15960 ]
15961 },] }
15962];
15963
15964/**
15965 * @fileoverview added by tsickle
15966 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
15967 */
15968/** @enum {string} */
15969const SnippetType = {
15970 single: 'single',
15971 multi: 'multi',
15972 inline: 'inline',
15973};
15974/** @enum {string} */
15975const SnippetLanguage = {
15976 javascript: 'javascript',
15977 json: 'json',
15978 typescript: 'typescript',
15979 markup: 'markup',
15980 markdown: 'markdown',
15981 php: 'php',
15982 ruby: 'ruby',
15983 scss: 'scss',
15984 css: 'css',
15985 html: 'html',
15986 xml: 'xml',
15987 clike: 'clike',
15988 java: 'java',
15989 swift: 'swift',
15990};
15991// tslint:disable-next-line: component-class-suffix
15992class CodeSnippet {
15993 /**
15994 * Creates an instance of CodeSnippet.
15995 * @param {?} sanitizer
15996 */
15997 constructor(sanitizer) {
15998 this.sanitizer = sanitizer;
15999 /**
16000 * It can be `"single"`, `"multi"` or `"inline"`
16001 */
16002 this.display = SnippetType.single;
16003 /**
16004 * Text displayed in the tooltip when user clicks button to copy code.
16005 *
16006 */
16007 this.feedbackText = 'Copiado'; // TODO: i18n
16008 /**
16009 * Snippet highlight language
16010 *
16011 */
16012 this.language = SnippetLanguage.javascript;
16013 /**
16014 * Time in miliseconds to keep the feedback tooltip displayed.
16015 *
16016 */
16017 this.feedbackTimeout = 3000;
16018 /**
16019 * Set to `true` to show an expanded code snippet.
16020 */
16021 this.expanded = false;
16022 /**
16023 * Set to `true` to show a loading code snippet.
16024 */
16025 this.skeleton = false;
16026 this.snippetClass = true;
16027 this.showFeedback = false;
16028 CodeSnippet.codeSnippetCount++;
16029 }
16030 /**
16031 * @return {?}
16032 */
16033 get snippetSingleClass() {
16034 return this.display === SnippetType.single;
16035 }
16036 /**
16037 * @return {?}
16038 */
16039 get snippetMultiClass() {
16040 return this.display === SnippetType.multi;
16041 }
16042 /**
16043 * @return {?}
16044 */
16045 get snippetInlineClass() {
16046 return this.display === SnippetType.inline;
16047 }
16048 /**
16049 * @return {?}
16050 */
16051 get btnCopyClass() {
16052 return this.display === SnippetType.inline;
16053 }
16054 /**
16055 * @return {?}
16056 */
16057 get displayStyle() {
16058 return this.display !== SnippetType.inline ? 'block' : null;
16059 }
16060 /**
16061 * @return {?}
16062 */
16063 get attrType() {
16064 return this.display === SnippetType.inline ? 'button' : null;
16065 }
16066 /**
16067 * @return {?}
16068 */
16069 get shouldShowExpandButton() {
16070 return this.code ? this.code.nativeElement.getBoundingClientRect().height > 255 : false;
16071 }
16072 /**
16073 * @return {?}
16074 */
16075 ngOnInit() {
16076 if (this.highlight) {
16077 this.content = highlight(this.content, languages[this.language], this.language);
16078 }
16079 this.codeHtml = this.sanitizer.sanitize(SecurityContext.HTML, this.content);
16080 }
16081 /**
16082 * @return {?}
16083 */
16084 toggleSnippetExpansion() {
16085 this.expanded = !this.expanded;
16086 }
16087 /**
16088 * Copies the code from the `<code>` block to clipboard.
16089 * @return {?}
16090 */
16091 copyCode() {
16092 // create invisible, uneditable textarea with our code in it
16093 /** @type {?} */
16094 const textarea = document.createElement('textarea');
16095 textarea.value = this.code.nativeElement.innerText || this.code.nativeElement.textContent;
16096 textarea.setAttribute('readonly', '');
16097 textarea.style.position = 'absolute';
16098 textarea.style.right = '-99999px';
16099 document.body.appendChild(textarea);
16100 // save user selection
16101 /** @type {?} */
16102 const selected = document.getSelection().rangeCount ? document.getSelection().getRangeAt(0) : null;
16103 // copy to clipboard
16104 textarea.select();
16105 document.execCommand('copy');
16106 // remove textarea
16107 document.body.removeChild(textarea);
16108 // restore user selection
16109 if (selected) {
16110 document.getSelection().removeAllRanges();
16111 document.getSelection().addRange(selected);
16112 }
16113 }
16114 /**
16115 * On copy button click, copies the code and shows feedback.
16116 * @return {?}
16117 */
16118 onCopyButtonClicked() {
16119 this.copyCode();
16120 this.showFeedback = true;
16121 setTimeout((/**
16122 * @return {?}
16123 */
16124 () => {
16125 this.showFeedback = false;
16126 }), this.feedbackTimeout);
16127 }
16128 /**
16129 * Inline code snippet acts as button and makes the whole component clickable.
16130 *
16131 * This handles clicks in that case.
16132 * @return {?}
16133 */
16134 hostClick() {
16135 if (this.display !== SnippetType.inline) {
16136 return;
16137 }
16138 this.onCopyButtonClicked();
16139 }
16140}
16141/**
16142 * Variable used for creating unique ids for code-snippet components.
16143 */
16144CodeSnippet.codeSnippetCount = 0;
16145CodeSnippet.decorators = [
16146 { type: Component, args: [{
16147 selector: 'suka-code-snippet',
16148 template: `
16149 <ng-container *ngIf="display === 'inline'; else notInline">
16150 <span
16151 sukaTooltip="Copiado"
16152 tooltipTrigger="click"
16153 tooltipDuration="3000"
16154 >
16155 <ng-container *ngTemplateOutlet="codeTemplate"></ng-container>
16156 </span>
16157 </ng-container>
16158
16159 <ng-template #notInline>
16160 <div class="snippet-container" attr.aria-label="Copy code snippet">
16161 <ng-container *ngIf="skeleton">
16162 <span *ngIf="display === 'single'; else multiSkeleton"></span>
16163 <ng-template #multiSkeleton>
16164 <span></span>
16165 <span></span>
16166 <span></span>
16167 </ng-template>
16168 </ng-container>
16169 <pre *ngIf="!skeleton"><ng-container *ngTemplateOutlet="codeTemplate"></ng-container></pre>
16170 </div>
16171
16172 <button
16173 *ngIf="!skeleton"
16174 class="snippet-button"
16175 attr.aria-label="Copiar"
16176 (click)="onCopyButtonClicked()"
16177 [ngClass]="{
16178 'snippet-button--copied': showFeedback
16179 }"
16180 sukaTooltip="Copiado"
16181 tooltipTrigger="click"
16182 tooltipDuration="3000"
16183 tabindex="0">
16184 <suka-icon icon="copy"></suka-icon>
16185 </button>
16186
16187 <button
16188 *ngIf="display === 'multi' && shouldShowExpandButton"
16189 class="btn snippet-btn--expand"
16190 (click)="toggleSnippetExpansion()"
16191 type="button">
16192 <span class="snippet-btn--text">{{expanded ? 'Mostrar menos' : 'Mostrar mas'}}
16193 <suka-icon icon="chevron-down"></suka-icon>
16194 </span>
16195 </button>
16196 </ng-template>
16197 <ng-template #codeTemplate>
16198 <code #code [innerHtml]="codeHtml"></code>
16199 </ng-template>
16200 `
16201 }] }
16202];
16203/** @nocollapse */
16204CodeSnippet.ctorParameters = () => [
16205 { type: DomSanitizer }
16206];
16207CodeSnippet.propDecorators = {
16208 display: [{ type: Input }],
16209 feedbackText: [{ type: Input }],
16210 content: [{ type: Input }],
16211 highlight: [{ type: Input }],
16212 language: [{ type: Input }],
16213 feedbackTimeout: [{ type: Input }],
16214 expanded: [{ type: HostBinding, args: ['class.snippet--expand',] }, { type: Input }],
16215 skeleton: [{ type: HostBinding, args: ['class.skeleton',] }, { type: Input }],
16216 snippetClass: [{ type: HostBinding, args: ['class.snippet',] }],
16217 snippetSingleClass: [{ type: HostBinding, args: ['class.snippet--single',] }],
16218 snippetMultiClass: [{ type: HostBinding, args: ['class.snippet--multi',] }],
16219 snippetInlineClass: [{ type: HostBinding, args: ['class.snippet--inline',] }],
16220 btnCopyClass: [{ type: HostBinding, args: ['class.btn--copy',] }],
16221 displayStyle: [{ type: HostBinding, args: ['style.display',] }],
16222 attrType: [{ type: HostBinding, args: ['attr.type',] }],
16223 code: [{ type: ViewChild, args: ['code', { static: false },] }],
16224 hostClick: [{ type: HostListener, args: ['click',] }]
16225};
16226if (false) {
16227 /**
16228 * Variable used for creating unique ids for code-snippet components.
16229 * @type {?}
16230 */
16231 CodeSnippet.codeSnippetCount;
16232 /** @type {?} */
16233 CodeSnippet.prototype.codeHtml;
16234 /**
16235 * It can be `"single"`, `"multi"` or `"inline"`
16236 * @type {?}
16237 */
16238 CodeSnippet.prototype.display;
16239 /**
16240 * Text displayed in the tooltip when user clicks button to copy code.
16241 *
16242 * @type {?}
16243 */
16244 CodeSnippet.prototype.feedbackText;
16245 /**
16246 * Code content
16247 *
16248 * @type {?}
16249 */
16250 CodeSnippet.prototype.content;
16251 /**
16252 * Code highlight
16253 *
16254 * @type {?}
16255 */
16256 CodeSnippet.prototype.highlight;
16257 /**
16258 * Snippet highlight language
16259 *
16260 * @type {?}
16261 */
16262 CodeSnippet.prototype.language;
16263 /**
16264 * Time in miliseconds to keep the feedback tooltip displayed.
16265 *
16266 * @type {?}
16267 */
16268 CodeSnippet.prototype.feedbackTimeout;
16269 /**
16270 * Set to `true` to show an expanded code snippet.
16271 * @type {?}
16272 */
16273 CodeSnippet.prototype.expanded;
16274 /**
16275 * Set to `true` to show a loading code snippet.
16276 * @type {?}
16277 */
16278 CodeSnippet.prototype.skeleton;
16279 /** @type {?} */
16280 CodeSnippet.prototype.snippetClass;
16281 /** @type {?} */
16282 CodeSnippet.prototype.code;
16283 /** @type {?} */
16284 CodeSnippet.prototype.showFeedback;
16285 /**
16286 * @type {?}
16287 * @private
16288 */
16289 CodeSnippet.prototype.sanitizer;
16290}
16291
16292/**
16293 * @fileoverview added by tsickle
16294 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
16295 */
16296class CodeSnippetModule {
16297}
16298CodeSnippetModule.decorators = [
16299 { type: NgModule, args: [{
16300 declarations: [
16301 CodeSnippet,
16302 ],
16303 exports: [
16304 CodeSnippet,
16305 ],
16306 imports: [
16307 CommonModule,
16308 FormsModule,
16309 TooltipModule,
16310 IconModule,
16311 ]
16312 },] }
16313];
16314
16315/**
16316 * @fileoverview added by tsickle
16317 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
16318 */
16319class EmptyState {
16320 constructor() {
16321 /**
16322 * Heading content.
16323 */
16324 this.heading = '';
16325 /**
16326 * Emits the primary action event.
16327 */
16328 this.primaryAction = new EventEmitter();
16329 /**
16330 * Emits the secondary action event.
16331 */
16332 this.secondaryAction = new EventEmitter();
16333 }
16334 /**
16335 * On button click, emits a primary o secondary action event accordingly
16336 * @param {?} type
16337 * @return {?}
16338 */
16339 onClick(type) {
16340 if (type === 'primary') {
16341 this.primaryAction.emit('primary');
16342 }
16343 if (type === 'secondary') {
16344 this.secondaryAction.emit('secondary');
16345 }
16346 }
16347}
16348EmptyState.decorators = [
16349 { type: Component, args: [{
16350 selector: 'suka-empty-state',
16351 template: `
16352 <div class="empty-state">
16353 <div class="empty-state__description">
16354 <h3 class="empty-state__heading">{{heading}}</h3>
16355
16356 <div class="empty-state__content">
16357 <ng-content></ng-content>
16358 </div>
16359 <div
16360 *ngIf="primaryActionLabel"
16361 class="empty-state__actions"
16362 >
16363 <suka-button-group>
16364 <button
16365 sukaButton="primary"
16366 (click)="onClick('primary')"
16367 >
16368 {{primaryActionLabel}}
16369 </button>
16370 <button
16371 *ngIf="secondaryActionLabel"
16372 sukaButton="plain"
16373 (click)="onClick('secondary')"
16374 >
16375 {{secondaryActionLabel}}
16376 </button>
16377 </suka-button-group>
16378 </div>
16379 </div>
16380
16381 <div class="empty-state__image">
16382 <img *ngIf="imgSrc" [src]="imgSrc" />
16383 <suka-icon *ngIf="!imgSrc" icon="inbox"></suka-icon>
16384 </div>
16385 </div>
16386 `
16387 }] }
16388];
16389EmptyState.propDecorators = {
16390 heading: [{ type: Input }],
16391 imgSrc: [{ type: Input }],
16392 primaryActionLabel: [{ type: Input }],
16393 primaryAction: [{ type: Output }],
16394 secondaryActionLabel: [{ type: Input }],
16395 secondaryAction: [{ type: Output }]
16396};
16397if (false) {
16398 /**
16399 * Heading content.
16400 * @type {?}
16401 */
16402 EmptyState.prototype.heading;
16403 /**
16404 * Sets an image url for the avatar. If it is set, it displays instead of the empty icon.
16405 * @type {?}
16406 */
16407 EmptyState.prototype.imgSrc;
16408 /**
16409 * Primary action label content
16410 * @type {?}
16411 */
16412 EmptyState.prototype.primaryActionLabel;
16413 /**
16414 * Emits the primary action event.
16415 * @type {?}
16416 */
16417 EmptyState.prototype.primaryAction;
16418 /**
16419 * Secondary action label content
16420 * @type {?}
16421 */
16422 EmptyState.prototype.secondaryActionLabel;
16423 /**
16424 * Emits the secondary action event.
16425 * @type {?}
16426 */
16427 EmptyState.prototype.secondaryAction;
16428}
16429
16430/**
16431 * @fileoverview added by tsickle
16432 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
16433 */
16434class EmptyStateModule {
16435}
16436EmptyStateModule.decorators = [
16437 { type: NgModule, args: [{
16438 declarations: [
16439 EmptyState,
16440 ],
16441 exports: [
16442 EmptyState,
16443 ],
16444 imports: [
16445 CommonModule,
16446 IconModule,
16447 ButtonModule,
16448 ]
16449 },] }
16450];
16451
16452/**
16453 * @fileoverview added by tsickle
16454 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
16455 */
16456/**
16457 * @param {?} r
16458 * @param {?} g
16459 * @param {?} b
16460 * @return {?}
16461 */
16462function rgbToHsv(r, g, b) {
16463 /** @type {?} */
16464 let h;
16465 /** @type {?} */
16466 let s;
16467 /** @type {?} */
16468 const rabs = r / 255;
16469 /** @type {?} */
16470 const gabs = g / 255;
16471 /** @type {?} */
16472 const babs = b / 255;
16473 /** @type {?} */
16474 const v = Math.max(rabs, gabs, babs);
16475 /** @type {?} */
16476 const diff = v - Math.min(rabs, gabs, babs);
16477 /** @type {?} */
16478 const diffc = (/**
16479 * @param {?} c
16480 * @return {?}
16481 */
16482 c => (v - c) / 6 / diff + 1 / 2);
16483 /** @type {?} */
16484 const percentRoundFn = (/**
16485 * @param {?} num
16486 * @return {?}
16487 */
16488 num => Math.round(num * 100) / 100);
16489 if (diff === 0) {
16490 h = s = 0;
16491 }
16492 else {
16493 s = diff / v;
16494 /** @type {?} */
16495 const rr = diffc(rabs);
16496 /** @type {?} */
16497 const gg = diffc(gabs);
16498 /** @type {?} */
16499 const bb = diffc(babs);
16500 if (rabs === v) {
16501 h = bb - gg;
16502 }
16503 else if (gabs === v) {
16504 h = (1 / 3) + rr - bb;
16505 }
16506 else if (babs === v) {
16507 h = (2 / 3) + gg - rr;
16508 }
16509 if (h < 0) {
16510 h += 1;
16511 }
16512 else if (h > 1) {
16513 h -= 1;
16514 }
16515 }
16516 return {
16517 h: Math.round(h * 360),
16518 s: percentRoundFn(s * 100),
16519 v: percentRoundFn(v * 100)
16520 };
16521}
16522/**
16523 * @param {?} hex
16524 * @return {?}
16525 */
16526function hexToRgb(hex) {
16527 // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
16528 /** @type {?} */
16529 const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
16530 hex = hex.replace(shorthandRegex, (/**
16531 * @param {?} m
16532 * @param {?} r
16533 * @param {?} g
16534 * @param {?} b
16535 * @return {?}
16536 */
16537 (m, r, g, b) => {
16538 return r + r + g + g + b + b;
16539 }));
16540 /** @type {?} */
16541 const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
16542 return result ? {
16543 r: parseInt(result[1], 16),
16544 g: parseInt(result[2], 16),
16545 b: parseInt(result[3], 16)
16546 } : null;
16547}
16548/**
16549 * @param {?} r
16550 * @param {?} g
16551 * @param {?} b
16552 * @return {?}
16553 */
16554function rgbToHex(r, g, b) {
16555 /**
16556 * @param {?} x
16557 * @return {?}
16558 */
16559 function hex(x) {
16560 return ('0' + parseInt(x).toString(16)).slice(-2);
16561 }
16562 return '#' + hex(r) + hex(g) + hex(b);
16563}
16564/**
16565 * @param {?} hue
16566 * @param {?} saturation
16567 * @param {?} value
16568 * @return {?}
16569 */
16570function hsvToRgb(hue, saturation, value) {
16571 /** @type {?} */
16572 const h = hue / 60;
16573 /** @type {?} */
16574 const s = saturation / 100;
16575 /** @type {?} */
16576 let v = value / 100;
16577 /** @type {?} */
16578 const hi = Math.floor(h) % 6;
16579 /** @type {?} */
16580 const f = h - Math.floor(h);
16581 /** @type {?} */
16582 const p = 255 * v * (1 - s);
16583 /** @type {?} */
16584 const q = 255 * v * (1 - (s * f));
16585 /** @type {?} */
16586 const t = 255 * v * (1 - (s * (1 - f)));
16587 v *= 255;
16588 /** @type {?} */
16589 let rgbArray;
16590 switch (hi) {
16591 case 0:
16592 rgbArray = [v, t, p];
16593 break;
16594 case 1:
16595 rgbArray = [q, v, p];
16596 break;
16597 case 2:
16598 rgbArray = [p, v, t];
16599 break;
16600 case 3:
16601 rgbArray = [p, q, v];
16602 break;
16603 case 4:
16604 rgbArray = [t, p, v];
16605 break;
16606 case 5:
16607 rgbArray = [v, p, q];
16608 break;
16609 }
16610 return {
16611 r: rgbArray[0],
16612 g: rgbArray[1],
16613 b: rgbArray[2],
16614 };
16615}
16616/**
16617 * @param {?} h
16618 * @param {?} s
16619 * @param {?} v
16620 * @return {?}
16621 */
16622function hsvToHex(h, s, v) {
16623 /** @type {?} */
16624 const rgbColor = hsvToRgb(h, s, v);
16625 return rgbToHex(rgbColor.r, rgbColor.g, rgbColor.b);
16626}
16627
16628/**
16629 * @fileoverview added by tsickle
16630 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
16631 */
16632class ColorPicker {
16633 constructor() {
16634 this.baseClass = true;
16635 this.colorChange = new EventEmitter();
16636 this.showInput = true;
16637 }
16638 /**
16639 * @return {?}
16640 */
16641 ngOnInit() {
16642 /** @type {?} */
16643 const rgbColor = hexToRgb(this.color);
16644 if (rgbColor) {
16645 /** @type {?} */
16646 const hsv = rgbToHsv(rgbColor.r, rgbColor.g, rgbColor.b);
16647 this.hue = hsvToHex(hsv.h, 100, 100);
16648 }
16649 }
16650 /**
16651 * @param {?} event
16652 * @return {?}
16653 */
16654 onColorChange(event) {
16655 /** @type {?} */
16656 const rgbColor = hexToRgb(event);
16657 if (rgbColor) {
16658 /** @type {?} */
16659 const hsv = rgbToHsv(rgbColor.r, rgbColor.g, rgbColor.b);
16660 this.hue = hsvToHex(hsv.h, 100, 100);
16661 this.color = event;
16662 }
16663 this.emitColorChange(this.color);
16664 }
16665 /**
16666 * @param {?} event
16667 * @return {?}
16668 */
16669 onColorSelect(event) {
16670 this.color = event;
16671 this.emitColorChange(this.color);
16672 }
16673 /**
16674 * @private
16675 * @param {?} color
16676 * @return {?}
16677 */
16678 emitColorChange(color) {
16679 this.colorChange.emit(color);
16680 }
16681}
16682ColorPicker.decorators = [
16683 { type: Component, args: [{
16684 selector: 'suka-color-picker',
16685 template: `
16686 <div class="input-wrapper" *ngIf="showInput">
16687 <input
16688 [ngModel]="color"
16689 (ngModelChange)="onColorChange($event)"
16690 />
16691 <div
16692 class="color-div"
16693 [ngStyle]="{'background-color': color || 'white'}"
16694 ></div>
16695 </div>
16696 <div class="color-wrapper">
16697 <suka-color-palette
16698 [hue]="hue"
16699 [color]="color"
16700 (colorChange)="onColorSelect($event)"
16701 ></suka-color-palette>
16702 <suka-color-slider
16703 [(hue)]="hue"
16704 ></suka-color-slider>
16705 </div>
16706 `
16707 }] }
16708];
16709ColorPicker.propDecorators = {
16710 baseClass: [{ type: HostBinding, args: ['class.color-picker',] }],
16711 color: [{ type: Input }],
16712 colorChange: [{ type: Output }],
16713 showInput: [{ type: Input }]
16714};
16715if (false) {
16716 /** @type {?} */
16717 ColorPicker.prototype.baseClass;
16718 /** @type {?} */
16719 ColorPicker.prototype.color;
16720 /** @type {?} */
16721 ColorPicker.prototype.colorChange;
16722 /** @type {?} */
16723 ColorPicker.prototype.showInput;
16724 /** @type {?} */
16725 ColorPicker.prototype.hue;
16726 /** @type {?} */
16727 ColorPicker.prototype.globalHue;
16728}
16729
16730/**
16731 * @fileoverview added by tsickle
16732 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
16733 */
16734class ColorSlider {
16735 constructor() {
16736 this.baseClass = true;
16737 this.mousedown = false;
16738 this.hueChange = new EventEmitter();
16739 }
16740 /**
16741 * @param {?} evt
16742 * @return {?}
16743 */
16744 onMouseUp(evt) {
16745 this.mousedown = false;
16746 }
16747 /**
16748 * @return {?}
16749 */
16750 draw() {
16751 if (!this.ctx) {
16752 this.ctx = this.canvas.nativeElement.getContext('2d');
16753 }
16754 /** @type {?} */
16755 const width = this.canvas.nativeElement.width;
16756 /** @type {?} */
16757 const height = this.canvas.nativeElement.height;
16758 this.ctx.clearRect(0, 0, width, height);
16759 /** @type {?} */
16760 const gradient = this.ctx.createLinearGradient(0, 0, 0, height);
16761 gradient.addColorStop(0, 'rgba(255, 0, 0, 1)');
16762 gradient.addColorStop(0.17, 'rgba(255, 255, 0, 1)');
16763 gradient.addColorStop(0.34, 'rgba(0, 255, 0, 1)');
16764 gradient.addColorStop(0.51, 'rgba(0, 255, 255, 1)');
16765 gradient.addColorStop(0.68, 'rgba(0, 0, 255, 1)');
16766 gradient.addColorStop(0.85, 'rgba(255, 0, 255, 1)');
16767 gradient.addColorStop(1, 'rgba(255, 0, 0, 1)');
16768 this.ctx.beginPath();
16769 this.ctx.rect(0, 0, width, height);
16770 this.ctx.fillStyle = gradient;
16771 this.ctx.fill();
16772 this.ctx.closePath();
16773 if (this.selectedHeight) {
16774 this.ctx.beginPath();
16775 this.ctx.strokeStyle = 'white';
16776 this.ctx.lineWidth = 4;
16777 this.ctx.rect(0, this.selectedHeight - 5, width, 10);
16778 this.ctx.stroke();
16779 this.ctx.closePath();
16780 }
16781 }
16782 /**
16783 * @param {?} evt
16784 * @return {?}
16785 */
16786 onMouseDown(evt) {
16787 this.mousedown = true;
16788 this.selectedHeight = evt.offsetY;
16789 this.draw();
16790 this.emitHue(evt.offsetY);
16791 }
16792 /**
16793 * @param {?} evt
16794 * @return {?}
16795 */
16796 onMouseMove(evt) {
16797 if (this.mousedown) {
16798 this.selectedHeight = evt.offsetY;
16799 this.draw();
16800 this.emitHue(evt.offsetY);
16801 }
16802 }
16803 /**
16804 * @param {?} y
16805 * @return {?}
16806 */
16807 emitHue(y) {
16808 if (y < 0) {
16809 y = 0;
16810 }
16811 else if (y >= 250) {
16812 y = 249;
16813 }
16814 /** @type {?} */
16815 const color = this.getColorAtPosition(y);
16816 this.hueChange.emit(rgbToHex(color.r, color.g, color.b));
16817 }
16818 /**
16819 * @param {?} y
16820 * @return {?}
16821 */
16822 getColorAtPosition(y) {
16823 /** @type {?} */
16824 const imageData = this.ctx.getImageData(5, y, 1, 1).data;
16825 return {
16826 r: imageData[0],
16827 g: imageData[1],
16828 b: imageData[2],
16829 };
16830 }
16831 /**
16832 * @param {?} changes
16833 * @return {?}
16834 */
16835 ngOnChanges(changes) {
16836 if (changes.hue && !changes.hue.isFirstChange()) {
16837 /** @type {?} */
16838 const rgbColor = hexToRgb(this.hue);
16839 if (rgbColor) {
16840 /** @type {?} */
16841 const hsvColor = rgbToHsv(rgbColor.r, rgbColor.g, rgbColor.b);
16842 /** @type {?} */
16843 const hueFactor = hsvColor.h / 360;
16844 this.selectedHeight = hueFactor * 250;
16845 this.draw();
16846 }
16847 }
16848 }
16849 /**
16850 * @return {?}
16851 */
16852 ngAfterViewInit() {
16853 if (this.hue) {
16854 /** @type {?} */
16855 const rgbColor = hexToRgb(this.hue);
16856 /** @type {?} */
16857 const hsvColor = rgbToHsv(rgbColor.r, rgbColor.g, rgbColor.b);
16858 /** @type {?} */
16859 const hueFactor = hsvColor.h / 360;
16860 this.selectedHeight = hueFactor * 250;
16861 }
16862 this.draw();
16863 }
16864}
16865ColorSlider.decorators = [
16866 { type: Component, args: [{
16867 selector: 'suka-color-slider',
16868 template: `
16869 <canvas
16870 #canvas
16871 class="color-slider"
16872 width="20"
16873 height="250"
16874 (mousedown)="onMouseDown($event)"
16875 (mousemove)="onMouseMove($event)"
16876 >
16877 </canvas>
16878 `
16879 }] }
16880];
16881ColorSlider.propDecorators = {
16882 baseClass: [{ type: HostBinding, args: ['class.color-slider-wrapper',] }],
16883 hue: [{ type: Input }],
16884 hueChange: [{ type: Output }],
16885 canvas: [{ type: ViewChild, args: ['canvas', { static: false },] }],
16886 onMouseUp: [{ type: HostListener, args: ['window:mouseup', ['$event'],] }]
16887};
16888if (false) {
16889 /** @type {?} */
16890 ColorSlider.prototype.baseClass;
16891 /**
16892 * @type {?}
16893 * @private
16894 */
16895 ColorSlider.prototype.ctx;
16896 /**
16897 * @type {?}
16898 * @private
16899 */
16900 ColorSlider.prototype.mousedown;
16901 /**
16902 * @type {?}
16903 * @private
16904 */
16905 ColorSlider.prototype.selectedHeight;
16906 /** @type {?} */
16907 ColorSlider.prototype.hue;
16908 /** @type {?} */
16909 ColorSlider.prototype.hueChange;
16910 /** @type {?} */
16911 ColorSlider.prototype.canvas;
16912}
16913
16914/**
16915 * @fileoverview added by tsickle
16916 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
16917 */
16918class ColorPalette {
16919 constructor() {
16920 this.baseClass = true;
16921 this.colorChange = new EventEmitter(true);
16922 this.mousedown = false;
16923 }
16924 /**
16925 * @return {?}
16926 */
16927 draw() {
16928 if (!this.ctx) {
16929 this.ctx = this.canvas.nativeElement.getContext('2d');
16930 }
16931 /** @type {?} */
16932 const width = this.canvas.nativeElement.width;
16933 /** @type {?} */
16934 const height = this.canvas.nativeElement.height;
16935 if (this.hue) {
16936 this.ctx.fillStyle = this.hue;
16937 }
16938 else {
16939 this.ctx.fillStyle = '#ff0000';
16940 }
16941 this.ctx.fillRect(0, 0, width, height);
16942 /** @type {?} */
16943 const whiteGrad = this.ctx.createLinearGradient(0, 0, width, 0);
16944 whiteGrad.addColorStop(0, 'rgba(255,255,255,1)');
16945 whiteGrad.addColorStop(1, 'rgba(255,255,255,0)');
16946 this.ctx.fillStyle = whiteGrad;
16947 this.ctx.fillRect(0, 0, width, height);
16948 /** @type {?} */
16949 const blackGrad = this.ctx.createLinearGradient(0, 0, 0, height);
16950 blackGrad.addColorStop(0, 'rgba(0,0,0,0)');
16951 blackGrad.addColorStop(1, 'rgba(0,0,0,1)');
16952 this.ctx.fillStyle = blackGrad;
16953 this.ctx.fillRect(0, 0, width, height);
16954 if (this.selectedPosition) {
16955 this.ctx.strokeStyle = 'white';
16956 this.ctx.fillStyle = 'white';
16957 this.ctx.beginPath();
16958 this.ctx.arc(this.selectedPosition.x, this.selectedPosition.y, 5, 0, 2 * Math.PI);
16959 this.ctx.lineWidth = 3;
16960 this.ctx.stroke();
16961 this.ctx.closePath();
16962 }
16963 }
16964 /**
16965 * @param {?} changes
16966 * @return {?}
16967 */
16968 ngOnChanges(changes) {
16969 if (changes.color && !changes.color.isFirstChange()) {
16970 /** @type {?} */
16971 const rgbColor = hexToRgb(this.color);
16972 if (rgbColor) {
16973 /** @type {?} */
16974 const hsv = rgbToHsv(rgbColor.r, rgbColor.g, rgbColor.b);
16975 this.selectedPosition = {
16976 x: (hsv.s * 250) / 100,
16977 y: 250 - (hsv.v * 250) / 100
16978 };
16979 this.draw();
16980 }
16981 }
16982 else if (changes.hue && !changes.hue.isFirstChange()) {
16983 this.draw();
16984 /** @type {?} */
16985 const pos = this.selectedPosition;
16986 if (pos) {
16987 this.colorChange.emit(this.getColorAtPosition(pos.x, pos.y));
16988 }
16989 }
16990 }
16991 /**
16992 * @return {?}
16993 */
16994 ngAfterViewInit() {
16995 if (this.color) {
16996 /** @type {?} */
16997 const rgbColor = hexToRgb(this.color);
16998 if (rgbColor) {
16999 /** @type {?} */
17000 const hsv = rgbToHsv(rgbColor.r, rgbColor.g, rgbColor.b);
17001 this.selectedPosition = {
17002 x: (hsv.s * 250) / 100,
17003 y: 250 - (hsv.v * 250) / 100
17004 };
17005 }
17006 }
17007 this.draw();
17008 }
17009 /**
17010 * @param {?} evt
17011 * @return {?}
17012 */
17013 onMouseUp(evt) {
17014 this.mousedown = false;
17015 }
17016 /**
17017 * @param {?} evt
17018 * @return {?}
17019 */
17020 onMouseDown(evt) {
17021 this.mousedown = true;
17022 /** @type {?} */
17023 const xPos = evt.offsetX < 0 ? 0 : evt.offsetX >= 250 ? 249 : evt.offsetX;
17024 /** @type {?} */
17025 const yPos = evt.offsetY < 0 ? 0 : evt.offsetY >= 250 ? 249 : evt.offsetY;
17026 this.selectedPosition = {
17027 x: xPos,
17028 y: yPos,
17029 };
17030 this.draw();
17031 this.emitColor(xPos, yPos);
17032 }
17033 /**
17034 * @param {?} evt
17035 * @return {?}
17036 */
17037 onMouseMove(evt) {
17038 if (this.mousedown) {
17039 /** @type {?} */
17040 const xPos = evt.offsetX < 0 ? 0 : evt.offsetX >= 250 ? 249 : evt.offsetX;
17041 /** @type {?} */
17042 const yPos = evt.offsetY < 0 ? 0 : evt.offsetY >= 250 ? 249 : evt.offsetY;
17043 this.selectedPosition = {
17044 x: xPos,
17045 y: yPos,
17046 };
17047 this.draw();
17048 this.emitColor(xPos, yPos);
17049 }
17050 }
17051 /**
17052 * @param {?} x
17053 * @param {?} y
17054 * @return {?}
17055 */
17056 emitColor(x, y) {
17057 /** @type {?} */
17058 const rgbaColor = this.getColorAtPosition(x, y);
17059 this.colorChange.emit(rgbaColor);
17060 }
17061 /**
17062 * @param {?} x
17063 * @param {?} y
17064 * @return {?}
17065 */
17066 getColorAtPosition(x, y) {
17067 /** @type {?} */
17068 const imageData = this.ctx.getImageData(x, y, 1, 1).data;
17069 return rgbToHex(imageData[0], imageData[1], imageData[2]);
17070 }
17071}
17072ColorPalette.decorators = [
17073 { type: Component, args: [{
17074 selector: 'suka-color-palette',
17075 template: `
17076 <canvas
17077 #canvas
17078 class="color-palette"
17079 width="250"
17080 height="250"
17081 (mousedown)="onMouseDown($event)"
17082 (mousemove)="onMouseMove($event)"
17083 >
17084 </canvas>
17085 `
17086 }] }
17087];
17088ColorPalette.propDecorators = {
17089 baseClass: [{ type: HostBinding, args: ['class.color-palette-container',] }],
17090 hue: [{ type: Input }],
17091 color: [{ type: Input }],
17092 colorChange: [{ type: Output }],
17093 canvas: [{ type: ViewChild, args: ['canvas', { static: false },] }],
17094 onMouseUp: [{ type: HostListener, args: ['window:mouseup', ['$event'],] }]
17095};
17096if (false) {
17097 /** @type {?} */
17098 ColorPalette.prototype.baseClass;
17099 /** @type {?} */
17100 ColorPalette.prototype.hue;
17101 /** @type {?} */
17102 ColorPalette.prototype.color;
17103 /** @type {?} */
17104 ColorPalette.prototype.colorChange;
17105 /** @type {?} */
17106 ColorPalette.prototype.canvas;
17107 /**
17108 * @type {?}
17109 * @private
17110 */
17111 ColorPalette.prototype.ctx;
17112 /**
17113 * @type {?}
17114 * @private
17115 */
17116 ColorPalette.prototype.mousedown;
17117 /** @type {?} */
17118 ColorPalette.prototype.selectedPosition;
17119}
17120
17121/**
17122 * @fileoverview added by tsickle
17123 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
17124 */
17125class ColorInput {
17126 /**
17127 * Creates an instance of `ColorInput`.
17128 * @param {?} _overlay
17129 * @param {?} _viewContainerRef
17130 */
17131 constructor(_overlay, _viewContainerRef) {
17132 this._overlay = _overlay;
17133 this._viewContainerRef = _viewContainerRef;
17134 this.containerClass = true;
17135 /**
17136 * Set to `true` for a disabled color input.
17137 */
17138 this.disabled = false;
17139 /**
17140 * Set to `true` for a loading color input component.
17141 */
17142 this.skeleton = false;
17143 /**
17144 * Set to `true` for an invalid color input component.
17145 */
17146 this.invalid = false;
17147 /**
17148 * Set to `true` for a valid color input component.
17149 */
17150 this.valid = false;
17151 /**
17152 * The unique id for the color input component.
17153 */
17154 this.id = `color-input-${ColorInput.colorInputCount}`;
17155 /**
17156 * Sets the value attribute on the `input` element.
17157 */
17158 this.value = '';
17159 /**
17160 * Sets the placeholder on the `input` element.
17161 */
17162 this.placeholder = '';
17163 /**
17164 * Emits event notifying other classes when a change in state occurs in the input.
17165 */
17166 // tslint:disable-next-line: no-output-native
17167 this.change = new EventEmitter();
17168 /**
17169 * Called when number input is blurred. Needed to properly implement `ControlValueAccessor`.
17170 */
17171 this.onTouched = (/**
17172 * @return {?}
17173 */
17174 () => { });
17175 /**
17176 * Method set in `registerOnChange` to propagate changes back to the form.
17177 */
17178 this.propagateChange = (/**
17179 * @param {?} _
17180 * @return {?}
17181 */
17182 (_) => { });
17183 ColorInput.colorInputCount++;
17184 }
17185 /**
17186 * This is the initial value set to the component
17187 * @param {?} value The input value.
17188 * @return {?}
17189 */
17190 writeValue(value) {
17191 this.value = value;
17192 }
17193 /**
17194 * Sets a method in order to propagate changes back to the form.
17195 * @param {?} fn
17196 * @return {?}
17197 */
17198 registerOnChange(fn) {
17199 this.propagateChange = fn;
17200 }
17201 /**
17202 * Registers a callback to be triggered when the control has been touched.
17203 * @param {?} fn Callback to be triggered when the number input is touched.
17204 * @return {?}
17205 */
17206 registerOnTouched(fn) {
17207 this.onTouched = fn;
17208 }
17209 /**
17210 * Sets the disabled state through the model
17211 * @param {?} isDisabled
17212 * @return {?}
17213 */
17214 setDisabledState(isDisabled) {
17215 this.disabled = isDisabled;
17216 }
17217 /**
17218 * Creates a class of `NumberChange` to emit the change in the `Number`.
17219 * @return {?}
17220 */
17221 emitChangeEvent() {
17222 this.change.emit(this.value);
17223 this.propagateChange(this.value);
17224 }
17225 /**
17226 * @param {?} value
17227 * @return {?}
17228 */
17229 onColorChange(value) {
17230 this.value = value;
17231 this.emitChangeEvent();
17232 }
17233 /**
17234 * @param {?} event
17235 * @return {?}
17236 */
17237 onColorInputChange(event) {
17238 this.value = event.target.value;
17239 this.emitChangeEvent();
17240 }
17241 /**
17242 * Opens the color picker dialog
17243 * @return {?}
17244 */
17245 openColorDialog() {
17246 if (!this._overlayRef) {
17247 /** @type {?} */
17248 const positionStrategy = this._overlay
17249 .position()
17250 .flexibleConnectedTo(this.origin)
17251 .withPositions([{
17252 originX: 'start',
17253 originY: 'bottom',
17254 overlayX: 'start',
17255 overlayY: 'top',
17256 offsetY: 8,
17257 }]);
17258 this._overlayRef = this._overlay.create({
17259 hasBackdrop: true,
17260 backdropClass: 'cdk-overlay-transparent-backdrop',
17261 positionStrategy,
17262 });
17263 this._overlayRef.backdropClick().subscribe((/**
17264 * @return {?}
17265 */
17266 () => this._overlayRef.detach()));
17267 this._portal = new TemplatePortal(this.dialog, this._viewContainerRef);
17268 }
17269 this._overlayRef.attach(this._portal);
17270 }
17271 /**
17272 * Closes the color picker dialog
17273 * @return {?}
17274 */
17275 closeColorDialog() {
17276 this._overlayRef.detach();
17277 }
17278 /**
17279 * Checks if it is a template
17280 * @param {?} value
17281 * @return {?}
17282 */
17283 isTemplate(value) {
17284 return value instanceof TemplateRef;
17285 }
17286}
17287/**
17288 * Variable used for creating unique ids for color input components.
17289 */
17290ColorInput.colorInputCount = 0;
17291ColorInput.decorators = [
17292 { type: Component, args: [{
17293 selector: 'suka-color-input',
17294 template: `
17295 <label *ngIf="skeleton && label" class="label skeleton"></label>
17296 <label *ngIf="!skeleton && label" [for]="id" class="label">
17297 <ng-container *ngIf="!isTemplate(label)">{{label}}</ng-container>
17298 <ng-template *ngIf="isTemplate(label)" [ngTemplateOutlet]="label"></ng-template>
17299 </label>
17300 <div *ngIf="!skeleton && helperText" class="form__helper-text">
17301 <ng-container *ngIf="!isTemplate(helperText)">{{helperText}}</ng-container>
17302 <ng-template *ngIf="isTemplate(helperText)" [ngTemplateOutlet]="helperText"></ng-template>
17303 </div>
17304 <div
17305 data-color-input
17306 [attr.data-invalid]="(invalid ? true : null)"
17307 [attr.data-valid]="(valid ? true : null)"
17308 class="color-input"
17309 [ngClass]="{
17310 'color-input--nolabel': !label,
17311 'color-input--helpertext': helperText,
17312 'skeleton' : skeleton,
17313 'color-input--disabled': disabled
17314 }">
17315 <div class="color-input__input-wrapper">
17316 <div
17317 class="color-input__color-preview"
17318 *ngIf="value"
17319 [ngStyle]="{'background-color': value || 'white'}"
17320 (click)="openColorDialog()"
17321 ></div>
17322 <svg
17323 class="color-input__color-preview-icon"
17324 *ngIf="!value"
17325 width="16"
17326 height="16"
17327 viewBox="0 0 16 16"
17328 fill="none"
17329 xmlns="http://www.w3.org/2000/svg"
17330 (click)="openColorDialog()"
17331 >
17332 <path d="M8 0C3.55556 0 0 3.55556 0 8C0 12.4444 3.55556 16 8 16C8.71111 16 9.33333 15.3778 9.33333 14.6667C9.33333 14.3111 9.24444 14.0444 8.97778 13.7778C8.8 13.5111 8.62222 13.2444 8.62222 12.8889C8.62222 12.1778 9.24448 11.5556 9.95556 11.5556H11.5556C14.0444 11.5556 16 9.6 16 7.11111C16 3.2 12.4444 0 8 0ZM3.11111 8C2.4 8 1.77778 7.37778 1.77778 6.66667C1.77778 5.95556 2.4 5.33333 3.11111 5.33333C3.82222 5.33333 4.44444 5.95556 4.44444 6.66667C4.44444 7.37778 3.82222 8 3.11111 8ZM5.77778 4.44444C5.06667 4.44444 4.44444 3.82222 4.44444 3.11111C4.44444 2.4 5.06667 1.77778 5.77778 1.77778C6.48889 1.77778 7.11111 2.4 7.11111 3.11111C7.11111 3.82222 6.48889 4.44444 5.77778 4.44444ZM10.2222 4.44444C9.51111 4.44444 8.88889 3.82222 8.88889 3.11111C8.88889 2.4 9.51111 1.77778 10.2222 1.77778C10.9333 1.77778 11.5556 2.4 11.5556 3.11111C11.5556 3.82222 10.9333 4.44444 10.2222 4.44444ZM12.8889 8C12.1778 8 11.5556 7.37778 11.5556 6.66667C11.5556 5.95556 12.1778 5.33333 12.8889 5.33333C13.6 5.33333 14.2222 5.95556 14.2222 6.66667C14.2222 7.37778 13.6 8 12.8889 8Z" fill="#677784"/>
17333 </svg>
17334
17335 <input
17336 #origin
17337 type="text"
17338 [id]="id"
17339 [placeholder]="placeholder"
17340 [value]="value"
17341 [disabled]="disabled"
17342 [required]="required"
17343 (focus)="openColorDialog()"
17344 disabled="true"
17345 (change)="onColorInputChange($event)"/>
17346
17347 <suka-icon *ngIf="!skeleton && invalid" icon="alert-circle" class="color-input__invalid"></suka-icon>
17348 <suka-icon *ngIf="!skeleton && valid" icon="check" class="color-input__valid"></suka-icon>
17349 </div>
17350 <div *ngIf="invalid" class="form-requirement">
17351 <ng-container *ngIf="!isTemplate(invalidText)">{{invalidText}}</ng-container>
17352 <ng-template *ngIf="isTemplate(invalidText)" [ngTemplateOutlet]="invalidText"></ng-template>
17353 </div>
17354 </div>
17355
17356 <ng-template #colorPickerDialog>
17357 <div class="color-picker-dialog">
17358 <suka-color-picker [color]="value" (colorChange)="onColorChange($event)">
17359 </suka-color-picker>
17360 </div>
17361 </ng-template>
17362 `,
17363 providers: [
17364 {
17365 provide: NG_VALUE_ACCESSOR,
17366 useExisting: ColorInput,
17367 multi: true
17368 }
17369 ]
17370 }] }
17371];
17372/** @nocollapse */
17373ColorInput.ctorParameters = () => [
17374 { type: Overlay },
17375 { type: ViewContainerRef }
17376];
17377ColorInput.propDecorators = {
17378 containerClass: [{ type: HostBinding, args: ['class.form-item',] }],
17379 disabled: [{ type: Input }],
17380 skeleton: [{ type: Input }],
17381 invalid: [{ type: Input }],
17382 valid: [{ type: Input }],
17383 id: [{ type: Input }],
17384 required: [{ type: Input }],
17385 value: [{ type: Input }],
17386 placeholder: [{ type: Input }],
17387 label: [{ type: Input }],
17388 helperText: [{ type: Input }],
17389 invalidText: [{ type: Input }],
17390 change: [{ type: Output }],
17391 origin: [{ type: ViewChild, args: ['origin', { static: false },] }],
17392 dialog: [{ type: ViewChild, args: ['colorPickerDialog', { static: false },] }]
17393};
17394if (false) {
17395 /**
17396 * Variable used for creating unique ids for color input components.
17397 * @type {?}
17398 */
17399 ColorInput.colorInputCount;
17400 /**
17401 * @type {?}
17402 * @private
17403 */
17404 ColorInput.prototype._overlayRef;
17405 /**
17406 * @type {?}
17407 * @private
17408 */
17409 ColorInput.prototype._portal;
17410 /** @type {?} */
17411 ColorInput.prototype.containerClass;
17412 /**
17413 * Set to `true` for a disabled color input.
17414 * @type {?}
17415 */
17416 ColorInput.prototype.disabled;
17417 /**
17418 * Set to `true` for a loading color input component.
17419 * @type {?}
17420 */
17421 ColorInput.prototype.skeleton;
17422 /**
17423 * Set to `true` for an invalid color input component.
17424 * @type {?}
17425 */
17426 ColorInput.prototype.invalid;
17427 /**
17428 * Set to `true` for a valid color input component.
17429 * @type {?}
17430 */
17431 ColorInput.prototype.valid;
17432 /**
17433 * The unique id for the color input component.
17434 * @type {?}
17435 */
17436 ColorInput.prototype.id;
17437 /**
17438 * Reflects the required attribute of the `input` element.
17439 * @type {?}
17440 */
17441 ColorInput.prototype.required;
17442 /**
17443 * Sets the value attribute on the `input` element.
17444 * @type {?}
17445 */
17446 ColorInput.prototype.value;
17447 /**
17448 * Sets the placeholder on the `input` element.
17449 * @type {?}
17450 */
17451 ColorInput.prototype.placeholder;
17452 /**
17453 * Sets the text inside the `label` tag.
17454 * @type {?}
17455 */
17456 ColorInput.prototype.label;
17457 /**
17458 * Sets the optional helper text.
17459 * @type {?}
17460 */
17461 ColorInput.prototype.helperText;
17462 /**
17463 * Sets the invalid text.
17464 * @type {?}
17465 */
17466 ColorInput.prototype.invalidText;
17467 /**
17468 * Emits event notifying other classes when a change in state occurs in the input.
17469 * @type {?}
17470 */
17471 ColorInput.prototype.change;
17472 /** @type {?} */
17473 ColorInput.prototype.origin;
17474 /** @type {?} */
17475 ColorInput.prototype.dialog;
17476 /**
17477 * Called when number input is blurred. Needed to properly implement `ControlValueAccessor`.
17478 * @type {?}
17479 */
17480 ColorInput.prototype.onTouched;
17481 /**
17482 * Method set in `registerOnChange` to propagate changes back to the form.
17483 * @type {?}
17484 */
17485 ColorInput.prototype.propagateChange;
17486 /**
17487 * @type {?}
17488 * @private
17489 */
17490 ColorInput.prototype._overlay;
17491 /**
17492 * @type {?}
17493 * @private
17494 */
17495 ColorInput.prototype._viewContainerRef;
17496}
17497
17498/**
17499 * @fileoverview added by tsickle
17500 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
17501 */
17502class ColorPickerModule {
17503}
17504ColorPickerModule.decorators = [
17505 { type: NgModule, args: [{
17506 declarations: [
17507 ColorPicker,
17508 ColorSlider,
17509 ColorPalette,
17510 ColorInput,
17511 ],
17512 exports: [
17513 ColorPicker,
17514 ColorSlider,
17515 ColorPalette,
17516 ColorInput,
17517 ],
17518 imports: [
17519 CommonModule,
17520 OverlayModule,
17521 FormsModule,
17522 IconModule,
17523 ],
17524 entryComponents: [
17525 ColorPicker,
17526 ],
17527 },] }
17528];
17529
17530/**
17531 * @fileoverview added by tsickle
17532 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
17533 */
17534
17535/**
17536 * @fileoverview added by tsickle
17537 * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
17538 */
17539
17540export { Accordion, AccordionItem, AccordionModule, Avatar, AvatarModule, Badge, BadgeModule, Banner, BannerModule, Breadcrumb, BreadcrumbModule, Button, ButtonGroup, ButtonModule, ButtonRadio, ButtonRadioChange, ButtonRadioGroup, ButtonRadioModule, Card, CardFooter, CardHeader, CardModule, CardSection, Checkbox, CheckboxModule, CodeSnippet, CodeSnippetModule, ColorInput, ColorPalette, ColorPicker, ColorPickerModule, ColorSlider, Container, ContainerModule, DatePickerModule, EmptyState, EmptyStateModule, FileUploader, FileUploaderModule, FormLayout, FormLayoutModule, Frame, FrameModule, GridModule, Icon, IconModule, InputGroup, InputGroupItem, InputGroupModule, InputModule, Label, Layout, LayoutModule, LayoutSection, Link, LinkModule, List, ListItemDirective, ListModule, Loading, LoadingModule, MobileNavigation, ModalContainer, ModalDirective, ModalModule, ModalRef, ModalService, Navigation, NavigationItem, NavigationMenu, NavigationModule, Number, NumberModule, OptGroup, Option, Page, PageEvent, PageModule, Pagination, PaginationModule, Popover, PopoverActionItem, PopoverActionList, PopoverContainer, PopoverModule, PopoverSection, Progress, ProgressModule, Radio, RadioChange, RadioGroup, RadioModule, Search, SearchModule, Select, SelectModule, SnippetLanguage, SnippetType, SpacingModule, Stack, StackItem, StackModule, SukaCell, SukaCellDef, SukaColumnDef, SukaFooterCell, SukaFooterCellDef, SukaFooterRow, SukaFooterRowDef, SukaHeaderCell, SukaHeaderCellDef, SukaHeaderRow, SukaHeaderRowDef, SukaRow, SukaRowDef, SukaTable, SukaTableDataSource, TabItem, TableModule, Tabs, TabsModule, TextArea, TextInput, ToastContainer, ToastModule, ToastRef, ToastService, Toggle, ToggleModule, Tooltip, TooltipContainer, TooltipModule, Topbar, TopbarGlobal, TopbarItem, TopbarMenu, TopbarModule, TopbarNavigation, GridDirective as ɵa, RowDirective as ɵb, DatePickerInputModule as ɵba, DatePickerInput as ɵbb, toastAnimations as ɵbc, TOAST_CONFIG_DATA as ɵbd, ColumnDirective as ɵc, MarginDirective as ɵd, MarginTopDirective as ɵe, MarginBottomDirective as ɵf, MarginLeftDirective as ɵg, MarginRightDirective as ɵh, MarginHorizontalDirective as ɵi, MarginVerticalDirective as ɵj, PaddingDirective as ɵk, PaddingTopDirective as ɵl, PaddingBottomDirective as ɵm, PaddingLeftDirective as ɵn, PaddingRightDirective as ɵo, PaddingHorizontalDirective as ɵp, PaddingVerticalDirective as ɵq, MODAL_CONTENT_DATA as ɵr, POPOVER_CONTENT_DATA as ɵs, PopoverRef as ɵt, PopoverService as ɵv, SukaTableSkeleton as ɵw, PageHeader as ɵx, File as ɵy, DatePicker as ɵz };
17541//# sourceMappingURL=kushki-ng-suka.js.map