@libs-ui/components-skeleton 0.2.306-4 → 0.2.306-6

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.
package/esm2022/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
1
  export * from './skeleton.component';
2
2
  export * from './interfaces';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvc2tlbGV0b24vc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxjQUFjLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NrZWxldG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMnIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvc2tlbGV0b24vc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NrZWxldG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMnO1xuIl19
@@ -1,2 +1,2 @@
1
1
  export * from './skeleton-item.interface';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvc2tlbGV0b24vc3JjL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2tlbGV0b24taXRlbS5pbnRlcmZhY2UnOyJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvc2tlbGV0b24vc3JjL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2tlbGV0b24taXRlbS5pbnRlcmZhY2UnO1xuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24taXRlbS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvc2tlbGV0b24vc3JjL2ludGVyZmFjZXMvc2tlbGV0b24taXRlbS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSVNrZWxldG9uQ29uZmlnIHtcbiAgcmVwZWF0PzogbnVtYmVyO1xuICBoZWlnaHRDb250YWluZXI/OiBudW1iZXI7XG4gIGNsYXNzUm93cz86IHN0cmluZztcbiAgc3R5bGVNYXJnaW5Cb3R0b20/OiBudW1iZXI7XG4gIHJvd3M/OiBBcnJheTx7XG4gICAgcmVwZWF0PzogbnVtYmVyO1xuICAgIGNsYXNzUm93Pzogc3RyaW5nO1xuICAgIGNsYXNzUm93TGFzdD86IHN0cmluZztcbiAgICBpdGVtPzogSVNrZWxldG9uSXRlbTtcbiAgICBjbGFzc0NvbHM/OiBzdHJpbmc7XG4gICAgY2xhc3NDb2xzTGFzdD86IHN0cmluZztcbiAgICBjb2xzPzogQXJyYXk8e1xuICAgICAgcmVwZWF0PzogbnVtYmVyO1xuICAgICAgY2xhc3NDb2w/OiBzdHJpbmc7XG4gICAgICBjbGFzc0NvbExhc3Q/OiBzdHJpbmc7XG4gICAgICBpdGVtPzogSVNrZWxldG9uSXRlbTtcbiAgICB9PjtcbiAgfT47XG59XG5cbmludGVyZmFjZSBJU2tlbGV0b25JdGVtIHtcbiAgY2xhc3NJbmNsdWRlSXRlbT86IHN0cmluZztcbiAgY2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICBjbGFzcz86IHN0cmluZztcbiAgc3R5bGVEZWZhdWx0PzogYm9vbGVhbjtcbn0iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24taXRlbS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvc2tlbGV0b24vc3JjL2ludGVyZmFjZXMvc2tlbGV0b24taXRlbS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSVNrZWxldG9uQ29uZmlnIHtcbiAgcmVwZWF0PzogbnVtYmVyO1xuICBoZWlnaHRDb250YWluZXI/OiBudW1iZXI7XG4gIGNsYXNzUm93cz86IHN0cmluZztcbiAgc3R5bGVNYXJnaW5Cb3R0b20/OiBudW1iZXI7XG4gIHJvd3M/OiBBcnJheTx7XG4gICAgcmVwZWF0PzogbnVtYmVyO1xuICAgIGNsYXNzUm93Pzogc3RyaW5nO1xuICAgIGNsYXNzUm93TGFzdD86IHN0cmluZztcbiAgICBpdGVtPzogSVNrZWxldG9uSXRlbTtcbiAgICBjbGFzc0NvbHM/OiBzdHJpbmc7XG4gICAgY2xhc3NDb2xzTGFzdD86IHN0cmluZztcbiAgICBjb2xzPzogQXJyYXk8e1xuICAgICAgcmVwZWF0PzogbnVtYmVyO1xuICAgICAgY2xhc3NDb2w/OiBzdHJpbmc7XG4gICAgICBjbGFzc0NvbExhc3Q/OiBzdHJpbmc7XG4gICAgICBpdGVtPzogSVNrZWxldG9uSXRlbTtcbiAgICB9PjtcbiAgfT47XG59XG5cbmludGVyZmFjZSBJU2tlbGV0b25JdGVtIHtcbiAgY2xhc3NJbmNsdWRlSXRlbT86IHN0cmluZztcbiAgY2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICBjbGFzcz86IHN0cmluZztcbiAgc3R5bGVEZWZhdWx0PzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -1,13 +1,13 @@
1
- import { NgTemplateOutlet } from "@angular/common";
2
- import { ChangeDetectionStrategy, Component, input, signal, viewChild } from "@angular/core";
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, input, signal, viewChild } from '@angular/core';
3
3
  import * as i0 from "@angular/core";
