simpo-component-library 3.6.857 → 3.6.859

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/esm2022/lib/components/hover-elements/hover-elements.component.mjs +6 -17
  2. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +3 -3
  3. package/esm2022/lib/elements/text-editor/text-editor.component.mjs +494 -318
  4. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +3 -3
  5. package/esm2022/public-api.mjs +1 -3
  6. package/fesm2022/simpo-component-library.mjs +547 -563
  7. package/fesm2022/simpo-component-library.mjs.map +1 -1
  8. package/lib/components/hover-elements/hover-elements.component.d.ts +0 -3
  9. package/lib/components/input-fields/input-fields.component.d.ts +1 -1
  10. package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +1 -1
  11. package/lib/ecommerce/sections/schemes/schemes.component.d.ts +1 -1
  12. package/lib/elements/pricing-s1/pricing-s1.component.d.ts +1 -1
  13. package/lib/elements/text-editor/text-editor.component.d.ts +50 -36
  14. package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
  15. package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
  16. package/lib/sections/image-section/image-section.component.d.ts +2 -2
  17. package/lib/sections/logo-showcase/logo-showcase.component.d.ts +2 -2
  18. package/lib/sections/new-testimonials/new-testimonials.component.d.ts +1 -1
  19. package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
  20. package/package.json +4 -10
  21. package/public-api.d.ts +0 -2
  22. package/simpo-component-library-3.6.859.tgz +0 -0
  23. package/src/lib/styles/global-styles.css +15 -0
  24. package/esm2022/lib/sections/testimonial-masonry/testimonial-masonry.component.mjs +0 -110
  25. package/esm2022/lib/sections/testimonial-masonry/testimonial-masonry.model.mjs +0 -2
  26. package/esm2022/lib/styles/gradient-extension.mjs +0 -62
  27. package/esm2022/lib/styles/text-size.extension.mjs +0 -43
  28. package/lib/sections/testimonial-masonry/testimonial-masonry.component.d.ts +0 -30
  29. package/lib/sections/testimonial-masonry/testimonial-masonry.model.d.ts +0 -24
  30. package/lib/styles/gradient-extension.d.ts +0 -2
  31. package/lib/styles/text-size.extension.d.ts +0 -10
  32. package/simpo-component-library-3.6.857.tgz +0 -0
