@leanix/components 0.4.211 → 0.4.213
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.
@@ -108,7 +108,7 @@ export class EllipsisComponent {
|
|
108
108
|
return offsetWidth < scrollWidth;
|
109
109
|
}
|
110
110
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: EllipsisComponent, deps: [{ token: LX_ELLIPSIS_DEBOUNCE_ON_RESIZE }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.ResizeObserverService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
111
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: EllipsisComponent, isStandalone: true, selector: "lx-ellipsis", inputs: { content: "content", escapeHtmlInContent: "escapeHtmlInContent" }, viewQueries: [{ propertyName: "contentSpanEl", first: true, predicate: ["contentEl"], descendants: true }, { propertyName: "showMoreButtonEl", first: true, predicate: ["showMoreButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<span\n #contentEl\n [class.showMore]=\"isShowingMore$ | async\"\n class=\"content truncate lx-margin-right\"\n [innerHtml]=\"sanitizedContent$ | async\"\n></span>\n<button *ngIf=\"showButton$ | async\" (click)=\"onShowMoreToggle()\" lx-button #showMoreButton size=\"auto\" mode=\"link\" color=\"primary\">\n {{ showMoreButtonLabel$ | async }}\n</button>\n", styles: [":host{display:block}.content{display:inline-block;word-break:break-word}.
|
111
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: EllipsisComponent, isStandalone: true, selector: "lx-ellipsis", inputs: { content: "content", escapeHtmlInContent: "escapeHtmlInContent" }, viewQueries: [{ propertyName: "contentSpanEl", first: true, predicate: ["contentEl"], descendants: true }, { propertyName: "showMoreButtonEl", first: true, predicate: ["showMoreButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<span\n #contentEl\n [class.showMore]=\"isShowingMore$ | async\"\n class=\"content truncate lx-margin-right\"\n [innerHtml]=\"sanitizedContent$ | async\"\n></span>\n<button *ngIf=\"showButton$ | async\" (click)=\"onShowMoreToggle()\" lx-button #showMoreButton size=\"auto\" mode=\"link\" color=\"primary\">\n {{ showMoreButtonLabel$ | async }}\n</button>\n", styles: [":host{display:block}.content{display:inline-block;word-break:break-word}.truncate:not(.showMore){width:calc(100% - 140px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.content.showMore+button{margin-top:4px;display:block}button{white-space:nowrap;vertical-align:top}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "button[lx-button]", inputs: ["size", "color", "mode", "pressed", "selected", "square", "circle", "disabled", "showSpinner"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
112
112
|
}
|
113
113
|
__decorate([
|
114
114
|
Observe('contentSpanEl')
|
@@ -121,7 +121,7 @@ __decorate([
|
|
121
121
|
], EllipsisComponent.prototype, "content$", void 0);
|
122
122
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: EllipsisComponent, decorators: [{
|
123
123
|
type: Component,
|
124
|
-
args: [{ selector: 'lx-ellipsis', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, ButtonComponent, AsyncPipe], template: "<span\n #contentEl\n [class.showMore]=\"isShowingMore$ | async\"\n class=\"content truncate lx-margin-right\"\n [innerHtml]=\"sanitizedContent$ | async\"\n></span>\n<button *ngIf=\"showButton$ | async\" (click)=\"onShowMoreToggle()\" lx-button #showMoreButton size=\"auto\" mode=\"link\" color=\"primary\">\n {{ showMoreButtonLabel$ | async }}\n</button>\n", styles: [":host{display:block}.content{display:inline-block;word-break:break-word}.
|
124
|
+
args: [{ selector: 'lx-ellipsis', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, ButtonComponent, AsyncPipe], template: "<span\n #contentEl\n [class.showMore]=\"isShowingMore$ | async\"\n class=\"content truncate lx-margin-right\"\n [innerHtml]=\"sanitizedContent$ | async\"\n></span>\n<button *ngIf=\"showButton$ | async\" (click)=\"onShowMoreToggle()\" lx-button #showMoreButton size=\"auto\" mode=\"link\" color=\"primary\">\n {{ showMoreButtonLabel$ | async }}\n</button>\n", styles: [":host{display:block}.content{display:inline-block;word-break:break-word}.truncate:not(.showMore){width:calc(100% - 140px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.content.showMore+button{margin-top:4px;display:block}button{white-space:nowrap;vertical-align:top}\n"] }]
|
125
125
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
126
126
|
type: Inject,
|
127
127
|
args: [LX_ELLIPSIS_DEBOUNCE_ON_RESIZE]
|
@@ -136,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
136
136
|
type: ViewChild,
|
137
137
|
args: ['showMoreButton', { read: ElementRef }]
|
138
138
|
}], content$: [] } });
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzaXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvY29yZS11aS9jb21wb25lbnRzL2VsbGlwc2lzL2VsbGlwc2lzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy9lbGxpcHNpcy9lbGxpcHNpcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEdBQUcsRUFDSCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxjQUFjLEVBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBRTdELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUFTLGdDQUFnQyxFQUFFO0lBQ3pHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9B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QUFhLENBQUMsV0FBVyxDQUFDO1FBQy9ELE9BQU8sV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNuQyxDQUFDOzhHQXpKVSxpQkFBaUIsa0JBMkJsQiw4QkFBOEI7a0dBM0I3QixpQkFBaUIsK1VBYVMsVUFBVSw2QkNoRWpELDJXQVNBLHdhRHdDWSxJQUFJLDZGQUFFLGVBQWUsa0tBQUUsU0FBUzs7QUFZUjtJQUFqQyxPQUFPLENBQUMsZUFBZSxDQUFDO3lEQUFrRTtBQUV0RDtJQUFwQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7NERBQXVFO0FBVTNGO0lBRFAsT0FBTyxDQUFDLFNBQVMsQ0FBQzttREFDbUI7MkZBdEIzQixpQkFBaUI7a0JBUjdCLFNBQVM7K0JBQ0UsYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsU0FBUyxDQUFDOzswQkE2QnhDLE1BQU07MkJBQUMsOEJBQThCO3FLQXhCL0IsT0FBTztzQkFBZixLQUFLO2dCQUtHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFNEIsY0FBYyxNQUN4QixhQUFhO3NCQUFwQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ2UsaUJBQWlCLE1BQ0gsZ0JBQWdCO3NCQUFsRSxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFTekMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBlc2NhcGUgfSBmcm9tICdsb2Rhc2gvZnAnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBjb25jYXQsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgcGFpcndpc2UsXG4gIHNraXAsXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG4gIHdpdGhMYXRlc3RGcm9tXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvb2JzZXJ2ZSc7XG5pbXBvcnQgeyBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXNpemUtb2JzZXJ2ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBMWF9FTExJUFNJU19ERUJPVU5DRV9PTl9SRVNJWkUgPSBuZXcgSW5qZWN0aW9uVG9rZW48bnVtYmVyPignTFhfRUxMSVBTSVNfREVCT1VOQ0VfT05fUkVTSVpFJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IEVsbGlwc2lzQ29tcG9uZW50LkRFRkFVTFRfUkVTSVpFX0RFQk9VTkNFX01TXG59KTtcblxuLyoqXG4gKiBZb3UgY2FuIHNldCBhIGN1c3RvbSBtYXgtd2lkdGggQ1NTIHByb3BlcnR5IG9uIHlvdXIgbHgtZWxsaXBzaXMgaG9zdCBlbGVtZW50XG4gKiBpZiB5b3Ugd2FudCBpdHMgY29udGVudCB0byBuZXZlciBleGNlZWQgYSBzcGVjaWZpYyB3aWR0aCxcbiAqIGUuZy4gPGx4LWVsbGlwc2lzIHN0eWxlPVwibWF4LXdpZHRoOiAzMDBweFwiIGNvbnRlbnQ9XCJIZWxsbyBXb3JsZFsuLl1cIj48L2x4LWVsbGlwc2lzPi5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtZWxsaXBzaXMnLFxuICB0ZW1wbGF0ZVVybDogJ2VsbGlwc2lzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbYGVsbGlwc2lzLmNvbXBvbmVudC5zY3NzYF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgQnV0dG9uQ29tcG9uZW50LCBBc3luY1BpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEVsbGlwc2lzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0aWMgREVGQVVMVF9SRVNJWkVfREVCT1VOQ0VfTVMgPSA1MDA7XG5cbiAgQElucHV0KCkgY29udGVudDogc3RyaW5nID0gJyc7XG4gIC8qKlxuICAgKiBPbmx5IHNldCB0aGlzIHRvIGZhbHNlIGlmIHRoZSBjb250ZW50IGlzIG5vdCBhIHVzZXIgcHJvdmlkZWQgc3RyaW5nXG4gICAqIG9yIGlmIHlvdSBzYW5pdGl6ZSB0aGUgcHJvdmlkZWQgY29udGVudCB5b3Vyc2VsZi5cbiAgICovXG4gIEBJbnB1dCgpIGVzY2FwZUh0bWxJbkNvbnRlbnQgPSB0cnVlO1xuXG4gIEBPYnNlcnZlKCdjb250ZW50U3BhbkVsJykgcHJpdmF0ZSBjb250ZW50U3BhbkVsJCE6IE9ic2VydmFibGU8RWxlbWVudFJlZjxIVE1MU3BhbkVsZW1lbnQ+PjtcbiAgQFZpZXdDaGlsZCgnY29udGVudEVsJykgY29udGVudFNwYW5FbCE6IEVsZW1lbnRSZWY8SFRNTFNwYW5FbGVtZW50PjtcbiAgQE9ic2VydmUoJ3Nob3dNb3JlQnV0dG9uRWwnKSBwcml2YXRlIHNob3dNb3JlQnV0dG9uRWwkITogT2JzZXJ2YWJsZTxFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50Pj47XG4gIEBWaWV3Q2hpbGQoJ3Nob3dNb3JlQnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHNob3dNb3JlQnV0dG9uRWwhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcblxuICBpc1Nob3dpbmdNb3JlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHNob3dCdXR0b24kITogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc2hvd01vcmVCdXR0b25MYWJlbCQhOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgc2FuaXRpemVkQ29udGVudCQhOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIEBPYnNlcnZlKCdjb250ZW50JylcbiAgcHJpdmF0ZSBjb250ZW50JCE6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTFhfRUxMSVBTSVNfREVCT1VOQ0VfT05fUkVTSVpFKVxuICAgIHByaXZhdGUgZGVib3VuY2VNc0FmdGVyUmVzaXplOiBudW1iZXIsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBob3N0RWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6IFJlc2l6ZU9ic2VydmVyU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2FuaXRpemVkQ29udGVudCQgPSB0aGlzLmNvbnRlbnQkLnBpcGUoXG4gICAgICBtYXAoKGNvbnRlbnQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZXNjYXBlSHRtbEluQ29udGVudCAmJiB0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gZXNjYXBlKGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zaG93TW9yZUJ1dHRvbkxhYmVsJCA9IHRoaXMuaXNTaG93aW5nTW9yZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoaXNTaG93aW5nTW9yZSkgPT4ge1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbktleSA9IGlzU2hvd2luZ01vcmUgPyAnY29tbW9uLnNob3dMZXNzJyA6ICdjb21tb24uc2hvd01vcmUnO1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0cmFuc2xhdGlvbktleSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgY29uc3QgbmV3V2lkdGhPblJlc2l6ZSQgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gICAgY29uc3QgbmV3SGVpZ2h0T25SZXNpemUkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUodGhpcy5ob3N0RWwubmF0aXZlRWxlbWVudCwgKHJlc2l6ZWRFbGVtZW50KSA9PiB7XG4gICAgICBuZXdXaWR0aE9uUmVzaXplJC5uZXh0KHJlc2l6ZWRFbGVtZW50LmNvbnRlbnRSZWN0LndpZHRoKTtcbiAgICAgIG5ld0hlaWdodE9uUmVzaXplJC5uZXh0KHJlc2l6ZWRFbGVtZW50LmNvbnRlbnRSZWN0LmhlaWdodCk7XG4gICAgfSk7XG4gICAgY29uc3QgY29udGFpbmVyV2lkdGhDaGFuZ2VkU2lnbmlmaWNhbnRseUFmdGVyUmVzaXplJCA9IG5ld1dpZHRoT25SZXNpemUkLnBpcGUoXG4gICAgICBzdGFydFdpdGgoMCksXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgZmlsdGVyKChbcHJldmlvdXNXaWR0aCwgbmV3V2lkdGhdKSA9PiBNYXRoLmFicyhuZXdXaWR0aCAtIHByZXZpb3VzV2lkdGgpID4gMSksXG4gICAgICBtYXAoKFssIG5ld1dpZHRoXSkgPT4gbmV3V2lkdGgpXG4gICAgKTtcbiAgICBjb25zdCB1c2VyVHJpZ2dlcmVkVHJpZ2dlcmVkU2hvd0xlc3MkID0gdGhpcy5pc1Nob3dpbmdNb3JlJC5waXBlKGZpbHRlcigoaXNTaG93aW5nTW9yZSkgPT4gIWlzU2hvd2luZ01vcmUpKTtcblxuICAgIGNvbnN0IHJlZXZhbHVhdGVJZkNvbnRlbnRJc092ZXJmbG93aW5nJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jb250ZW50U3BhbkVsJCxcbiAgICAgIHVzZXJUcmlnZ2VyZWRUcmlnZ2VyZWRTaG93TGVzcyQsXG4gICAgICBjb250YWluZXJXaWR0aENoYW5nZWRTaWduaWZpY2FudGx5QWZ0ZXJSZXNpemUkXG4gICAgXSk7XG5cbiAgICBjb25zdCBpc0NvbnRlbnRPdmVyZmxvd2luZyQgPSBtZXJnZShcbiAgICAgIGNvbmNhdChcbiAgICAgICAgcmVldmFsdWF0ZUlmQ29udGVudElzT3ZlcmZsb3dpbmckLnBpcGUodGFrZSgxKSksIC8vIGRlYm91bmNlIGFsbCBidXQgdGhlIGZpcnN0IG91dHB1dFxuICAgICAgICByZWV2YWx1YXRlSWZDb250ZW50SXNPdmVyZmxvd2luZyQucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZU1zQWZ0ZXJSZXNpemUpKVxuICAgICAgKSxcbiAgICAgIHRoaXMuY29udGVudCQucGlwZShza2lwKDEpKSAvLyBpbW1lZGlhdGVseSByZWV2YWx1YXRlIG9uIHN1YnNlcXVlbnQgY29udGVudCBjaGFuZ2VzXG4gICAgKS5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5jb250ZW50U3BhbkVsJCksXG4gICAgICBtYXAoKFssIGNvbnRlbnRTcGFuUmVmXSkgPT4gdGhpcy5pc0NvbnRlbnRPdmVyZmxvd2luZyhjb250ZW50U3BhblJlZikpXG4gICAgKTtcblxuICAgIGNvbnN0IHVzZXJUcmlnZ2VyZWRUcmlnZ2VyZWRTaG93TW9yZSQgPSB0aGlzLmlzU2hvd2luZ01vcmUkLnBpcGUoZmlsdGVyKChpc1Nob3dpbmdNb3JlKSA9PiBpc1Nob3dpbmdNb3JlKSk7XG5cbiAgICBjb25zdCBidXR0b25IZWlnaHQkID0gdGhpcy5zaG93TW9yZUJ1dHRvbkVsJC5waXBlKFxuICAgICAgZmlsdGVyKChzaG93TW9yZUJ1dHRvbkVsKSA9PiAhIXNob3dNb3JlQnV0dG9uRWwpLFxuICAgICAgbWFwKChzaG93TW9yZUJ1dHRvbkVsKSA9PiBzaG93TW9yZUJ1dHRvbkVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuICAgIGNvbnN0IHVzZXJJbmNyZWFzZWRCcm93c2VyV2luZG93U2l6ZVRvVGhlUG9pbnRPZk5vVHJ1bmNhdGlvbk5lY2Vzc2FyeSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIGJ1dHRvbkhlaWdodCQsXG4gICAgICBuZXdIZWlnaHRPblJlc2l6ZSQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgIF0pLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlzU2hvd2luZ01vcmUkKSxcbiAgICAgIGZpbHRlcigoWywgaXNTaG93aW5nTW9yZV0pID0+IGlzU2hvd2luZ01vcmUpLFxuICAgICAgbWFwKChbW2J1dHRvbkhlaWdodCwgbmV3SGVpZ2h0XV0pID0+IHtcbiAgICAgICAgY29uc3QgaGVpZ2h0T2ZPbmVMaW5lID0gYnV0dG9uSGVpZ2h0O1xuICAgICAgICBjb25zdCBzaG93TGVzc0J1dHRvbk1hcmdpblRvcCA9IDQ7XG4gICAgICAgIGNvbnN0IGhlaWdodE9mU3BhbkluU2hvd01vcmVNb2RlID0gbmV3SGVpZ2h0IC0gYnV0dG9uSGVpZ2h0IC0gc2hvd0xlc3NCdXR0b25NYXJnaW5Ub3A7XG4gICAgICAgIGNvbnN0IHRocmVzaG9sZFRvRGV0ZWN0Q29udGVudEluU2luZ2xlTGluZSA9IDQ7XG4gICAgICAgIGNvbnN0IGRpZmZlcmVuY2VCZXR3ZWVuQ29udGVudFNwYW5BbmRCdXR0b25IZWlnaHQgPSBNYXRoLmFicyhoZWlnaHRPZk9uZUxpbmUgLSBoZWlnaHRPZlNwYW5JblNob3dNb3JlTW9kZSk7XG4gICAgICAgIGNvbnN0IGlzU3BhbkNvbnRlbnREaXNwbGF5ZWRJbk9uZUxpbmVBZ2FpbiA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29udGVudFNwYW5BbmRCdXR0b25IZWlnaHQgPCB0aHJlc2hvbGRUb0RldGVjdENvbnRlbnRJblNpbmdsZUxpbmU7XG4gICAgICAgIHJldHVybiBpc1NwYW5Db250ZW50RGlzcGxheWVkSW5PbmVMaW5lQWdhaW47XG4gICAgICB9KVxuICAgICk7XG4gICAgY29uc3QgY29udGVudEZpdHNJbk9uZUxpbmVBZ2FpbldoaWxlU2hvd01vcmVJc0VuYWJsZWQkID0gdXNlckluY3JlYXNlZEJyb3dzZXJXaW5kb3dTaXplVG9UaGVQb2ludE9mTm9UcnVuY2F0aW9uTmVjZXNzYXJ5JC5waXBlKFxuICAgICAgc3RhcnRXaXRoKGZhbHNlKSxcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBmaWx0ZXIoKFtwcmV2aW91c1RleHRJc05vd0luT25lTGluZUFnYWluXSkgPT4gIXByZXZpb3VzVGV4dElzTm93SW5PbmVMaW5lQWdhaW4pLFxuICAgICAgbWFwKChbLCB0ZXh0SXNOb3dJbk9uZUxpbmVBZ2Fpbl0pID0+ICF0ZXh0SXNOb3dJbk9uZUxpbmVBZ2FpbilcbiAgICApO1xuICAgIGNvbnN0IGNvbnRlbnRJc092ZXJmbG93aW5nQW5kU2hvd01vcmVJc05vdEVuYWJsZWQkID0gaXNDb250ZW50T3ZlcmZsb3dpbmckLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlzU2hvd2luZ01vcmUkKSxcbiAgICAgIGZpbHRlcigoWywgaXNTaG93aW5nTW9yZV0pID0+ICFpc1Nob3dpbmdNb3JlKSxcbiAgICAgIG1hcCgoW2lzQ29udGVudExvbmdlclRoYW5Db250YWluZXJXaWR0aF0pID0+IHtcbiAgICAgICAgcmV0dXJuIGlzQ29udGVudExvbmdlclRoYW5Db250YWluZXJXaWR0aDtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnNob3dCdXR0b24kID0gbWVyZ2UoXG4gICAgICB1c2VyVHJpZ2dlcmVkVHJpZ2dlcmVkU2hvd01vcmUkLFxuICAgICAgY29udGVudEZpdHNJbk9uZUxpbmVBZ2FpbldoaWxlU2hvd01vcmVJc0VuYWJsZWQkLFxuICAgICAgY29udGVudElzT3ZlcmZsb3dpbmdBbmRTaG93TW9yZUlzTm90RW5hYmxlZCRcbiAgICApO1xuXG4gICAgLy8gQXMgbG9uZyBhcyBubyBwYXJlbnQgY29tcG9uZW50IGlzIGxpc3RlbmluZyBvbiByZXNpemUgZXZlbnRzLFxuICAgIC8vIHRoZSBDaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSBjYWxsIGRvbmUgYnkgdGhlIGFzeW5jIHBpcGVcbiAgICAvLyB3aWxsIG5vdCByZXN1bHQgaW4gYSBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIGluIHRoaXMgY29tcG9uZW50IHdoZW4gaXRzIHNpemUgY2hhbmdlcy5cbiAgICAvLyBUaGlzIGlzIHRoZSBsZWFzdCBhbW91bnQgb2YgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpIGNhbGxzXG4gICAgLy8gSSB3YXMgYWJsZSB0byBjb21lIHVwIHdpdGguIFRoZSBBbmd1bGFyIHByb2ZpbGVyIHNob3dzIGFjY2VwdGFibGUgbnVtYmVycyBvZiBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlc1doZW5PYnNlcnZhYmxlRW1pdHMoaXNDb250ZW50T3ZlcmZsb3dpbmckKTtcbiAgICB0aGlzLmRldGVjdENoYW5nZXNXaGVuT2JzZXJ2YWJsZUVtaXRzKHRoaXMuc2hvd0J1dHRvbiQpO1xuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlc1doZW5PYnNlcnZhYmxlRW1pdHModGhpcy5jb250ZW50JCk7XG4gICAgdGhpcy5kZXRlY3RDaGFuZ2VzV2hlbk9ic2VydmFibGVFbWl0cyhjb250ZW50SXNPdmVyZmxvd2luZ0FuZFNob3dNb3JlSXNOb3RFbmFibGVkJCk7XG4gICAgdGhpcy5kZXRlY3RDaGFuZ2VzV2hlbk9ic2VydmFibGVFbWl0cyhpc0NvbnRlbnRPdmVyZmxvd2luZyQpO1xuICB9XG5cbiAgb25TaG93TW9yZVRvZ2dsZSgpIHtcbiAgICB0aGlzLmlzU2hvd2luZ01vcmUkLm5leHQoIXRoaXMuaXNTaG93aW5nTW9yZSQuZ2V0VmFsdWUoKSk7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS51bm9ic2VydmUodGhpcy5ob3N0RWwubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIGRldGVjdENoYW5nZXNXaGVuT2JzZXJ2YWJsZUVtaXRzKG9ic2VydmFibGUkOiBPYnNlcnZhYmxlPGFueT4pIHtcbiAgICBvYnNlcnZhYmxlJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NvbnRlbnRPdmVyZmxvd2luZyhjb250ZW50U3BhbkVsUmVmOiBFbGVtZW50UmVmPEhUTUxTcGFuRWxlbWVudD4pIHtcbiAgICBjb25zdCBzY3JvbGxXaWR0aCA9IGNvbnRlbnRTcGFuRWxSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aDtcbiAgICBjb25zdCBvZmZzZXRXaWR0aCA9IGNvbnRlbnRTcGFuRWxSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICByZXR1cm4gb2Zmc2V0V2lkdGggPCBzY3JvbGxXaWR0aDtcbiAgfVxufVxuIiwiPHNwYW5cbiAgI2NvbnRlbnRFbFxuICBbY2xhc3Muc2hvd01vcmVdPVwiaXNTaG93aW5nTW9yZSQgfCBhc3luY1wiXG4gIGNsYXNzPVwiY29udGVudCB0cnVuY2F0ZSBseC1tYXJnaW4tcmlnaHRcIlxuICBbaW5uZXJIdG1sXT1cInNhbml0aXplZENvbnRlbnQkIHwgYXN5bmNcIlxuPjwvc3Bhbj5cbjxidXR0b24gKm5nSWY9XCJzaG93QnV0dG9uJCB8IGFzeW5jXCIgKGNsaWNrKT1cIm9uU2hvd01vcmVUb2dnbGUoKVwiIGx4LWJ1dHRvbiAjc2hvd01vcmVCdXR0b24gc2l6ZT1cImF1dG9cIiBtb2RlPVwibGlua1wiIGNvbG9yPVwicHJpbWFyeVwiPlxuICB7eyBzaG93TW9yZUJ1dHRvbkxhYmVsJCB8IGFzeW5jIH19XG48L2J1dHRvbj5cbiJdfQ==
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzaXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvY29yZS11aS9jb21wb25lbnRzL2VsbGlwc2lzL2VsbGlwc2lzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy9lbGxpcHNpcy9lbGxpcHNpcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEdBQUcsRUFDSCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxjQUFjLEVBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBRTdELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUFTLGdDQUFnQyxFQUFFO0lBQ3pHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9B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QUFhLENBQUMsV0FBVyxDQUFDO1FBQy9ELE9BQU8sV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNuQyxDQUFDOzhHQXpKVSxpQkFBaUIsa0JBMkJsQiw4QkFBOEI7a0dBM0I3QixpQkFBaUIsK1VBYVMsVUFBVSw2QkNoRWpELDJXQVNBLG1WRHdDWSxJQUFJLDZGQUFFLGVBQWUsa0tBQUUsU0FBUzs7QUFZUjtJQUFqQyxPQUFPLENBQUMsZUFBZSxDQUFDO3lEQUFrRTtBQUV0RDtJQUFwQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7NERBQXVFO0FBVTNGO0lBRFAsT0FBTyxDQUFDLFNBQVMsQ0FBQzttREFDbUI7MkZBdEIzQixpQkFBaUI7a0JBUjdCLFNBQVM7K0JBQ0UsYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsU0FBUyxDQUFDOzswQkE2QnhDLE1BQU07MkJBQUMsOEJBQThCO3FLQXhCL0IsT0FBTztzQkFBZixLQUFLO2dCQUtHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFNEIsY0FBYyxNQUN4QixhQUFhO3NCQUFwQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ2UsaUJBQWlCLE1BQ0gsZ0JBQWdCO3NCQUFsRSxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFTekMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBlc2NhcGUgfSBmcm9tICdsb2Rhc2gvZnAnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBjb25jYXQsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgcGFpcndpc2UsXG4gIHNraXAsXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG4gIHdpdGhMYXRlc3RGcm9tXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvb2JzZXJ2ZSc7XG5pbXBvcnQgeyBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXNpemUtb2JzZXJ2ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBMWF9FTExJUFNJU19ERUJPVU5DRV9PTl9SRVNJWkUgPSBuZXcgSW5qZWN0aW9uVG9rZW48bnVtYmVyPignTFhfRUxMSVBTSVNfREVCT1VOQ0VfT05fUkVTSVpFJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IEVsbGlwc2lzQ29tcG9uZW50LkRFRkFVTFRfUkVTSVpFX0RFQk9VTkNFX01TXG59KTtcblxuLyoqXG4gKiBZb3UgY2FuIHNldCBhIGN1c3RvbSBtYXgtd2lkdGggQ1NTIHByb3BlcnR5IG9uIHlvdXIgbHgtZWxsaXBzaXMgaG9zdCBlbGVtZW50XG4gKiBpZiB5b3Ugd2FudCBpdHMgY29udGVudCB0byBuZXZlciBleGNlZWQgYSBzcGVjaWZpYyB3aWR0aCxcbiAqIGUuZy4gPGx4LWVsbGlwc2lzIHN0eWxlPVwibWF4LXdpZHRoOiAzMDBweFwiIGNvbnRlbnQ9XCJIZWxsbyBXb3JsZFsuLl1cIj48L2x4LWVsbGlwc2lzPi5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtZWxsaXBzaXMnLFxuICB0ZW1wbGF0ZVVybDogJ2VsbGlwc2lzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbYGVsbGlwc2lzLmNvbXBvbmVudC5zY3NzYF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgQnV0dG9uQ29tcG9uZW50LCBBc3luY1BpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEVsbGlwc2lzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0aWMgREVGQVVMVF9SRVNJWkVfREVCT1VOQ0VfTVMgPSA1MDA7XG5cbiAgQElucHV0KCkgY29udGVudDogc3RyaW5nID0gJyc7XG4gIC8qKlxuICAgKiBPbmx5IHNldCB0aGlzIHRvIGZhbHNlIGlmIHRoZSBjb250ZW50IGlzIG5vdCBhIHVzZXIgcHJvdmlkZWQgc3RyaW5nXG4gICAqIG9yIGlmIHlvdSBzYW5pdGl6ZSB0aGUgcHJvdmlkZWQgY29udGVudCB5b3Vyc2VsZi5cbiAgICovXG4gIEBJbnB1dCgpIGVzY2FwZUh0bWxJbkNvbnRlbnQgPSB0cnVlO1xuXG4gIEBPYnNlcnZlKCdjb250ZW50U3BhbkVsJykgcHJpdmF0ZSBjb250ZW50U3BhbkVsJCE6IE9ic2VydmFibGU8RWxlbWVudFJlZjxIVE1MU3BhbkVsZW1lbnQ+PjtcbiAgQFZpZXdDaGlsZCgnY29udGVudEVsJykgY29udGVudFNwYW5FbCE6IEVsZW1lbnRSZWY8SFRNTFNwYW5FbGVtZW50PjtcbiAgQE9ic2VydmUoJ3Nob3dNb3JlQnV0dG9uRWwnKSBwcml2YXRlIHNob3dNb3JlQnV0dG9uRWwkITogT2JzZXJ2YWJsZTxFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50Pj47XG4gIEBWaWV3Q2hpbGQoJ3Nob3dNb3JlQnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHNob3dNb3JlQnV0dG9uRWwhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcblxuICBpc1Nob3dpbmdNb3JlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHNob3dCdXR0b24kITogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc2hvd01vcmVCdXR0b25MYWJlbCQhOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgc2FuaXRpemVkQ29udGVudCQhOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIEBPYnNlcnZlKCdjb250ZW50JylcbiAgcHJpdmF0ZSBjb250ZW50JCE6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTFhfRUxMSVBTSVNfREVCT1VOQ0VfT05fUkVTSVpFKVxuICAgIHByaXZhdGUgZGVib3VuY2VNc0FmdGVyUmVzaXplOiBudW1iZXIsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBob3N0RWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6IFJlc2l6ZU9ic2VydmVyU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2FuaXRpemVkQ29udGVudCQgPSB0aGlzLmNvbnRlbnQkLnBpcGUoXG4gICAgICBtYXAoKGNvbnRlbnQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZXNjYXBlSHRtbEluQ29udGVudCAmJiB0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gZXNjYXBlKGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zaG93TW9yZUJ1dHRvbkxhYmVsJCA9IHRoaXMuaXNTaG93aW5nTW9yZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoaXNTaG93aW5nTW9yZSkgPT4ge1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbktleSA9IGlzU2hvd2luZ01vcmUgPyAnY29tbW9uLnNob3dMZXNzJyA6ICdjb21tb24uc2hvd01vcmUnO1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0cmFuc2xhdGlvbktleSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgY29uc3QgbmV3V2lkdGhPblJlc2l6ZSQgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gICAgY29uc3QgbmV3SGVpZ2h0T25SZXNpemUkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUodGhpcy5ob3N0RWwubmF0aXZlRWxlbWVudCwgKHJlc2l6ZWRFbGVtZW50KSA9PiB7XG4gICAgICBuZXdXaWR0aE9uUmVzaXplJC5uZXh0KHJlc2l6ZWRFbGVtZW50LmNvbnRlbnRSZWN0LndpZHRoKTtcbiAgICAgIG5ld0hlaWdodE9uUmVzaXplJC5uZXh0KHJlc2l6ZWRFbGVtZW50LmNvbnRlbnRSZWN0LmhlaWdodCk7XG4gICAgfSk7XG4gICAgY29uc3QgY29udGFpbmVyV2lkdGhDaGFuZ2VkU2lnbmlmaWNhbnRseUFmdGVyUmVzaXplJCA9IG5ld1dpZHRoT25SZXNpemUkLnBpcGUoXG4gICAgICBzdGFydFdpdGgoMCksXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgZmlsdGVyKChbcHJldmlvdXNXaWR0aCwgbmV3V2lkdGhdKSA9PiBNYXRoLmFicyhuZXdXaWR0aCAtIHByZXZpb3VzV2lkdGgpID4gMSksXG4gICAgICBtYXAoKFssIG5ld1dpZHRoXSkgPT4gbmV3V2lkdGgpXG4gICAgKTtcbiAgICBjb25zdCB1c2VyVHJpZ2dlcmVkVHJpZ2dlcmVkU2hvd0xlc3MkID0gdGhpcy5pc1Nob3dpbmdNb3JlJC5waXBlKGZpbHRlcigoaXNTaG93aW5nTW9yZSkgPT4gIWlzU2hvd2luZ01vcmUpKTtcblxuICAgIGNvbnN0IHJlZXZhbHVhdGVJZkNvbnRlbnRJc092ZXJmbG93aW5nJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jb250ZW50U3BhbkVsJCxcbiAgICAgIHVzZXJUcmlnZ2VyZWRUcmlnZ2VyZWRTaG93TGVzcyQsXG4gICAgICBjb250YWluZXJXaWR0aENoYW5nZWRTaWduaWZpY2FudGx5QWZ0ZXJSZXNpemUkXG4gICAgXSk7XG5cbiAgICBjb25zdCBpc0NvbnRlbnRPdmVyZmxvd2luZyQgPSBtZXJnZShcbiAgICAgIGNvbmNhdChcbiAgICAgICAgcmVldmFsdWF0ZUlmQ29udGVudElzT3ZlcmZsb3dpbmckLnBpcGUodGFrZSgxKSksIC8vIGRlYm91bmNlIGFsbCBidXQgdGhlIGZpcnN0IG91dHB1dFxuICAgICAgICByZWV2YWx1YXRlSWZDb250ZW50SXNPdmVyZmxvd2luZyQucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZU1zQWZ0ZXJSZXNpemUpKVxuICAgICAgKSxcbiAgICAgIHRoaXMuY29udGVudCQucGlwZShza2lwKDEpKSAvLyBpbW1lZGlhdGVseSByZWV2YWx1YXRlIG9uIHN1YnNlcXVlbnQgY29udGVudCBjaGFuZ2VzXG4gICAgKS5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5jb250ZW50U3BhbkVsJCksXG4gICAgICBtYXAoKFssIGNvbnRlbnRTcGFuUmVmXSkgPT4gdGhpcy5pc0NvbnRlbnRPdmVyZmxvd2luZyhjb250ZW50U3BhblJlZikpXG4gICAgKTtcblxuICAgIGNvbnN0IHVzZXJUcmlnZ2VyZWRUcmlnZ2VyZWRTaG93TW9yZSQgPSB0aGlzLmlzU2hvd2luZ01vcmUkLnBpcGUoZmlsdGVyKChpc1Nob3dpbmdNb3JlKSA9PiBpc1Nob3dpbmdNb3JlKSk7XG5cbiAgICBjb25zdCBidXR0b25IZWlnaHQkID0gdGhpcy5zaG93TW9yZUJ1dHRvbkVsJC5waXBlKFxuICAgICAgZmlsdGVyKChzaG93TW9yZUJ1dHRvbkVsKSA9PiAhIXNob3dNb3JlQnV0dG9uRWwpLFxuICAgICAgbWFwKChzaG93TW9yZUJ1dHRvbkVsKSA9PiBzaG93TW9yZUJ1dHRvbkVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuICAgIGNvbnN0IHVzZXJJbmNyZWFzZWRCcm93c2VyV2luZG93U2l6ZVRvVGhlUG9pbnRPZk5vVHJ1bmNhdGlvbk5lY2Vzc2FyeSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIGJ1dHRvbkhlaWdodCQsXG4gICAgICBuZXdIZWlnaHRPblJlc2l6ZSQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgIF0pLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlzU2hvd2luZ01vcmUkKSxcbiAgICAgIGZpbHRlcigoWywgaXNTaG93aW5nTW9yZV0pID0+IGlzU2hvd2luZ01vcmUpLFxuICAgICAgbWFwKChbW2J1dHRvbkhlaWdodCwgbmV3SGVpZ2h0XV0pID0+IHtcbiAgICAgICAgY29uc3QgaGVpZ2h0T2ZPbmVMaW5lID0gYnV0dG9uSGVpZ2h0O1xuICAgICAgICBjb25zdCBzaG93TGVzc0J1dHRvbk1hcmdpblRvcCA9IDQ7XG4gICAgICAgIGNvbnN0IGhlaWdodE9mU3BhbkluU2hvd01vcmVNb2RlID0gbmV3SGVpZ2h0IC0gYnV0dG9uSGVpZ2h0IC0gc2hvd0xlc3NCdXR0b25NYXJnaW5Ub3A7XG4gICAgICAgIGNvbnN0IHRocmVzaG9sZFRvRGV0ZWN0Q29udGVudEluU2luZ2xlTGluZSA9IDQ7XG4gICAgICAgIGNvbnN0IGRpZmZlcmVuY2VCZXR3ZWVuQ29udGVudFNwYW5BbmRCdXR0b25IZWlnaHQgPSBNYXRoLmFicyhoZWlnaHRPZk9uZUxpbmUgLSBoZWlnaHRPZlNwYW5JblNob3dNb3JlTW9kZSk7XG4gICAgICAgIGNvbnN0IGlzU3BhbkNvbnRlbnREaXNwbGF5ZWRJbk9uZUxpbmVBZ2FpbiA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29udGVudFNwYW5BbmRCdXR0b25IZWlnaHQgPCB0aHJlc2hvbGRUb0RldGVjdENvbnRlbnRJblNpbmdsZUxpbmU7XG4gICAgICAgIHJldHVybiBpc1NwYW5Db250ZW50RGlzcGxheWVkSW5PbmVMaW5lQWdhaW47XG4gICAgICB9KVxuICAgICk7XG4gICAgY29uc3QgY29udGVudEZpdHNJbk9uZUxpbmVBZ2FpbldoaWxlU2hvd01vcmVJc0VuYWJsZWQkID0gdXNlckluY3JlYXNlZEJyb3dzZXJXaW5kb3dTaXplVG9UaGVQb2ludE9mTm9UcnVuY2F0aW9uTmVjZXNzYXJ5JC5waXBlKFxuICAgICAgc3RhcnRXaXRoKGZhbHNlKSxcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBmaWx0ZXIoKFtwcmV2aW91c1RleHRJc05vd0luT25lTGluZUFnYWluXSkgPT4gIXByZXZpb3VzVGV4dElzTm93SW5PbmVMaW5lQWdhaW4pLFxuICAgICAgbWFwKChbLCB0ZXh0SXNOb3dJbk9uZUxpbmVBZ2Fpbl0pID0+ICF0ZXh0SXNOb3dJbk9uZUxpbmVBZ2FpbilcbiAgICApO1xuICAgIGNvbnN0IGNvbnRlbnRJc092ZXJmbG93aW5nQW5kU2hvd01vcmVJc05vdEVuYWJsZWQkID0gaXNDb250ZW50T3ZlcmZsb3dpbmckLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlzU2hvd2luZ01vcmUkKSxcbiAgICAgIGZpbHRlcigoWywgaXNTaG93aW5nTW9yZV0pID0+ICFpc1Nob3dpbmdNb3JlKSxcbiAgICAgIG1hcCgoW2lzQ29udGVudExvbmdlclRoYW5Db250YWluZXJXaWR0aF0pID0+IHtcbiAgICAgICAgcmV0dXJuIGlzQ29udGVudExvbmdlclRoYW5Db250YWluZXJXaWR0aDtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnNob3dCdXR0b24kID0gbWVyZ2UoXG4gICAgICB1c2VyVHJpZ2dlcmVkVHJpZ2dlcmVkU2hvd01vcmUkLFxuICAgICAgY29udGVudEZpdHNJbk9uZUxpbmVBZ2FpbldoaWxlU2hvd01vcmVJc0VuYWJsZWQkLFxuICAgICAgY29udGVudElzT3ZlcmZsb3dpbmdBbmRTaG93TW9yZUlzTm90RW5hYmxlZCRcbiAgICApO1xuXG4gICAgLy8gQXMgbG9uZyBhcyBubyBwYXJlbnQgY29tcG9uZW50IGlzIGxpc3RlbmluZyBvbiByZXNpemUgZXZlbnRzLFxuICAgIC8vIHRoZSBDaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSBjYWxsIGRvbmUgYnkgdGhlIGFzeW5jIHBpcGVcbiAgICAvLyB3aWxsIG5vdCByZXN1bHQgaW4gYSBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIGluIHRoaXMgY29tcG9uZW50IHdoZW4gaXRzIHNpemUgY2hhbmdlcy5cbiAgICAvLyBUaGlzIGlzIHRoZSBsZWFzdCBhbW91bnQgb2YgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpIGNhbGxzXG4gICAgLy8gSSB3YXMgYWJsZSB0byBjb21lIHVwIHdpdGguIFRoZSBBbmd1bGFyIHByb2ZpbGVyIHNob3dzIGFjY2VwdGFibGUgbnVtYmVycyBvZiBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlc1doZW5PYnNlcnZhYmxlRW1pdHMoaXNDb250ZW50T3ZlcmZsb3dpbmckKTtcbiAgICB0aGlzLmRldGVjdENoYW5nZXNXaGVuT2JzZXJ2YWJsZUVtaXRzKHRoaXMuc2hvd0J1dHRvbiQpO1xuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlc1doZW5PYnNlcnZhYmxlRW1pdHModGhpcy5jb250ZW50JCk7XG4gICAgdGhpcy5kZXRlY3RDaGFuZ2VzV2hlbk9ic2VydmFibGVFbWl0cyhjb250ZW50SXNPdmVyZmxvd2luZ0FuZFNob3dNb3JlSXNOb3RFbmFibGVkJCk7XG4gICAgdGhpcy5kZXRlY3RDaGFuZ2VzV2hlbk9ic2VydmFibGVFbWl0cyhpc0NvbnRlbnRPdmVyZmxvd2luZyQpO1xuICB9XG5cbiAgb25TaG93TW9yZVRvZ2dsZSgpIHtcbiAgICB0aGlzLmlzU2hvd2luZ01vcmUkLm5leHQoIXRoaXMuaXNTaG93aW5nTW9yZSQuZ2V0VmFsdWUoKSk7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS51bm9ic2VydmUodGhpcy5ob3N0RWwubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIGRldGVjdENoYW5nZXNXaGVuT2JzZXJ2YWJsZUVtaXRzKG9ic2VydmFibGUkOiBPYnNlcnZhYmxlPGFueT4pIHtcbiAgICBvYnNlcnZhYmxlJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NvbnRlbnRPdmVyZmxvd2luZyhjb250ZW50U3BhbkVsUmVmOiBFbGVtZW50UmVmPEhUTUxTcGFuRWxlbWVudD4pIHtcbiAgICBjb25zdCBzY3JvbGxXaWR0aCA9IGNvbnRlbnRTcGFuRWxSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aDtcbiAgICBjb25zdCBvZmZzZXRXaWR0aCA9IGNvbnRlbnRTcGFuRWxSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICByZXR1cm4gb2Zmc2V0V2lkdGggPCBzY3JvbGxXaWR0aDtcbiAgfVxufVxuIiwiPHNwYW5cbiAgI2NvbnRlbnRFbFxuICBbY2xhc3Muc2hvd01vcmVdPVwiaXNTaG93aW5nTW9yZSQgfCBhc3luY1wiXG4gIGNsYXNzPVwiY29udGVudCB0cnVuY2F0ZSBseC1tYXJnaW4tcmlnaHRcIlxuICBbaW5uZXJIdG1sXT1cInNhbml0aXplZENvbnRlbnQkIHwgYXN5bmNcIlxuPjwvc3Bhbj5cbjxidXR0b24gKm5nSWY9XCJzaG93QnV0dG9uJCB8IGFzeW5jXCIgKGNsaWNrKT1cIm9uU2hvd01vcmVUb2dnbGUoKVwiIGx4LWJ1dHRvbiAjc2hvd01vcmVCdXR0b24gc2l6ZT1cImF1dG9cIiBtb2RlPVwibGlua1wiIGNvbG9yPVwicHJpbWFyeVwiPlxuICB7eyBzaG93TW9yZUJ1dHRvbkxhYmVsJCB8IGFzeW5jIH19XG48L2J1dHRvbj5cbiJdfQ==
|
@@ -8,11 +8,28 @@ import Color from 'color';
|
|
8
8
|
*/
|
9
9
|
export function getContrastColor(colorHex) {
|
10
10
|
try {
|
11
|
-
|
12
|
-
|
13
|
-
const
|
14
|
-
const
|
15
|
-
|
11
|
+
colorHex = colorHex || '#000';
|
12
|
+
const backgroundColor = Color(colorHex);
|
13
|
+
const foregroundColor = Color(backgroundColor.isDark() ? '#FFFFFF' : '#000000');
|
14
|
+
const backgroundColorLuminance = backgroundColor.luminosity();
|
15
|
+
const foregroundColorLuminance = foregroundColor.luminosity();
|
16
|
+
/**
|
17
|
+
* Use the contrast ratio formula to determine the most eligible text color for the given background color.
|
18
|
+
* It is possible tha the background color is dark based on the RGB value, but has opacity, which makes it light.
|
19
|
+
* In such cases, the luminance value is used to determine the color. The solution is based on the following article:
|
20
|
+
* https://dev.to/alvaromontoro/building-your-own-color-contrast-checker-4j7o
|
21
|
+
*/
|
22
|
+
const contrastRatio = backgroundColorLuminance > foregroundColorLuminance
|
23
|
+
? (foregroundColorLuminance + 0.05) / (backgroundColorLuminance + 0.05)
|
24
|
+
: (backgroundColorLuminance + 0.05) / (foregroundColorLuminance + 0.05);
|
25
|
+
/**
|
26
|
+
* Check contrast ratio for WCAG 2.0 level AA compliance level for small text. If the
|
27
|
+
* contrast ratio is less than 1 / 4.5, return the inverted foreground color.
|
28
|
+
*/
|
29
|
+
if (contrastRatio >= 1 / 4.5) {
|
30
|
+
return foregroundColor.negate().hex();
|
31
|
+
}
|
32
|
+
return foregroundColor.hex();
|
16
33
|
}
|
17
34
|
catch {
|
18
35
|
return '#FFFFFF';
|
@@ -32,4 +49,4 @@ export function shorthandHexHandle(hex) {
|
|
32
49
|
export function isValidHexColor(color) {
|
33
50
|
return /^#[0-9A-F]{6}$/i.test(color);
|
34
51
|
}
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jc3MuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvZnVuY3Rpb25zL2NvcmUtY3NzLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRTFCOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUFpQjtJQUNoRCxJQUFJO1FBQ0YsUUFBUSxHQUFHLFFBQVEsSUFBSSxNQUFNLENBQUM7UUFFOUIsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFaEYsTUFBTSx3QkFBd0IsR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUQsTUFBTSx3QkFBd0IsR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFOUQ7Ozs7O1dBS0c7UUFDSCxNQUFNLGFBQWEsR0FDakIsd0JBQXdCLEdBQUcsd0JBQXdCO1lBQ2pELENBQUMsQ0FBQyxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1lBQ3ZFLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFNUU7OztXQUdHO1FBQ0gsSUFBSSxhQUFhLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRTtZQUM1QixPQUFPLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUN2QztRQUVELE9BQU8sZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDO0tBQzlCO0lBQUMsTUFBTTtRQUNOLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxHQUFXO0lBQzVDLE1BQU0sY0FBYyxHQUFHLG1DQUFtQyxDQUFDO0lBQzNELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUMsSUFBSSxTQUFTLEVBQUU7UUFDYixNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFFLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0gsT0FBTyxZQUFZLENBQUM7S0FDckI7U0FBTTtRQUNMLE9BQU8sR0FBRyxDQUFDO0tBQ1o7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFhO0lBQzNDLE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29sb3IgZnJvbSAnY29sb3InO1xuXG4vKipcbiAqIENvbXB1dGUgdGhlIG1vc3QgZWxpZ2libGUgdGV4dCBjb2xvciBmb3IgYSBnaXZlbiBiYWNrZ3JvdW5kIGNvbG9yIChibGFjayBvciB3aGl0ZSksIGRlcGVuZGluZyBvbiB0aGUgbHVtaW5hbmNlIG9mIHRoZVxuICogYmFja2dyb3VuZCBjb2xvci4gSW4gY2FzZSB0aGUgcHJvdmlkZWQgY29sb3IgaXMgdW5kZWZpbmVkIG9yIGludmFsaWQsIHdoaXRlICgjRkZGRkZGKSBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gY29sb3JIZXggQ29sb3Igc3RyaW5nIGluIGhleGFkZWNpbWFsIGVuY29kaW5nLlxuICogQHJldHVybnMgRXF1aXZhbGVudCBjb250cmFzdCBjb2xvciBpbiBoZXhhZGVjaW1hbCBlbmNvZGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRyYXN0Q29sb3IoY29sb3JIZXg/OiBzdHJpbmcpOiBzdHJpbmcge1xuICB0cnkge1xuICAgIGNvbG9ySGV4ID0gY29sb3JIZXggfHwgJyMwMDAnO1xuXG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gQ29sb3IoY29sb3JIZXgpO1xuICAgIGNvbnN0IGZvcmVncm91bmRDb2xvciA9IENvbG9yKGJhY2tncm91bmRDb2xvci5pc0RhcmsoKSA/ICcjRkZGRkZGJyA6ICcjMDAwMDAwJyk7XG5cbiAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3JMdW1pbmFuY2UgPSBiYWNrZ3JvdW5kQ29sb3IubHVtaW5vc2l0eSgpO1xuICAgIGNvbnN0IGZvcmVncm91bmRDb2xvckx1bWluYW5jZSA9IGZvcmVncm91bmRDb2xvci5sdW1pbm9zaXR5KCk7XG5cbiAgICAvKipcbiAgICAgKiBVc2UgdGhlIGNvbnRyYXN0IHJhdGlvIGZvcm11bGEgdG8gZGV0ZXJtaW5lIHRoZSBtb3N0IGVsaWdpYmxlIHRleHQgY29sb3IgZm9yIHRoZSBnaXZlbiBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgICAqIEl0IGlzIHBvc3NpYmxlIHRoYSB0aGUgYmFja2dyb3VuZCBjb2xvciBpcyBkYXJrIGJhc2VkIG9uIHRoZSBSR0IgdmFsdWUsIGJ1dCBoYXMgb3BhY2l0eSwgd2hpY2ggbWFrZXMgaXQgbGlnaHQuXG4gICAgICogSW4gc3VjaCBjYXNlcywgdGhlIGx1bWluYW5jZSB2YWx1ZSBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgY29sb3IuIFRoZSBzb2x1dGlvbiBpcyBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIGFydGljbGU6XG4gICAgICogaHR0cHM6Ly9kZXYudG8vYWx2YXJvbW9udG9yby9idWlsZGluZy15b3VyLW93bi1jb2xvci1jb250cmFzdC1jaGVja2VyLTRqN29cbiAgICAgKi9cbiAgICBjb25zdCBjb250cmFzdFJhdGlvID1cbiAgICAgIGJhY2tncm91bmRDb2xvckx1bWluYW5jZSA+IGZvcmVncm91bmRDb2xvckx1bWluYW5jZVxuICAgICAgICA/IChmb3JlZ3JvdW5kQ29sb3JMdW1pbmFuY2UgKyAwLjA1KSAvIChiYWNrZ3JvdW5kQ29sb3JMdW1pbmFuY2UgKyAwLjA1KVxuICAgICAgICA6IChiYWNrZ3JvdW5kQ29sb3JMdW1pbmFuY2UgKyAwLjA1KSAvIChmb3JlZ3JvdW5kQ29sb3JMdW1pbmFuY2UgKyAwLjA1KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrIGNvbnRyYXN0IHJhdGlvIGZvciBXQ0FHIDIuMCBsZXZlbCBBQSBjb21wbGlhbmNlIGxldmVsIGZvciBzbWFsbCB0ZXh0LiBJZiB0aGVcbiAgICAgKiBjb250cmFzdCByYXRpbyBpcyBsZXNzIHRoYW4gMSAvIDQuNSwgcmV0dXJuIHRoZSBpbnZlcnRlZCBmb3JlZ3JvdW5kIGNvbG9yLlxuICAgICAqL1xuICAgIGlmIChjb250cmFzdFJhdGlvID49IDEgLyA0LjUpIHtcbiAgICAgIHJldHVybiBmb3JlZ3JvdW5kQ29sb3IubmVnYXRlKCkuaGV4KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcmVncm91bmRDb2xvci5oZXgoKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuICcjRkZGRkZGJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvcnRoYW5kSGV4SGFuZGxlKGhleDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc2hvcnRoYW5kUmVnZXggPSAvXigjKShbYS1mXFxkXSkoW2EtZlxcZF0pKFthLWZcXGRdKSQvaTtcbiAgY29uc3Qgc2hvcnRoYW5kID0gaGV4Lm1hdGNoKHNob3J0aGFuZFJlZ2V4KTtcbiAgaWYgKHNob3J0aGFuZCkge1xuICAgIGNvbnN0IGNvbnZlcnRlZEhleCA9IHNob3J0aGFuZFsxXSEgKyBzaG9ydGhhbmRbMl0gKyBzaG9ydGhhbmRbMl0gKyBzaG9ydGhhbmRbM10gKyBzaG9ydGhhbmRbM10gKyBzaG9ydGhhbmRbNF0gKyBzaG9ydGhhbmRbNF07XG4gICAgcmV0dXJuIGNvbnZlcnRlZEhleDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaGV4O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkSGV4Q29sb3IoY29sb3I6IHN0cmluZykge1xuICByZXR1cm4gL14jWzAtOUEtRl17Nn0kL2kudGVzdChjb2xvcik7XG59XG4iXX0=
|
@@ -768,7 +768,7 @@ class EllipsisComponent {
|
|
768
768
|
return offsetWidth < scrollWidth;
|
769
769
|
}
|
770
770
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: EllipsisComponent, deps: [{ token: LX_ELLIPSIS_DEBOUNCE_ON_RESIZE }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: ResizeObserverService }, { token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
771
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: EllipsisComponent, isStandalone: true, selector: "lx-ellipsis", inputs: { content: "content", escapeHtmlInContent: "escapeHtmlInContent" }, viewQueries: [{ propertyName: "contentSpanEl", first: true, predicate: ["contentEl"], descendants: true }, { propertyName: "showMoreButtonEl", first: true, predicate: ["showMoreButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<span\n #contentEl\n [class.showMore]=\"isShowingMore$ | async\"\n class=\"content truncate lx-margin-right\"\n [innerHtml]=\"sanitizedContent$ | async\"\n></span>\n<button *ngIf=\"showButton$ | async\" (click)=\"onShowMoreToggle()\" lx-button #showMoreButton size=\"auto\" mode=\"link\" color=\"primary\">\n {{ showMoreButtonLabel$ | async }}\n</button>\n", styles: [":host{display:block}.content{display:inline-block;word-break:break-word}.
|
771
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: EllipsisComponent, isStandalone: true, selector: "lx-ellipsis", inputs: { content: "content", escapeHtmlInContent: "escapeHtmlInContent" }, viewQueries: [{ propertyName: "contentSpanEl", first: true, predicate: ["contentEl"], descendants: true }, { propertyName: "showMoreButtonEl", first: true, predicate: ["showMoreButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<span\n #contentEl\n [class.showMore]=\"isShowingMore$ | async\"\n class=\"content truncate lx-margin-right\"\n [innerHtml]=\"sanitizedContent$ | async\"\n></span>\n<button *ngIf=\"showButton$ | async\" (click)=\"onShowMoreToggle()\" lx-button #showMoreButton size=\"auto\" mode=\"link\" color=\"primary\">\n {{ showMoreButtonLabel$ | async }}\n</button>\n", styles: [":host{display:block}.content{display:inline-block;word-break:break-word}.truncate:not(.showMore){width:calc(100% - 140px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.content.showMore+button{margin-top:4px;display:block}button{white-space:nowrap;vertical-align:top}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "button[lx-button]", inputs: ["size", "color", "mode", "pressed", "selected", "square", "circle", "disabled", "showSpinner"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
772
772
|
}
|
773
773
|
__decorate([
|
774
774
|
Observe('contentSpanEl')
|
@@ -781,7 +781,7 @@ __decorate([
|
|
781
781
|
], EllipsisComponent.prototype, "content$", void 0);
|
782
782
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: EllipsisComponent, decorators: [{
|
783
783
|
type: Component,
|
784
|
-
args: [{ selector: 'lx-ellipsis', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, ButtonComponent, AsyncPipe], template: "<span\n #contentEl\n [class.showMore]=\"isShowingMore$ | async\"\n class=\"content truncate lx-margin-right\"\n [innerHtml]=\"sanitizedContent$ | async\"\n></span>\n<button *ngIf=\"showButton$ | async\" (click)=\"onShowMoreToggle()\" lx-button #showMoreButton size=\"auto\" mode=\"link\" color=\"primary\">\n {{ showMoreButtonLabel$ | async }}\n</button>\n", styles: [":host{display:block}.content{display:inline-block;word-break:break-word}.
|
784
|
+
args: [{ selector: 'lx-ellipsis', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, ButtonComponent, AsyncPipe], template: "<span\n #contentEl\n [class.showMore]=\"isShowingMore$ | async\"\n class=\"content truncate lx-margin-right\"\n [innerHtml]=\"sanitizedContent$ | async\"\n></span>\n<button *ngIf=\"showButton$ | async\" (click)=\"onShowMoreToggle()\" lx-button #showMoreButton size=\"auto\" mode=\"link\" color=\"primary\">\n {{ showMoreButtonLabel$ | async }}\n</button>\n", styles: [":host{display:block}.content{display:inline-block;word-break:break-word}.truncate:not(.showMore){width:calc(100% - 140px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.content.showMore+button{margin-top:4px;display:block}button{white-space:nowrap;vertical-align:top}\n"] }]
|
785
785
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
786
786
|
type: Inject,
|
787
787
|
args: [LX_ELLIPSIS_DEBOUNCE_ON_RESIZE]
|
@@ -1411,11 +1411,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
1411
1411
|
*/
|
1412
1412
|
function getContrastColor(colorHex) {
|
1413
1413
|
try {
|
1414
|
-
|
1415
|
-
|
1416
|
-
const
|
1417
|
-
const
|
1418
|
-
|
1414
|
+
colorHex = colorHex || '#000';
|
1415
|
+
const backgroundColor = Color(colorHex);
|
1416
|
+
const foregroundColor = Color(backgroundColor.isDark() ? '#FFFFFF' : '#000000');
|
1417
|
+
const backgroundColorLuminance = backgroundColor.luminosity();
|
1418
|
+
const foregroundColorLuminance = foregroundColor.luminosity();
|
1419
|
+
/**
|
1420
|
+
* Use the contrast ratio formula to determine the most eligible text color for the given background color.
|
1421
|
+
* It is possible tha the background color is dark based on the RGB value, but has opacity, which makes it light.
|
1422
|
+
* In such cases, the luminance value is used to determine the color. The solution is based on the following article:
|
1423
|
+
* https://dev.to/alvaromontoro/building-your-own-color-contrast-checker-4j7o
|
1424
|
+
*/
|
1425
|
+
const contrastRatio = backgroundColorLuminance > foregroundColorLuminance
|
1426
|
+
? (foregroundColorLuminance + 0.05) / (backgroundColorLuminance + 0.05)
|
1427
|
+
: (backgroundColorLuminance + 0.05) / (foregroundColorLuminance + 0.05);
|
1428
|
+
/**
|
1429
|
+
* Check contrast ratio for WCAG 2.0 level AA compliance level for small text. If the
|
1430
|
+
* contrast ratio is less than 1 / 4.5, return the inverted foreground color.
|
1431
|
+
*/
|
1432
|
+
if (contrastRatio >= 1 / 4.5) {
|
1433
|
+
return foregroundColor.negate().hex();
|
1434
|
+
}
|
1435
|
+
return foregroundColor.hex();
|
1419
1436
|
}
|
1420
1437
|
catch {
|
1421
1438
|
return '#FFFFFF';
|