@cuby-ui/core 0.0.212 → 0.0.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.
@@ -10,7 +10,7 @@ export declare class CuiButtonComponent implements CuiButtonOptions, OnInit {
10
10
  protected readonly AppearanceIconColors: Record<CuiButtonOptions['appearance'], string>;
11
11
  protected readonly COLOR_BASE_500 = "var(--cui-base-500)";
12
12
  protected readonly BUTTON_ICONS_COLOR_BASE_500: CuiButtonOptions['appearance'][];
13
- protected _appearance: "action" | "secondary" | "outlined" | "outlined-gray" | "ghost" | "flat" | "destructive" | "link";
13
+ protected _appearance: "link" | "flat" | "action" | "secondary" | "outlined" | "outlined-gray" | "ghost" | "destructive";
14
14
  protected iconColor: string;
15
15
  protected _size: "xxs" | "xs" | "sm" | "md";
16
16
  protected iconDimensions: {
@@ -4,10 +4,10 @@ import * as i0 from "@angular/core";
4
4
  export declare class CuiNotificationComponent implements CuiNotificationOptions, OnInit {
5
5
  private readonly cuiNotificationOptions;
6
6
  protected readonly ICONS: import("./notification.options").CuiNotificationIcons;
7
- protected readonly ICON_OPTIONS: Record<"default" | "light", CuiNotificationIconOptions>;
7
+ protected readonly ICON_OPTIONS: Record<"light" | "default", CuiNotificationIconOptions>;
8
8
  protected iconOptions: CuiNotificationIconOptions;
9
9
  status: import("@cuby-ui/core").CuiStatus;
10
- mode: "default" | "light";
10
+ mode: "light" | "default";
11
11
  isCloseable: boolean;
12
12
  readonly closed: EventEmitter<void>;
13
13
  ngOnInit(): void;
@@ -4,7 +4,7 @@ import { CuiPositionService } from '../../services';
4
4
  import { CuiTooltipDirective } from './tooltip.directive';
5
5
  import { CuiTooltipPointer } from './tooltip-pointer.directive';
6
6
  import * as i0 from "@angular/core";
7
- export declare const CUI_TOOLTIP_PROVIDERS: (import("@angular/core").FactoryProvider | typeof CuiPositionService | typeof CuiHoveredService)[];
7
+ export declare const CUI_TOOLTIP_PROVIDERS: (typeof CuiPositionService | typeof CuiHoveredService | import("@angular/core").FactoryProvider)[];
8
8
  export declare class CuiTooltipComponent<C = any> {
9
9
  private readonly el;
10
10
  private readonly hover;
@@ -1,2 +1,3 @@
1
1
  export { cuiXNdjsonInterceptor } from './x-ndjson.interceptor';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2ludGVyY2VwdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGN1aVhOZGpzb25JbnRlcmNlcHRvciB9IGZyb20gJy4veC1uZGpzb24uaW50ZXJjZXB0b3InO1xyXG4iXX0=
2
+ export { cuiLoaderInterceptor } from './loader.interceptor';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2ludGVyY2VwdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGN1aVhOZGpzb25JbnRlcmNlcHRvciB9IGZyb20gJy4veC1uZGpzb24uaW50ZXJjZXB0b3InO1xyXG5leHBvcnQgeyBjdWlMb2FkZXJJbnRlcmNlcHRvciB9IGZyb20gJy4vbG9hZGVyLmludGVyY2VwdG9yJztcclxuIl19
@@ -0,0 +1,12 @@
1
+ import { inject } from '@angular/core';
2
+ import { catchError, finalize, throwError } from 'rxjs';
3
+ import { LoaderService } from '../services';
4
+ export const cuiLoaderInterceptor = (request, next) => {
5
+ const loaderService = inject(LoaderService);
6
+ if (request.method === 'GET') {
7
+ return next(request);
8
+ }
9
+ loaderService.setLoading();
10
+ return next(request).pipe(catchError(throwError), finalize(loaderService.handleCompletedRequest.bind(loaderService)));
11
+ };
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9pbnRlcmNlcHRvcnMvbG9hZGVyLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQXNCLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFO0lBQ3ZFLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUU1QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUUzQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3ZCLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFDdEIsUUFBUSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FDbkUsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSHR0cEludGVyY2VwdG9yRm4gfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgTG9hZGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuXHJcbmV4cG9ydCBjb25zdCBjdWlMb2FkZXJJbnRlcmNlcHRvcjogSHR0cEludGVyY2VwdG9yRm4gPSAocmVxdWVzdCwgbmV4dCkgPT4ge1xyXG4gIGNvbnN0IGxvYWRlclNlcnZpY2UgPSBpbmplY3QoTG9hZGVyU2VydmljZSk7XHJcblxyXG4gIGlmIChyZXF1ZXN0Lm1ldGhvZCA9PT0gJ0dFVCcpIHtcclxuICAgIHJldHVybiBuZXh0KHJlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgbG9hZGVyU2VydmljZS5zZXRMb2FkaW5nKCk7XHJcblxyXG4gIHJldHVybiBuZXh0KHJlcXVlc3QpLnBpcGUoXHJcbiAgICBjYXRjaEVycm9yKHRocm93RXJyb3IpLFxyXG4gICAgZmluYWxpemUobG9hZGVyU2VydmljZS5oYW5kbGVDb21wbGV0ZWRSZXF1ZXN0LmJpbmQobG9hZGVyU2VydmljZSkpXHJcbiAgKTtcclxufTtcclxuIl19
@@ -1,5 +1,7 @@
1
1
  export * from './position.service';
2
2
  export * from './theme.options';
3
3
  export * from './theme.service';
4
+ export * from './loader.options';
5
+ export * from './loader.service';
4
6
  export * from './visual-viewport.service';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Bvc2l0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RoZW1lLm9wdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RoZW1lLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Zpc3VhbC12aWV3cG9ydC5zZXJ2aWNlJzsiXX0=
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wb3NpdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi90aGVtZS5vcHRpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi90aGVtZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9sb2FkZXIub3B0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbG9hZGVyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Zpc3VhbC12aWV3cG9ydC5zZXJ2aWNlJzsiXX0=
@@ -0,0 +1,6 @@
1
+ export const LoadingState = {
2
+ LOADING: 'loading',
3
+ COMPLETED: 'completed',
4
+ INITIAL: 'initial'
5
+ };
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLm9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NlcnZpY2VzL2xvYWRlci5vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixPQUFPLEVBQUUsU0FBUztJQUNsQixTQUFTLEVBQUUsV0FBVztJQUN0QixPQUFPLEVBQUUsU0FBUztDQUNWLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEN1aVZhbHVlT2YgfSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5cclxuZXhwb3J0IGNvbnN0IExvYWRpbmdTdGF0ZSA9IHtcclxuICBMT0FESU5HOiAnbG9hZGluZycsXHJcbiAgQ09NUExFVEVEOiAnY29tcGxldGVkJyxcclxuICBJTklUSUFMOiAnaW5pdGlhbCdcclxufSBhcyBjb25zdDtcclxuXHJcbmV4cG9ydCB0eXBlIExvYWRpbmdTdGF0ZSA9IEN1aVZhbHVlT2Y8dHlwZW9mIExvYWRpbmdTdGF0ZT47XHJcbiJdfQ==
@@ -0,0 +1,60 @@
1
+ import { Injectable, signal } from '@angular/core';
2
+ import { LoadingState } from './loader.options';
3
+ import * as i0 from "@angular/core";
4
+ export class LoaderService {
5
+ constructor() {
6
+ this.RESET_TO_INITIAL_TIME = 1000;
7
+ this.loaderStateSignal = signal(LoadingState.INITIAL);
8
+ this.requestCount = 0;
9
+ this.loaderState = this.loaderStateSignal.asReadonly();
10
+ AngularOutsideLoaderService.setInstance(this);
11
+ }
12
+ setLoading() {
13
+ this.requestCount++;
14
+ // need to use without queueMicrotask (error)
15
+ queueMicrotask(() => this.loaderStateSignal.set(LoadingState.LOADING));
16
+ }
17
+ setCompleted() {
18
+ this.requestCount = this.requestCount && this.requestCount - 1;
19
+ if (this.requestCount) {
20
+ return;
21
+ }
22
+ return this.loaderStateSignal.set(LoadingState.COMPLETED);
23
+ }
24
+ handleCompletedRequest() {
25
+ this.setCompleted();
26
+ clearTimeout(this.resetLoadingStateTimerId);
27
+ this.resetLoadingStateTimerId = setTimeout(() => {
28
+ if (this.requestCount) {
29
+ return;
30
+ }
31
+ this.loaderStateSignal.set(LoadingState.INITIAL);
32
+ }, this.RESET_TO_INITIAL_TIME);
33
+ }
34
+ reset() {
35
+ this.requestCount = 0;
36
+ this.resetLoadingStateTimerId = undefined;
37
+ this.loaderStateSignal.set(LoadingState.INITIAL);
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
40
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoaderService, providedIn: 'root' }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoaderService, decorators: [{
43
+ type: Injectable,
44
+ args: [{
45
+ providedIn: 'root'
46
+ }]
47
+ }], ctorParameters: () => [] });
48
+ // NEED TO USE LoaderService OUTSIDE ANGULAR INJECTION CONTEXT
49
+ export class AngularOutsideLoaderService {
50
+ static getInstance() {
51
+ if (!this.instance) {
52
+ throw new Error("The instance hasn't been initialized yet");
53
+ }
54
+ return this.instance;
55
+ }
56
+ static setInstance(instance) {
57
+ this.instance = instance;
58
+ }
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NlcnZpY2VzL2xvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFLaEQsTUFBTSxPQUFPLGFBQWE7SUFVeEI7UUFUaUIsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBRTdCLHNCQUFpQixHQUFHLE1BQU0sQ0FBZSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFeEUsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFHVCxnQkFBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUdoRSwyQkFBMkIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsNkNBQTZDO1FBQzdDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUUvRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLHNCQUFzQjtRQUMzQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsWUFBWSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQzlDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN0QixPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELENBQUMsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxTQUFTLENBQUM7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQzsrR0EvQ1UsYUFBYTttSEFBYixhQUFhLGNBRlosTUFBTTs7NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBbURELDhEQUE4RDtBQUM5RCxNQUFNLE9BQU8sMkJBQTJCO0lBRy9CLE1BQU0sQ0FBQyxXQUFXO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBdUI7UUFDL0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBMb2FkaW5nU3RhdGUgfSBmcm9tICcuL2xvYWRlci5vcHRpb25zJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIExvYWRlclNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgUkVTRVRfVE9fSU5JVElBTF9USU1FID0gMTAwMDtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkZXJTdGF0ZVNpZ25hbCA9IHNpZ25hbDxMb2FkaW5nU3RhdGU+KExvYWRpbmdTdGF0ZS5JTklUSUFMKTtcclxuXHJcbiAgcHJpdmF0ZSByZXF1ZXN0Q291bnQgPSAwO1xyXG4gIHByaXZhdGUgcmVzZXRMb2FkaW5nU3RhdGVUaW1lcklkPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBsb2FkZXJTdGF0ZSA9IHRoaXMubG9hZGVyU3RhdGVTaWduYWwuYXNSZWFkb25seSgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIEFuZ3VsYXJPdXRzaWRlTG9hZGVyU2VydmljZS5zZXRJbnN0YW5jZSh0aGlzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRMb2FkaW5nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0Q291bnQrKztcclxuICAgIC8vIG5lZWQgdG8gdXNlIHdpdGhvdXQgcXVldWVNaWNyb3Rhc2sgKGVycm9yKVxyXG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gdGhpcy5sb2FkZXJTdGF0ZVNpZ25hbC5zZXQoTG9hZGluZ1N0YXRlLkxPQURJTkcpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDb21wbGV0ZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RDb3VudCA9IHRoaXMucmVxdWVzdENvdW50ICYmIHRoaXMucmVxdWVzdENvdW50IC0gMTtcclxuXHJcbiAgICBpZiAodGhpcy5yZXF1ZXN0Q291bnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmxvYWRlclN0YXRlU2lnbmFsLnNldChMb2FkaW5nU3RhdGUuQ09NUExFVEVEKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDb21wbGV0ZWRSZXF1ZXN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRDb21wbGV0ZWQoKTtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLnJlc2V0TG9hZGluZ1N0YXRlVGltZXJJZCk7XHJcblxyXG4gICAgdGhpcy5yZXNldExvYWRpbmdTdGF0ZVRpbWVySWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMucmVxdWVzdENvdW50KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmxvYWRlclN0YXRlU2lnbmFsLnNldChMb2FkaW5nU3RhdGUuSU5JVElBTCk7XHJcbiAgICB9LCB0aGlzLlJFU0VUX1RPX0lOSVRJQUxfVElNRSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RDb3VudCA9IDA7XHJcbiAgICB0aGlzLnJlc2V0TG9hZGluZ1N0YXRlVGltZXJJZCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMubG9hZGVyU3RhdGVTaWduYWwuc2V0KExvYWRpbmdTdGF0ZS5JTklUSUFMKTtcclxuICB9XHJcbn1cclxuXHJcbi8vIE5FRUQgVE8gVVNFIExvYWRlclNlcnZpY2UgT1VUU0lERSBBTkdVTEFSIElOSkVDVElPTiBDT05URVhUXHJcbmV4cG9ydCBjbGFzcyBBbmd1bGFyT3V0c2lkZUxvYWRlclNlcnZpY2Uge1xyXG4gIHByaXZhdGUgc3RhdGljIGluc3RhbmNlOiBMb2FkZXJTZXJ2aWNlO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldEluc3RhbmNlKCk6IExvYWRlclNlcnZpY2Uge1xyXG4gICAgaWYgKCF0aGlzLmluc3RhbmNlKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBpbnN0YW5jZSBoYXNuJ3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHNldEluc3RhbmNlKGluc3RhbmNlOiBMb2FkZXJTZXJ2aWNlKTogdm9pZCB7XHJcbiAgICB0aGlzLmluc3RhbmNlID0gaW5zdGFuY2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,12 +1,12 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, inject, Renderer2, input, model, effect, Directive, InjectionToken, Input, HostBinding, ChangeDetectorRef, ElementRef, ViewChild, EventEmitter, Output, NgModule, Injector, Injectable, SkipSelf, Optional, DestroyRef, NgZone, TemplateRef, ContentChildren, HostListener, Self, signal, INJECTOR, forwardRef, ViewContainerRef } from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, inject, Renderer2, input, model, effect, Directive, InjectionToken, Input, HostBinding, ChangeDetectorRef, ElementRef, ViewChild, EventEmitter, Output, NgModule, Injector, Injectable, SkipSelf, Optional, DestroyRef, NgZone, signal, TemplateRef, ContentChildren, HostListener, Self, INJECTOR, forwardRef, ViewContainerRef } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule, DOCUMENT, NgForOf, NgIf, NgComponentOutlet } from '@angular/common';
5
5
  import * as i1$1 from '@cuby-ui/cdk';
6
6
  import { CUI_WINDOW, cuiCreateToken, cuiCreateTokenFromFactory, CuiDestroyService, CuiFilterPipe, CuiLetDirective, CuiPopoverService, cuiProvide, CUI_ANIMATION_FRAME, cuiZonefree, EMPTY_CLIENT_RECT, cuiInjectElement, CUI_LOCAL_STORAGE, CUI_IS_WEBKIT, CuiItemDirective, CuiActiveZone, CuiFocusTrapDirective, cuiGetElementObscures, CUI_IS_MOBILE, CuiHoveredService, cuiPure, cuiPointToClientRect, cuiClamp, cuiPx, cuiIfMap, cuiIsPresent, cuiTypedFromEvent, cuiZonefreeScheduler, cuiZoneOptimized, cuiIsNativeFocused, CuiClickOutsideDirective, CuiTargetDirective, cuiGetClosestFocusable, CuiTime, CuiAutoResizingDirective } from '@cuby-ui/cdk';
7
7
  import { DomSanitizer } from '@angular/platform-browser';
8
8
  import { cuiIsIcon, CUI_ICONS } from '@cuby-ui/icons';
9
- import { BehaviorSubject, takeUntil, Observable, merge, distinctUntilChanged, startWith, map, finalize, Subject, switchMap, of, delay, repeat, filter, tap, takeWhile, fromEvent, debounce, timer, skip, take } from 'rxjs';
9
+ import { BehaviorSubject, takeUntil, Observable, merge, distinctUntilChanged, startWith, map, finalize, Subject, switchMap, of, delay, repeat, filter, tap, takeWhile, fromEvent, debounce, timer, skip, take, catchError, throwError } from 'rxjs';
10
10
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
11
11
  import { trigger, transition, query, animateChild, style, animate, stagger } from '@angular/animations';
12
12
  import * as i2 from '@taiga-ui/polymorpheus';
@@ -761,6 +761,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
761
761
  }]