@@ -14,9 +14,6 @@ export declare class HoverElementsComponent implements OnInit {
14
14
  isMerged: boolean;
15
15
  isEcommerce: boolean;
16
16
  ngOnInit(): void;
17
- isMenuOpen: boolean;
18
- toggleMenu(event: Event): void;
19
- onDocumentClick(): void;
20
17
  editSection(): void;
21
18
  restyleSection(event: any): void;
22
19
  changeContent(event: any): void;
@@ -13,7 +13,7 @@ export declare class InputFieldsComponent implements OnChanges {
13
13
  constructor(elementRef: ElementRef);
14
14
  ngOnChanges(changes: SimpleChanges): void;
15
15
  handleMoneyInput(event: any): void;
16
- get getTextColor(): "#000" | "#FFF";
16
+ get getTextColor(): "#FFF" | "#000";
17
17
  interpolateColor(color1: string, color2: string, factor: number): string;
18
18
  padZero(str: string, length: number): string;
19
19
  generateColorBasedOnNumber(number: number): string;
@@ -124,7 +124,7 @@ export declare class ProductDescComponent extends BaseSection {
124
124
  getTextColor(color: any): "#000000" | "#ffffff";
125
125
  languages: string[];
126
126
  selectedLang: string;
127
- getClass(map: any): "col-6" | "col-4" | "col-3" | "width-max";
127
+ getClass(map: any): "col-4" | "col-6" | "col-3" | "width-max";
128
128
  onFindInStore(id: string): void;
129
129
  onBookAppointment(): void;
130
130
  isDetails: boolean;
@@ -21,7 +21,7 @@ export declare class SchemesComponent extends BaseSection {
21
21
  get stylesLayout(): LayOutModel;
22
22
  get spacingLayout(): SpacingModel;
23
23
  getParentClass(): "" | "overflow-scroll flex-nowrap";
24
- getClass(index: number): "col-12" | "col-6 mb-2" | "col-12 mb-2" | "col-6";
24
+ getClass(index: number): "col-12" | "col-6" | "col-6 mb-2" | "col-12 mb-2";
25
25
  showSchemeDetails(scheme: any): void;
26
26
  static ɵfac: i0.ɵɵFactoryDeclaration<SchemesComponent, never>;
27
27
  static ɵcmp: i0.ɵɵComponentDeclaration<SchemesComponent, "simpo-schemes", never, { "data": { "alias": "data"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "index": { "alias": "index"; "required": false; }; }, {}, never, never, true, never>;
@@ -15,7 +15,7 @@ export declare class PricingS1Component extends BaseSection {
15
15
  editSection(): void;
16
16
  getButtonId(): string;
17
17
  redirectTo(data: any): void;
18
- getClass(): "col-12" | "col-4" | "col-5";
18
+ getClass(): "col-4" | "col-12" | "col-5";
19
19
  static ɵfac: i0.ɵɵFactoryDeclaration<PricingS1Component, never>;
20
20
  static ɵcmp: i0.ɵɵComponentDeclaration<PricingS1Component, "simpo-pricing-s1", never, { "data": { "alias": "data"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; }, {}, never, never, true, never>;
21
21
  }
@@ -1,51 +1,65 @@
1
- import { ElementRef, EventEmitter, OnDestroy, AfterViewInit } from '@angular/core';
1
+ import { ElementRef, EventEmitter, NgZone } from '@angular/core';
2
+ import { ElementServiceService } from '../editor-service.service';
2
3
  import * as i0 from "@angular/core";
3
- export declare class TextEditorComponent implements OnDestroy, AfterViewInit {
4
+ export declare class TextEditorComponent {
5
+ private editorService;
6
+ private platformId;
7
+ private ngZone;
8
+ toolbar: ElementRef;
9
+ editor: ElementRef;
10
+ colorPicker: ElementRef;
11
+ parentElement: ElementRef;
12
+ suggestion: ElementRef;
13
+ private lastGradientSpan;
4
14
  value: string;
5
15
  valueChange: EventEmitter<string>;
6
16
  editable: boolean;
7
17
  sectionId?: string;
8
18
  label?: string;
9
19
  type?: string;
10
- editorElement: ElementRef;
11
- private platformId;
12
- editor: any;
13
- selectedFontSize: string;
14
- showToolbar: boolean;
15
- toolbarX: number;
20
+ show: boolean;
16
21
  toolbarY: number;
17
- selectedColor: string;
18
- primaryColor: string;
19
- secondaryColor: string;
20
- isColorPickerOpen: boolean;
21
- selectedColorType: 'SOLID' | 'GRADIENT';
22
- savedSelection: any;
23
- isFontSizeMenuOpen: boolean;
22
+ suggestionY: number;
23
+ rightZero: boolean;
24
+ showSuggestion: boolean;
24
25
  toolbarData: any;
25
- ngAfterViewInit(): Promise<void>;
26
+ selectedColorType: 'SOLID' | 'GRADIENT';
27
+ primaryColor: string;
28
+ secondaryColor: any;
29
+ constructor(editorService: ElementServiceService, platformId: Object, ngZone: NgZone);
30
+ ngOnInit(): void;
26
31
  ngOnDestroy(): void;
27
- initializeEditor(): Promise<void>;
28
- updateEmptyEditorClass(): void;
32
+ private selectRange;
33
+ private markSelection;
34
+ private restoreSelectionFromMarkers;
35
+ showToolbar(event: MouseEvent): void;
36
+ rememberSelection(e: MouseEvent): void;
37
+ private getActiveRange;
38
+ setColorMode(mode: 'SOLID' | 'GRADIENT'): void;
39
+ private wrapRangeWithGradient;
40
+ private unwrapGradientInRange;
41
+ hideToolbar(event: MouseEvent): void;
42
+ formatText(command: string, value?: string): void;
43
+ updateFSforOL(): void;
44
+ private setStyleWithCSS;
45
+ private toLegacyFontStep;
46
+ private normalizeFontSizeToCss;
47
+ changeFontSize(event: any): void;
48
+ changeColor(event: any): void;
49
+ updateText(event: Event): void;
50
+ onFormatChange(event: Event): void;
51
+ openColorPicker(): void;
52
+ readFormattingProperties(): void;
53
+ reFormattingData(): void;
54
+ changeGradientColor(): void;
55
+ applyGradientToText(gradientValue: string): void;
56
+ regenerateText(): void;
57
+ private savedRange;
29
58
  saveSelection(): void;
30
59
  restoreSelection(): void;
31
- switchToSolid(event: Event): void;
32
- switchToGradient(event: Event): void;
33
- openColorPicker(): void;
34
- handleWindowFocus: () => void;
35
- handleSelection(): void;
36
- toggleBold(): void;
37
- toggleItalic(): void;
38
- toggleUnderline(): void;
39
- toggleOrderedList(): void;
40
- toggleBulletList(): void;
41
- setAlign(alignment: 'left' | 'center' | 'right'): void;
42
- changeColor(): void;
43
- applyGradient(): void;
44
- onMouseDown(): void;
45
- toggleFontSizeMenu(event: Event): void;
46
- getDisplayFontSize(): string;
47
- selectCustomFontSize(cssSize: string, event: Event): void;
48
- changeFontSize(fontSize: string): void;
60
+ onPaste(event: ClipboardEvent): void;
61
+ stripStyles(html: string): string;
62
+ getText(): string;
49
63
  static ɵfac: i0.ɵɵFactoryDeclaration<TextEditorComponent, never>;
50
64
  static ɵcmp: i0.ɵɵComponentDeclaration<TextEditorComponent, "simpo-text-editor", never, { "value": { "alias": "value"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "sectionId": { "alias": "sectionId"; "required": false; }; "label": { "alias": "label"; "required": false; }; "type": { "alias": "type"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
51
65
  }
@@ -33,8 +33,8 @@ export declare class BannerCarouselComponent extends BaseSection implements OnIn
33
33
  get stylesLayout(): LayOutModel;
34
34
  get getBlurValue(): "NONE" | "LIGHT" | "MODERATE" | "STRONG" | "VERY_STRONG" | undefined;
35
35
  get getBackgroundColor(): BackgroundModel;
36
- get getBackgroundOpacity(): "0.5" | "0.7" | "0" | "0.6" | "0.8" | "1";
37
- opacityValue(value: OverlayValue): "0.5" | "0.7" | "0.6" | "0.8" | "1";
36
+ get getBackgroundOpacity(): "1" | "0" | "0.7" | "0.5" | "0.6" | "0.8";
37
+ opacityValue(value: OverlayValue): "1" | "0.7" | "0.5" | "0.6" | "0.8";
38
38
  editSection(): void;
39
39
  getScreenSize(): number;
40
40
  getSectionMinHeight(): string;
@@ -25,7 +25,7 @@ export declare class CarouselBannerComponent extends BaseSection implements OnIn
25
25
  get canMergeNavbar(): boolean | undefined;
26
26
  get isBorderlessImage(): boolean | undefined;
27
27
  get getPositionLayout(): PositionLayoutModal;
28
- opacityValue(value: OverlayValue): "0.2" | "0.3" | "0.5" | "0.7" | "0";
28
+ opacityValue(value: OverlayValue): "0" | "0.7" | "0.5" | "0.3" | "0.2";
29
29
  editSection(): void;
30
30
  static ɵfac: i0.ɵɵFactoryDeclaration<CarouselBannerComponent, never>;
31
31
  static ɵcmp: i0.ɵɵComponentDeclaration<CarouselBannerComponent, "simpo-carousel-banner", never, { "data": { "alias": "data"; "required": false; }; "index": { "alias": "index"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "nextComponentColor": { "alias": "nextComponentColor"; "required": false; }; }, {}, never, never, true, never>;
@@ -20,9 +20,9 @@ export declare class ImageSectionComponent extends BaseSection {
20
20
  constructor(_eventService: EventsService);
21
21
  ngOnInit(): void;
22
22
  get canMergeNavbar(): boolean | undefined;
23
- get getBackgroundOpacity(): "0.2" | "0.3" | "0.5" | "0.7" | "1";
23
+ get getBackgroundOpacity(): "1" | "0.7" | "0.5" | "0.3" | "0.2";
24
24
  get stylesLayout(): LayOutModel;
25
- opacityValue(value: OverlayValue): "0.2" | "0.3" | "0.5" | "0.7" | "1";
25
+ opacityValue(value: OverlayValue): "1" | "0.7" | "0.5" | "0.3" | "0.2";
26
26
  editSection(): void;
27
27
  redirectTo(): void;
28
28
  static ɵfac: i0.ɵɵFactoryDeclaration<ImageSectionComponent, never>;
@@ -23,8 +23,8 @@ export declare class LogoShowcaseComponent extends BaseSection implements OnInit
23
23
  constructor(_eventService: EventsService);
24
24
  ngOnInit(): void;
25
25
  get stylesLayout(): LayOutModel;
26
- get animationDuration(): "18s" | "6s" | "5s" | "4s" | "3s" | logoSpeed.Normal;
27
- get animationDirection(): "reverse" | "normal" | logoDirection.Left;
26
+ get animationDuration(): "3s" | "4s" | logoSpeed.Normal | "18s" | "6s" | "5s";
27
+ get animationDirection(): logoDirection.Left | "reverse" | "normal";
28
28
  get isMobile(): boolean;
29
29
  get getPositionLayout(): PositionLayoutModal;
30
30
  screenWidth: number;
@@ -24,7 +24,7 @@ export declare class NewTestimonialsComponent extends BaseSection {
24
24
  idx: number;
25
25
  getImageData(): import("../../styles/style.model").Image | undefined;
26
26
  getImageUrl(): string | undefined;
27
- getImageType(): "Video" | "Image";
27
+ getImageType(): "Image" | "Video";
28
28
  getLength(): number;
29
29
  editSection(): void;
30
30
  stopPropagation(event: any): void;
@@ -23,7 +23,7 @@ export declare class PricingSectionComponent extends BaseSection {
23
23
  getButtonId(): string;
24
24
  editSection(): void;
25
25
  redirectTo(data: any): void;
26
- getClass(): "col-12" | "col-6" | "col-4" | "col-3";
26
+ getClass(): "col-4" | "col-12" | "col-6" | "col-3";
27
27
  getAlignment(): "justify-content-start" | "justify-content-center" | "justify-content-end";
28
28
  static ɵfac: i0.ɵɵFactoryDeclaration<PricingSectionComponent, never>;
29
29
  static ɵcmp: i0.ɵɵComponentDeclaration<PricingSectionComponent, "simpo-pricing-section", never, { "data": { "alias": "data"; "required": false; }; "index": { "alias": "index"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "nextComponentColor": { "alias": "nextComponentColor"; "required": false; }; }, {}, never, never, true, never>;
package/package.json CHANGED
@@ -1,20 +1,11 @@
1
1
  {
2
2
  "name": "simpo-component-library",
3
- "version": "3.6.857",
3
+ "version": "3.6.859",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.2.0",
6
6
  "@angular/core": "^17.2.0",
7
7
  "@angular/material": "^17.2.1"
8
8
  },
9
- "dependencies": {
10
- "@tiptap/core": "^3.23.1",
11
- "@tiptap/starter-kit": "^3.23.1",
12
- "@tiptap/extension-text-style": "^3.23.1",
13
- "@tiptap/extension-color": "^3.23.1",
14
- "@tiptap/extension-underline": "^3.23.1",
15
- "@tiptap/extension-text-align": "^3.23.1",
16
- "tslib": "^2.3.0"
17
- },
18
9
  "sideEffects": false,
19
10
  "module": "fesm2022/simpo-component-library.mjs",
20
11
  "typings": "index.d.ts",
@@ -28,5 +19,8 @@
28
19
  "esm": "./esm2022/simpo-component-library.mjs",
29
20
  "default": "./fesm2022/simpo-component-library.mjs"
30
21
  }
22
+ },
23
+ "dependencies": {
24
+ "tslib": "^2.3.0"
31
25
  }
32
26
  }
package/public-api.d.ts CHANGED
@@ -49,8 +49,6 @@ export * from './lib/sections/scheme-detail/scheme-detail.component';
49
49
  export * from './lib/ecommerce/sections/schemes/schemes.component';
50
50
  export * from './lib/sections/image-grid-hotspot/image-grid-hotspot.component';
51
51
  export * from './lib/sections/testimonial-slider/testimonial-slider.component';
52
- export * from './lib/sections/testimonial-masonry/testimonial-masonry.component';
53
- export * from './lib/sections/testimonial-masonry/testimonial-masonry.model';
54
52
  export * from './lib/ecommerce/sections/featured-products/featured-products.component';
55
53
  export * from './lib/ecommerce/sections/featured-category/featured-category.component';
56
54
  export * from './lib/ecommerce/sections/product-desc/product-desc.component';
@@ -82,6 +82,11 @@
82
82
  font-size: 18px !important;
83
83
  line-height: 20px !important;
84
84
  }
85
+
86
+ p {
87
+ font-size: 16px !important;
88
+ line-height: 21px !important;
89
+ }
85
90
  }
86
91
 
87
92
  }
@@ -112,6 +117,11 @@
112
117
  font-size: 16px;
113
118
  line-height: 24px;
114
119
  }
120
+
121
+ p {
122
+ font-size: 14px;
123
+ line-height: 21px;
124
+ }
115
125
  }
116
126
 
117
127
  }
@@ -141,6 +151,11 @@
141
151
  font-size: 16px;
142
152
  line-height: 24px;
143
153
  }
154
+
155
+ p {
156
+ font-size: 14px;
157
+ line-height: 21px;
158
+ }
144
159
  }
145
160
 
146
161
  .link-editor {
@@ -1,110 +0,0 @@
1
- import { Component, HostListener, Input } from '@angular/core';
2
- import { CommonModule, NgFor, NgIf } from '@angular/common';
3
- import { SpacingAroundDirective } from '../../directive/spacing-around.directive';
4
- import { BackgroundDirective } from '../../directive/background-directive';
5
- import { HoverDirective } from '../../directive/hover-element-directive';
6
- import { SpacingHorizontalDirective } from '../../directive/spacing-horizontal.directive';
7
- import { CornerDirective } from '../../directive/corner-directive';
8
- import { SimpoHoverBorderDirective } from '../../directive/hoverborder.directive';
9
- import { SimpoElementsModule } from '../../elements/index';
10
- import { SimpoComponentModule } from '../../components/index';
11
- import { BorderDirective } from '../../directive/border-directive';
12
- import { ContainerFitDirective } from '../../directive/container-fir.directive';
13
- import { simpoConetenAlignmentDirective } from '../../directive/content-alignment-directive';
14
- import { ContentFitDirective } from '../../directive/content-fit-directive';
15
- import { AnimationDirective } from '../../directive/animation-directive';
16
- import { SimpoContainerAligment } from '../../directive/container-alignment.directive';
17
- import { TextBackgroundDirectiveDirective } from '../../directive/text-background-directive.directive';
18
- import { OverlayDirective } from '../../directive/overlay-directive';
19
- import { TextEditorComponent } from '../../elements/text-editor/text-editor.component';
20
- import { ImageEditorDirective } from '../../directive/image-editor.directive';
21
- import BaseSection from '../BaseSection';
22
- import * as i0 from "@angular/core";
23
- import * as i1 from "../../services/events.service";
24
- import * as i2 from "@angular/common";
25
- import * as i3 from "../../elements/svg-divider/svg-divider.component";
26
- import * as i4 from "../../components/hover-elements/hover-elements.component";
27
- import * as i5 from "../../components/delete-hover-element/delete-hover-element.component";
28
- export class TestimonialMasonryComponent extends BaseSection {
29
- constructor(_eventService) {
30
- super();
31
- this._eventService = _eventService;
32
- this.screenWidth = 0;
33
- }
34
- ngOnInit() {
35
- this.content = this.data?.content;
36
- this.styles = this.data?.styles;
37
- this.getScreenSize();
38
- }
39
- get stylesLayout() {
40
- return { ...this.styles?.layout };
41
- }
42
- get activeItems() {
43
- return this.content?.listItem?.data?.filter((item) => item.status !== false) ?? [];
44
- }
45
- getQuote(item) {
46
- return item?.inputText?.[0]?.value ?? '';
47
- }
48
- getAuthor(item) {
49
- return item?.inputText?.[1]?.value ?? '';
50
- }
51
- getRole(item) {
52
- return item?.inputText?.[2]?.value ?? '';
53
- }
54
- getAvatarUrl(item) {
55
- return item?.image?.url ?? '';
56
- }
57
- editSection() {
58
- this._eventService.toggleEditorEvent.emit(false);
59
- setTimeout(() => {
60
- this._eventService.editSection.emit({ data: this.data });
61
- }, 100);
62
- }
63
- getScreenSize() {
64
- this.screenWidth = window.innerWidth;
65
- }
66
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TestimonialMasonryComponent, deps: [{ token: i1.EventsService }], target: i0.ɵɵFactoryTarget.Component }); }
67
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TestimonialMasonryComponent, isStandalone: true, selector: "simpo-testimonial-masonry", inputs: { data: "data", edit: "edit", delete: "delete", customClass: "customClass", nextComponentColor: "nextComponentColor", index: "index" }, host: { listeners: { "window:resize": "getScreenSize($event)" } }, usesInheritance: true, ngImport: i0, template: "<section class=\"main-container hover-effect\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div class=\"spacing-around\" [spacingAround]=\"stylesLayout\" [simpoBorder]=\"styles?.border\" [id]=\"data?.id\">\r\n <div class=\"parent-div\" [id]=\"data?.id\" [simpoCorner]=\"styles?.corners\" [simpoBackground]=\"styles?.background\">\r\n <div [simpoOverlay]=\"styles?.background\" [simpoLayout]=\"styles?.layout\" [id]=\"data?.id\"\r\n [spacingHorizontal]=\"stylesLayout\" class=\"flex-column\">\r\n\r\n <!-- Heading Block -->\r\n <div class=\"header-block mb-3\" [simpoAnimation]=\"styles?.animation\">\r\n <ng-container *ngFor=\"let text of content?.inputText\">\r\n <simpo-text-editor [(value)]=\"text.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Masonry Grid -->\r\n <div class=\"masonry-grid\" [simpoAnimation]=\"styles?.animation\">\r\n <div class=\"masonry-card\" *ngFor=\"let item of activeItems; let i = index\">\r\n <!-- Quote Icon -->\r\n <div class=\"quote-icon\">\r\n <svg width=\"28\" height=\"22\" viewBox=\"0 0 36 31\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M35.3998 3.29993C35.5998 3.09993 35.7998 2.69993 35.5998 2.29993C35.3998 2.09993 34.9998 1.69993 34.5998 0.899925C33.9998 0.699925 33.5998 0.699926 32.9998 1.09993C25.3998 5.89993 21.1998 11.4999 20.3998 17.8999C18.9998 27.8999 27.9998 32.6999 32.5998 28.2999C37.1998 23.8999 34.3998 18.2999 31.1998 16.6999C27.9998 15.0999 25.9998 15.6999 26.1998 13.6999C26.5998 11.6999 31.1998 6.09993 35.3998 3.29993ZM14.7998 1.09993C14.1998 0.699926 13.5998 0.699926 13.1998 1.09993C5.59983 5.89993 1.39983 11.4999 0.599832 18.0999C-0.800168 28.0999 8.19983 32.8999 12.7998 28.4999C17.3998 24.0999 14.5998 18.4999 11.3998 16.8999C7.99983 15.4999 5.99983 16.0999 6.39983 13.8999C6.79983 11.8999 11.3998 6.29993 15.5998 3.49993C15.7998 3.29993 15.9998 2.89993 15.7998 2.49993C15.5998 2.29993 15.1998 1.89993 14.7998 1.09993Z\"\r\n [attr.fill]=\"styles?.background?.accentColor || '#6C8EBF'\" />\r\n </svg>\r\n </div>\r\n\r\n <!-- Quote Text -->\r\n <div class=\"quote-text\">\r\n <simpo-text-editor [(value)]=\"item.inputText[0].value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n\r\n <!-- Author Row -->\r\n <div class=\"author-row\">\r\n <img *ngIf=\"getAvatarUrl(item)\" [src]=\"getAvatarUrl(item)\" class=\"avatar\" [alt]=\"getAuthor(item)\"\r\n [appImageEditor]=\"edit || false\" [imageData]=\"item.image\" [sectionId]=\"data?.id\" loading=\"lazy\" />\r\n <div class=\"author-info\">\r\n <simpo-text-editor [(value)]=\"item.inputText[1].value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n <simpo-text-editor *ngIf=\"item.inputText[2]\" [(value)]=\"item.inputText[2].value\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <ng-container *ngIf=\"styles?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n\r\n <!-- Hover / Edit Controls -->\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section>", styles: [".masonry-grid{display:grid;grid-auto-flow:column;grid-template-rows:repeat(2,1fr);grid-auto-columns:364px;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;width:95%;-webkit-mask-image:linear-gradient(to right,transparent 0%,black 8%,black 92%,transparent 100%);mask-image:linear-gradient(to right,transparent 0%,black 8%,black 92%,transparent 100%);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.masonry-grid .masonry-card:nth-child(odd){transform:translate(0)}.masonry-grid .masonry-card:nth-child(2n){transform:translate(40%)}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}@media (max-width: 575px){.masonry-grid{column-count:1}}.masonry-card{break-inside:avoid;display:flex;flex-direction:column;gap:14px;background:#fff;border:1px solid #E8EDF5;border-radius:12px;padding:24px;margin-bottom:20px;box-shadow:0 2px 12px #0000000a;transition:box-shadow .25s ease,transform .25s ease}.quote-icon svg{display:block}.author-row{display:flex;align-items:center;gap:12px;margin-top:4px}.avatar{width:44px;height:44px;border-radius:50%;object-fit:cover;flex-shrink:0;border:2px solid #E8EDF5}.author-info{display:flex;flex-direction:column}.header-block{text-align:center;padding-bottom:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: SpacingAroundDirective, selector: "[spacingAround]", inputs: ["spacingAround", "backgroundInfo"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "directive", type: CornerDirective, selector: "[simpoCorner]", inputs: ["simpoCorner"] }, { kind: "ngmodule", type: SimpoElementsModule }, { kind: "component", type: i3.SvgDividerComponent, selector: "simpo-svg-divider", inputs: ["dividerType", "color"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i4.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i5.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "directive", type: BorderDirective, selector: "[simpoBorder]", inputs: ["simpoBorder"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: OverlayDirective, selector: "[simpoOverlay]", inputs: ["simpoOverlay"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label", "type"], outputs: ["valueChange"] }, { kind: "directive", type: ImageEditorDirective, selector: "[appImageEditor]", inputs: ["appImageEditor", "imageData", "sectionId", "showIcon", "iconData"] }] }); }
68
- }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TestimonialMasonryComponent, decorators: [{
70
- type: Component,
71
- args: [{ selector: 'simpo-testimonial-masonry', standalone: true, imports: [
72
- CommonModule,
73
- NgFor,
74
- NgIf,
75
- SpacingAroundDirective,
76
- BackgroundDirective,
77
- HoverDirective,
78
- SpacingHorizontalDirective,
79
- CornerDirective,
80
- SimpoHoverBorderDirective,
81
- SimpoElementsModule,
82
- SimpoComponentModule,
83
- BorderDirective,
84
- ContainerFitDirective,
85
- simpoConetenAlignmentDirective,
86
- AnimationDirective,
87
- SimpoContainerAligment,
88
- ContentFitDirective,
89
- TextBackgroundDirectiveDirective,
90
- OverlayDirective,
91
- TextEditorComponent,
92
- ImageEditorDirective,
93
- ], template: "<section class=\"main-container hover-effect\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div class=\"spacing-around\" [spacingAround]=\"stylesLayout\" [simpoBorder]=\"styles?.border\" [id]=\"data?.id\">\r\n <div class=\"parent-div\" [id]=\"data?.id\" [simpoCorner]=\"styles?.corners\" [simpoBackground]=\"styles?.background\">\r\n <div [simpoOverlay]=\"styles?.background\" [simpoLayout]=\"styles?.layout\" [id]=\"data?.id\"\r\n [spacingHorizontal]=\"stylesLayout\" class=\"flex-column\">\r\n\r\n <!-- Heading Block -->\r\n <div class=\"header-block mb-3\" [simpoAnimation]=\"styles?.animation\">\r\n <ng-container *ngFor=\"let text of content?.inputText\">\r\n <simpo-text-editor [(value)]=\"text.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Masonry Grid -->\r\n <div class=\"masonry-grid\" [simpoAnimation]=\"styles?.animation\">\r\n <div class=\"masonry-card\" *ngFor=\"let item of activeItems; let i = index\">\r\n <!-- Quote Icon -->\r\n <div class=\"quote-icon\">\r\n <svg width=\"28\" height=\"22\" viewBox=\"0 0 36 31\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M35.3998 3.29993C35.5998 3.09993 35.7998 2.69993 35.5998 2.29993C35.3998 2.09993 34.9998 1.69993 34.5998 0.899925C33.9998 0.699925 33.5998 0.699926 32.9998 1.09993C25.3998 5.89993 21.1998 11.4999 20.3998 17.8999C18.9998 27.8999 27.9998 32.6999 32.5998 28.2999C37.1998 23.8999 34.3998 18.2999 31.1998 16.6999C27.9998 15.0999 25.9998 15.6999 26.1998 13.6999C26.5998 11.6999 31.1998 6.09993 35.3998 3.29993ZM14.7998 1.09993C14.1998 0.699926 13.5998 0.699926 13.1998 1.09993C5.59983 5.89993 1.39983 11.4999 0.599832 18.0999C-0.800168 28.0999 8.19983 32.8999 12.7998 28.4999C17.3998 24.0999 14.5998 18.4999 11.3998 16.8999C7.99983 15.4999 5.99983 16.0999 6.39983 13.8999C6.79983 11.8999 11.3998 6.29993 15.5998 3.49993C15.7998 3.29993 15.9998 2.89993 15.7998 2.49993C15.5998 2.29993 15.1998 1.89993 14.7998 1.09993Z\"\r\n [attr.fill]=\"styles?.background?.accentColor || '#6C8EBF'\" />\r\n </svg>\r\n </div>\r\n\r\n <!-- Quote Text -->\r\n <div class=\"quote-text\">\r\n <simpo-text-editor [(value)]=\"item.inputText[0].value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n\r\n <!-- Author Row -->\r\n <div class=\"author-row\">\r\n <img *ngIf=\"getAvatarUrl(item)\" [src]=\"getAvatarUrl(item)\" class=\"avatar\" [alt]=\"getAuthor(item)\"\r\n [appImageEditor]=\"edit || false\" [imageData]=\"item.image\" [sectionId]=\"data?.id\" loading=\"lazy\" />\r\n <div class=\"author-info\">\r\n <simpo-text-editor [(value)]=\"item.inputText[1].value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n <simpo-text-editor *ngIf=\"item.inputText[2]\" [(value)]=\"item.inputText[2].value\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <ng-container *ngIf=\"styles?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n\r\n <!-- Hover / Edit Controls -->\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section>", styles: [".masonry-grid{display:grid;grid-auto-flow:column;grid-template-rows:repeat(2,1fr);grid-auto-columns:364px;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;width:95%;-webkit-mask-image:linear-gradient(to right,transparent 0%,black 8%,black 92%,transparent 100%);mask-image:linear-gradient(to right,transparent 0%,black 8%,black 92%,transparent 100%);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.masonry-grid .masonry-card:nth-child(odd){transform:translate(0)}.masonry-grid .masonry-card:nth-child(2n){transform:translate(40%)}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}@media (max-width: 575px){.masonry-grid{column-count:1}}.masonry-card{break-inside:avoid;display:flex;flex-direction:column;gap:14px;background:#fff;border:1px solid #E8EDF5;border-radius:12px;padding:24px;margin-bottom:20px;box-shadow:0 2px 12px #0000000a;transition:box-shadow .25s ease,transform .25s ease}.quote-icon svg{display:block}.author-row{display:flex;align-items:center;gap:12px;margin-top:4px}.avatar{width:44px;height:44px;border-radius:50%;object-fit:cover;flex-shrink:0;border:2px solid #E8EDF5}.author-info{display:flex;flex-direction:column}.header-block{text-align:center;padding-bottom:8px}\n"] }]
94
- }], ctorParameters: () => [{ type: i1.EventsService }], propDecorators: { data: [{
95
- type: Input
96
- }], edit: [{
97
- type: Input
98
- }], delete: [{
99
- type: Input
100
- }], customClass: [{
101
- type: Input
102
- }], nextComponentColor: [{
103
- type: Input
104
- }], index: [{
105
- type: Input
106
- }], getScreenSize: [{
107
- type: HostListener,
108
- args: ['window:resize', ['$event']]
109
- }] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGltb25pYWwtbWFzb25yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3Rlc3RpbW9uaWFsLW1hc29ucnkvdGVzdGltb25pYWwtbWFzb25yeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3Rlc3RpbW9uaWFsLW1hc29ucnkvdGVzdGltb25pYWwtbWFzb25yeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDN0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDdkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFOUUsT0FBTyxXQUFXLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFnQ3pDLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxXQUFXO0lBYTFELFlBQW9CLGFBQTRCO1FBQzlDLEtBQUssRUFBRSxDQUFDO1FBRFUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFGaEQsZ0JBQVcsR0FBVyxDQUFDLENBQUM7SUFJeEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBaUIsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxRixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVM7UUFDaEIsT0FBTyxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVM7UUFDakIsT0FBTyxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVM7UUFDZixPQUFPLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBUztRQUNwQixPQUFPLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUdELGFBQWE7UUFDWCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDdkMsQ0FBQzsrR0F6RFUsMkJBQTJCO21HQUEzQiwyQkFBMkIsK1RDdER4QyxtNEhBNERVLGl4Q0QvQk4sWUFBWSw4VkFHWixzQkFBc0IseUdBQ3RCLG1CQUFtQiwwR0FDbkIsY0FBYyxnRkFDZCwwQkFBMEIsMkdBQzFCLGVBQWUsa0ZBRWYsbUJBQW1CLG9KQUNuQixvQkFBb0Isb1dBQ3BCLGVBQWUsbUZBR2Ysa0JBQWtCLHlGQUVsQixtQkFBbUIsbUZBRW5CLGdCQUFnQixxRkFDaEIsbUJBQW1CLHFKQUNuQixvQkFBb0I7OzRGQUtYLDJCQUEyQjtrQkE3QnZDLFNBQVM7K0JBQ0UsMkJBQTJCLGNBQ3pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLEtBQUs7d0JBQ0wsSUFBSTt3QkFDSixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCwwQkFBMEI7d0JBQzFCLGVBQWU7d0JBQ2YseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLDhCQUE4Qjt3QkFDOUIsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsZ0NBQWdDO3dCQUNoQyxnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3FCQUNyQjtrRkFNUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBZ0ROLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZE1vZGVsLCBCYW5uZXJTdHlsZXNNb2RlbCwgTGF5T3V0TW9kZWwgfSBmcm9tICcuLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBTcGFjaW5nQXJvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctYXJvdW5kLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctaG9yaXpvbnRhbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JuZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29ybmVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvSG92ZXJCb3JkZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaG92ZXJib3JkZXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2ltcG9FbGVtZW50c01vZHVsZSB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgQm9yZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JvcmRlci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250YWluZXJGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGFpbmVyLWZpci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBzaW1wb0NvbmV0ZW5BbGlnbm1lbnREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudC1hbGlnbm1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29udGFpbmVyQWxpZ21lbnQgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGFpbmVyLWFsaWdubWVudC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBUZXh0QmFja2dyb3VuZERpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS90ZXh0LWJhY2tncm91bmQtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvdGV4dC1lZGl0b3IvdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW1hZ2VFZGl0b3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaW1hZ2UtZWRpdG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi9CYXNlU2VjdGlvbic7XHJcbmltcG9ydCB7IFRlc3RpbW9uaWFsTWFzb25yeUNvbnRlbnRNb2RlbCwgVGVzdGltb25pYWxNYXNvbnJ5TW9kZWwsIFRlc3RpbW9uaWFsTWFzb25yeVN0eWxlTW9kZWwgfSBmcm9tICcuL3Rlc3RpbW9uaWFsLW1hc29ucnkubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby10ZXN0aW1vbmlhbC1tYXNvbnJ5JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE5nRm9yLFxyXG4gICAgTmdJZixcclxuICAgIFNwYWNpbmdBcm91bmREaXJlY3RpdmUsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSxcclxuICAgIENvcm5lckRpcmVjdGl2ZSxcclxuICAgIFNpbXBvSG92ZXJCb3JkZXJEaXJlY3RpdmUsXHJcbiAgICBTaW1wb0VsZW1lbnRzTW9kdWxlLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBCb3JkZXJEaXJlY3RpdmUsXHJcbiAgICBDb250YWluZXJGaXREaXJlY3RpdmUsXHJcbiAgICBzaW1wb0NvbmV0ZW5BbGlnbm1lbnREaXJlY3RpdmUsXHJcbiAgICBBbmltYXRpb25EaXJlY3RpdmUsXHJcbiAgICBTaW1wb0NvbnRhaW5lckFsaWdtZW50LFxyXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcclxuICAgIFRleHRCYWNrZ3JvdW5kRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgT3ZlcmxheURpcmVjdGl2ZSxcclxuICAgIFRleHRFZGl0b3JDb21wb25lbnQsXHJcbiAgICBJbWFnZUVkaXRvckRpcmVjdGl2ZSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXN0aW1vbmlhbC1tYXNvbnJ5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdGVzdGltb25pYWwtbWFzb25yeS5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVzdGltb25pYWxNYXNvbnJ5Q29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBkYXRhPzogVGVzdGltb25pYWxNYXNvbnJ5TW9kZWwgfCBhbnk7XHJcbiAgQElucHV0KCkgZWRpdD86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZGVsZXRlPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjdXN0b21DbGFzcz86IHN0cmluZztcclxuICBASW5wdXQoKSBuZXh0Q29tcG9uZW50Q29sb3I/OiBCYWNrZ3JvdW5kTW9kZWw7XHJcbiAgQElucHV0KCkgaW5kZXg/OiBudW1iZXI7XHJcblxyXG4gIGNvbnRlbnQ/OiBUZXN0aW1vbmlhbE1hc29ucnlDb250ZW50TW9kZWw7XHJcbiAgc3R5bGVzPzogVGVzdGltb25pYWxNYXNvbnJ5U3R5bGVNb2RlbDtcclxuICBzY3JlZW5XaWR0aDogbnVtYmVyID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xyXG4gICAgdGhpcy5nZXRTY3JlZW5TaXplKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgc3R5bGVzTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZXM/LmxheW91dCB9IGFzIExheU91dE1vZGVsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjdGl2ZUl0ZW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udGVudD8ubGlzdEl0ZW0/LmRhdGE/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnN0YXR1cyAhPT0gZmFsc2UpID8/IFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0UXVvdGUoaXRlbTogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBpdGVtPy5pbnB1dFRleHQ/LlswXT8udmFsdWUgPz8gJyc7XHJcbiAgfVxyXG5cclxuICBnZXRBdXRob3IoaXRlbTogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBpdGVtPy5pbnB1dFRleHQ/LlsxXT8udmFsdWUgPz8gJyc7XHJcbiAgfVxyXG5cclxuICBnZXRSb2xlKGl0ZW06IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gaXRlbT8uaW5wdXRUZXh0Py5bMl0/LnZhbHVlID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0QXZhdGFyVXJsKGl0ZW06IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gaXRlbT8uaW1hZ2U/LnVybCA/PyAnJztcclxuICB9XHJcblxyXG4gIGVkaXRTZWN0aW9uKCkge1xyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnRvZ2dsZUVkaXRvckV2ZW50LmVtaXQoZmFsc2UpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2V2ZW50U2VydmljZS5lZGl0U2VjdGlvbi5lbWl0KHsgZGF0YTogdGhpcy5kYXRhIH0pO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIGdldFNjcmVlblNpemUoKSB7XHJcbiAgICB0aGlzLnNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwibWFpbi1jb250YWluZXIgaG92ZXItZWZmZWN0XCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIj5cclxuICA8ZGl2IGNsYXNzPVwic3BhY2luZy1hcm91bmRcIiBbc3BhY2luZ0Fyb3VuZF09XCJzdHlsZXNMYXlvdXRcIiBbc2ltcG9Cb3JkZXJdPVwic3R5bGVzPy5ib3JkZXJcIiBbaWRdPVwiZGF0YT8uaWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwYXJlbnQtZGl2XCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCI+XHJcbiAgICAgIDxkaXYgW3NpbXBvT3ZlcmxheV09XCJzdHlsZXM/LmJhY2tncm91bmRcIiBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIiBbaWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgIFtzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIiBjbGFzcz1cImZsZXgtY29sdW1uXCI+XHJcblxyXG4gICAgICAgIDwhLS0gSGVhZGluZyBCbG9jayAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWJsb2NrIG1iLTNcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRleHQgb2YgY29udGVudD8uaW5wdXRUZXh0XCI+XHJcbiAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJ0ZXh0LnZhbHVlXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gTWFzb25yeSBHcmlkIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXNvbnJ5LWdyaWRcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXNvbnJ5LWNhcmRcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhY3RpdmVJdGVtczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICA8IS0tIFF1b3RlIEljb24gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdW90ZS1pY29uXCI+XHJcbiAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjI4XCIgaGVpZ2h0PVwiMjJcIiB2aWV3Qm94PVwiMCAwIDM2IDMxXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTM1LjM5OTggMy4yOTk5M0MzNS41OTk4IDMuMDk5OTMgMzUuNzk5OCAyLjY5OTkzIDM1LjU5OTggMi4yOTk5M0MzNS4zOTk4IDIuMDk5OTMgMzQuOTk5OCAxLjY5OTkzIDM0LjU5OTggMC44OTk5MjVDMzMuOTk5OCAwLjY5OTkyNSAzMy41OTk4IDAuNjk5OTI2IDMyLjk5OTggMS4wOTk5M0MyNS4zOTk4IDUuODk5OTMgMjEuMTk5OCAxMS40OTk5IDIwLjM5OTggMTcuODk5OUMxOC45OTk4IDI3Ljg5OTkgMjcuOTk5OCAzMi42OTk5IDMyLjU5OTggMjguMjk5OUMzNy4xOTk4IDIzLjg5OTkgMzQuMzk5OCAxOC4yOTk5IDMxLjE5OTggMTYuNjk5OUMyNy45OTk4IDE1LjA5OTkgMjUuOTk5OCAxNS42OTk5IDI2LjE5OTggMTMuNjk5OUMyNi41OTk4IDExLjY5OTkgMzEuMTk5OCA2LjA5OTkzIDM1LjM5OTggMy4yOTk5M1pNMTQuNzk5OCAxLjA5OTkzQzE0LjE5OTggMC42OTk5MjYgMTMuNTk5OCAwLjY5OTkyNiAxMy4xOTk4IDEuMDk5OTNDNS41OTk4MyA1Ljg5OTkzIDEuMzk5ODMgMTEuNDk5OSAwLjU5OTgzMiAxOC4wOTk5Qy0wLjgwMDE2OCAyOC4wOTk5IDguMTk5ODMgMzIuODk5OSAxMi43OTk4IDI4LjQ5OTlDMTcuMzk5OCAyNC4wOTk5IDE0LjU5OTggMTguNDk5OSAxMS4zOTk4IDE2Ljg5OTlDNy45OTk4MyAxNS40OTk5IDUuOTk5ODMgMTYuMDk5OSA2LjM5OTgzIDEzLjg5OTlDNi43OTk4MyAxMS44OTk5IDExLjM5OTggNi4yOTk5MyAxNS41OTk4IDMuNDk5OTNDMTUuNzk5OCAzLjI5OTkzIDE1Ljk5OTggMi44OTk5MyAxNS43OTk4IDIuNDk5OTNDMTUuNTk5OCAyLjI5OTkzIDE1LjE5OTggMS44OTk5MyAxNC43OTk4IDEuMDk5OTNaXCJcclxuICAgICAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yIHx8ICcjNkM4RUJGJ1wiIC8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBRdW90ZSBUZXh0IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVvdGUtdGV4dFwiPlxyXG4gICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJpdGVtLmlucHV0VGV4dFswXS52YWx1ZVwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEF1dGhvciBSb3cgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRob3Itcm93XCI+XHJcbiAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImdldEF2YXRhclVybChpdGVtKVwiIFtzcmNdPVwiZ2V0QXZhdGFyVXJsKGl0ZW0pXCIgY2xhc3M9XCJhdmF0YXJcIiBbYWx0XT1cImdldEF1dGhvcihpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICBbYXBwSW1hZ2VFZGl0b3JdPVwiZWRpdCB8fCBmYWxzZVwiIFtpbWFnZURhdGFdPVwiaXRlbS5pbWFnZVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBsb2FkaW5nPVwibGF6eVwiIC8+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dGhvci1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwiaXRlbS5pbnB1dFRleHRbMV0udmFsdWVcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgKm5nSWY9XCJpdGVtLmlucHV0VGV4dFsyXVwiIFsodmFsdWUpXT1cIml0ZW0uaW5wdXRUZXh0WzJdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBEaXZpZGVyIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHlsZXM/LmRldmlkZXI/LmRpc3BsYXlcIj5cclxuICAgIDxzaW1wby1zdmctZGl2aWRlciBbZGl2aWRlclR5cGVdPVwic3R5bGVzPy5kZXZpZGVyPy5kZXZpZGVyVHlwZVwiXHJcbiAgICAgIFtjb2xvcl09XCJuZXh0Q29tcG9uZW50Q29sb3I/LmNvbG9yXCI+PC9zaW1wby1zdmctZGl2aWRlcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSBIb3ZlciAvIEVkaXQgQ29udHJvbHMgLS0+XHJcbiAgPGRpdiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGVkaXR9XCIgKm5nSWY9XCJzaG93RWRpdG9yc1wiPlxyXG4gICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cInNob3dEZWxldGVcIiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGRlbGV0ZX1cIj5cclxuICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGltb25pYWwtbWFzb25yeS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvdGVzdGltb25pYWwtbWFzb25yeS90ZXN0aW1vbmlhbC1tYXNvbnJ5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbWFnZSwgSW5wdXRUZXh0TW9kZWwsIExpc3RJdGVtTW9kYWwsIFN0eWxlc01vZGVsLCBCYW5uZXJTdHlsZXNNb2RlbCwgQWN0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUZXN0aW1vbmlhbE1hc29ucnlNb2RlbCB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBzZWN0aW9uVHlwZTogc3RyaW5nO1xyXG4gIHNlY3Rpb25OYW1lOiBzdHJpbmc7XHJcbiAgY29udGVudDogVGVzdGltb25pYWxNYXNvbnJ5Q29udGVudE1vZGVsO1xyXG4gIHN0eWxlczogVGVzdGltb25pYWxNYXNvbnJ5U3R5bGVNb2RlbDtcclxuICBhY3Rpb24/OiBBY3Rpb25Nb2RlbDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUZXN0aW1vbmlhbE1hc29ucnlDb250ZW50TW9kZWwge1xyXG4gIGlucHV0VGV4dDogSW5wdXRUZXh0TW9kZWxbXTtcclxuICBkaXNwbGF5Pzoge1xyXG4gICAgc2hvd0ltYWdlPzogYm9vbGVhbjtcclxuICAgIHNob3dDYXJkPzogYm9vbGVhbjtcclxuICB9O1xyXG4gIGxpc3RJdGVtOiBMaXN0SXRlbU1vZGFsPFRlc3RpbW9uaWFsTWFzb25yeUl0ZW1Nb2RlbD47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGVzdGltb25pYWxNYXNvbnJ5SXRlbU1vZGVsIHtcclxuICBzdGF0dXM6IGJvb2xlYW47XHJcbiAgaW1hZ2U6IEltYWdlO1xyXG4gIGlucHV0VGV4dDogSW5wdXRUZXh0TW9kZWxbXTsgLy8gWzBdID0gcXVvdGUsIFsxXSA9IGJ5LCBbMl0gPSByb2xlIChvcHRpb25hbClcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUZXN0aW1vbmlhbE1hc29ucnlTdHlsZU1vZGVsIGV4dGVuZHMgU3R5bGVzTW9kZWwsIEJhbm5lclN0eWxlc01vZGVsIHt9XHJcbiJdfQ==
@@ -1,62 +0,0 @@
1
- import { Extension } from '@tiptap/core';
2
- export const GradientExtension = Extension.create({
3
- name: 'gradient',
4
- addGlobalAttributes() {
5
- return [
6
- {
7
- types: ['textStyle'],
8
- attributes: {
9
- backgroundImage: {
10
- default: null,
11
- parseHTML: element => element.style.backgroundImage,
12
- renderHTML: attributes => {
13
- if (!attributes['backgroundImage']) {
14
- return {};
15
- }
16
- return {
17
- style: `background-image:${attributes['backgroundImage']};`
18
- };
19
- },
20
- },
21
- backgroundClip: {
22
- default: null,
23
- parseHTML: element => element.style.backgroundClip,
24
- renderHTML: attributes => {
25
- if (!attributes['backgroundClip']) {
26
- return {};
27
- }
28
- return {
29
- style: `background-clip:${attributes['backgroundClip']};`
30
- };
31
- },
32
- },
33
- WebkitBackgroundClip: {
34
- default: null,
35
- parseHTML: element => element.style.webkitBackgroundClip,
36
- renderHTML: attributes => {
37
- if (!attributes['WebkitBackgroundClip']) {
38
- return {};
39
- }
40
- return {
41
- style: `-webkit-background-clip:${attributes['WebkitBackgroundClip']};`
42
- };
43
- },
44
- },
45
- WebkitTextFillColor: {
46
- default: null,
47
- parseHTML: element => element.style.webkitTextFillColor,
48
- renderHTML: attributes => {
49
- if (!attributes['WebkitTextFillColor']) {
50
- return {};
51
- }
52
- return {
53
- style: `-webkit-text-fill-color:${attributes['WebkitTextFillColor']};`
54
- };
55
- },
56
- },
57
- },
58
- },
59
- ];
60
- },
61
- });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhZGllbnQtZXh0ZW5zaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zdHlsZXMvZ3JhZGllbnQtZXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQzFCLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFFYixJQUFJLEVBQUUsVUFBVTtJQUVoQixtQkFBbUI7UUFFZixPQUFPO1lBRUg7Z0JBQ0ksS0FBSyxFQUFFLENBQUMsV0FBVyxDQUFDO2dCQUVwQixVQUFVLEVBQUU7b0JBRVIsZUFBZSxFQUFFO3dCQUViLE9BQU8sRUFBRSxJQUFJO3dCQUViLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWU7d0JBRWpDLFVBQVUsRUFBRSxVQUFVLENBQUMsRUFBRTs0QkFFckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7Z0NBQ2pDLE9BQU8sRUFBRSxDQUFDOzRCQUNkLENBQUM7NEJBRUQsT0FBTztnQ0FDSCxLQUFLLEVBQ0Qsb0JBQW9CLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHOzZCQUMzRCxDQUFDO3dCQUVOLENBQUM7cUJBRUo7b0JBRUQsY0FBYyxFQUFFO3dCQUVaLE9BQU8sRUFBRSxJQUFJO3dCQUViLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWM7d0JBRWhDLFVBQVUsRUFBRSxVQUFVLENBQUMsRUFBRTs0QkFFckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7Z0NBQ2hDLE9BQU8sRUFBRSxDQUFDOzRCQUNkLENBQUM7NEJBRUQsT0FBTztnQ0FDSCxLQUFLLEVBQ0QsbUJBQW1CLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHOzZCQUN6RCxDQUFDO3dCQUVOLENBQUM7cUJBRUo7b0JBRUQsb0JBQW9CLEVBQUU7d0JBRWxCLE9BQU8sRUFBRSxJQUFJO3dCQUViLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQjt3QkFFdEMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxFQUFFOzRCQUVyQixJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztnQ0FDdEMsT0FBTyxFQUFFLENBQUM7NEJBQ2QsQ0FBQzs0QkFFRCxPQUFPO2dDQUNILEtBQUssRUFDRCwyQkFBMkIsVUFBVSxDQUFDLHNCQUFzQixDQUFDLEdBQUc7NkJBQ3ZFLENBQUM7d0JBRU4sQ0FBQztxQkFFSjtvQkFFRCxtQkFBbUIsRUFBRTt3QkFFakIsT0FBTyxFQUFFLElBQUk7d0JBRWIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CO3dCQUVyQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEVBQUU7NEJBRXJCLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDO2dDQUNyQyxPQUFPLEVBQUUsQ0FBQzs0QkFDZCxDQUFDOzRCQUVELE9BQU87Z0NBQ0gsS0FBSyxFQUNELDJCQUEyQixVQUFVLENBQUMscUJBQXFCLENBQUMsR0FBRzs2QkFDdEUsQ0FBQzt3QkFFTixDQUFDO3FCQUVKO2lCQUVKO2FBRUo7U0FFSixDQUFDO0lBRU4sQ0FBQztDQUVKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4dGVuc2lvbiB9IGZyb20gJ0B0aXB0YXAvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgR3JhZGllbnRFeHRlbnNpb24gPVxyXG4gICAgRXh0ZW5zaW9uLmNyZWF0ZSh7XHJcblxyXG4gICAgICAgIG5hbWU6ICdncmFkaWVudCcsXHJcblxyXG4gICAgICAgIGFkZEdsb2JhbEF0dHJpYnV0ZXMoKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gW1xyXG5cclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlczogWyd0ZXh0U3R5bGUnXSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlOiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogbnVsbCxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUhUTUw6IGVsZW1lbnQgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmJhY2tncm91bmRJbWFnZSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJIVE1MOiBhdHRyaWJ1dGVzID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGVzWydiYWNrZ3JvdW5kSW1hZ2UnXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBiYWNrZ3JvdW5kLWltYWdlOiR7YXR0cmlidXRlc1snYmFja2dyb3VuZEltYWdlJ119O2BcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENsaXA6IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBudWxsLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSFRNTDogZWxlbWVudCA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENsaXAsXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVySFRNTDogYXR0cmlidXRlcyA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYXR0cmlidXRlc1snYmFja2dyb3VuZENsaXAnXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBiYWNrZ3JvdW5kLWNsaXA6JHthdHRyaWJ1dGVzWydiYWNrZ3JvdW5kQ2xpcCddfTtgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFdlYmtpdEJhY2tncm91bmRDbGlwOiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogbnVsbCxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUhUTUw6IGVsZW1lbnQgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLndlYmtpdEJhY2tncm91bmRDbGlwLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckhUTUw6IGF0dHJpYnV0ZXMgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWF0dHJpYnV0ZXNbJ1dlYmtpdEJhY2tncm91bmRDbGlwJ10pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6JHthdHRyaWJ1dGVzWydXZWJraXRCYWNrZ3JvdW5kQ2xpcCddfTtgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBudWxsLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSFRNTDogZWxlbWVudCA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUud2Via2l0VGV4dEZpbGxDb2xvcixcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJIVE1MOiBhdHRyaWJ1dGVzID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGVzWydXZWJraXRUZXh0RmlsbENvbG9yJ10pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6JHthdHRyaWJ1dGVzWydXZWJraXRUZXh0RmlsbENvbG9yJ119O2BcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBdO1xyXG5cclxuICAgICAgICB9LFxyXG5cclxuICAgIH0pOyJdfQ==
@@ -1,43 +0,0 @@
1
- import { Extension } from '@tiptap/core';
2
- export const FontSize = Extension.create({
3
- name: 'fontSize',
4
- addGlobalAttributes() {
5
- return [
6
- {
7
- types: ['textStyle'],
8
- attributes: {
9
- fontSize: {
10
- default: null,
11
- parseHTML: element => element.style.fontSize || null,
12
- renderHTML: attributes => {
13
- if (!attributes['fontSize']) {
14
- return {};
15
- }
16
- return {
17
- style: `font-size: ${attributes['fontSize']}`
18
- };
19
- }
20
- }
21
- }
22
- }
23
- ];
24
- },
25
- addCommands() {
26
- return {
27
- setFontSize: (fontSize) => ({ chain }) => {
28
- return chain()
29
- .setMark('textStyle', { fontSize })
30
- .run();
31
- },
32
- unsetFontSize: () => ({ chain }) => {
33
- return chain()
34
- .setMark('textStyle', {
35
- fontSize: null
36
- })
37
- .removeEmptyTextStyle()
38
- .run();
39
- }
40
- };
41
- }
42
- });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1zaXplLmV4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc3R5bGVzL3RleHQtc2l6ZS5leHRlbnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQVd6QyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUVyQyxJQUFJLEVBQUUsVUFBVTtJQUVoQixtQkFBbUI7UUFFZixPQUFPO1lBQ0g7Z0JBQ0ksS0FBSyxFQUFFLENBQUMsV0FBVyxDQUFDO2dCQUNwQixVQUFVLEVBQUU7b0JBRVIsUUFBUSxFQUFFO3dCQUVOLE9BQU8sRUFBRSxJQUFJO3dCQUViLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJO3dCQUVsQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEVBQUU7NEJBRXJCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQ0FDMUIsT0FBTyxFQUFFLENBQUM7NEJBQ2QsQ0FBQzs0QkFFRCxPQUFPO2dDQUNILEtBQUssRUFBRSxjQUFjLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTs2QkFDaEQsQ0FBQzt3QkFFTixDQUFDO3FCQUVKO2lCQUVKO2FBRUo7U0FFSixDQUFDO0lBRU4sQ0FBQztJQUVELFdBQVc7UUFFUCxPQUFPO1lBRUgsV0FBVyxFQUNQLENBQUMsUUFBZ0IsRUFBRSxFQUFFLENBQ2pCLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUVWLE9BQU8sS0FBSyxFQUFFO3FCQUNULE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQztxQkFDbEMsR0FBRyxFQUFFLENBQUM7WUFFZixDQUFDO1lBRVQsYUFBYSxFQUNULEdBQUcsRUFBRSxDQUNELENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUVWLE9BQU8sS0FBSyxFQUFFO3FCQUNULE9BQU8sQ0FBQyxXQUFXLEVBQUU7b0JBQ2xCLFFBQVEsRUFBRSxJQUFJO2lCQUNqQixDQUFDO3FCQUNELG9CQUFvQixFQUFFO3FCQUN0QixHQUFHLEVBQUUsQ0FBQztZQUVmLENBQUM7U0FFWixDQUFDO0lBRU4sQ0FBQztDQUVKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4dGVuc2lvbiB9IGZyb20gJ0B0aXB0YXAvY29yZSc7XHJcblxyXG5kZWNsYXJlIG1vZHVsZSAnQHRpcHRhcC9jb3JlJyB7XHJcbiAgICBpbnRlcmZhY2UgQ29tbWFuZHM8UmV0dXJuVHlwZT4ge1xyXG4gICAgICAgIGZvbnRTaXplOiB7XHJcbiAgICAgICAgICAgIHNldEZvbnRTaXplOiAoZm9udFNpemU6IHN0cmluZykgPT4gUmV0dXJuVHlwZTtcclxuICAgICAgICAgICAgdW5zZXRGb250U2l6ZTogKCkgPT4gUmV0dXJuVHlwZTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgRm9udFNpemUgPSBFeHRlbnNpb24uY3JlYXRlKHtcclxuXHJcbiAgICBuYW1lOiAnZm9udFNpemUnLFxyXG5cclxuICAgIGFkZEdsb2JhbEF0dHJpYnV0ZXMoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHR5cGVzOiBbJ3RleHRTdHlsZSddLFxyXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZToge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogbnVsbCxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSFRNTDogZWxlbWVudCA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5mb250U2l6ZSB8fCBudWxsLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVySFRNTDogYXR0cmlidXRlcyA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGVzWydmb250U2l6ZSddKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IGBmb250LXNpemU6ICR7YXR0cmlidXRlc1snZm9udFNpemUnXX1gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICBdO1xyXG5cclxuICAgIH0sXHJcblxyXG4gICAgYWRkQ29tbWFuZHMoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcblxyXG4gICAgICAgICAgICBzZXRGb250U2l6ZTpcclxuICAgICAgICAgICAgICAgIChmb250U2l6ZTogc3RyaW5nKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7IGNoYWluIH0pID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGFpbigpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0TWFyaygndGV4dFN0eWxlJywgeyBmb250U2l6ZSB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJ1bigpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgdW5zZXRGb250U2l6ZTpcclxuICAgICAgICAgICAgICAgICgpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHsgY2hhaW4gfSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYWluKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRNYXJrKCd0ZXh0U3R5bGUnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlRW1wdHlUZXh0U3R5bGUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJ1bigpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH07XHJcblxyXG4gICAgfVxyXG5cclxufSk7Il19