4
4
  export class LibsUiComponentsSkeletonComponent {
5
5
  configRender = signal({});
6
- config = input({}, { transform: value => value || {} });
6
+ config = input({}, { transform: (value) => value || {} });
7
7
  skeletonRef = viewChild.required('skeletonRef');
8
8
  ngAfterViewInit() {
9
9
  setTimeout(() => {
10
- this.configRender.update(config => {
10
+ this.configRender.update((config) => {
11
11
  config = this.config();
12
12
  let offsetHeight = this.skeletonRef().nativeElement.offsetHeight;
13
13
  if (!config.rows?.length) {
@@ -18,18 +18,18 @@ export class LibsUiComponentsSkeletonComponent {
18
18
  }
19
19
  if (config.repeat) {
20
20
  offsetHeight = offsetHeight || config.heightContainer || config.styleMarginBottom || 0;
21
- config.heightContainer = (offsetHeight / config.repeat) - (config.styleMarginBottom || 0);
21
+ config.heightContainer = offsetHeight / config.repeat - (config.styleMarginBottom || 0);
22
22
  }
23
- config.repeat = Math.ceil((offsetHeight / ((config.heightContainer || 0) + (config.styleMarginBottom || 0))));
23
+ config.repeat = Math.ceil(offsetHeight / ((config.heightContainer || 0) + (config.styleMarginBottom || 0)));
24
24
  return { ...config };
25
25
  });
26
26
  });
27
27
  }
28
28
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsSkeletonComponent, isStandalone: true, selector: "libs_ui-components-skeleton", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "skeletonRef", first: true, predicate: ["skeletonRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #skeletonRef\n class=\"w-full h-full\">\n @if (configRender(); as config) {\n @for (configRepeat of [].constructor(config.repeat || 1);track $index;let lastItem = $last) {\n <div [style.marginBottom.px]=\"(config.styleMarginBottom && !lastItem) ? config.styleMarginBottom:0\"\n [style.height]=\"config.heightContainer ? (config.heightContainer+'px') : '100%'\"\n [class]=\"(config.classRows || '')+' flex flex-col'\">\n @for (row of config.rows;track $index;) {\n @for (rowRepeat of [].constructor(row.repeat || 1);track $index;let firstRow = $first;let lastRow = $last) {\n <div\n [class]=\"((lastRow || (firstRow && lastRow) ? row.classRowLast : row.classRow) || '')+ ' flex flex-col w-full h-full'\">\n @if (row.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config :row.item }\" />\n }\n <div [class]=\"((lastRow || firstRow && lastRow ? row.classColsLast : row.classCols) || '')+'flex w-full'\">\n @for (col of row.cols;track $index;) {\n @for (colRepeat of [].constructor(col.repeat || 1);track $index;let firstCol = $first;let lastCol = $last) {\n <div\n [class]=\"((lastCol || firstCol && lastCol ? col.classColLast : col.classCol) || '')+ ' flex w-full'\">\n @if (col.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config :col.item }\" />\n }\n </div>\n }\n }\n </div>\n </div>\n }}\n </div>\n }\n }\n</div>\n\n<ng-template #templateSkeleton\n let-config=\"config\">\n <div [class]=\"config?.classInclude || 'w-full h-full' \">\n @for (_ of [].constructor(config.repeat || 1);track $index; let last = $last) {\n <div class=\"w-full h-full skeleton rounded-[8px] {{ config?.classIncludeItem || '' }}\"\n [class.mb-[16px]]=\"config?.styleDefault && !last\">\n </div>\n }\n </div>\n</ng-template>\n", styles: ["@keyframes mo-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.skeleton{animation:mo-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,#bebebe33 25%,#8181813d 37%,#bebebe33 63%);background-size:400% 100%}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
29
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsSkeletonComponent, isStandalone: true, selector: "libs_ui-components-skeleton", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "skeletonRef", first: true, predicate: ["skeletonRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n #skeletonRef\n class=\"w-full h-full\">\n @if (configRender(); as config) {\n @for (configRepeat of [].constructor(config.repeat || 1); track $index; let lastItem = $last) {\n <div\n [style.marginBottom.px]=\"config.styleMarginBottom && !lastItem ? config.styleMarginBottom : 0\"\n [style.height]=\"config.heightContainer ? config.heightContainer + 'px' : '100%'\"\n [class]=\"(config.classRows || '') + ' flex flex-col'\">\n @for (row of config.rows; track $index) {\n @for (rowRepeat of [].constructor(row.repeat || 1); track $index; let firstRow = $first; let lastRow = $last) {\n <div [class]=\"((lastRow || (firstRow && lastRow) ? row.classRowLast : row.classRow) || '') + ' flex flex-col w-full h-full'\">\n @if (row.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config: row.item }\" />\n }\n <div [class]=\"((lastRow || (firstRow && lastRow) ? row.classColsLast : row.classCols) || '') + 'flex w-full'\">\n @for (col of row.cols; track $index) {\n @for (colRepeat of [].constructor(col.repeat || 1); track $index; let firstCol = $first; let lastCol = $last) {\n <div [class]=\"((lastCol || (firstCol && lastCol) ? col.classColLast : col.classCol) || '') + ' flex w-full'\">\n @if (col.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config: col.item }\" />\n }\n </div>\n }\n }\n </div>\n </div>\n }\n }\n </div>\n }\n }\n</div>\n\n<ng-template\n #templateSkeleton\n let-config=\"config\">\n <div [class]=\"config?.classInclude || 'w-full h-full'\">\n @for (_ of [].constructor(config.repeat || 1); track $index; let last = $last) {\n <div\n class=\"w-full h-full skeleton rounded-[8px] {{ config?.classIncludeItem || '' }}\"\n [class.mb-[16px]]=\"config?.styleDefault && !last\"></div>\n }\n </div>\n</ng-template>\n", styles: ["@keyframes mo-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.skeleton{animation:mo-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,#bebebe33 25%,#8181813d 37%,#bebebe33 63%);background-size:400% 100%}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
30
30
  }
31
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsSkeletonComponent, decorators: [{
32
32
  type: Component,
33
- args: [{ selector: 'libs_ui-components-skeleton', standalone: true, imports: [NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #skeletonRef\n class=\"w-full h-full\">\n @if (configRender(); as config) {\n @for (configRepeat of [].constructor(config.repeat || 1);track $index;let lastItem = $last) {\n <div [style.marginBottom.px]=\"(config.styleMarginBottom && !lastItem) ? config.styleMarginBottom:0\"\n [style.height]=\"config.heightContainer ? (config.heightContainer+'px') : '100%'\"\n [class]=\"(config.classRows || '')+' flex flex-col'\">\n @for (row of config.rows;track $index;) {\n @for (rowRepeat of [].constructor(row.repeat || 1);track $index;let firstRow = $first;let lastRow = $last) {\n <div\n [class]=\"((lastRow || (firstRow && lastRow) ? row.classRowLast : row.classRow) || '')+ ' flex flex-col w-full h-full'\">\n @if (row.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config :row.item }\" />\n }\n <div [class]=\"((lastRow || firstRow && lastRow ? row.classColsLast : row.classCols) || '')+'flex w-full'\">\n @for (col of row.cols;track $index;) {\n @for (colRepeat of [].constructor(col.repeat || 1);track $index;let firstCol = $first;let lastCol = $last) {\n <div\n [class]=\"((lastCol || firstCol && lastCol ? col.classColLast : col.classCol) || '')+ ' flex w-full'\">\n @if (col.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config :col.item }\" />\n }\n </div>\n }\n }\n </div>\n </div>\n }}\n </div>\n }\n }\n</div>\n\n<ng-template #templateSkeleton\n let-config=\"config\">\n <div [class]=\"config?.classInclude || 'w-full h-full' \">\n @for (_ of [].constructor(config.repeat || 1);track $index; let last = $last) {\n <div class=\"w-full h-full skeleton rounded-[8px] {{ config?.classIncludeItem || '' }}\"\n [class.mb-[16px]]=\"config?.styleDefault && !last\">\n </div>\n }\n </div>\n</ng-template>\n", styles: ["@keyframes mo-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.skeleton{animation:mo-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,#bebebe33 25%,#8181813d 37%,#bebebe33 63%);background-size:400% 100%}\n"] }]
33
+ args: [{ selector: 'libs_ui-components-skeleton', standalone: true, imports: [NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #skeletonRef\n class=\"w-full h-full\">\n @if (configRender(); as config) {\n @for (configRepeat of [].constructor(config.repeat || 1); track $index; let lastItem = $last) {\n <div\n [style.marginBottom.px]=\"config.styleMarginBottom && !lastItem ? config.styleMarginBottom : 0\"\n [style.height]=\"config.heightContainer ? config.heightContainer + 'px' : '100%'\"\n [class]=\"(config.classRows || '') + ' flex flex-col'\">\n @for (row of config.rows; track $index) {\n @for (rowRepeat of [].constructor(row.repeat || 1); track $index; let firstRow = $first; let lastRow = $last) {\n <div [class]=\"((lastRow || (firstRow && lastRow) ? row.classRowLast : row.classRow) || '') + ' flex flex-col w-full h-full'\">\n @if (row.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config: row.item }\" />\n }\n <div [class]=\"((lastRow || (firstRow && lastRow) ? row.classColsLast : row.classCols) || '') + 'flex w-full'\">\n @for (col of row.cols; track $index) {\n @for (colRepeat of [].constructor(col.repeat || 1); track $index; let firstCol = $first; let lastCol = $last) {\n <div [class]=\"((lastCol || (firstCol && lastCol) ? col.classColLast : col.classCol) || '') + ' flex w-full'\">\n @if (col.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config: col.item }\" />\n }\n </div>\n }\n }\n </div>\n </div>\n }\n }\n </div>\n }\n }\n</div>\n\n<ng-template\n #templateSkeleton\n let-config=\"config\">\n <div [class]=\"config?.classInclude || 'w-full h-full'\">\n @for (_ of [].constructor(config.repeat || 1); track $index; let last = $last) {\n <div\n class=\"w-full h-full skeleton rounded-[8px] {{ config?.classIncludeItem || '' }}\"\n [class.mb-[16px]]=\"config?.styleDefault && !last\"></div>\n }\n </div>\n</ng-template>\n", styles: ["@keyframes mo-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.skeleton{animation:mo-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,#bebebe33 25%,#8181813d 37%,#bebebe33 63%);background-size:400% 100%}\n"] }]
34
34
  }] });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3NrZWxldG9uL3NyYy9za2VsZXRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvc2tlbGV0b24vc3JjL3NrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVl4SCxNQUFNLE9BQU8saUNBQWlDO0lBQ2xDLFlBQVksR0FBRyxNQUFNLENBQWtCLEVBQUUsQ0FBQyxDQUFBO0lBRTNDLE1BQU0sR0FBRyxLQUFLLENBQStDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRXRHLFdBQVcsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFhLGFBQWEsQ0FBQyxDQUFDO0lBRXJFLGVBQWU7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2hDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO2dCQUNqRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDekIsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQy9CLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxDQUFDLGVBQWUsR0FBRyxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzFFLENBQUM7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2xCLFlBQVksR0FBRyxZQUFZLElBQUksTUFBTSxDQUFDLGVBQWUsSUFBSSxNQUFNLENBQUMsaUJBQWlCLElBQUksQ0FBQyxDQUFDO29CQUN2RixNQUFNLENBQUMsZUFBZSxHQUFHLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDNUYsQ0FBQztnQkFDRCxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRTlHLE9BQU8sRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQTNCVSxpQ0FBaUM7NEZBQWpDLGlDQUFpQywwVkNiOUMseWxFQTJDQSwwVERqQ1ksZ0JBQWdCOzs0RkFHZixpQ0FBaUM7a0JBVDdDLFNBQVM7K0JBRUUsNkJBQTZCLGNBRzNCLElBQUksV0FDUCxDQUFDLGdCQUFnQixDQUFDLG1CQUNWLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5wdXQsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElTa2VsZXRvbkNvbmZpZyB9IGZyb20gXCIuL2ludGVyZmFjZXMvc2tlbGV0b24taXRlbS5pbnRlcmZhY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLXNrZWxldG9uJyxcbiAgdGVtcGxhdGVVcmw6ICdza2VsZXRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NrZWxldG9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c1NrZWxldG9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3RlY3RlZCBjb25maWdSZW5kZXIgPSBzaWduYWw8SVNrZWxldG9uQ29uZmlnPih7fSlcblxuICByZWFkb25seSBjb25maWcgPSBpbnB1dDxJU2tlbGV0b25Db25maWcsIElTa2VsZXRvbkNvbmZpZyB8IHVuZGVmaW5lZD4oe30sIHsgdHJhbnNmb3JtOiB2YWx1ZSA9PiB2YWx1ZSB8fCB7fSB9KTtcblxuICByZWFkb25seSBza2VsZXRvblJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPignc2tlbGV0b25SZWYnKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbmZpZ1JlbmRlci51cGRhdGUoY29uZmlnID0+IHtcbiAgICAgICAgY29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICAgICAgbGV0IG9mZnNldEhlaWdodCA9IHRoaXMuc2tlbGV0b25SZWYoKS5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgaWYgKCFjb25maWcucm93cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uZmlnLnJvd3MgPSBbeyBpdGVtOiB7fSB9XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNvbmZpZy5oZWlnaHRDb250YWluZXIpIHtcbiAgICAgICAgICBjb25maWcuaGVpZ2h0Q29udGFpbmVyID0gb2Zmc2V0SGVpZ2h0IC0gKGNvbmZpZy5zdHlsZU1hcmdpbkJvdHRvbSB8fCAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnLnJlcGVhdCkge1xuICAgICAgICAgIG9mZnNldEhlaWdodCA9IG9mZnNldEhlaWdodCB8fCBjb25maWcuaGVpZ2h0Q29udGFpbmVyIHx8IGNvbmZpZy5zdHlsZU1hcmdpbkJvdHRvbSB8fCAwO1xuICAgICAgICAgIGNvbmZpZy5oZWlnaHRDb250YWluZXIgPSAob2Zmc2V0SGVpZ2h0IC8gY29uZmlnLnJlcGVhdCkgLSAoY29uZmlnLnN0eWxlTWFyZ2luQm90dG9tIHx8IDApO1xuICAgICAgICB9XG4gICAgICAgIGNvbmZpZy5yZXBlYXQgPSBNYXRoLmNlaWwoKG9mZnNldEhlaWdodCAvICgoY29uZmlnLmhlaWdodENvbnRhaW5lciB8fCAwKSArIChjb25maWcuc3R5bGVNYXJnaW5Cb3R0b20gfHwgMCkpKSk7XG5cbiAgICAgICAgcmV0dXJuIHsgLi4uY29uZmlnIH07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSIsIjxkaXYgI3NrZWxldG9uUmVmXG4gIGNsYXNzPVwidy1mdWxsIGgtZnVsbFwiPlxuICBAaWYgKGNvbmZpZ1JlbmRlcigpOyBhcyBjb25maWcpIHtcbiAgICBAZm9yIChjb25maWdSZXBlYXQgb2YgW10uY29uc3RydWN0b3IoY29uZmlnLnJlcGVhdCB8fCAxKTt0cmFjayAkaW5kZXg7bGV0IGxhc3RJdGVtID0gJGxhc3QpIHtcbiAgICAgIDxkaXYgW3N0eWxlLm1hcmdpbkJvdHRvbS5weF09XCIoY29uZmlnLnN0eWxlTWFyZ2luQm90dG9tICYmICFsYXN0SXRlbSkgPyBjb25maWcuc3R5bGVNYXJnaW5Cb3R0b206MFwiXG4gICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiY29uZmlnLmhlaWdodENvbnRhaW5lciA/IChjb25maWcuaGVpZ2h0Q29udGFpbmVyKydweCcpIDogJzEwMCUnXCJcbiAgICAgICAgW2NsYXNzXT1cIihjb25maWcuY2xhc3NSb3dzIHx8ICcnKSsnIGZsZXggZmxleC1jb2wnXCI+XG4gICAgICAgIEBmb3IgKHJvdyBvZiBjb25maWcucm93czt0cmFjayAkaW5kZXg7KSB7XG4gICAgICAgICAgQGZvciAocm93UmVwZWF0IG9mIFtdLmNvbnN0cnVjdG9yKHJvdy5yZXBlYXQgfHwgMSk7dHJhY2sgJGluZGV4O2xldCBmaXJzdFJvdyA9ICRmaXJzdDtsZXQgbGFzdFJvdyA9ICRsYXN0KSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIFtjbGFzc109XCIoKGxhc3RSb3cgfHwgKGZpcnN0Um93ICYmIGxhc3RSb3cpID8gcm93LmNsYXNzUm93TGFzdCA6IHJvdy5jbGFzc1JvdykgfHwgJycpKyAnIGZsZXggZmxleC1jb2wgdy1mdWxsIGgtZnVsbCdcIj5cbiAgICAgICAgICAgICAgQGlmIChyb3cuaXRlbSkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZVNrZWxldG9uOyBjb250ZXh0OiB7IGNvbmZpZyA6cm93Lml0ZW0gfVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiKChsYXN0Um93IHx8IGZpcnN0Um93ICYmIGxhc3RSb3cgPyByb3cuY2xhc3NDb2xzTGFzdCA6IHJvdy5jbGFzc0NvbHMpIHx8ICcnKSsnZmxleCB3LWZ1bGwnXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoY29sIG9mIHJvdy5jb2xzO3RyYWNrICRpbmRleDspIHtcbiAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbFJlcGVhdCBvZiBbXS5jb25zdHJ1Y3Rvcihjb2wucmVwZWF0IHx8IDEpO3RyYWNrICRpbmRleDtsZXQgZmlyc3RDb2wgPSAkZmlyc3Q7bGV0IGxhc3RDb2wgPSAkbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIigobGFzdENvbCB8fCBmaXJzdENvbCAmJiBsYXN0Q29sID8gY29sLmNsYXNzQ29sTGFzdCA6IGNvbC5jbGFzc0NvbCkgfHwgJycpKyAnIGZsZXggdy1mdWxsJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sLml0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZVNrZWxldG9uOyBjb250ZXh0OiB7IGNvbmZpZyA6Y29sLml0ZW0gfVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfX1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgfVxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVTa2VsZXRvblxuICBsZXQtY29uZmlnPVwiY29uZmlnXCI+XG4gIDxkaXYgW2NsYXNzXT1cImNvbmZpZz8uY2xhc3NJbmNsdWRlIHx8ICd3LWZ1bGwgaC1mdWxsJyBcIj5cbiAgICBAZm9yIChfIG9mIFtdLmNvbnN0cnVjdG9yKGNvbmZpZy5yZXBlYXQgfHwgMSk7dHJhY2sgJGluZGV4OyBsZXQgbGFzdCA9ICRsYXN0KSB7XG4gICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGgtZnVsbCBza2VsZXRvbiByb3VuZGVkLVs4cHhdIHt7IGNvbmZpZz8uY2xhc3NJbmNsdWRlSXRlbSB8fCAnJyB9fVwiXG4gICAgICAgIFtjbGFzcy5tYi1bMTZweF1dPVwiY29uZmlnPy5zdHlsZURlZmF1bHQgJiYgIWxhc3RcIj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3NrZWxldG9uL3NyYy9za2VsZXRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvc2tlbGV0b24vc3JjL3NrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVl4SCxNQUFNLE9BQU8saUNBQWlDO0lBQ2xDLFlBQVksR0FBRyxNQUFNLENBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBRTVDLE1BQU0sR0FBRyxLQUFLLENBQStDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFeEcsV0FBVyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQWEsYUFBYSxDQUFDLENBQUM7SUFFckUsZUFBZTtRQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNsQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN2QixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztnQkFDakUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7b0JBQ3pCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMvQixDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQzVCLE1BQU0sQ0FBQyxlQUFlLEdBQUcsWUFBWSxHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUMxRSxDQUFDO2dCQUNELElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNsQixZQUFZLEdBQUcsWUFBWSxJQUFJLE1BQU0sQ0FBQyxlQUFlLElBQUksTUFBTSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQztvQkFDdkYsTUFBTSxDQUFDLGVBQWUsR0FBRyxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDMUYsQ0FBQztnQkFDRCxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFNUcsT0FBTyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBM0JVLGlDQUFpQzs0RkFBakMsaUNBQWlDLDBWQ2I5QywrbEVBNkNBLDBURG5DWSxnQkFBZ0I7OzRGQUdmLGlDQUFpQztrQkFUN0MsU0FBUzsrQkFFRSw2QkFBNkIsY0FHM0IsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLENBQUMsbUJBQ1YsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5wdXQsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJU2tlbGV0b25Db25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvc2tlbGV0b24taXRlbS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtc2tlbGV0b24nLFxuICB0ZW1wbGF0ZVVybDogJ3NrZWxldG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2tlbGV0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c1NrZWxldG9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3RlY3RlZCBjb25maWdSZW5kZXIgPSBzaWduYWw8SVNrZWxldG9uQ29uZmlnPih7fSk7XG5cbiAgcmVhZG9ubHkgY29uZmlnID0gaW5wdXQ8SVNrZWxldG9uQ29uZmlnLCBJU2tlbGV0b25Db25maWcgfCB1bmRlZmluZWQ+KHt9LCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSB8fCB7fSB9KTtcblxuICByZWFkb25seSBza2VsZXRvblJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPignc2tlbGV0b25SZWYnKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbmZpZ1JlbmRlci51cGRhdGUoKGNvbmZpZykgPT4ge1xuICAgICAgICBjb25maWcgPSB0aGlzLmNvbmZpZygpO1xuICAgICAgICBsZXQgb2Zmc2V0SGVpZ2h0ID0gdGhpcy5za2VsZXRvblJlZigpLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBpZiAoIWNvbmZpZy5yb3dzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25maWcucm93cyA9IFt7IGl0ZW06IHt9IH1dO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY29uZmlnLmhlaWdodENvbnRhaW5lcikge1xuICAgICAgICAgIGNvbmZpZy5oZWlnaHRDb250YWluZXIgPSBvZmZzZXRIZWlnaHQgLSAoY29uZmlnLnN0eWxlTWFyZ2luQm90dG9tIHx8IDApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcucmVwZWF0KSB7XG4gICAgICAgICAgb2Zmc2V0SGVpZ2h0ID0gb2Zmc2V0SGVpZ2h0IHx8IGNvbmZpZy5oZWlnaHRDb250YWluZXIgfHwgY29uZmlnLnN0eWxlTWFyZ2luQm90dG9tIHx8IDA7XG4gICAgICAgICAgY29uZmlnLmhlaWdodENvbnRhaW5lciA9IG9mZnNldEhlaWdodCAvIGNvbmZpZy5yZXBlYXQgLSAoY29uZmlnLnN0eWxlTWFyZ2luQm90dG9tIHx8IDApO1xuICAgICAgICB9XG4gICAgICAgIGNvbmZpZy5yZXBlYXQgPSBNYXRoLmNlaWwob2Zmc2V0SGVpZ2h0IC8gKChjb25maWcuaGVpZ2h0Q29udGFpbmVyIHx8IDApICsgKGNvbmZpZy5zdHlsZU1hcmdpbkJvdHRvbSB8fCAwKSkpO1xuXG4gICAgICAgIHJldHVybiB7IC4uLmNvbmZpZyB9O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgI3NrZWxldG9uUmVmXG4gIGNsYXNzPVwidy1mdWxsIGgtZnVsbFwiPlxuICBAaWYgKGNvbmZpZ1JlbmRlcigpOyBhcyBjb25maWcpIHtcbiAgICBAZm9yIChjb25maWdSZXBlYXQgb2YgW10uY29uc3RydWN0b3IoY29uZmlnLnJlcGVhdCB8fCAxKTsgdHJhY2sgJGluZGV4OyBsZXQgbGFzdEl0ZW0gPSAkbGFzdCkge1xuICAgICAgPGRpdlxuICAgICAgICBbc3R5bGUubWFyZ2luQm90dG9tLnB4XT1cImNvbmZpZy5zdHlsZU1hcmdpbkJvdHRvbSAmJiAhbGFzdEl0ZW0gPyBjb25maWcuc3R5bGVNYXJnaW5Cb3R0b20gOiAwXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJjb25maWcuaGVpZ2h0Q29udGFpbmVyID8gY29uZmlnLmhlaWdodENvbnRhaW5lciArICdweCcgOiAnMTAwJSdcIlxuICAgICAgICBbY2xhc3NdPVwiKGNvbmZpZy5jbGFzc1Jvd3MgfHwgJycpICsgJyBmbGV4IGZsZXgtY29sJ1wiPlxuICAgICAgICBAZm9yIChyb3cgb2YgY29uZmlnLnJvd3M7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgIEBmb3IgKHJvd1JlcGVhdCBvZiBbXS5jb25zdHJ1Y3Rvcihyb3cucmVwZWF0IHx8IDEpOyB0cmFjayAkaW5kZXg7IGxldCBmaXJzdFJvdyA9ICRmaXJzdDsgbGV0IGxhc3RSb3cgPSAkbGFzdCkge1xuICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiKChsYXN0Um93IHx8IChmaXJzdFJvdyAmJiBsYXN0Um93KSA/IHJvdy5jbGFzc1Jvd0xhc3QgOiByb3cuY2xhc3NSb3cpIHx8ICcnKSArICcgZmxleCBmbGV4LWNvbCB3LWZ1bGwgaC1mdWxsJ1wiPlxuICAgICAgICAgICAgICBAaWYgKHJvdy5pdGVtKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlU2tlbGV0b247IGNvbnRleHQ6IHsgY29uZmlnOiByb3cuaXRlbSB9XCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCIoKGxhc3RSb3cgfHwgKGZpcnN0Um93ICYmIGxhc3RSb3cpID8gcm93LmNsYXNzQ29sc0xhc3QgOiByb3cuY2xhc3NDb2xzKSB8fCAnJykgKyAnZmxleCB3LWZ1bGwnXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoY29sIG9mIHJvdy5jb2xzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbFJlcGVhdCBvZiBbXS5jb25zdHJ1Y3Rvcihjb2wucmVwZWF0IHx8IDEpOyB0cmFjayAkaW5kZXg7IGxldCBmaXJzdENvbCA9ICRmaXJzdDsgbGV0IGxhc3RDb2wgPSAkbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCIoKGxhc3RDb2wgfHwgKGZpcnN0Q29sICYmIGxhc3RDb2wpID8gY29sLmNsYXNzQ29sTGFzdCA6IGNvbC5jbGFzc0NvbCkgfHwgJycpICsgJyBmbGV4IHctZnVsbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbC5pdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVTa2VsZXRvbjsgY29udGV4dDogeyBjb25maWc6IGNvbC5pdGVtIH1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICB9XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlXG4gICN0ZW1wbGF0ZVNrZWxldG9uXG4gIGxldC1jb25maWc9XCJjb25maWdcIj5cbiAgPGRpdiBbY2xhc3NdPVwiY29uZmlnPy5jbGFzc0luY2x1ZGUgfHwgJ3ctZnVsbCBoLWZ1bGwnXCI+XG4gICAgQGZvciAoXyBvZiBbXS5jb25zdHJ1Y3Rvcihjb25maWcucmVwZWF0IHx8IDEpOyB0cmFjayAkaW5kZXg7IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIHNrZWxldG9uIHJvdW5kZWQtWzhweF0ge3sgY29uZmlnPy5jbGFzc0luY2x1ZGVJdGVtIHx8ICcnIH19XCJcbiAgICAgICAgW2NsYXNzLm1iLVsxNnB4XV09XCJjb25maWc/LnN0eWxlRGVmYXVsdCAmJiAhbGFzdFwiPjwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -4,11 +4,11 @@ import { signal, input, viewChild, ChangeDetectionStrategy, Component } from '@a
4
4
 
5
5
  class LibsUiComponentsSkeletonComponent {
6
6
  configRender = signal({});
7
- config = input({}, { transform: value => value || {} });
7
+ config = input({}, { transform: (value) => value || {} });
8
8
  skeletonRef = viewChild.required('skeletonRef');
9
9
  ngAfterViewInit() {
10
10
  setTimeout(() => {
11
- this.configRender.update(config => {
11
+ this.configRender.update((config) => {
12
12
  config = this.config();
13
13
  let offsetHeight = this.skeletonRef().nativeElement.offsetHeight;
14
14
  if (!config.rows?.length) {
@@ -19,19 +19,19 @@ class LibsUiComponentsSkeletonComponent {
19
19
  }
20
20
  if (config.repeat) {
21
21
  offsetHeight = offsetHeight || config.heightContainer || config.styleMarginBottom || 0;
22
- config.heightContainer = (offsetHeight / config.repeat) - (config.styleMarginBottom || 0);
22
+ config.heightContainer = offsetHeight / config.repeat - (config.styleMarginBottom || 0);
23
23
  }
24
- config.repeat = Math.ceil((offsetHeight / ((config.heightContainer || 0) + (config.styleMarginBottom || 0))));
24
+ config.repeat = Math.ceil(offsetHeight / ((config.heightContainer || 0) + (config.styleMarginBottom || 0)));
25
25
  return { ...config };
26
26
  });
27
27
  });
28
28
  }
29
29
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsSkeletonComponent, isStandalone: true, selector: "libs_ui-components-skeleton", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "skeletonRef", first: true, predicate: ["skeletonRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #skeletonRef\n class=\"w-full h-full\">\n @if (configRender(); as config) {\n @for (configRepeat of [].constructor(config.repeat || 1);track $index;let lastItem = $last) {\n <div [style.marginBottom.px]=\"(config.styleMarginBottom && !lastItem) ? config.styleMarginBottom:0\"\n [style.height]=\"config.heightContainer ? (config.heightContainer+'px') : '100%'\"\n [class]=\"(config.classRows || '')+' flex flex-col'\">\n @for (row of config.rows;track $index;) {\n @for (rowRepeat of [].constructor(row.repeat || 1);track $index;let firstRow = $first;let lastRow = $last) {\n <div\n [class]=\"((lastRow || (firstRow && lastRow) ? row.classRowLast : row.classRow) || '')+ ' flex flex-col w-full h-full'\">\n @if (row.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config :row.item }\" />\n }\n <div [class]=\"((lastRow || firstRow && lastRow ? row.classColsLast : row.classCols) || '')+'flex w-full'\">\n @for (col of row.cols;track $index;) {\n @for (colRepeat of [].constructor(col.repeat || 1);track $index;let firstCol = $first;let lastCol = $last) {\n <div\n [class]=\"((lastCol || firstCol && lastCol ? col.classColLast : col.classCol) || '')+ ' flex w-full'\">\n @if (col.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config :col.item }\" />\n }\n </div>\n }\n }\n </div>\n </div>\n }}\n </div>\n }\n }\n</div>\n\n<ng-template #templateSkeleton\n let-config=\"config\">\n <div [class]=\"config?.classInclude || 'w-full h-full' \">\n @for (_ of [].constructor(config.repeat || 1);track $index; let last = $last) {\n <div class=\"w-full h-full skeleton rounded-[8px] {{ config?.classIncludeItem || '' }}\"\n [class.mb-[16px]]=\"config?.styleDefault && !last\">\n </div>\n }\n </div>\n</ng-template>\n", styles: ["@keyframes mo-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.skeleton{animation:mo-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,#bebebe33 25%,#8181813d 37%,#bebebe33 63%);background-size:400% 100%}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
30
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsSkeletonComponent, isStandalone: true, selector: "libs_ui-components-skeleton", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "skeletonRef", first: true, predicate: ["skeletonRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n #skeletonRef\n class=\"w-full h-full\">\n @if (configRender(); as config) {\n @for (configRepeat of [].constructor(config.repeat || 1); track $index; let lastItem = $last) {\n <div\n [style.marginBottom.px]=\"config.styleMarginBottom && !lastItem ? config.styleMarginBottom : 0\"\n [style.height]=\"config.heightContainer ? config.heightContainer + 'px' : '100%'\"\n [class]=\"(config.classRows || '') + ' flex flex-col'\">\n @for (row of config.rows; track $index) {\n @for (rowRepeat of [].constructor(row.repeat || 1); track $index; let firstRow = $first; let lastRow = $last) {\n <div [class]=\"((lastRow || (firstRow && lastRow) ? row.classRowLast : row.classRow) || '') + ' flex flex-col w-full h-full'\">\n @if (row.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config: row.item }\" />\n }\n <div [class]=\"((lastRow || (firstRow && lastRow) ? row.classColsLast : row.classCols) || '') + 'flex w-full'\">\n @for (col of row.cols; track $index) {\n @for (colRepeat of [].constructor(col.repeat || 1); track $index; let firstCol = $first; let lastCol = $last) {\n <div [class]=\"((lastCol || (firstCol && lastCol) ? col.classColLast : col.classCol) || '') + ' flex w-full'\">\n @if (col.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config: col.item }\" />\n }\n </div>\n }\n }\n </div>\n </div>\n }\n }\n </div>\n }\n }\n</div>\n\n<ng-template\n #templateSkeleton\n let-config=\"config\">\n <div [class]=\"config?.classInclude || 'w-full h-full'\">\n @for (_ of [].constructor(config.repeat || 1); track $index; let last = $last) {\n <div\n class=\"w-full h-full skeleton rounded-[8px] {{ config?.classIncludeItem || '' }}\"\n [class.mb-[16px]]=\"config?.styleDefault && !last\"></div>\n }\n </div>\n</ng-template>\n", styles: ["@keyframes mo-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.skeleton{animation:mo-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,#bebebe33 25%,#8181813d 37%,#bebebe33 63%);background-size:400% 100%}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
31
31
  }
32
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsSkeletonComponent, decorators: [{
33
33
  type: Component,
34
- args: [{ selector: 'libs_ui-components-skeleton', standalone: true, imports: [NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #skeletonRef\n class=\"w-full h-full\">\n @if (configRender(); as config) {\n @for (configRepeat of [].constructor(config.repeat || 1);track $index;let lastItem = $last) {\n <div [style.marginBottom.px]=\"(config.styleMarginBottom && !lastItem) ? config.styleMarginBottom:0\"\n [style.height]=\"config.heightContainer ? (config.heightContainer+'px') : '100%'\"\n [class]=\"(config.classRows || '')+' flex flex-col'\">\n @for (row of config.rows;track $index;) {\n @for (rowRepeat of [].constructor(row.repeat || 1);track $index;let firstRow = $first;let lastRow = $last) {\n <div\n [class]=\"((lastRow || (firstRow && lastRow) ? row.classRowLast : row.classRow) || '')+ ' flex flex-col w-full h-full'\">\n @if (row.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config :row.item }\" />\n }\n <div [class]=\"((lastRow || firstRow && lastRow ? row.classColsLast : row.classCols) || '')+'flex w-full'\">\n @for (col of row.cols;track $index;) {\n @for (colRepeat of [].constructor(col.repeat || 1);track $index;let firstCol = $first;let lastCol = $last) {\n <div\n [class]=\"((lastCol || firstCol && lastCol ? col.classColLast : col.classCol) || '')+ ' flex w-full'\">\n @if (col.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config :col.item }\" />\n }\n </div>\n }\n }\n </div>\n </div>\n }}\n </div>\n }\n }\n</div>\n\n<ng-template #templateSkeleton\n let-config=\"config\">\n <div [class]=\"config?.classInclude || 'w-full h-full' \">\n @for (_ of [].constructor(config.repeat || 1);track $index; let last = $last) {\n <div class=\"w-full h-full skeleton rounded-[8px] {{ config?.classIncludeItem || '' }}\"\n [class.mb-[16px]]=\"config?.styleDefault && !last\">\n </div>\n }\n </div>\n</ng-template>\n", styles: ["@keyframes mo-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.skeleton{animation:mo-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,#bebebe33 25%,#8181813d 37%,#bebebe33 63%);background-size:400% 100%}\n"] }]
34
+ args: [{ selector: 'libs_ui-components-skeleton', standalone: true, imports: [NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #skeletonRef\n class=\"w-full h-full\">\n @if (configRender(); as config) {\n @for (configRepeat of [].constructor(config.repeat || 1); track $index; let lastItem = $last) {\n <div\n [style.marginBottom.px]=\"config.styleMarginBottom && !lastItem ? config.styleMarginBottom : 0\"\n [style.height]=\"config.heightContainer ? config.heightContainer + 'px' : '100%'\"\n [class]=\"(config.classRows || '') + ' flex flex-col'\">\n @for (row of config.rows; track $index) {\n @for (rowRepeat of [].constructor(row.repeat || 1); track $index; let firstRow = $first; let lastRow = $last) {\n <div [class]=\"((lastRow || (firstRow && lastRow) ? row.classRowLast : row.classRow) || '') + ' flex flex-col w-full h-full'\">\n @if (row.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config: row.item }\" />\n }\n <div [class]=\"((lastRow || (firstRow && lastRow) ? row.classColsLast : row.classCols) || '') + 'flex w-full'\">\n @for (col of row.cols; track $index) {\n @for (colRepeat of [].constructor(col.repeat || 1); track $index; let firstCol = $first; let lastCol = $last) {\n <div [class]=\"((lastCol || (firstCol && lastCol) ? col.classColLast : col.classCol) || '') + ' flex w-full'\">\n @if (col.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config: col.item }\" />\n }\n </div>\n }\n }\n </div>\n </div>\n }\n }\n </div>\n }\n }\n</div>\n\n<ng-template\n #templateSkeleton\n let-config=\"config\">\n <div [class]=\"config?.classInclude || 'w-full h-full'\">\n @for (_ of [].constructor(config.repeat || 1); track $index; let last = $last) {\n <div\n class=\"w-full h-full skeleton rounded-[8px] {{ config?.classIncludeItem || '' }}\"\n [class.mb-[16px]]=\"config?.styleDefault && !last\"></div>\n }\n </div>\n</ng-template>\n", styles: ["@keyframes mo-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.skeleton{animation:mo-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,#bebebe33 25%,#8181813d 37%,#bebebe33 63%);background-size:400% 100%}\n"] }]
35
35
  }] });
36
36
 
37
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-skeleton.mjs","sources":["../../../../../libs-ui/components/skeleton/src/skeleton.component.ts","../../../../../libs-ui/components/skeleton/src/skeleton.component.html","../../../../../libs-ui/components/skeleton/src/libs-ui-components-skeleton.ts"],"sourcesContent":["import { NgTemplateOutlet } from \"@angular/common\";\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, input, signal, viewChild } from \"@angular/core\";\nimport { ISkeletonConfig } from \"./interfaces/skeleton-item.interface\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-skeleton',\n templateUrl: 'skeleton.component.html',\n styleUrls: ['./skeleton.component.scss'],\n standalone: true,\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LibsUiComponentsSkeletonComponent implements AfterViewInit {\n protected configRender = signal<ISkeletonConfig>({})\n\n readonly config = input<ISkeletonConfig, ISkeletonConfig | undefined>({}, { transform: value => value || {} });\n\n readonly skeletonRef = viewChild.required<ElementRef>('skeletonRef');\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.configRender.update(config => {\n config = this.config();\n let offsetHeight = this.skeletonRef().nativeElement.offsetHeight;\n if (!config.rows?.length) {\n config.rows = [{ item: {} }];\n }\n if (!config.heightContainer) {\n config.heightContainer = offsetHeight - (config.styleMarginBottom || 0);\n }\n if (config.repeat) {\n offsetHeight = offsetHeight || config.heightContainer || config.styleMarginBottom || 0;\n config.heightContainer = (offsetHeight / config.repeat) - (config.styleMarginBottom || 0);\n }\n config.repeat = Math.ceil((offsetHeight / ((config.heightContainer || 0) + (config.styleMarginBottom || 0))));\n\n return { ...config };\n });\n });\n }\n}","<div #skeletonRef\n class=\"w-full h-full\">\n @if (configRender(); as config) {\n @for (configRepeat of [].constructor(config.repeat || 1);track $index;let lastItem = $last) {\n <div [style.marginBottom.px]=\"(config.styleMarginBottom && !lastItem) ? config.styleMarginBottom:0\"\n [style.height]=\"config.heightContainer ? (config.heightContainer+'px') : '100%'\"\n [class]=\"(config.classRows || '')+' flex flex-col'\">\n @for (row of config.rows;track $index;) {\n @for (rowRepeat of [].constructor(row.repeat || 1);track $index;let firstRow = $first;let lastRow = $last) {\n <div\n [class]=\"((lastRow || (firstRow && lastRow) ? row.classRowLast : row.classRow) || '')+ ' flex flex-col w-full h-full'\">\n @if (row.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config :row.item }\" />\n }\n <div [class]=\"((lastRow || firstRow && lastRow ? row.classColsLast : row.classCols) || '')+'flex w-full'\">\n @for (col of row.cols;track $index;) {\n @for (colRepeat of [].constructor(col.repeat || 1);track $index;let firstCol = $first;let lastCol = $last) {\n <div\n [class]=\"((lastCol || firstCol && lastCol ? col.classColLast : col.classCol) || '')+ ' flex w-full'\">\n @if (col.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config :col.item }\" />\n }\n </div>\n }\n }\n </div>\n </div>\n }}\n </div>\n }\n }\n</div>\n\n<ng-template #templateSkeleton\n let-config=\"config\">\n <div [class]=\"config?.classInclude || 'w-full h-full' \">\n @for (_ of [].constructor(config.repeat || 1);track $index; let last = $last) {\n <div class=\"w-full h-full skeleton rounded-[8px] {{ config?.classIncludeItem || '' }}\"\n [class.mb-[16px]]=\"config?.styleDefault && !last\">\n </div>\n }\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAaa,iCAAiC,CAAA;AAClC,IAAA,YAAY,GAAG,MAAM,CAAkB,EAAE,CAAC;AAE3C,IAAA,MAAM,GAAG,KAAK,CAA+C,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;AAErG,IAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAa,aAAa,CAAC;IAEpE,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,IAAG;AAChC,gBAAA,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;gBACtB,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,YAAY;AAChE,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;oBACxB,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;gBAC9B;AACA,gBAAA,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AAC3B,oBAAA,MAAM,CAAC,eAAe,GAAG,YAAY,IAAI,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC;gBACzE;AACA,gBAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,oBAAA,YAAY,GAAG,YAAY,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,iBAAiB,IAAI,CAAC;AACtF,oBAAA,MAAM,CAAC,eAAe,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC;gBAC3F;AACA,gBAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,KAAK,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,EAAE;AAE7G,gBAAA,OAAO,EAAE,GAAG,MAAM,EAAE;AACtB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;wGA3BW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb9C,ylEA2CA,EAAA,MAAA,EAAA,CAAA,kQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjCY,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGf,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAT7C,SAAS;+BAEE,6BAA6B,EAAA,UAAA,EAG3B,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,CAAC,EAAA,eAAA,EACV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ylEAAA,EAAA,MAAA,EAAA,CAAA,kQAAA,CAAA,EAAA;;;AEXjD;;AAEG;;;;"}
1
+ {"version":3,"file":"libs-ui-components-skeleton.mjs","sources":["../../../../../libs-ui/components/skeleton/src/skeleton.component.ts","../../../../../libs-ui/components/skeleton/src/skeleton.component.html","../../../../../libs-ui/components/skeleton/src/libs-ui-components-skeleton.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, input, signal, viewChild } from '@angular/core';\nimport { ISkeletonConfig } from './interfaces/skeleton-item.interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-skeleton',\n templateUrl: 'skeleton.component.html',\n styleUrls: ['./skeleton.component.scss'],\n standalone: true,\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsSkeletonComponent implements AfterViewInit {\n protected configRender = signal<ISkeletonConfig>({});\n\n readonly config = input<ISkeletonConfig, ISkeletonConfig | undefined>({}, { transform: (value) => value || {} });\n\n readonly skeletonRef = viewChild.required<ElementRef>('skeletonRef');\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.configRender.update((config) => {\n config = this.config();\n let offsetHeight = this.skeletonRef().nativeElement.offsetHeight;\n if (!config.rows?.length) {\n config.rows = [{ item: {} }];\n }\n if (!config.heightContainer) {\n config.heightContainer = offsetHeight - (config.styleMarginBottom || 0);\n }\n if (config.repeat) {\n offsetHeight = offsetHeight || config.heightContainer || config.styleMarginBottom || 0;\n config.heightContainer = offsetHeight / config.repeat - (config.styleMarginBottom || 0);\n }\n config.repeat = Math.ceil(offsetHeight / ((config.heightContainer || 0) + (config.styleMarginBottom || 0)));\n\n return { ...config };\n });\n });\n }\n}\n","<div\n #skeletonRef\n class=\"w-full h-full\">\n @if (configRender(); as config) {\n @for (configRepeat of [].constructor(config.repeat || 1); track $index; let lastItem = $last) {\n <div\n [style.marginBottom.px]=\"config.styleMarginBottom && !lastItem ? config.styleMarginBottom : 0\"\n [style.height]=\"config.heightContainer ? config.heightContainer + 'px' : '100%'\"\n [class]=\"(config.classRows || '') + ' flex flex-col'\">\n @for (row of config.rows; track $index) {\n @for (rowRepeat of [].constructor(row.repeat || 1); track $index; let firstRow = $first; let lastRow = $last) {\n <div [class]=\"((lastRow || (firstRow && lastRow) ? row.classRowLast : row.classRow) || '') + ' flex flex-col w-full h-full'\">\n @if (row.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config: row.item }\" />\n }\n <div [class]=\"((lastRow || (firstRow && lastRow) ? row.classColsLast : row.classCols) || '') + 'flex w-full'\">\n @for (col of row.cols; track $index) {\n @for (colRepeat of [].constructor(col.repeat || 1); track $index; let firstCol = $first; let lastCol = $last) {\n <div [class]=\"((lastCol || (firstCol && lastCol) ? col.classColLast : col.classCol) || '') + ' flex w-full'\">\n @if (col.item) {\n <ng-container *ngTemplateOutlet=\"templateSkeleton; context: { config: col.item }\" />\n }\n </div>\n }\n }\n </div>\n </div>\n }\n }\n </div>\n }\n }\n</div>\n\n<ng-template\n #templateSkeleton\n let-config=\"config\">\n <div [class]=\"config?.classInclude || 'w-full h-full'\">\n @for (_ of [].constructor(config.repeat || 1); track $index; let last = $last) {\n <div\n class=\"w-full h-full skeleton rounded-[8px] {{ config?.classIncludeItem || '' }}\"\n [class.mb-[16px]]=\"config?.styleDefault && !last\"></div>\n }\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAaa,iCAAiC,CAAA;AAClC,IAAA,YAAY,GAAG,MAAM,CAAkB,EAAE,CAAC;AAE3C,IAAA,MAAM,GAAG,KAAK,CAA+C,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,CAAC;AAEvG,IAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAa,aAAa,CAAC;IAEpE,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;AAClC,gBAAA,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;gBACtB,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,YAAY;AAChE,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;oBACxB,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;gBAC9B;AACA,gBAAA,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AAC3B,oBAAA,MAAM,CAAC,eAAe,GAAG,YAAY,IAAI,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC;gBACzE;AACA,gBAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,oBAAA,YAAY,GAAG,YAAY,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,iBAAiB,IAAI,CAAC;AACtF,oBAAA,MAAM,CAAC,eAAe,GAAG,YAAY,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC;gBACzF;gBACA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,KAAK,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,CAAC;AAE3G,gBAAA,OAAO,EAAE,GAAG,MAAM,EAAE;AACtB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;wGA3BW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb9C,+lEA6CA,EAAA,MAAA,EAAA,CAAA,kQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDnCY,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGf,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAT7C,SAAS;+BAEE,6BAA6B,EAAA,UAAA,EAG3B,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,CAAC,EAAA,eAAA,EACV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+lEAAA,EAAA,MAAA,EAAA,CAAA,kQAAA,CAAA,EAAA;;;AEXjD;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libs-ui/components-skeleton",
3
- "version": "0.2.306-4",
3
+ "version": "0.2.306-6",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=18.0.0",
6
6
  "@angular/core": ">=18.0.0"
@@ -1,5 +1,5 @@
1
- import { AfterViewInit, ElementRef } from "@angular/core";
2
- import { ISkeletonConfig } from "./interfaces/skeleton-item.interface";
1
+ import { AfterViewInit, ElementRef } from '@angular/core';
2
+ import { ISkeletonConfig } from './interfaces/skeleton-item.interface';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class LibsUiComponentsSkeletonComponent implements AfterViewInit {
5
5
  protected configRender: import("@angular/core").WritableSignal<ISkeletonConfig>;