762
762
  }], ctorParameters: () => [] });
763
763
 
764
+ const LoadingState = {
765
+ LOADING: 'loading',
766
+ COMPLETED: 'completed',
767
+ INITIAL: 'initial'
768
+ };
769
+
770
+ class LoaderService {
771
+ constructor() {
772
+ this.RESET_TO_INITIAL_TIME = 1000;
773
+ this.loaderStateSignal = signal(LoadingState.INITIAL);
774
+ this.requestCount = 0;
775
+ this.loaderState = this.loaderStateSignal.asReadonly();
776
+ AngularOutsideLoaderService.setInstance(this);
777
+ }
778
+ setLoading() {
779
+ this.requestCount++;
780
+ // need to use without queueMicrotask (error)
781
+ queueMicrotask(() => this.loaderStateSignal.set(LoadingState.LOADING));
782
+ }
783
+ setCompleted() {
784
+ this.requestCount = this.requestCount && this.requestCount - 1;
785
+ if (this.requestCount) {
786
+ return;
787
+ }
788
+ return this.loaderStateSignal.set(LoadingState.COMPLETED);
789
+ }
790
+ handleCompletedRequest() {
791
+ this.setCompleted();
792
+ clearTimeout(this.resetLoadingStateTimerId);
793
+ this.resetLoadingStateTimerId = setTimeout(() => {
794
+ if (this.requestCount) {
795
+ return;
796
+ }
797
+ this.loaderStateSignal.set(LoadingState.INITIAL);
798
+ }, this.RESET_TO_INITIAL_TIME);
799
+ }
800
+ reset() {
801
+ this.requestCount = 0;
802
+ this.resetLoadingStateTimerId = undefined;
803
+ this.loaderStateSignal.set(LoadingState.INITIAL);
804
+ }
805
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
806
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoaderService, providedIn: 'root' }); }
807
+ }
808
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoaderService, decorators: [{
809
+ type: Injectable,
810
+ args: [{
811
+ providedIn: 'root'
812
+ }]
813
+ }], ctorParameters: () => [] });
814
+ // NEED TO USE LoaderService OUTSIDE ANGULAR INJECTION CONTEXT
815
+ class AngularOutsideLoaderService {
816
+ static getInstance() {
817
+ if (!this.instance) {
818
+ throw new Error("The instance hasn't been initialized yet");
819
+ }
820
+ return this.instance;
821
+ }
822
+ static setInstance(instance) {
823
+ this.instance = instance;
824
+ }
825
+ }
826
+
764
827
  class CuiVisualViewportService {
765
828
  constructor() {
766
829
  this.isWebkit = inject(CUI_IS_WEBKIT);
@@ -3787,9 +3850,18 @@ const cuiXNdjsonInterceptor = (request, next) => {
3787
3850
  });
3788
3851
  };
