@bootkit/ng0 0.0.0-alpha.3 → 0.0.0-alpha.4
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/common/index.d.ts +10 -2
- package/components/accordion/index.d.ts +1 -1
- package/components/button/index.d.ts +48 -0
- package/components/card/index.d.ts +27 -0
- package/components/code/index.d.ts +35 -0
- package/components/confirmation/index.d.ts +66 -0
- package/components/form-field/index.d.ts +3 -3
- package/components/modal/index.d.ts +1 -1
- package/components/pagination/index.d.ts +1 -1
- package/components/popover/index.d.ts +1 -1
- package/components/stepper/index.d.ts +26 -0
- package/components/table/index.d.ts +141 -0
- package/components/toast/index.d.ts +1 -1
- package/components/tooltip/index.d.ts +1 -1
- package/data/index.d.ts +72 -37
- package/fesm2022/bootkit-ng0-common.mjs +7 -1
- package/fesm2022/bootkit-ng0-common.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-button.mjs +119 -0
- package/fesm2022/bootkit-ng0-components-button.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-card.mjs +62 -0
- package/fesm2022/bootkit-ng0-components-card.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-code.mjs +70 -0
- package/fesm2022/bootkit-ng0-components-code.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-collapse.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-confirmation.mjs +167 -0
- package/fesm2022/bootkit-ng0-components-confirmation.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-form-field.mjs +1 -1
- package/fesm2022/bootkit-ng0-components-form-field.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-nav.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-pagination.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-stepper.mjs +91 -0
- package/fesm2022/bootkit-ng0-components-stepper.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-table.mjs +317 -0
- package/fesm2022/bootkit-ng0-components-table.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-toast.mjs +1 -1
- package/fesm2022/bootkit-ng0-components-toast.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-data.mjs +52 -75
- package/fesm2022/bootkit-ng0-data.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-file.mjs +50 -0
- package/fesm2022/bootkit-ng0-file.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-form.mjs +442 -0
- package/fesm2022/bootkit-ng0-form.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-http.mjs +188 -175
- package/fesm2022/bootkit-ng0-http.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-localization.mjs +1 -1
- package/fesm2022/bootkit-ng0-localization.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-script.mjs +59 -0
- package/fesm2022/bootkit-ng0-script.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-security.mjs +2 -0
- package/fesm2022/bootkit-ng0-security.mjs.map +1 -1
- package/file/index.d.ts +22 -0
- package/form/index.d.ts +95 -0
- package/http/index.d.ts +107 -37
- package/localization/index.d.ts +1 -1
- package/package.json +52 -16
- package/script/index.d.ts +27 -0
- package/security/index.d.ts +3 -9
package/common/index.d.ts
CHANGED
|
@@ -4,9 +4,17 @@ type Placement = 'start' | 'end' | 'top' | 'bottom';
|
|
|
4
4
|
type Alignment = 'start' | 'center' | 'end';
|
|
5
5
|
declare const RTL: InjectionToken<boolean>;
|
|
6
6
|
|
|
7
|
+
interface ClaimObject {
|
|
8
|
+
all?: string[];
|
|
9
|
+
any?: string[];
|
|
10
|
+
}
|
|
11
|
+
type ClaimLike = string | ClaimObject;
|
|
12
|
+
|
|
7
13
|
declare function numberRange(start: number, end: number): number[];
|
|
8
14
|
declare function fillArray(start: number, end: number): number[];
|
|
9
15
|
declare function flipPlacement(placement: Placement): "start" | "end" | "top" | "bottom";
|
|
10
16
|
|
|
11
|
-
|
|
12
|
-
|
|
17
|
+
declare function formatString(str: string, ...args: any[]): string;
|
|
18
|
+
|
|
19
|
+
export { RTL, fillArray, flipPlacement, formatString, numberRange };
|
|
20
|
+
export type { Alignment, ClaimLike, ClaimObject, Placement };
|
|
@@ -5,7 +5,7 @@ declare class AccordionItemComponent {
|
|
|
5
5
|
private _element;
|
|
6
6
|
private _renderer;
|
|
7
7
|
private _accordion;
|
|
8
|
-
header: i0.InputSignal<string>;
|
|
8
|
+
header: i0.InputSignal<string | undefined>;
|
|
9
9
|
collapsed: i0.ModelSignal<boolean>;
|
|
10
10
|
constructor(_element: ElementRef, _renderer: Renderer2, _accordion: AccordionComponent);
|
|
11
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<AccordionItemComponent, never>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { OnInit, OnDestroy, ElementRef, Renderer2, DestroyRef } from '@angular/core';
|
|
3
|
+
import { HttpService } from '@bootkit/ng0/http';
|
|
4
|
+
|
|
5
|
+
declare class ButtonDirective implements OnInit, OnDestroy {
|
|
6
|
+
private _element;
|
|
7
|
+
private _renderer;
|
|
8
|
+
private _http;
|
|
9
|
+
private _destroyRef;
|
|
10
|
+
private _loadingElement;
|
|
11
|
+
/**
|
|
12
|
+
* The IDs of the HTTP requests that this button listens to.
|
|
13
|
+
* If one of these requests is in progress, it will show a loading indicator or will be disabled based on 'showLoading' and 'disableOnLoading' properties.
|
|
14
|
+
*/
|
|
15
|
+
request: i0.InputSignal<string | string[] | undefined>;
|
|
16
|
+
/**
|
|
17
|
+
* Whether the button is disabled or not.
|
|
18
|
+
*/
|
|
19
|
+
disabled: i0.ModelSignal<boolean>;
|
|
20
|
+
/**
|
|
21
|
+
* Whether to wait for the HTTP response before enabling the button again.
|
|
22
|
+
* If true, the button will remain disabled until the HTTP request completes.
|
|
23
|
+
* This is useful for preventing multiple clicks while waiting for a response.
|
|
24
|
+
* Default is true.
|
|
25
|
+
*/
|
|
26
|
+
disableDuringRequest: i0.InputSignalWithTransform<boolean, unknown>;
|
|
27
|
+
/**
|
|
28
|
+
* Whether to show a loading indicator when the HTTP request is in progress.
|
|
29
|
+
* If true, a loading spinner will be displayed on the button while the request is being processed.
|
|
30
|
+
* Default is true.
|
|
31
|
+
*/
|
|
32
|
+
loadingIndicator: i0.InputSignalWithTransform<boolean, unknown>;
|
|
33
|
+
constructor(_element: ElementRef, _renderer: Renderer2, _http: HttpService, _destroyRef: DestroyRef);
|
|
34
|
+
ngOnInit(): void;
|
|
35
|
+
private _showLoading;
|
|
36
|
+
private _hideLoading;
|
|
37
|
+
ngOnDestroy(): void;
|
|
38
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ButtonDirective, never>;
|
|
39
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ButtonDirective, "button[ng0Button], a[ng0Button], input[type=button][ng0Button], input[type=submit][ng0Button], input[type=reset][ng0Button]", ["ng0Button"], { "request": { "alias": "request"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "disableDuringRequest": { "alias": "disableDuringRequest"; "required": false; "isSignal": true; }; "loadingIndicator": { "alias": "loadingIndicator"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; }, never, never, true, never>;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
declare class ButtonModule {
|
|
43
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ButtonModule, never>;
|
|
44
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ButtonModule, never, [typeof ButtonDirective], [typeof ButtonDirective]>;
|
|
45
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<ButtonModule>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export { ButtonDirective, ButtonModule };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { ElementRef, Renderer2 } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
declare class CardComponent {
|
|
5
|
+
private _element;
|
|
6
|
+
private _renderer;
|
|
7
|
+
header: i0.InputSignal<string | undefined>;
|
|
8
|
+
constructor(_element: ElementRef, _renderer: Renderer2);
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CardComponent, never>;
|
|
10
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CardComponent, "ng0-card", ["ng0Card"], { "header": { "alias": "header"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
declare class CardHeaderComponent {
|
|
14
|
+
private _element;
|
|
15
|
+
private _renderer;
|
|
16
|
+
constructor(_element: ElementRef, _renderer: Renderer2);
|
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CardHeaderComponent, never>;
|
|
18
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CardHeaderComponent, "ng0-card-header", ["ng0CardHeader"], {}, {}, never, ["*"], true, never>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare class CardModule {
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CardModule, never>;
|
|
23
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<CardModule, never, [typeof CardComponent, typeof CardHeaderComponent], [typeof CardComponent, typeof CardHeaderComponent]>;
|
|
24
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<CardModule>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { CardComponent, CardHeaderComponent, CardModule };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import * as _angular_platform_browser from '@angular/platform-browser';
|
|
3
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
|
+
|
|
5
|
+
type CodeFormatterFunc = (code: string) => string;
|
|
6
|
+
declare class CodeFormatter {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly format: CodeFormatterFunc;
|
|
9
|
+
constructor(name: string, format: CodeFormatterFunc);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
declare class CodeFormatters {
|
|
13
|
+
private _formatters;
|
|
14
|
+
constructor();
|
|
15
|
+
add(name: string, func: CodeFormatterFunc): CodeFormatter;
|
|
16
|
+
find(name: string): CodeFormatter | undefined;
|
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CodeFormatters, never>;
|
|
18
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CodeFormatters>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare class CodeComponent {
|
|
22
|
+
private formatters;
|
|
23
|
+
private domSanitizer;
|
|
24
|
+
/** Code formatter name */
|
|
25
|
+
formatter: i0.InputSignal<string>;
|
|
26
|
+
/** Code */
|
|
27
|
+
code: i0.InputSignal<string>;
|
|
28
|
+
protected _safeHtml: i0.Signal<_angular_platform_browser.SafeHtml | undefined>;
|
|
29
|
+
constructor(formatters: CodeFormatters, domSanitizer: DomSanitizer);
|
|
30
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CodeComponent, never>;
|
|
31
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CodeComponent, "ng0-code", ["ng0Code"], { "formatter": { "alias": "formatter"; "required": true; "isSignal": true; }; "code": { "alias": "code"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { CodeComponent, CodeFormatter, CodeFormatters };
|
|
35
|
+
export type { CodeFormatterFunc };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { OnInit, EventEmitter } from '@angular/core';
|
|
3
|
+
import * as rxjs from 'rxjs';
|
|
4
|
+
import { DialogRef, Dialog } from '@angular/cdk/dialog';
|
|
5
|
+
|
|
6
|
+
interface ConfirmationConfig {
|
|
7
|
+
message?: string;
|
|
8
|
+
title?: string;
|
|
9
|
+
icon?: 'loading' | 'check';
|
|
10
|
+
/** automaticaly close confirmation after confirmation/cancelation. default is true */
|
|
11
|
+
autoClose?: boolean;
|
|
12
|
+
}
|
|
13
|
+
declare class ConfirmationRef {
|
|
14
|
+
private _dialogRef;
|
|
15
|
+
private _config;
|
|
16
|
+
private _configChangeSubject;
|
|
17
|
+
configChanged: rxjs.Observable<ConfirmationConfig>;
|
|
18
|
+
private _confirmSubject;
|
|
19
|
+
confirmed: rxjs.Observable<unknown>;
|
|
20
|
+
private _cancelSubject;
|
|
21
|
+
canceled: rxjs.Observable<unknown>;
|
|
22
|
+
constructor(_dialogRef: DialogRef<any, any>, _config: ConfirmationConfig);
|
|
23
|
+
confirm(): void;
|
|
24
|
+
cancel(): void;
|
|
25
|
+
close(): void;
|
|
26
|
+
update(config: ConfirmationConfig): void;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
declare class ConfirmationComponent implements OnInit {
|
|
30
|
+
confirmationRef: ConfirmationRef;
|
|
31
|
+
_config?: ConfirmationConfig;
|
|
32
|
+
_clicked: boolean;
|
|
33
|
+
constructor();
|
|
34
|
+
_onClick(result: boolean): void;
|
|
35
|
+
ngOnInit(): void;
|
|
36
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationComponent, never>;
|
|
37
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmationComponent, "ng0-confirmation", ["ng0Confirmation"], {}, {}, never, never, true, never>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
declare class ConfirmationService {
|
|
41
|
+
private dialog;
|
|
42
|
+
constructor(dialog: Dialog);
|
|
43
|
+
open(config?: ConfirmationConfig): ConfirmationRef;
|
|
44
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationService, never>;
|
|
45
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ConfirmationService>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
declare class ConfirmationDirective {
|
|
49
|
+
private confirmationService;
|
|
50
|
+
config?: ConfirmationConfig;
|
|
51
|
+
confirm: EventEmitter<ConfirmationRef>;
|
|
52
|
+
cancel: EventEmitter<ConfirmationRef>;
|
|
53
|
+
constructor(confirmationService: ConfirmationService);
|
|
54
|
+
private _onClick;
|
|
55
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationDirective, never>;
|
|
56
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ConfirmationDirective, "[ng0Confirmation]", ["ng0Confirmation"], { "config": { "alias": "config"; "required": false; }; }, { "confirm": "confirm"; "cancel": "cancel"; }, never, never, true, never>;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
declare class ConfirmationModule {
|
|
60
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationModule, never>;
|
|
61
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ConfirmationModule, never, [typeof ConfirmationComponent, typeof ConfirmationDirective], [typeof ConfirmationComponent, typeof ConfirmationDirective]>;
|
|
62
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<ConfirmationModule>;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export { ConfirmationComponent, ConfirmationDirective, ConfirmationModule, ConfirmationRef, ConfirmationService };
|
|
66
|
+
export type { ConfirmationConfig };
|
|
@@ -12,12 +12,12 @@ declare class FormFieldComponent implements OnInit, AfterContentInit, OnDestroy
|
|
|
12
12
|
/**
|
|
13
13
|
* The label text for the form field.
|
|
14
14
|
*/
|
|
15
|
-
label: _angular_core.InputSignal<string>;
|
|
15
|
+
label: _angular_core.InputSignal<string | undefined>;
|
|
16
16
|
/**
|
|
17
17
|
* The hint text to display below the form field.
|
|
18
18
|
* This is typically used to provide additional information or instructions to the user.
|
|
19
19
|
*/
|
|
20
|
-
hint: _angular_core.InputSignal<string>;
|
|
20
|
+
hint: _angular_core.InputSignal<string | undefined>;
|
|
21
21
|
/**
|
|
22
22
|
* If true, the form-field will show validation errors.
|
|
23
23
|
* This is useful for displaying validation messages when the form control is invalid.
|
|
@@ -40,7 +40,7 @@ declare class FormFieldComponent implements OnInit, AfterContentInit, OnDestroy
|
|
|
40
40
|
/**
|
|
41
41
|
* Returns the first localized error of the control
|
|
42
42
|
*/
|
|
43
|
-
get errorText(): string;
|
|
43
|
+
get errorText(): string | undefined;
|
|
44
44
|
/** Reports whether the control is touched. */
|
|
45
45
|
get touched(): boolean | null | undefined;
|
|
46
46
|
/** Reports whether the control is dirty. */
|
|
@@ -9,7 +9,7 @@ declare class ModalComponent {
|
|
|
9
9
|
/** Is modal vertically centered? */
|
|
10
10
|
centered: _angular_core.InputSignal<boolean>;
|
|
11
11
|
size: _angular_core.InputSignal<"sm" | "default" | "lg" | "xl">;
|
|
12
|
-
fullscreen: _angular_core.InputSignal<"sm" | "lg" | "xl" | "always" | "md" | "xxl">;
|
|
12
|
+
fullscreen: _angular_core.InputSignal<"sm" | "lg" | "xl" | "always" | "md" | "xxl" | undefined>;
|
|
13
13
|
closeRequest: EventEmitter<ModalCloseRequest>;
|
|
14
14
|
backdropClick: EventEmitter<any>;
|
|
15
15
|
protected _modalStatic: _angular_core.WritableSignal<boolean>;
|
|
@@ -16,7 +16,7 @@ declare class PaginationComponent {
|
|
|
16
16
|
showLastButton: _angular_core.InputSignal<boolean>;
|
|
17
17
|
get totalPagesCount(): number;
|
|
18
18
|
protected _totalPagesCount: number;
|
|
19
|
-
protected _visiblePages: _angular_core.Signal<
|
|
19
|
+
protected _visiblePages: _angular_core.Signal<number[]>;
|
|
20
20
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PaginationComponent, never>;
|
|
21
21
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PaginationComponent, "ng0-pagination", ["ng0Pagination"], { "totalRecords": { "alias": "totalRecords"; "required": true; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "selectedPage": { "alias": "selectedPage"; "required": false; "isSignal": true; }; "maxVisiblePages": { "alias": "maxVisiblePages"; "required": false; "isSignal": true; }; "showNextButton": { "alias": "showNextButton"; "required": false; "isSignal": true; }; "showPreviousButton": { "alias": "showPreviousButton"; "required": false; "isSignal": true; }; "showFirstButton": { "alias": "showFirstButton"; "required": false; "isSignal": true; }; "showLastButton": { "alias": "showLastButton"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, ["first", "previous", "next", "last"], true, never>;
|
|
22
22
|
}
|
|
@@ -10,7 +10,7 @@ declare class PopoverDirective implements OnInit, OnDestroy {
|
|
|
10
10
|
private _overlayService;
|
|
11
11
|
private _elementRef;
|
|
12
12
|
private _viewRef;
|
|
13
|
-
header: _angular_core.InputSignal<string>;
|
|
13
|
+
header: _angular_core.InputSignal<string | undefined>;
|
|
14
14
|
content: _angular_core.InputSignal<PopoverContent>;
|
|
15
15
|
placement: _angular_core.InputSignal<PopoverPlacement>;
|
|
16
16
|
triggerBy: _angular_core.InputSignal<PopoverTrigger>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { TemplateRef, QueryList } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
declare class StepDirective {
|
|
5
|
+
readonly templateRef: TemplateRef<any>;
|
|
6
|
+
id: i0.InputSignal<any>;
|
|
7
|
+
constructor(templateRef: TemplateRef<any>);
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StepDirective, never>;
|
|
9
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<StepDirective, "[ng0Step]", ["ng0Step"], { "id": { "alias": "iscStep"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
declare class StepperComponent {
|
|
13
|
+
step: i0.ModelSignal<any>;
|
|
14
|
+
protected _steps: QueryList<StepDirective>;
|
|
15
|
+
constructor();
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StepperComponent, never>;
|
|
17
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StepperComponent, "ng0-stepper", ["ng0Stepper"], { "step": { "alias": "step"; "required": true; "isSignal": true; }; }, { "step": "stepChange"; }, ["_steps"], never, true, never>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
declare class StepperModule {
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StepperModule, never>;
|
|
22
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<StepperModule, never, [typeof StepperComponent, typeof StepDirective], [typeof StepperComponent, typeof StepDirective]>;
|
|
23
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<StepperModule>;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { StepDirective, StepperComponent, StepperModule };
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { TemplateRef, OnInit, AfterContentInit, OnDestroy, QueryList, DestroyRef } from '@angular/core';
|
|
3
|
+
import { formatString } from '@bootkit/ng0/common';
|
|
4
|
+
import { DataLoader, DataSource } from '@bootkit/ng0/data';
|
|
5
|
+
|
|
6
|
+
type DataTableColumnBadgeValueType = string | number | boolean;
|
|
7
|
+
declare class TableColumnDirective {
|
|
8
|
+
field?: string;
|
|
9
|
+
title?: string;
|
|
10
|
+
emptyCellText?: string;
|
|
11
|
+
/** Column type */
|
|
12
|
+
type: 'text' | 'number' | 'currency' | 'date' | 'time' | {
|
|
13
|
+
enum?: string;
|
|
14
|
+
boolean?: {
|
|
15
|
+
falseKey?: string;
|
|
16
|
+
trueKey?: string;
|
|
17
|
+
};
|
|
18
|
+
currency?: string;
|
|
19
|
+
};
|
|
20
|
+
template?: TemplateRef<any>;
|
|
21
|
+
cellClass?: string | string[] | {
|
|
22
|
+
[klass: string]: any;
|
|
23
|
+
} | null | undefined;
|
|
24
|
+
shrink: boolean;
|
|
25
|
+
bold: boolean;
|
|
26
|
+
badge?: {
|
|
27
|
+
primary?: DataTableColumnBadgeValueType;
|
|
28
|
+
secondary?: DataTableColumnBadgeValueType;
|
|
29
|
+
success?: DataTableColumnBadgeValueType;
|
|
30
|
+
};
|
|
31
|
+
filterable: boolean;
|
|
32
|
+
filterValue?: string;
|
|
33
|
+
filterField?: string;
|
|
34
|
+
constructor();
|
|
35
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableColumnDirective, never>;
|
|
36
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TableColumnDirective, "ng0-table-col", never, { "field": { "alias": "field"; "required": false; }; "title": { "alias": "title"; "required": false; }; "emptyCellText": { "alias": "emptyCellText"; "required": false; }; "type": { "alias": "type"; "required": false; }; "cellClass": { "alias": "cellClass"; "required": false; }; "shrink": { "alias": "shrink"; "required": false; }; "bold": { "alias": "bold"; "required": false; }; "badge": { "alias": "badge"; "required": false; }; "filterable": { "alias": "filterable"; "required": false; }; "filterValue": { "alias": "filterValue"; "required": false; }; "filterField": { "alias": "filterField"; "required": false; }; }, {}, ["template"], never, true, never>;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
declare class TableDetailRowDirective {
|
|
40
|
+
readonly templateRef: TemplateRef<any>;
|
|
41
|
+
showCallback?: (row: any) => boolean;
|
|
42
|
+
constructor(templateRef: TemplateRef<any>);
|
|
43
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableDetailRowDirective, never>;
|
|
44
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TableDetailRowDirective, "[ng0-table-detail-row]", never, { "showCallback": { "alias": "showCallback"; "required": false; }; }, {}, never, never, true, never>;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
declare class TableComponent implements OnInit, AfterContentInit, OnDestroy {
|
|
48
|
+
private _destroyRef;
|
|
49
|
+
/**
|
|
50
|
+
* The data source for the table.
|
|
51
|
+
* This can be an array of data, a function that returns an observable of data,
|
|
52
|
+
* or an instance of DataSource.
|
|
53
|
+
*/
|
|
54
|
+
source: _angular_core.InputSignal<any[] | DataLoader | DataSource<any> | null | undefined>;
|
|
55
|
+
/**
|
|
56
|
+
* If true, the table will automatically load data when initialized.
|
|
57
|
+
* This is useful for tables that need to display data immediately without user interaction.
|
|
58
|
+
*/
|
|
59
|
+
autoLoad: _angular_core.InputSignal<boolean>;
|
|
60
|
+
/**
|
|
61
|
+
* If true, the table will show row numbers.
|
|
62
|
+
* This will add a column to the left of the table with the row numbers.
|
|
63
|
+
*/
|
|
64
|
+
showRowNumbers: _angular_core.InputSignal<boolean>;
|
|
65
|
+
/**
|
|
66
|
+
* If true, the table will show the header row.
|
|
67
|
+
*/
|
|
68
|
+
showHeader: _angular_core.InputSignal<boolean>;
|
|
69
|
+
/**
|
|
70
|
+
* If true, the table will support pagination.
|
|
71
|
+
* If false, the table will load all records at once.
|
|
72
|
+
*/
|
|
73
|
+
pagable: _angular_core.InputSignal<boolean>;
|
|
74
|
+
/**
|
|
75
|
+
* If true, the table will show a pagination controls at the bottom.
|
|
76
|
+
*/
|
|
77
|
+
showPagination: _angular_core.InputSignal<boolean>;
|
|
78
|
+
/**
|
|
79
|
+
* The number of records to show per page.
|
|
80
|
+
* This is only used if pagable is true.
|
|
81
|
+
*/
|
|
82
|
+
pageSize: _angular_core.InputSignal<number>;
|
|
83
|
+
/**
|
|
84
|
+
* The current page index.
|
|
85
|
+
* This is only used if pagable is true.
|
|
86
|
+
* The first page is 0.
|
|
87
|
+
*/
|
|
88
|
+
pageIndex: _angular_core.InputSignal<number>;
|
|
89
|
+
/**
|
|
90
|
+
* The CSS class to apply to the table element.
|
|
91
|
+
* This can be used to apply custom styles to the table.
|
|
92
|
+
*/
|
|
93
|
+
tableClass: _angular_core.InputSignal<string | string[] | undefined>;
|
|
94
|
+
/**
|
|
95
|
+
* The CSS class to apply to the header element.
|
|
96
|
+
*/
|
|
97
|
+
headerClass: _angular_core.InputSignal<string | undefined>;
|
|
98
|
+
/**
|
|
99
|
+
* The caption of the table.
|
|
100
|
+
*/
|
|
101
|
+
caption: _angular_core.InputSignal<string | undefined>;
|
|
102
|
+
height: _angular_core.InputSignal<number | undefined>;
|
|
103
|
+
/**
|
|
104
|
+
* If true, the table will support filtering.
|
|
105
|
+
* This will add a filter input to each column header.
|
|
106
|
+
*/
|
|
107
|
+
filterable: _angular_core.InputSignal<boolean>;
|
|
108
|
+
protected _columns: QueryList<TableColumnDirective>;
|
|
109
|
+
protected _detailRow?: TableDetailRowDirective;
|
|
110
|
+
protected _data?: any[];
|
|
111
|
+
protected _totalRecords?: number;
|
|
112
|
+
protected _totalPages?: number;
|
|
113
|
+
protected _rowStates: Map<any, {
|
|
114
|
+
expanded: boolean;
|
|
115
|
+
}>;
|
|
116
|
+
protected _formatString: typeof formatString;
|
|
117
|
+
private _changeSubscription?;
|
|
118
|
+
protected _dataSource: DataSource;
|
|
119
|
+
constructor(_destroyRef: DestroyRef);
|
|
120
|
+
ngOnInit(): void;
|
|
121
|
+
ngAfterContentInit(): void;
|
|
122
|
+
reload(): void;
|
|
123
|
+
get loading(): boolean;
|
|
124
|
+
protected _getCellValue(row: any, col: TableColumnDirective): any;
|
|
125
|
+
protected onNextPageClick(): void;
|
|
126
|
+
protected onPreviousPageClick(): void;
|
|
127
|
+
protected onToggleRowDetailClick(row: any): void;
|
|
128
|
+
protected isRowExpanded(row: any): boolean;
|
|
129
|
+
ngOnDestroy(): void;
|
|
130
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableComponent, never>;
|
|
131
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent, "ng0-table", ["ng0Table"], { "source": { "alias": "source"; "required": true; "isSignal": true; }; "autoLoad": { "alias": "autoLoad"; "required": false; "isSignal": true; }; "showRowNumbers": { "alias": "showRowNumbers"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "pagable": { "alias": "pagable"; "required": false; "isSignal": true; }; "showPagination": { "alias": "showPagination"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageIndex": { "alias": "pageIndex"; "required": false; "isSignal": true; }; "tableClass": { "alias": "tableClass"; "required": false; "isSignal": true; }; "headerClass": { "alias": "headerClass"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "filterable": { "alias": "filterable"; "required": false; "isSignal": true; }; }, {}, ["_detailRow", "_columns"], never, true, never>;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
declare class TableModule {
|
|
135
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableModule, never>;
|
|
136
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<TableModule, never, [typeof TableComponent, typeof TableColumnDirective, typeof TableDetailRowDirective], [typeof TableComponent, typeof TableColumnDirective, typeof TableDetailRowDirective]>;
|
|
137
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<TableModule>;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export { TableColumnDirective, TableComponent, TableDetailRowDirective, TableModule };
|
|
141
|
+
export type { DataTableColumnBadgeValueType };
|
|
@@ -89,7 +89,7 @@ declare class ToastRef {
|
|
|
89
89
|
declare class ToastService {
|
|
90
90
|
private _overlayService;
|
|
91
91
|
private _injector;
|
|
92
|
-
private _toastRef
|
|
92
|
+
private _toastRef?;
|
|
93
93
|
constructor(_overlayService: Overlay, _injector: Injector);
|
|
94
94
|
open(body: string, header?: string, style?: string): ToastRef;
|
|
95
95
|
open(config: ToastConfig): ToastRef;
|
|
@@ -10,7 +10,7 @@ declare class TooltipDirective implements OnInit, OnDestroy {
|
|
|
10
10
|
private elementRef;
|
|
11
11
|
private destroyRef;
|
|
12
12
|
private viewRef;
|
|
13
|
-
content: _angular_core.InputSignal<string | TemplateRef<any
|
|
13
|
+
content: _angular_core.InputSignal<string | TemplateRef<any> | null | undefined>;
|
|
14
14
|
placement: _angular_core.InputSignal<TooltipPlacement>;
|
|
15
15
|
private portal;
|
|
16
16
|
private overlayRef?;
|
package/data/index.d.ts
CHANGED
|
@@ -1,74 +1,109 @@
|
|
|
1
1
|
import * as rxjs from 'rxjs';
|
|
2
|
-
import {
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* DataRequest class represents a request for data with pagination, filtering, sorting, and field selection.
|
|
6
|
+
* It is used to encapsulate the parameters needed to fetch data from a data source.
|
|
7
|
+
* It can be used with various data sources such as HTTP services, in-memory arrays, etc.
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
4
10
|
declare class DataRequest {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
computeTotal: boolean;
|
|
8
|
-
filters: DataRequestFilter[];
|
|
11
|
+
page?: DataRequestPage;
|
|
12
|
+
filters?: DataRequestFilter[];
|
|
9
13
|
sort?: DataRequestSort;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
select?: string[];
|
|
15
|
+
computeTotal?: boolean;
|
|
16
|
+
constructor(options?: {
|
|
17
|
+
pageIndex?: number;
|
|
18
|
+
pageSize?: number;
|
|
19
|
+
filters?: DataRequestFilter[];
|
|
20
|
+
sort?: DataRequestSort;
|
|
21
|
+
select?: string[];
|
|
22
|
+
computeTotal?: boolean;
|
|
23
|
+
});
|
|
15
24
|
}
|
|
16
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Represents a page in a DataRequest.
|
|
27
|
+
* @property index The index of the page (0-based).
|
|
28
|
+
* @property size The size of the page (number of items per page).
|
|
29
|
+
*/
|
|
30
|
+
interface DataRequestPage {
|
|
31
|
+
index: number;
|
|
32
|
+
size: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Represents a sorting option in a DataRequest.
|
|
36
|
+
* @property field The field to sort by.
|
|
37
|
+
* @property asc Whether to sort in ascending order.
|
|
38
|
+
*/
|
|
39
|
+
interface DataRequestSort {
|
|
17
40
|
field: string;
|
|
18
|
-
asc
|
|
19
|
-
constructor(field: string, asc?: boolean);
|
|
41
|
+
asc?: boolean;
|
|
20
42
|
}
|
|
21
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Represents a filter in a DataRequest.
|
|
45
|
+
* @property field The field to filter by.
|
|
46
|
+
* @property value The value to filter by.
|
|
47
|
+
* @property operator The operator to use for filtering.
|
|
48
|
+
*/
|
|
49
|
+
interface DataRequestFilter {
|
|
22
50
|
field: string;
|
|
23
51
|
value?: string;
|
|
24
|
-
operator:
|
|
25
|
-
constructor(field: string, value?: string, operator?: DataRequestFilterOperator);
|
|
26
|
-
}
|
|
27
|
-
declare enum DataRequestFilterOperator {
|
|
28
|
-
EQ = 0,
|
|
29
|
-
NEQ = 1,
|
|
30
|
-
LT = 2,
|
|
31
|
-
LTE = 3,
|
|
32
|
-
GT = 4,
|
|
33
|
-
GTE = 5,
|
|
34
|
-
LI = 6,
|
|
35
|
-
SW = 7
|
|
52
|
+
operator: any;
|
|
36
53
|
}
|
|
37
54
|
|
|
38
55
|
declare class DataResult<T = any> {
|
|
39
|
-
readonly request: DataRequest;
|
|
40
56
|
readonly data: T[];
|
|
41
|
-
readonly total?: number;
|
|
42
|
-
constructor(
|
|
57
|
+
readonly total?: number | undefined;
|
|
58
|
+
constructor(data: T[], total?: number | undefined);
|
|
43
59
|
}
|
|
44
60
|
|
|
45
61
|
declare abstract class DataSource<T = any> {
|
|
46
62
|
protected _loading: boolean;
|
|
47
|
-
protected changeSubject: Subject<unknown>;
|
|
48
|
-
readonly change: Observable<unknown>;
|
|
49
63
|
constructor();
|
|
50
64
|
get loading(): boolean;
|
|
51
65
|
protected setLoading(value: boolean): void;
|
|
52
66
|
abstract load(request: DataRequest): Observable<DataResult>;
|
|
53
67
|
}
|
|
54
68
|
|
|
55
|
-
|
|
69
|
+
/**
|
|
70
|
+
* DataLoader is a function that takes a DataRequest and returns an Observable of DataResult.
|
|
71
|
+
* It is used by AsyncDataSource to load data asynchronously.
|
|
72
|
+
*/
|
|
73
|
+
type DataLoader = (request: DataRequest) => Observable<DataResult>;
|
|
74
|
+
/**
|
|
75
|
+
* AsyncDataSource is a DataSource that loads data asynchronously using a DataLoader function.
|
|
76
|
+
* It is used to fetch data from a remote source, such as an API.
|
|
77
|
+
*/
|
|
56
78
|
declare class AsyncDataSource extends DataSource {
|
|
57
79
|
private readonly loader;
|
|
58
|
-
constructor(loader:
|
|
80
|
+
constructor(loader: DataLoader);
|
|
59
81
|
load(request: DataRequest): Observable<DataResult<any>>;
|
|
60
82
|
}
|
|
61
83
|
|
|
62
84
|
declare class ArrayDataSource extends DataSource {
|
|
63
85
|
private items;
|
|
86
|
+
private _insertSubject;
|
|
87
|
+
private _updateSubject;
|
|
88
|
+
private _removeSubject;
|
|
89
|
+
readonly inserted: rxjs.Observable<{
|
|
90
|
+
items: any[];
|
|
91
|
+
}>;
|
|
92
|
+
readonly removed: rxjs.Observable<{
|
|
93
|
+
item: any;
|
|
94
|
+
index: number;
|
|
95
|
+
}>;
|
|
96
|
+
readonly updated: rxjs.Observable<{
|
|
97
|
+
item: any;
|
|
98
|
+
index: number;
|
|
99
|
+
}>;
|
|
64
100
|
constructor(items: any[]);
|
|
65
101
|
load(request: DataRequest): rxjs.Observable<DataResult<any>>;
|
|
66
102
|
remove(item: any): void;
|
|
67
|
-
insert(
|
|
68
|
-
set(items: any[]): void;
|
|
103
|
+
insert(...items: any[]): void;
|
|
69
104
|
}
|
|
70
105
|
|
|
71
106
|
declare function toDataResult<T = any>(dr: DataRequest): (source: Observable<any>) => Observable<DataResult<T>>;
|
|
72
107
|
|
|
73
|
-
export { ArrayDataSource, AsyncDataSource, DataRequest,
|
|
74
|
-
export type {
|
|
108
|
+
export { ArrayDataSource, AsyncDataSource, DataRequest, DataResult, DataSource, toDataResult };
|
|
109
|
+
export type { DataLoader, DataRequestFilter, DataRequestPage, DataRequestSort };
|
|
@@ -25,9 +25,15 @@ function flipPlacement(placement) {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
function formatString(str, ...args) {
|
|
29
|
+
return str.replace(/\{(\d+)\}/g, function (match, index) {
|
|
30
|
+
return args[index];
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
28
34
|
/**
|
|
29
35
|
* Generated bundle index. Do not edit.
|
|
30
36
|
*/
|
|
31
37
|
|
|
32
|
-
export { RTL, fillArray, flipPlacement, numberRange };
|
|
38
|
+
export { RTL, fillArray, flipPlacement, formatString, numberRange };
|
|
33
39
|
//# sourceMappingURL=bootkit-ng0-common.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-common.mjs","sources":["../../../projects/ng0/common/types.ts","../../../projects/ng0/common/utils.ts","../../../projects/ng0/common/bootkit-ng0-common.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\n\r\nexport type Placement = 'start' | 'end' | 'top' | 'bottom';\r\nexport type Alignment = 'start' | 'center' | 'end';\r\nexport const RTL = new InjectionToken<boolean>('RTL Direction');","import { Placement } from \"./types\";\r\n\r\nexport function numberRange(start: number, end: number) {\r\n return Array.from({ length: end - start + 1 }, (_, i) => i + start)\r\n}\r\n\r\nexport function fillArray(start: number, end: number): number[] {\r\n const result: number[] = [];\r\n for (let i = start; i <= end; i++) {\r\n result.push(i);\r\n }\r\n return result;\r\n}\r\n\r\nexport function flipPlacement(placement: Placement) {\r\n switch (placement) {\r\n case 'bottom':\r\n return 'top'\r\n case 'top':\r\n return 'bottom'\r\n case 'start':\r\n return 'end'\r\n case 'end':\r\n return 'start'\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;MAIa,GAAG,GAAG,IAAI,cAAc,CAAU,eAAe;;ACF9C,SAAA,WAAW,CAAC,KAAa,EAAE,GAAW,EAAA;IAClD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACvE;AAEgB,SAAA,SAAS,CAAC,KAAa,EAAE,GAAW,EAAA;IAChD,MAAM,MAAM,GAAa,EAAE;AAC3B,IAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AAC/B,QAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;;AAElB,IAAA,OAAO,MAAM;AACjB;AAEM,SAAU,aAAa,CAAC,SAAoB,EAAA;IAC9C,QAAQ,SAAS;AACb,QAAA,KAAK,QAAQ;AACT,YAAA,OAAO,KAAK;AAChB,QAAA,KAAK,KAAK;AACN,YAAA,OAAO,QAAQ;AACnB,QAAA,KAAK,OAAO;AACR,YAAA,OAAO,KAAK;AAChB,QAAA,KAAK,KAAK;AACN,YAAA,OAAO,OAAO;;AAE1B;;
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-common.mjs","sources":["../../../projects/ng0/common/types.ts","../../../projects/ng0/common/utils.ts","../../../projects/ng0/common/format-string.ts","../../../projects/ng0/common/bootkit-ng0-common.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\n\r\nexport type Placement = 'start' | 'end' | 'top' | 'bottom';\r\nexport type Alignment = 'start' | 'center' | 'end';\r\nexport const RTL = new InjectionToken<boolean>('RTL Direction');","import { Placement } from \"./types\";\r\n\r\nexport function numberRange(start: number, end: number) {\r\n return Array.from({ length: end - start + 1 }, (_, i) => i + start)\r\n}\r\n\r\nexport function fillArray(start: number, end: number): number[] {\r\n const result: number[] = [];\r\n for (let i = start; i <= end; i++) {\r\n result.push(i);\r\n }\r\n return result;\r\n}\r\n\r\nexport function flipPlacement(placement: Placement) {\r\n switch (placement) {\r\n case 'bottom':\r\n return 'top'\r\n case 'top':\r\n return 'bottom'\r\n case 'start':\r\n return 'end'\r\n case 'end':\r\n return 'start'\r\n }\r\n}\r\n","export function formatString(str: string, ...args: any[]) {\r\n return str.replace(/\\{(\\d+)\\}/g, function (match, index) {\r\n return args[index];\r\n });\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;MAIa,GAAG,GAAG,IAAI,cAAc,CAAU,eAAe;;ACF9C,SAAA,WAAW,CAAC,KAAa,EAAE,GAAW,EAAA;IAClD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACvE;AAEgB,SAAA,SAAS,CAAC,KAAa,EAAE,GAAW,EAAA;IAChD,MAAM,MAAM,GAAa,EAAE;AAC3B,IAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AAC/B,QAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;;AAElB,IAAA,OAAO,MAAM;AACjB;AAEM,SAAU,aAAa,CAAC,SAAoB,EAAA;IAC9C,QAAQ,SAAS;AACb,QAAA,KAAK,QAAQ;AACT,YAAA,OAAO,KAAK;AAChB,QAAA,KAAK,KAAK;AACN,YAAA,OAAO,QAAQ;AACnB,QAAA,KAAK,OAAO;AACR,YAAA,OAAO,KAAK;AAChB,QAAA,KAAK,KAAK;AACN,YAAA,OAAO,OAAO;;AAE1B;;SCzBgB,YAAY,CAAC,GAAW,EAAE,GAAG,IAAW,EAAA;IACpD,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,KAAK,EAAE,KAAK,EAAA;AACnD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,KAAC,CAAC;AACN;;ACJA;;AAEG;;;;"}
|