3789
3852
 
3853
+ const cuiLoaderInterceptor = (request, next) => {
3854
+ const loaderService = inject(LoaderService);
3855
+ if (request.method === 'GET') {
3856
+ return next(request);
3857
+ }
3858
+ loaderService.setLoading();
3859
+ return next(request).pipe(catchError(throwError), finalize(loaderService.handleCompletedRequest.bind(loaderService)));
3860
+ };
3861
+
3790
3862
  /**
3791
3863
  * Generated bundle index. Do not edit.
3792
3864
  */
3793
3865
 
3794
- export { CUI_ALERTS, CUI_ALERT_CONTEXT, CUI_ALERT_DEFAULT_OPTIONS, CUI_ALERT_OPTIONS, CUI_ANIMATIONS_DEFAULT_DURATION, CUI_BANNER_DEFAULT_OPTIONS, CUI_BANNER_OPTIONS, CUI_BUTTON_DEFAULT_OPTIONS, CUI_BUTTON_OPTIONS, CUI_DEFAULT_THEME, CUI_DIALOGS, CUI_DIALOG_CONTEXT, CUI_DIALOG_DEFAULT_OPTIONS, CUI_DIALOG_OPTIONS, CUI_INPUT_TIME_DEFAULT_OPTIONS, CUI_INPUT_TIME_OPTIONS, CUI_NOTIFICATION_DEFAULT_OPTIONS, CUI_NOTIFICATION_ICONS, CUI_NOTIFICATION_ICON_OPTIONS, CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE, CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE, CUI_NOTIFICATION_OPTIONS, CUI_ROOT_SELECTOR, CUI_TAB_ACTIVATE, CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FIELD_ICON_LEFT, CUI_TEXT_FIELD_ID, CUI_TEXT_FIELD_IS_ERROR, CUI_TEXT_FIELD_PLACEHOLDER, CUI_TEXT_FIELD_SIZE, CUI_TEXT_FILED_CONTROLLER_PROVIDER, CUI_THEME, CUI_THEME_STORAGE_DEFAULT_KEY, CUI_THEME_STORAGE_KEY, CUI_TOOLTIP_COMPONENT, CUI_TOOLTIP_DEFAULT_OPTIONS, CUI_TOOLTIP_DIRECTIONS, CUI_TOOLTIP_OPTIONS, CUI_TOOLTIP_PROVIDERS, CuiAccordionComponent, CuiAccordionDirective, CuiAccordionItemComponent, CuiAccordionModule, CuiAlertComponent, CuiAlertModule, CuiAlertService, CuiAlertsComponent, CuiBadgeComponent, CuiBadgeModule, CuiBannerComponent, CuiBannerModule, CuiBreadcrumbComponent, CuiBreadcrumbsComponent, CuiBreadcrumbsModule, CuiButtonComponent, CuiButtonGroupComponent, CuiButtonGroupModule, CuiButtonModule, CuiCheckboxComponent, CuiCheckboxModule, CuiContextMenuComponent, CuiContextMenuModule, CuiDialogActionsComponent, CuiDialogComponent, CuiDialogHeaderComponent, CuiDialogModule, CuiDialogService, CuiDialogsComponent, CuiDropdownDirective, CuiDropdownWrapperComponent, CuiFormFieldComponent, CuiFormFieldModule, CuiHintComponent, CuiHintModule, CuiIconButtonComponent, CuiIconButtonModule, CuiInputModule, CuiInputNumberComponent, CuiInputNumberModule, CuiInputPasswordComponent, CuiInputPasswordModule, CuiInputTextComponent, CuiInputTimeComponent, CuiInputTimeModule, CuiLabelComponent, CuiLabelModule, CuiLetterBoxComponent, CuiNotificationComponent, CuiNotificationModule, CuiPositionService, CuiRadioComponent, CuiRadioModule, CuiRenderDynamicComponentsComponent, CuiRenderDynamicComponentsService, CuiRootComponent, CuiRootModule, CuiSelectComponent, CuiSelectModule, CuiSvgComponent, CuiSvgModule, CuiTabComponent, CuiTabsComponent, CuiTabsModule, CuiTextFieldController, CuiTextFieldControllerModule, CuiTextFieldIconLeftDirective, CuiTextFieldIdDirective, CuiTextFieldIsErrorDirective, CuiTextFieldPlaceholderDirective, CuiTextFieldSizeDirective, CuiTextareaComponent, CuiTextareaModule, CuiThemeService, CuiToggleComponent, CuiToggleModule, CuiTooltip, CuiTooltipComponent, CuiTooltipDescribe, CuiTooltipDirective, CuiTooltipDriver, CuiTooltipHost, CuiTooltipHover, CuiTooltipManual, CuiTooltipOptionsDirective, CuiTooltipOverflow, CuiTooltipPointer, CuiTooltipPosition, CuiTooltipService, CuiTooltipUnstyled, CuiTooltipUnstyledComponent, CuiTooltips, CuiVisualViewportService, cuiGetDuration, cuiIsObscured, cuiOverrideOptions, cuiRemoveSpaces, cuiReplace, cuiToAnimationOptions, cuiTooltipOptionsProvider, cuiXNdjsonInterceptor };
3866
+ export { AngularOutsideLoaderService, CUI_ALERTS, CUI_ALERT_CONTEXT, CUI_ALERT_DEFAULT_OPTIONS, CUI_ALERT_OPTIONS, CUI_ANIMATIONS_DEFAULT_DURATION, CUI_BANNER_DEFAULT_OPTIONS, CUI_BANNER_OPTIONS, CUI_BUTTON_DEFAULT_OPTIONS, CUI_BUTTON_OPTIONS, CUI_DEFAULT_THEME, CUI_DIALOGS, CUI_DIALOG_CONTEXT, CUI_DIALOG_DEFAULT_OPTIONS, CUI_DIALOG_OPTIONS, CUI_INPUT_TIME_DEFAULT_OPTIONS, CUI_INPUT_TIME_OPTIONS, CUI_NOTIFICATION_DEFAULT_OPTIONS, CUI_NOTIFICATION_ICONS, CUI_NOTIFICATION_ICON_OPTIONS, CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE, CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE, CUI_NOTIFICATION_OPTIONS, CUI_ROOT_SELECTOR, CUI_TAB_ACTIVATE, CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FIELD_ICON_LEFT, CUI_TEXT_FIELD_ID, CUI_TEXT_FIELD_IS_ERROR, CUI_TEXT_FIELD_PLACEHOLDER, CUI_TEXT_FIELD_SIZE, CUI_TEXT_FILED_CONTROLLER_PROVIDER, CUI_THEME, CUI_THEME_STORAGE_DEFAULT_KEY, CUI_THEME_STORAGE_KEY, CUI_TOOLTIP_COMPONENT, CUI_TOOLTIP_DEFAULT_OPTIONS, CUI_TOOLTIP_DIRECTIONS, CUI_TOOLTIP_OPTIONS, CUI_TOOLTIP_PROVIDERS, CuiAccordionComponent, CuiAccordionDirective, CuiAccordionItemComponent, CuiAccordionModule, CuiAlertComponent, CuiAlertModule, CuiAlertService, CuiAlertsComponent, CuiBadgeComponent, CuiBadgeModule, CuiBannerComponent, CuiBannerModule, CuiBreadcrumbComponent, CuiBreadcrumbsComponent, CuiBreadcrumbsModule, CuiButtonComponent, CuiButtonGroupComponent, CuiButtonGroupModule, CuiButtonModule, CuiCheckboxComponent, CuiCheckboxModule, CuiContextMenuComponent, CuiContextMenuModule, CuiDialogActionsComponent, CuiDialogComponent, CuiDialogHeaderComponent, CuiDialogModule, CuiDialogService, CuiDialogsComponent, CuiDropdownDirective, CuiDropdownWrapperComponent, CuiFormFieldComponent, CuiFormFieldModule, CuiHintComponent, CuiHintModule, CuiIconButtonComponent, CuiIconButtonModule, CuiInputModule, CuiInputNumberComponent, CuiInputNumberModule, CuiInputPasswordComponent, CuiInputPasswordModule, CuiInputTextComponent, CuiInputTimeComponent, CuiInputTimeModule, CuiLabelComponent, CuiLabelModule, CuiLetterBoxComponent, CuiNotificationComponent, CuiNotificationModule, CuiPositionService, CuiRadioComponent, CuiRadioModule, CuiRenderDynamicComponentsComponent, CuiRenderDynamicComponentsService, CuiRootComponent, CuiRootModule, CuiSelectComponent, CuiSelectModule, CuiSvgComponent, CuiSvgModule, CuiTabComponent, CuiTabsComponent, CuiTabsModule, CuiTextFieldController, CuiTextFieldControllerModule, CuiTextFieldIconLeftDirective, CuiTextFieldIdDirective, CuiTextFieldIsErrorDirective, CuiTextFieldPlaceholderDirective, CuiTextFieldSizeDirective, CuiTextareaComponent, CuiTextareaModule, CuiThemeService, CuiToggleComponent, CuiToggleModule, CuiTooltip, CuiTooltipComponent, CuiTooltipDescribe, CuiTooltipDirective, CuiTooltipDriver, CuiTooltipHost, CuiTooltipHover, CuiTooltipManual, CuiTooltipOptionsDirective, CuiTooltipOverflow, CuiTooltipPointer, CuiTooltipPosition, CuiTooltipService, CuiTooltipUnstyled, CuiTooltipUnstyledComponent, CuiTooltips, CuiVisualViewportService, LoaderService, LoadingState, cuiGetDuration, cuiIsObscured, cuiLoaderInterceptor, cuiOverrideOptions, cuiRemoveSpaces, cuiReplace, cuiToAnimationOptions, cuiTooltipOptionsProvider, cuiXNdjsonInterceptor };
3795
3867
  //# sourceMappingURL=cuby-ui-core.mjs.map