inugami-ng 0.0.22 → 0.0.24
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/fesm2022/inugami-ng-components-inu-aside-menu.mjs +4 -4
- package/fesm2022/inugami-ng-components-inu-aside-menu.mjs.map +1 -1
- package/fesm2022/inugami-ng-components-inu-input-text.mjs +4 -3
- package/fesm2022/inugami-ng-components-inu-input-text.mjs.map +1 -1
- package/fesm2022/inugami-ng-models.mjs.map +1 -1
- package/fesm2022/inugami-ng-services.mjs +26 -0
- package/fesm2022/inugami-ng-services.mjs.map +1 -1
- package/package.json +1 -1
- package/types/inugami-ng-components-inu-input-text.d.ts +2 -1
- package/types/inugami-ng-models.d.ts +1 -0
- package/types/inugami-ng-services.d.ts +1 -0
|
@@ -13,11 +13,11 @@ class InuAsideMenuChildren {
|
|
|
13
13
|
currentStyleClass = computed(() => ['inu-aside-menu-children', `level level-${this.level()}`]
|
|
14
14
|
.join(' '), ...(ngDevMode ? [{ debugName: "currentStyleClass" }] : []));
|
|
15
15
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuAsideMenuChildren, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: InuAsideMenuChildren, isStandalone: true, selector: "inu-aside-menu-children", inputs: { children: { classPropertyName: "children", publicName: "children", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (children()) {\n <div [class]=\"currentStyleClass()\">\n <ul class=\"inu-aside-menu-children-grp\">\n @for (child of children(); track child) {\n <li class=\"inu-aside-menu-children-item\">\n @if (child.title) {\n <div class=\"inu-aside-menu-children-title\">{{ child.title! }}</div>\n }\n @if (child.links) {\n <ul class=\"inu-aside-menu-children-links\">\n @for (childLink of child.links; track childLink) {\n <li class=\"inu-aside-menu-children-link\">\n <div class=\"inu-aside-menu-link-current-link\">\n <div class=\"inu-aside-menu-link-icon\">\n @if (childLink.icon) {\n <inu-icon [icon]=\"childLink.icon\" [size]=\"1.5\"></inu-icon>\n }\n </div>\n\n @if (childLink.path) {\n @if (childLink.external) {\n @if (childLink.target) {\n <a [target]=\"childLink.target\" [href]=\"childLink.path\">{{ childLink.title! }}</a>\n } @else {\n <a [href]=\"childLink.path\">{{ childLink.title! }}</a>\n }\n }\n @else {\n <a [routerLink]=\"childLink.path\" routerLinkActive=\"active\"\n
|
|
16
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: InuAsideMenuChildren, isStandalone: true, selector: "inu-aside-menu-children", inputs: { children: { classPropertyName: "children", publicName: "children", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (children()) {\n <div [class]=\"currentStyleClass()\">\n <ul class=\"inu-aside-menu-children-grp\">\n @for (child of children(); track child) {\n <li class=\"inu-aside-menu-children-item\">\n @if (child.title) {\n <div class=\"inu-aside-menu-children-title\">{{ child.title! }}</div>\n }\n @if (child.links) {\n <ul class=\"inu-aside-menu-children-links\">\n @for (childLink of child.links; track childLink) {\n <li class=\"inu-aside-menu-children-link\">\n <div class=\"inu-aside-menu-link-current-link\">\n <div class=\"inu-aside-menu-link-icon\">\n @if (childLink.icon) {\n <inu-icon [icon]=\"childLink.icon\" [size]=\"1.5\"></inu-icon>\n }\n </div>\n\n @if (childLink.path) {\n @if (childLink.external) {\n @if (childLink.target) {\n <a [target]=\"childLink.target\" [href]=\"childLink.path\">{{ childLink.title! }}</a>\n } @else {\n <a [href]=\"childLink.path\">{{ childLink.title! }}</a>\n }\n }\n @else {\n @if(childLink.fragment){\n <a [routerLink]=\"childLink.path\" routerLinkActive=\"active\"\n [fragment]=\"childLink.fragment!\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ childLink.title! }}</a>\n }\n @else{\n <a [routerLink]=\"childLink.path\" routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ childLink.title! }}</a>\n }\n }\n }\n @else {\n <span>{{childLink.title!}}</span>\n }\n </div>\n\n <div class=\"inu-aside-menu-link-children\">\n @if (childLink.children) {\n <inu-aside-menu-children [children]=\"childLink.children\" [level]=\"level()+1\"></inu-aside-menu-children>\n }\n </div>\n </li>\n }\n </ul>\n }\n </li>\n\n }\n </ul>\n </div>\n}\n", styles: [".inu-aside-menu-children-grp{margin:0;padding:0;padding-left:2rem}.inu-aside-menu-children-grp>li{list-style:none}\n"], dependencies: [{ kind: "component", type: InuAsideMenuChildren, selector: "inu-aside-menu-children", inputs: ["children", "level"] }, { kind: "component", type: InuIcon, selector: "inu-icon", inputs: ["icon", "defaultIcon", "styleclass", "size"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
|
|
17
17
|
}
|
|
18
18
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuAsideMenuChildren, decorators: [{
|
|
19
19
|
type: Component,
|
|
20
|
-
args: [{ selector: 'inu-aside-menu-children', standalone: true, imports: [InuIcon, RouterLinkActive, RouterLink], template: "@if (children()) {\n <div [class]=\"currentStyleClass()\">\n <ul class=\"inu-aside-menu-children-grp\">\n @for (child of children(); track child) {\n <li class=\"inu-aside-menu-children-item\">\n @if (child.title) {\n <div class=\"inu-aside-menu-children-title\">{{ child.title! }}</div>\n }\n @if (child.links) {\n <ul class=\"inu-aside-menu-children-links\">\n @for (childLink of child.links; track childLink) {\n <li class=\"inu-aside-menu-children-link\">\n <div class=\"inu-aside-menu-link-current-link\">\n <div class=\"inu-aside-menu-link-icon\">\n @if (childLink.icon) {\n <inu-icon [icon]=\"childLink.icon\" [size]=\"1.5\"></inu-icon>\n }\n </div>\n\n @if (childLink.path) {\n @if (childLink.external) {\n @if (childLink.target) {\n <a [target]=\"childLink.target\" [href]=\"childLink.path\">{{ childLink.title! }}</a>\n } @else {\n <a [href]=\"childLink.path\">{{ childLink.title! }}</a>\n }\n }\n @else {\n <a [routerLink]=\"childLink.path\" routerLinkActive=\"active\"\n
|
|
20
|
+
args: [{ selector: 'inu-aside-menu-children', standalone: true, imports: [InuIcon, RouterLinkActive, RouterLink], template: "@if (children()) {\n <div [class]=\"currentStyleClass()\">\n <ul class=\"inu-aside-menu-children-grp\">\n @for (child of children(); track child) {\n <li class=\"inu-aside-menu-children-item\">\n @if (child.title) {\n <div class=\"inu-aside-menu-children-title\">{{ child.title! }}</div>\n }\n @if (child.links) {\n <ul class=\"inu-aside-menu-children-links\">\n @for (childLink of child.links; track childLink) {\n <li class=\"inu-aside-menu-children-link\">\n <div class=\"inu-aside-menu-link-current-link\">\n <div class=\"inu-aside-menu-link-icon\">\n @if (childLink.icon) {\n <inu-icon [icon]=\"childLink.icon\" [size]=\"1.5\"></inu-icon>\n }\n </div>\n\n @if (childLink.path) {\n @if (childLink.external) {\n @if (childLink.target) {\n <a [target]=\"childLink.target\" [href]=\"childLink.path\">{{ childLink.title! }}</a>\n } @else {\n <a [href]=\"childLink.path\">{{ childLink.title! }}</a>\n }\n }\n @else {\n @if(childLink.fragment){\n <a [routerLink]=\"childLink.path\" routerLinkActive=\"active\"\n [fragment]=\"childLink.fragment!\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ childLink.title! }}</a>\n }\n @else{\n <a [routerLink]=\"childLink.path\" routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ childLink.title! }}</a>\n }\n }\n }\n @else {\n <span>{{childLink.title!}}</span>\n }\n </div>\n\n <div class=\"inu-aside-menu-link-children\">\n @if (childLink.children) {\n <inu-aside-menu-children [children]=\"childLink.children\" [level]=\"level()+1\"></inu-aside-menu-children>\n }\n </div>\n </li>\n }\n </ul>\n }\n </li>\n\n }\n </ul>\n </div>\n}\n", styles: [".inu-aside-menu-children-grp{margin:0;padding:0;padding-left:2rem}.inu-aside-menu-children-grp>li{list-style:none}\n"] }]
|
|
21
21
|
}], propDecorators: { children: [{ type: i0.Input, args: [{ isSignal: true, alias: "children", required: false }] }], level: [{ type: i0.Input, args: [{ isSignal: true, alias: "level", required: false }] }] } });
|
|
22
22
|
|
|
23
23
|
class InuAsideMenu {
|
|
@@ -26,7 +26,7 @@ class InuAsideMenu {
|
|
|
26
26
|
//==================================================================================================================
|
|
27
27
|
links = input([], ...(ngDevMode ? [{ debugName: "links" }] : []));
|
|
28
28
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuAsideMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: InuAsideMenu, isStandalone: true, selector: "inu-aside-menu", inputs: { links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<aside class=\"inu-aside-menu\">\n @if (links()) {\n <menu>\n\n <ul class=\"inu-aside-menu-links\">\n @for (link of links(); track link) {\n <li class=\"inu-aside-menu-links-item\"\n [ngClass]=\"{'with-children': link.children!=undefined && link.children.length>0}\">\n <div class=\"inu-aside-menu-links-item-current-link\">\n <div class=\"inu-aside-menu-link-icon\">\n @if (link.icon) {\n <inu-icon [icon]=\"link.icon\" [size]=\"1.3\"></inu-icon>\n }\n </div>\n @if (link.path) {\n @if (link.external) {\n @if (link.target) {\n <a [target]=\"link.target\" [href]=\"link.path\">{{ link.title! }}</a>\n } @else {\n <a [href]=\"link.path\">{{ link.title }}</a>\n }\n } @else {\n <a [routerLink]=\"link.path\" routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ link.title! }}</a>\n }\n } @else {\n <span>{{ link.title! }}</span>\n }\n </div>\n\n\n <div class=\"inu-aside-menu-link-children\">\n @if (link.children) {\n <inu-aside-menu-children [children]=\"link.children\"></inu-aside-menu-children>\n }\n </div>\n </li>\n }\n </ul>\n\n </menu>\n }\n</aside>\n", styles: [".inu-aside-menu-links{margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.inu-aside-menu-links .inu-aside-menu-links-item{display:flex;flex-direction:column;list-style:none}.inu-aside-menu-links .inu-aside-menu-links-item.with-children{margin-top:1rem}.inu-aside-menu-links .inu-aside-menu-links-item.with-children>.inu-aside-menu-links-item-current-link{background-color:var(--neutral-light);border-bottom:1px solid transparent}.inu-aside-menu-links .inu-aside-menu-links-item.with-children>.inu-aside-menu-links-item-current-link:hover{border-bottom:1px solid var(--neutral)}.inu-aside-menu-links .inu-aside-menu-links-item .inu-aside-menu-links-item-current-link{padding:.25rem;display:flex;align-items:center;flex-direction:row}.inu-aside-menu-links .inu-aside-menu-links-item .inu-aside-menu-links-item-current-link .inu-aside-menu-link-icon{width:2rem;height:1.5rem;margin-left:.5rem}\n"], dependencies: [{ kind: "component", type: InuIcon, selector: "inu-icon", inputs: ["icon", "defaultIcon", "styleclass", "size"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: InuAsideMenuChildren, selector: "inu-aside-menu-children", inputs: ["children", "level"] }] });
|
|
29
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: InuAsideMenu, isStandalone: true, selector: "inu-aside-menu", inputs: { links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<aside class=\"inu-aside-menu\">\n @if (links()) {\n <menu>\n\n <ul class=\"inu-aside-menu-links\">\n @for (link of links(); track link) {\n <li class=\"inu-aside-menu-links-item\"\n [ngClass]=\"{'with-children': link.children!=undefined && link.children.length>0}\">\n <div class=\"inu-aside-menu-links-item-current-link\">\n <div class=\"inu-aside-menu-link-icon\">\n @if (link.icon) {\n <inu-icon [icon]=\"link.icon\" [size]=\"1.3\"></inu-icon>\n }\n </div>\n @if (link.path) {\n @if (link.external) {\n @if (link.target) {\n <a [target]=\"link.target\" [href]=\"link.path\">{{ link.title! }}</a>\n } @else {\n <a [href]=\"link.path\">{{ link.title }}</a>\n }\n } @else {\n @if(link.fragment){\n <a [routerLink]=\"link.path\" routerLinkActive=\"active\"\n [fragment]=\"link.fragment!\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ link.title! }}</a>\n }\n @else{\n <a [routerLink]=\"link.path\" routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ link.title! }}</a>\n }\n\n }\n } @else {\n <span>{{ link.title! }}</span>\n }\n </div>\n\n\n <div class=\"inu-aside-menu-link-children\">\n @if (link.children) {\n <inu-aside-menu-children [children]=\"link.children\"></inu-aside-menu-children>\n }\n </div>\n </li>\n }\n </ul>\n\n </menu>\n }\n</aside>\n", styles: [".inu-aside-menu-links{margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.inu-aside-menu-links .inu-aside-menu-links-item{display:flex;flex-direction:column;list-style:none}.inu-aside-menu-links .inu-aside-menu-links-item.with-children{margin-top:1rem}.inu-aside-menu-links .inu-aside-menu-links-item.with-children>.inu-aside-menu-links-item-current-link{background-color:var(--neutral-light);border-bottom:1px solid transparent}.inu-aside-menu-links .inu-aside-menu-links-item.with-children>.inu-aside-menu-links-item-current-link:hover{border-bottom:1px solid var(--neutral)}.inu-aside-menu-links .inu-aside-menu-links-item .inu-aside-menu-links-item-current-link{padding:.25rem;display:flex;align-items:center;flex-direction:row}.inu-aside-menu-links .inu-aside-menu-links-item .inu-aside-menu-links-item-current-link .inu-aside-menu-link-icon{width:2rem;height:1.5rem;margin-left:.5rem}\n"], dependencies: [{ kind: "component", type: InuIcon, selector: "inu-icon", inputs: ["icon", "defaultIcon", "styleclass", "size"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: InuAsideMenuChildren, selector: "inu-aside-menu-children", inputs: ["children", "level"] }] });
|
|
30
30
|
}
|
|
31
31
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuAsideMenu, decorators: [{
|
|
32
32
|
type: Component,
|
|
@@ -34,7 +34,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
34
34
|
NgClass,
|
|
35
35
|
RouterLinkActive,
|
|
36
36
|
RouterLink,
|
|
37
|
-
InuAsideMenuChildren], template: "<aside class=\"inu-aside-menu\">\n @if (links()) {\n <menu>\n\n <ul class=\"inu-aside-menu-links\">\n @for (link of links(); track link) {\n <li class=\"inu-aside-menu-links-item\"\n [ngClass]=\"{'with-children': link.children!=undefined && link.children.length>0}\">\n <div class=\"inu-aside-menu-links-item-current-link\">\n <div class=\"inu-aside-menu-link-icon\">\n @if (link.icon) {\n <inu-icon [icon]=\"link.icon\" [size]=\"1.3\"></inu-icon>\n }\n </div>\n @if (link.path) {\n @if (link.external) {\n @if (link.target) {\n <a [target]=\"link.target\" [href]=\"link.path\">{{ link.title! }}</a>\n } @else {\n <a [href]=\"link.path\">{{ link.title }}</a>\n }\n } @else {\n <a [routerLink]=\"link.path\" routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ link.title! }}</a>\n }\n } @else {\n <span>{{ link.title! }}</span>\n }\n </div>\n\n\n <div class=\"inu-aside-menu-link-children\">\n @if (link.children) {\n <inu-aside-menu-children [children]=\"link.children\"></inu-aside-menu-children>\n }\n </div>\n </li>\n }\n </ul>\n\n </menu>\n }\n</aside>\n", styles: [".inu-aside-menu-links{margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.inu-aside-menu-links .inu-aside-menu-links-item{display:flex;flex-direction:column;list-style:none}.inu-aside-menu-links .inu-aside-menu-links-item.with-children{margin-top:1rem}.inu-aside-menu-links .inu-aside-menu-links-item.with-children>.inu-aside-menu-links-item-current-link{background-color:var(--neutral-light);border-bottom:1px solid transparent}.inu-aside-menu-links .inu-aside-menu-links-item.with-children>.inu-aside-menu-links-item-current-link:hover{border-bottom:1px solid var(--neutral)}.inu-aside-menu-links .inu-aside-menu-links-item .inu-aside-menu-links-item-current-link{padding:.25rem;display:flex;align-items:center;flex-direction:row}.inu-aside-menu-links .inu-aside-menu-links-item .inu-aside-menu-links-item-current-link .inu-aside-menu-link-icon{width:2rem;height:1.5rem;margin-left:.5rem}\n"] }]
|
|
37
|
+
InuAsideMenuChildren], template: "<aside class=\"inu-aside-menu\">\n @if (links()) {\n <menu>\n\n <ul class=\"inu-aside-menu-links\">\n @for (link of links(); track link) {\n <li class=\"inu-aside-menu-links-item\"\n [ngClass]=\"{'with-children': link.children!=undefined && link.children.length>0}\">\n <div class=\"inu-aside-menu-links-item-current-link\">\n <div class=\"inu-aside-menu-link-icon\">\n @if (link.icon) {\n <inu-icon [icon]=\"link.icon\" [size]=\"1.3\"></inu-icon>\n }\n </div>\n @if (link.path) {\n @if (link.external) {\n @if (link.target) {\n <a [target]=\"link.target\" [href]=\"link.path\">{{ link.title! }}</a>\n } @else {\n <a [href]=\"link.path\">{{ link.title }}</a>\n }\n } @else {\n @if(link.fragment){\n <a [routerLink]=\"link.path\" routerLinkActive=\"active\"\n [fragment]=\"link.fragment!\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ link.title! }}</a>\n }\n @else{\n <a [routerLink]=\"link.path\" routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ link.title! }}</a>\n }\n\n }\n } @else {\n <span>{{ link.title! }}</span>\n }\n </div>\n\n\n <div class=\"inu-aside-menu-link-children\">\n @if (link.children) {\n <inu-aside-menu-children [children]=\"link.children\"></inu-aside-menu-children>\n }\n </div>\n </li>\n }\n </ul>\n\n </menu>\n }\n</aside>\n", styles: [".inu-aside-menu-links{margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.inu-aside-menu-links .inu-aside-menu-links-item{display:flex;flex-direction:column;list-style:none}.inu-aside-menu-links .inu-aside-menu-links-item.with-children{margin-top:1rem}.inu-aside-menu-links .inu-aside-menu-links-item.with-children>.inu-aside-menu-links-item-current-link{background-color:var(--neutral-light);border-bottom:1px solid transparent}.inu-aside-menu-links .inu-aside-menu-links-item.with-children>.inu-aside-menu-links-item-current-link:hover{border-bottom:1px solid var(--neutral)}.inu-aside-menu-links .inu-aside-menu-links-item .inu-aside-menu-links-item-current-link{padding:.25rem;display:flex;align-items:center;flex-direction:row}.inu-aside-menu-links .inu-aside-menu-links-item .inu-aside-menu-links-item-current-link .inu-aside-menu-link-icon{width:2rem;height:1.5rem;margin-left:.5rem}\n"] }]
|
|
38
38
|
}], propDecorators: { links: [{ type: i0.Input, args: [{ isSignal: true, alias: "links", required: false }] }] } });
|
|
39
39
|
|
|
40
40
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inugami-ng-components-inu-aside-menu.mjs","sources":["../../../projects/inugami-ng/components/inu-aside-menu/children/inu-aside-menu-children.component.ts","../../../projects/inugami-ng/components/inu-aside-menu/children/inu-aside-menu-children.component.html","../../../projects/inugami-ng/components/inu-aside-menu/inu-aside-menu.component.ts","../../../projects/inugami-ng/components/inu-aside-menu/inu-aside-menu.component.html","../../../projects/inugami-ng/components/inu-aside-menu/inugami-ng-components-inu-aside-menu.ts"],"sourcesContent":["import {AfterViewInit, Component, computed, effect, input, signal} from '@angular/core';\nimport {InuIcon} from 'inugami-icons';\nimport {NgClass} from '@angular/common';\nimport {InuSiteLink, InuSiteLinkChildren} from 'inugami-ng/models'\nimport {RouterLink, RouterLinkActive} from '@angular/router'\n\n@Component({\n selector : 'inu-aside-menu-children',\n standalone : true,\n imports : [InuIcon, RouterLinkActive, RouterLink],\n templateUrl: './inu-aside-menu-children.component.html',\n styleUrl : './inu-aside-menu-children.component.scss',\n })\nexport class InuAsideMenuChildren {\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n children = input<InuSiteLinkChildren[]>([]);\n level = input<number>(0);\n currentStyleClass = computed(()=> ['inu-aside-menu-children', `level level-${this.level()}`]\n .join(' '));\n}\n","@if (children()) {\n <div [class]=\"currentStyleClass()\">\n <ul class=\"inu-aside-menu-children-grp\">\n @for (child of children(); track child) {\n <li class=\"inu-aside-menu-children-item\">\n @if (child.title) {\n <div class=\"inu-aside-menu-children-title\">{{ child.title! }}</div>\n }\n @if (child.links) {\n <ul class=\"inu-aside-menu-children-links\">\n @for (childLink of child.links; track childLink) {\n <li class=\"inu-aside-menu-children-link\">\n <div class=\"inu-aside-menu-link-current-link\">\n <div class=\"inu-aside-menu-link-icon\">\n @if (childLink.icon) {\n <inu-icon [icon]=\"childLink.icon\" [size]=\"1.5\"></inu-icon>\n }\n </div>\n\n @if (childLink.path) {\n @if (childLink.external) {\n @if (childLink.target) {\n <a [target]=\"childLink.target\" [href]=\"childLink.path\">{{ childLink.title! }}</a>\n } @else {\n <a [href]=\"childLink.path\">{{ childLink.title! }}</a>\n }\n }\n @else {\n <a [routerLink]=\"childLink.path\" routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ childLink.title! }}</a>\n }\n }\n @else {\n <span>{{childLink.title!}}</span>\n }\n </div>\n\n <div class=\"inu-aside-menu-link-children\">\n @if (childLink.children) {\n <inu-aside-menu-children [children]=\"childLink.children\" [level]=\"level()+1\"></inu-aside-menu-children>\n }\n </div>\n </li>\n }\n </ul>\n }\n </li>\n\n }\n </ul>\n </div>\n}\n","import {AfterViewInit, Component, computed, effect, input, signal} from '@angular/core';\nimport {InuIcon} from 'inugami-icons';\nimport {NgClass} from '@angular/common';\nimport {InuSiteLink} from 'inugami-ng/models'\nimport {RouterLink, RouterLinkActive} from '@angular/router'\nimport {InuAsideMenuChildren} from './children/inu-aside-menu-children.component'\n\n@Component({\n selector: 'inu-aside-menu',\n standalone: true,\n imports: [InuIcon,\n NgClass,\n RouterLinkActive,\n RouterLink,\n InuAsideMenuChildren],\n templateUrl: './inu-aside-menu.component.html',\n styleUrl: './inu-aside-menu.component.scss',\n})\nexport class InuAsideMenu{\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n links = input<InuSiteLink[]>([]);\n\n}\n","<aside class=\"inu-aside-menu\">\n @if (links()) {\n <menu>\n\n <ul class=\"inu-aside-menu-links\">\n @for (link of links(); track link) {\n <li class=\"inu-aside-menu-links-item\"\n [ngClass]=\"{'with-children': link.children!=undefined && link.children.length>0}\">\n <div class=\"inu-aside-menu-links-item-current-link\">\n <div class=\"inu-aside-menu-link-icon\">\n @if (link.icon) {\n <inu-icon [icon]=\"link.icon\" [size]=\"1.3\"></inu-icon>\n }\n </div>\n @if (link.path) {\n @if (link.external) {\n @if (link.target) {\n <a [target]=\"link.target\" [href]=\"link.path\">{{ link.title! }}</a>\n } @else {\n <a [href]=\"link.path\">{{ link.title }}</a>\n }\n } @else {\n <a [routerLink]=\"link.path\" routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ link.title! }}</a>\n }\n } @else {\n <span>{{ link.title! }}</span>\n }\n </div>\n\n\n <div class=\"inu-aside-menu-link-children\">\n @if (link.children) {\n <inu-aside-menu-children [children]=\"link.children\"></inu-aside-menu-children>\n }\n </div>\n </li>\n }\n </ul>\n\n </menu>\n }\n</aside>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inugami-ng-components-inu-aside-menu.mjs","sources":["../../../projects/inugami-ng/components/inu-aside-menu/children/inu-aside-menu-children.component.ts","../../../projects/inugami-ng/components/inu-aside-menu/children/inu-aside-menu-children.component.html","../../../projects/inugami-ng/components/inu-aside-menu/inu-aside-menu.component.ts","../../../projects/inugami-ng/components/inu-aside-menu/inu-aside-menu.component.html","../../../projects/inugami-ng/components/inu-aside-menu/inugami-ng-components-inu-aside-menu.ts"],"sourcesContent":["import {AfterViewInit, Component, computed, effect, input, signal} from '@angular/core';\nimport {InuIcon} from 'inugami-icons';\nimport {NgClass} from '@angular/common';\nimport {InuSiteLink, InuSiteLinkChildren} from 'inugami-ng/models'\nimport {RouterLink, RouterLinkActive} from '@angular/router'\n\n@Component({\n selector : 'inu-aside-menu-children',\n standalone : true,\n imports : [InuIcon, RouterLinkActive, RouterLink],\n templateUrl: './inu-aside-menu-children.component.html',\n styleUrl : './inu-aside-menu-children.component.scss',\n })\nexport class InuAsideMenuChildren {\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n children = input<InuSiteLinkChildren[]>([]);\n level = input<number>(0);\n currentStyleClass = computed(()=> ['inu-aside-menu-children', `level level-${this.level()}`]\n .join(' '));\n}\n","@if (children()) {\n <div [class]=\"currentStyleClass()\">\n <ul class=\"inu-aside-menu-children-grp\">\n @for (child of children(); track child) {\n <li class=\"inu-aside-menu-children-item\">\n @if (child.title) {\n <div class=\"inu-aside-menu-children-title\">{{ child.title! }}</div>\n }\n @if (child.links) {\n <ul class=\"inu-aside-menu-children-links\">\n @for (childLink of child.links; track childLink) {\n <li class=\"inu-aside-menu-children-link\">\n <div class=\"inu-aside-menu-link-current-link\">\n <div class=\"inu-aside-menu-link-icon\">\n @if (childLink.icon) {\n <inu-icon [icon]=\"childLink.icon\" [size]=\"1.5\"></inu-icon>\n }\n </div>\n\n @if (childLink.path) {\n @if (childLink.external) {\n @if (childLink.target) {\n <a [target]=\"childLink.target\" [href]=\"childLink.path\">{{ childLink.title! }}</a>\n } @else {\n <a [href]=\"childLink.path\">{{ childLink.title! }}</a>\n }\n }\n @else {\n @if(childLink.fragment){\n <a [routerLink]=\"childLink.path\" routerLinkActive=\"active\"\n [fragment]=\"childLink.fragment!\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ childLink.title! }}</a>\n }\n @else{\n <a [routerLink]=\"childLink.path\" routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ childLink.title! }}</a>\n }\n }\n }\n @else {\n <span>{{childLink.title!}}</span>\n }\n </div>\n\n <div class=\"inu-aside-menu-link-children\">\n @if (childLink.children) {\n <inu-aside-menu-children [children]=\"childLink.children\" [level]=\"level()+1\"></inu-aside-menu-children>\n }\n </div>\n </li>\n }\n </ul>\n }\n </li>\n\n }\n </ul>\n </div>\n}\n","import {AfterViewInit, Component, computed, effect, input, signal} from '@angular/core';\nimport {InuIcon} from 'inugami-icons';\nimport {NgClass} from '@angular/common';\nimport {InuSiteLink} from 'inugami-ng/models'\nimport {RouterLink, RouterLinkActive} from '@angular/router'\nimport {InuAsideMenuChildren} from './children/inu-aside-menu-children.component'\n\n@Component({\n selector: 'inu-aside-menu',\n standalone: true,\n imports: [InuIcon,\n NgClass,\n RouterLinkActive,\n RouterLink,\n InuAsideMenuChildren],\n templateUrl: './inu-aside-menu.component.html',\n styleUrl: './inu-aside-menu.component.scss',\n})\nexport class InuAsideMenu{\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n links = input<InuSiteLink[]>([]);\n\n}\n","<aside class=\"inu-aside-menu\">\n @if (links()) {\n <menu>\n\n <ul class=\"inu-aside-menu-links\">\n @for (link of links(); track link) {\n <li class=\"inu-aside-menu-links-item\"\n [ngClass]=\"{'with-children': link.children!=undefined && link.children.length>0}\">\n <div class=\"inu-aside-menu-links-item-current-link\">\n <div class=\"inu-aside-menu-link-icon\">\n @if (link.icon) {\n <inu-icon [icon]=\"link.icon\" [size]=\"1.3\"></inu-icon>\n }\n </div>\n @if (link.path) {\n @if (link.external) {\n @if (link.target) {\n <a [target]=\"link.target\" [href]=\"link.path\">{{ link.title! }}</a>\n } @else {\n <a [href]=\"link.path\">{{ link.title }}</a>\n }\n } @else {\n @if(link.fragment){\n <a [routerLink]=\"link.path\" routerLinkActive=\"active\"\n [fragment]=\"link.fragment!\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ link.title! }}</a>\n }\n @else{\n <a [routerLink]=\"link.path\" routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: false }\">{{ link.title! }}</a>\n }\n\n }\n } @else {\n <span>{{ link.title! }}</span>\n }\n </div>\n\n\n <div class=\"inu-aside-menu-link-children\">\n @if (link.children) {\n <inu-aside-menu-children [children]=\"link.children\"></inu-aside-menu-children>\n }\n </div>\n </li>\n }\n </ul>\n\n </menu>\n }\n</aside>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ class InuInputText {
|
|
|
15
15
|
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
16
16
|
icon = input('', ...(ngDevMode ? [{ debugName: "icon" }] : []));
|
|
17
17
|
name = input('', ...(ngDevMode ? [{ debugName: "name" }] : []));
|
|
18
|
+
debounce = input(0, ...(ngDevMode ? [{ debugName: "debounce" }] : []));
|
|
18
19
|
type = input('text', ...(ngDevMode ? [{ debugName: "type" }] : []));
|
|
19
20
|
_required = input(false, { ...(ngDevMode ? { debugName: "_required" } : {}), alias: 'required' });
|
|
20
21
|
// FormValueControl
|
|
@@ -49,7 +50,7 @@ class InuInputText {
|
|
|
49
50
|
// INIT
|
|
50
51
|
//==================================================================================================================
|
|
51
52
|
constructor() {
|
|
52
|
-
this.debouncer.pipe(debounceTime(
|
|
53
|
+
this.debouncer.pipe(debounceTime(this.debounce()), takeUntilDestroyed()).subscribe(val => {
|
|
53
54
|
this.value.set(val);
|
|
54
55
|
this.changed.emit(val);
|
|
55
56
|
});
|
|
@@ -77,14 +78,14 @@ class InuInputText {
|
|
|
77
78
|
this._formField?.state()?.markAsTouched();
|
|
78
79
|
}
|
|
79
80
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuInputText, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
80
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: InuInputText, isStandalone: true, selector: "inu-input-text", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, _required: { classPropertyName: "_required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", changed: "changed" }, providers: [], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "<div [class]=\"_styleClass()\">\n <div class=\"inu-input-text-label\">\n @if(icon()){\n <inu-icon [icon]=\"icon()!\" [size]=\"1\"></inu-icon>\n }\n @if (label()) {\n <label [for]=\"id()\">{{ label()! }}</label>\n }\n @if (_required()) {\n <inu-icon icon=\"required\" [size]=\"0.5\"></inu-icon>\n }\n </div>\n\n <input [id]=\"id()\"\n [name]=\"name()!\"\n [type]=\"type()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (focusin)=\"onFocus()\"\n (focusout)=\"onFocusOut()\"\n (blur)=\"_formField?.state()?.markAsTouched()\"\n (keyup)=\"onChanged($event)\" #input>\n</div>\n", styles: [".inu-input-text{display:flex;flex-direction:column;width:100%}.inu-input-text label{font-weight:700;font-size:90%;width:auto;transition:color .25s}.inu-input-text inu-icon{width:1rem}.inu-input-text input{border:none;border-bottom:2px solid var(--neutral);transition:border-bottom .25s;outline:none}.inu-input-text input:focus{border-bottom:2px solid var(--secondary-light)}.inu-input-text input.disabled{border-bottom:2px solid var(--neutral-light)}.inu-input-text .inu-input-text-label{display:flex;flex-direction:row;gap:.5rem}.inu-input-text.focus .inu-input-text-label{color:var(--secondary-light);fill:var(--secondary-light)}.inu-input-text.invalid input{border-bottom:1px solid var(--danger)}.inu-input-text.invalid .inu-input-text-label{color:var(--danger);fill:var(--danger)}\n"], dependencies: [{ kind: "component", type: InuIcon, selector: "inu-icon", inputs: ["icon", "defaultIcon", "styleclass", "size"] }] });
|
|
81
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: InuInputText, isStandalone: true, selector: "inu-input-text", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, debounce: { classPropertyName: "debounce", publicName: "debounce", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, _required: { classPropertyName: "_required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", changed: "changed" }, providers: [], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "<div [class]=\"_styleClass()\">\n <div class=\"inu-input-text-label\">\n @if(icon()){\n <inu-icon [icon]=\"icon()!\" [size]=\"1\"></inu-icon>\n }\n @if (label()) {\n <label [for]=\"id()\">{{ label()! }}</label>\n }\n @if (_required()) {\n <inu-icon icon=\"required\" [size]=\"0.5\"></inu-icon>\n }\n </div>\n\n <input [id]=\"id()\"\n [name]=\"name()!\"\n [type]=\"type()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (focusin)=\"onFocus()\"\n (focusout)=\"onFocusOut()\"\n (blur)=\"_formField?.state()?.markAsTouched()\"\n (keyup)=\"onChanged($event)\" #input>\n</div>\n", styles: [".inu-input-text{display:flex;flex-direction:column;width:100%}.inu-input-text label{font-weight:700;font-size:90%;width:auto;transition:color .25s}.inu-input-text inu-icon{width:1rem}.inu-input-text input{border:none;border-bottom:2px solid var(--neutral);transition:border-bottom .25s;outline:none}.inu-input-text input:focus{border-bottom:2px solid var(--secondary-light)}.inu-input-text input.disabled{border-bottom:2px solid var(--neutral-light)}.inu-input-text .inu-input-text-label{display:flex;flex-direction:row;gap:.5rem}.inu-input-text.focus .inu-input-text-label{color:var(--secondary-light);fill:var(--secondary-light)}.inu-input-text.invalid input{border-bottom:1px solid var(--danger)}.inu-input-text.invalid .inu-input-text-label{color:var(--danger);fill:var(--danger)}\n"], dependencies: [{ kind: "component", type: InuIcon, selector: "inu-icon", inputs: ["icon", "defaultIcon", "styleclass", "size"] }] });
|
|
81
82
|
}
|
|
82
83
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuInputText, decorators: [{
|
|
83
84
|
type: Component,
|
|
84
85
|
args: [{ selector: 'inu-input-text', standalone: true, providers: [], imports: [
|
|
85
86
|
InuIcon
|
|
86
87
|
], template: "<div [class]=\"_styleClass()\">\n <div class=\"inu-input-text-label\">\n @if(icon()){\n <inu-icon [icon]=\"icon()!\" [size]=\"1\"></inu-icon>\n }\n @if (label()) {\n <label [for]=\"id()\">{{ label()! }}</label>\n }\n @if (_required()) {\n <inu-icon icon=\"required\" [size]=\"0.5\"></inu-icon>\n }\n </div>\n\n <input [id]=\"id()\"\n [name]=\"name()!\"\n [type]=\"type()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (focusin)=\"onFocus()\"\n (focusout)=\"onFocusOut()\"\n (blur)=\"_formField?.state()?.markAsTouched()\"\n (keyup)=\"onChanged($event)\" #input>\n</div>\n", styles: [".inu-input-text{display:flex;flex-direction:column;width:100%}.inu-input-text label{font-weight:700;font-size:90%;width:auto;transition:color .25s}.inu-input-text inu-icon{width:1rem}.inu-input-text input{border:none;border-bottom:2px solid var(--neutral);transition:border-bottom .25s;outline:none}.inu-input-text input:focus{border-bottom:2px solid var(--secondary-light)}.inu-input-text input.disabled{border-bottom:2px solid var(--neutral-light)}.inu-input-text .inu-input-text-label{display:flex;flex-direction:row;gap:.5rem}.inu-input-text.focus .inu-input-text-label{color:var(--secondary-light);fill:var(--secondary-light)}.inu-input-text.invalid input{border-bottom:1px solid var(--danger)}.inu-input-text.invalid .inu-input-text-label{color:var(--danger);fill:var(--danger)}\n"] }]
|
|
87
|
-
}], ctorParameters: () => [], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], _required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], changed: [{ type: i0.Output, args: ["changed"] }], input: [{ type: i0.ViewChild, args: ['input', { isSignal: true }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }] } });
|
|
88
|
+
}], ctorParameters: () => [], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], debounce: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounce", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], _required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], changed: [{ type: i0.Output, args: ["changed"] }], input: [{ type: i0.ViewChild, args: ['input', { isSignal: true }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }] } });
|
|
88
89
|
|
|
89
90
|
/**
|
|
90
91
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inugami-ng-components-inu-input-text.mjs","sources":["../../../projects/inugami-ng/components/inu-input-text/inu-input-text.component.ts","../../../projects/inugami-ng/components/inu-input-text/inu-input-text.component.html","../../../projects/inugami-ng/components/inu-input-text/inugami-ng-components-inu-input-text.ts"],"sourcesContent":["import {\n Component,\n computed,\n ElementRef, inject,\n input,\n InputSignal,\n model,\n ModelSignal,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport {FormField, FormValueControl} from '@angular/forms/signals';\nimport {UuidUtils} from 'inugami-ng/utils';\nimport {debounceTime, Subject} from 'rxjs';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {InuIcon} from 'inugami-icons';\n\n@Component({\n selector: 'inu-input-text',\n standalone: true,\n providers: [],\n imports: [\n InuIcon\n\n ],\n templateUrl: './inu-input-text.component.html',\n styleUrl: './inu-input-text.component.scss',\n})\nexport class InuInputText implements FormValueControl<string | number>,FormValueControl<string | number> {\n\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n // input\n readonly disabled = input(false);\n readonly label = input('');\n readonly icon = input('');\n readonly name = input('');\n readonly type: InputSignal<string | 'text' | 'number' | 'email' | 'password'> = input('text');\n readonly _required = input(false, {alias: 'required'});\n\n\n // FormValueControl\n _formField = inject(FormField, { optional: true });\n value: ModelSignal<string | number> = model<string | number>('');\n valid = computed(() => {\n const state = this._formField?.state()\n if (!state) return true;\n const isInvalid = state.invalid();\n const hasBeenTouched = state.touched();\n return !(isInvalid && hasBeenTouched);\n });\n // internal\n changed = output<string | number>();\n debouncer = new Subject<string | number>();\n\n id = computed<string>(() => UuidUtils.buildUid());\n input = viewChild<ElementRef<HTMLInputElement>>('input');\n focus=signal<boolean>(false);\n styleClass = input<string>('');\n _styleClass = computed<string>(() => {\n return [\n 'inu-input',\n 'inu-input-text',\n this.disabled() ? 'disabled' : '',\n !this.valid() ? 'invalid' : '',\n this.focus() ? 'focus' : '',\n this.styleClass()!\n ].join(' ');\n })\n\n //==================================================================================================================\n // INIT\n //==================================================================================================================\n constructor() {\n this.debouncer.pipe(\n debounceTime(
|
|
1
|
+
{"version":3,"file":"inugami-ng-components-inu-input-text.mjs","sources":["../../../projects/inugami-ng/components/inu-input-text/inu-input-text.component.ts","../../../projects/inugami-ng/components/inu-input-text/inu-input-text.component.html","../../../projects/inugami-ng/components/inu-input-text/inugami-ng-components-inu-input-text.ts"],"sourcesContent":["import {\n Component,\n computed,\n ElementRef, inject,\n input,\n InputSignal,\n model,\n ModelSignal,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport {FormField, FormValueControl} from '@angular/forms/signals';\nimport {UuidUtils} from 'inugami-ng/utils';\nimport {debounceTime, Subject} from 'rxjs';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {InuIcon} from 'inugami-icons';\n\n@Component({\n selector: 'inu-input-text',\n standalone: true,\n providers: [],\n imports: [\n InuIcon\n\n ],\n templateUrl: './inu-input-text.component.html',\n styleUrl: './inu-input-text.component.scss',\n})\nexport class InuInputText implements FormValueControl<string | number>,FormValueControl<string | number> {\n\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n // input\n readonly disabled = input(false);\n readonly label = input('');\n readonly icon = input('');\n readonly name = input('');\n readonly debounce = input<number>(0);\n readonly type: InputSignal<string | 'text' | 'number' | 'email' | 'password'> = input('text');\n readonly _required = input(false, {alias: 'required'});\n\n\n // FormValueControl\n _formField = inject(FormField, { optional: true });\n value: ModelSignal<string | number> = model<string | number>('');\n valid = computed(() => {\n const state = this._formField?.state()\n if (!state) return true;\n const isInvalid = state.invalid();\n const hasBeenTouched = state.touched();\n return !(isInvalid && hasBeenTouched);\n });\n // internal\n changed = output<string | number>();\n debouncer = new Subject<string | number>();\n\n id = computed<string>(() => UuidUtils.buildUid());\n input = viewChild<ElementRef<HTMLInputElement>>('input');\n focus=signal<boolean>(false);\n styleClass = input<string>('');\n _styleClass = computed<string>(() => {\n return [\n 'inu-input',\n 'inu-input-text',\n this.disabled() ? 'disabled' : '',\n !this.valid() ? 'invalid' : '',\n this.focus() ? 'focus' : '',\n this.styleClass()!\n ].join(' ');\n })\n\n //==================================================================================================================\n // INIT\n //==================================================================================================================\n constructor() {\n this.debouncer.pipe(\n debounceTime(this.debounce()),\n takeUntilDestroyed()\n ).subscribe(val => {\n this.value.set(val);\n this.changed.emit(val);\n });\n }\n\n protected onChanged(event: KeyboardEvent) {\n const input = this.input()?.nativeElement;\n if (!input) {\n return;\n }\n let value: number | string = input.value;\n if ('number' === this.type()) {\n try {\n value = Number(value);\n } catch (e) {\n }\n }\n\n this.debouncer.next(value)\n }\n\n protected onFocus() {\n this.focus.set(true);\n }\n\n protected onFocusOut() {\n this.focus.set(false);\n this._formField?.state()?.markAsTouched();\n }\n}\n","<div [class]=\"_styleClass()\">\n <div class=\"inu-input-text-label\">\n @if(icon()){\n <inu-icon [icon]=\"icon()!\" [size]=\"1\"></inu-icon>\n }\n @if (label()) {\n <label [for]=\"id()\">{{ label()! }}</label>\n }\n @if (_required()) {\n <inu-icon icon=\"required\" [size]=\"0.5\"></inu-icon>\n }\n </div>\n\n <input [id]=\"id()\"\n [name]=\"name()!\"\n [type]=\"type()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (focusin)=\"onFocus()\"\n (focusout)=\"onFocusOut()\"\n (blur)=\"_formField?.state()?.markAsTouched()\"\n (keyup)=\"onChanged($event)\" #input>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inugami-ng-models.mjs","sources":["../../../projects/inugami-ng/models/site-link.model.ts","../../../projects/inugami-ng/models/inugami-ng-models.ts"],"sourcesContent":["export const TARGET_BLANK = '_blank';\nexport const TARGET_SELF = '_self';\nexport const TARGET_PARENT = '_parent';\nexport interface InuSiteLink{\n title:string;\n path?:string;\n icon?:string;\n styleClass?:string;\n external?:boolean;\n target?:'_blank'|'_self'|'_parent',\n children?: InuSiteLinkChildren[];\n gaEvent?:string;\n gaCategory?:string;\n}\n\nexport interface InuSiteLinkChildren{\n links?: InuSiteLink[];\n title?:string;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAO,MAAM,YAAY,GAAG;AACrB,MAAM,WAAW,GAAG;AACpB,MAAM,aAAa,GAAG;;ACF7B;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"inugami-ng-models.mjs","sources":["../../../projects/inugami-ng/models/site-link.model.ts","../../../projects/inugami-ng/models/inugami-ng-models.ts"],"sourcesContent":["export const TARGET_BLANK = '_blank';\nexport const TARGET_SELF = '_self';\nexport const TARGET_PARENT = '_parent';\nexport interface InuSiteLink{\n title:string;\n path?:string;\n fragment?:string;\n icon?:string;\n styleClass?:string;\n external?:boolean;\n target?:'_blank'|'_self'|'_parent',\n children?: InuSiteLinkChildren[];\n gaEvent?:string;\n gaCategory?:string;\n}\n\nexport interface InuSiteLinkChildren{\n links?: InuSiteLink[];\n title?:string;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAO,MAAM,YAAY,GAAG;AACrB,MAAM,WAAW,GAAG;AACpB,MAAM,aAAa,GAAG;;ACF7B;;AAEG;;;;"}
|
|
@@ -243,6 +243,21 @@ class InuErrorService {
|
|
|
243
243
|
else {
|
|
244
244
|
problem = this.buildDefaultProblem();
|
|
245
245
|
}
|
|
246
|
+
console.log('handlerError', problem);
|
|
247
|
+
if (problem.details) {
|
|
248
|
+
if (problem.details.errorCode) {
|
|
249
|
+
this.showMessageErrorCode(problem.details.errorCode, problem);
|
|
250
|
+
}
|
|
251
|
+
if (problem.details.fields) {
|
|
252
|
+
for (let field of problem.details.fields) {
|
|
253
|
+
if (!field.errorCode
|
|
254
|
+
|| field.errorCode == problem.details.errorCode) {
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
this.showMessageErrorCode(field.errorCode, problem);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
246
261
|
for (let param of (problem.parameters ?? [this.buildDefaultErrorParameter()])) {
|
|
247
262
|
this.showMessage(param, problem);
|
|
248
263
|
}
|
|
@@ -299,6 +314,17 @@ class InuErrorService {
|
|
|
299
314
|
resolveLevel(errorType) {
|
|
300
315
|
return 'functional' == errorType.toLowerCase() ? 'warn' : 'error';
|
|
301
316
|
}
|
|
317
|
+
showMessageErrorCode(errorCode, problem) {
|
|
318
|
+
const errorType = this.resolveErrorLevel(problem.status);
|
|
319
|
+
const errorCodeMessage = this.inuLabelService.getMessage(errorCode);
|
|
320
|
+
const errorCodeTitleMessage = this.inuLabelService.getMessage(`${errorCode}_title`);
|
|
321
|
+
const genericTitle = this.inuLabelService.getMessage(errorType);
|
|
322
|
+
this.inuToastServices.addMessage({
|
|
323
|
+
level: this.resolveLevel(errorType),
|
|
324
|
+
title: errorCodeTitleMessage ?? genericTitle ?? 'Undefined error occurs',
|
|
325
|
+
message: errorCodeMessage ?? 'some error occurs'
|
|
326
|
+
});
|
|
327
|
+
}
|
|
302
328
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuErrorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
303
329
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuErrorService, providedIn: 'root' });
|
|
304
330
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inugami-ng-services.mjs","sources":["../../../projects/inugami-ng/services/cache.service.tracking.ts","../../../projects/inugami-ng/services/cache.service.ts","../../../projects/inugami-ng/services/label.service.ts","../../../projects/inugami-ng/services/error.service.ts","../../../projects/inugami-ng/services/svg.asset.utils.ts","../../../projects/inugami-ng/services/svg.utils.ts","../../../projects/inugami-ng/services/svg.color.utils.ts","../../../projects/inugami-ng/services/inugami-ng-services.ts"],"sourcesContent":["import {EnvironmentProviders, makeEnvironmentProviders, signal, WritableSignal} from '@angular/core'\nimport {UuidUtils} from 'inugami-ng/utils'\n\nexport interface CacheServiceTrackingOptions {\n env: WritableSignal<string>,\n sessionUid: WritableSignal<string>,\n application: WritableSignal<string>,\n version: WritableSignal<string>\n}\n\nexport function provideCacheTracking(options: CacheServiceTrackingOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide : CacheServiceTracking,\n useValue: new CacheServiceTracking(options)\n }\n ]);\n}\n\n\nexport class CacheServiceTracking {\n env = signal<string>('dev');\n sessionUid = signal<string>(UuidUtils.buildUid());\n application = signal<string>('');\n version = signal<string>('');\n\n\n constructor(options: CacheServiceTrackingOptions) {\n this.env = options.env;\n this.sessionUid = options.sessionUid;\n this.application = options.application;\n this.version = options.version;\n }\n\n}\n","import {computed, inject, Injectable, signal} from \"@angular/core\";\nimport {Observable} from \"rxjs\";\nimport {CacheServiceTracking} from './cache.service.tracking'\nimport {InuStringUtils, ObservableSubscriber, UuidUtils} from 'inugami-ng/utils'\n\n\nexport const TTL_UNLIMITED = -1\nexport const TTL_MIN = 60000;\nexport const TTL_MIN_5 = 5 * 60000;\nexport const TTL_MIN_10 = 10 * 60000;\nexport const TTL_MIN_30 = 30 * 60000;\nexport const TTL_HOUR = 60 * 60000;\nexport const TTL_HALF_DAY = 12 * 60 * 60000;\nexport const TTL_DAY = 24 * 60 * 60000;\n\nconst PENDING_REQUESTS: Map<string, ObservableSubscriber<any>> = new Map();\nconst FALLBACK_CACHE: any = {};\n\ninterface TtlValue {\n key: string,\n value: any,\n ttl: number\n}\n\n\n@Injectable({providedIn: 'root'})\nexport class InuCacheServices {\n\n //==================================================================================================================\n // API\n //==================================================================================================================\n\n private cacheServiceTracking = inject(CacheServiceTracking, {optional: true});\n private localStorage = computed<Storage>(() => window.localStorage);\n private sessionStorage = computed<Storage>(() => window.sessionStorage);\n private tracking = signal<CacheServiceTracking>(this.cacheServiceTracking ?? new CacheServiceTracking(\n {\n sessionUid : signal<string>(UuidUtils.buildUid()),\n env : signal<string>('PRD'),\n application: signal<string>('inugami'),\n version : signal<string>('0.0.0')\n }\n ))\n\n //==================================================================================================================\n // API\n //==================================================================================================================\n public get<T>(key: string): T | undefined {\n const realKey = this.buildKey(key);\n return this.getFromSessionStorage(realKey);\n }\n\n public getTTL<T>(key: string): T | undefined {\n const realKey = this.buildKeyTTL(key);\n return this.getFromLocalStorage(realKey);\n }\n\n public set(key: string, value: any): void {\n const realKey = this.buildKey(key);\n this.setInSessionStorage(realKey, value)\n\n const pending = PENDING_REQUESTS.get(realKey);\n pending?.subscriber()?.next(value);\n PENDING_REQUESTS.delete(realKey);\n }\n\n public setTTL(key: string, value: any, ttl: number): void {\n const realKey = this.buildKeyTTL(key);\n const valueTTL = ttl == TTL_UNLIMITED ? TTL_UNLIMITED : new Date().getTime() + ttl;\n this.setInLocalStorage(realKey, value, valueTTL);\n\n const pending = PENDING_REQUESTS.get(realKey);\n pending?.subscriber()?.next(value);\n PENDING_REQUESTS.delete(realKey);\n }\n\n public getPending(key: string): Observable<any> | undefined {\n const realKey = this.buildKey(key);\n return this.processGetPending(realKey)\n }\n\n public getPendingTTL(key: string): Observable<any> | undefined {\n const realKey = this.buildKeyTTL(key);\n return this.processGetPending(realKey)\n }\n\n public setPending(key: string, obs: Observable<any>): void {\n const realKey = this.buildKey(key);\n this.processSetPending(key, obs)\n }\n\n public setPendingTTL(key: string, obs: Observable<any>): void {\n const realKey = this.buildKey(key);\n this.processSetPending(key, obs)\n }\n\n public clearKey(key: string) {\n this.localStorage().removeItem(this.buildKey(key));\n }\n\n public clearKeyTTL(key: string) {\n this.sessionStorage().removeItem(this.buildKeyTTL(key));\n }\n\n public clear() {\n this.localStorage().clear();\n this.sessionStorage().clear();\n }\n\n //==================================================================================================================\n // INTERNAL\n //==================================================================================================================\n private processGetPending(realKey: string) {\n let result: ObservableSubscriber<any> | undefined = PENDING_REQUESTS.get(realKey);\n return !result ? undefined : result?.observable();\n }\n\n private processSetPending(realKey: string, obs: Observable<any>) {\n const subscriber = new ObservableSubscriber<any>();\n PENDING_REQUESTS.set(realKey, subscriber);\n\n obs.subscribe({\n next: res => subscriber.subscriber()?.next(res)\n });\n }\n\n //====================================================================================================================\n // READ from storage\n //====================================================================================================================\n private getFromSessionStorage<T>(realKey: string): T | undefined {\n let rawData:string|null|undefined = this.sessionStorage().getItem(realKey);\n if(!rawData){\n rawData = FALLBACK_CACHE[realKey];\n }\n return this.extractStoredValue(rawData, realKey);\n }\n\n private getFromLocalStorage<T>(realKey: string): T | undefined {\n let rawData:string|null|undefined = this.localStorage().getItem(realKey);\n if(!rawData){\n rawData = FALLBACK_CACHE[realKey];\n }\n return this.extractStoredValue(rawData, realKey);\n }\n\n\n private extractStoredValue(rawValue: string|undefined | null, realKey: string) {\n if (!rawValue) {\n return undefined;\n }\n let valueWrapper: TtlValue | undefined = undefined;\n try {\n valueWrapper = JSON.parse(rawValue);\n } catch (e) {\n }\n if (!valueWrapper) {\n return undefined;\n }\n\n if (valueWrapper.ttl == TTL_UNLIMITED) {\n return valueWrapper.value;\n }\n\n const now = new Date().getTime();\n if (now > valueWrapper.ttl) {\n this.sessionStorage().removeItem(realKey)\n return undefined;\n } else {\n return valueWrapper.value;\n }\n }\n\n //====================================================================================================================\n // WRITE in storage\n //====================================================================================================================\n private setInSessionStorage(realKey: string, value: any) {\n this.writeInStorage(realKey, value, TTL_UNLIMITED, this.sessionStorage());\n }\n\n private setInLocalStorage(realKey: string, value: any, ttl: number) {\n this.writeInStorage(realKey, value, ttl, this.sessionStorage());\n }\n\n private writeInStorage(realKey: string, value: any, ttl: number, storage: Storage) {\n const wrapper: TtlValue = {\n key : realKey,\n ttl : ttl,\n value: value\n };\n\n const data = JSON.stringify(wrapper);\n try {\n storage.setItem(realKey, data);\n } catch (e) {\n FALLBACK_CACHE[realKey] = data;\n }\n }\n\n private buildKey(key: string) {\n const tracking = this.tracking();\n return InuStringUtils.normalize(`${tracking.env()}_${tracking.application()}_${tracking.version()}_${tracking.sessionUid()}_${key}`)\n }\n\n private buildKeyTTL(key: string) {\n const tracking = this.tracking();\n return InuStringUtils.normalize(`${tracking.env()}_${tracking.application()}_${tracking.version()}_${key}`);\n }\n\n\n}\n","import {Injectable} from '@angular/core'\n\n@Injectable({providedIn: 'root'})\nexport class InuLabelService {\n\n\n //====================================================================================================================\n // ATTRIBUTES\n //====================================================================================================================\n\n\n\n //====================================================================================================================\n // API\n //====================================================================================================================\n\n getMessage(key ?: string, defaultValue?: string): string | undefined {\n return undefined;\n }\n}\n","import {inject, Injectable} from '@angular/core'\nimport {catchError, forkJoin, Observable, of} from 'rxjs'\nimport {InuLabelService} from './label.service'\nimport {ProblemDTO, ProblemParameterDTO} from 'inugami-ng/models'\nimport {HttpErrorResponse} from '@angular/common/http'\nimport {InuToastServices} from 'inugami-ng/components/inu-toast'\n\n@Injectable({providedIn: 'root'})\nexport class InuErrorService {\n\n //====================================================================================================================\n // ATTRIBUTES\n //====================================================================================================================\n inuLabelService = inject(InuLabelService);\n inuToastServices = inject(InuToastServices);\n\n //====================================================================================================================\n // API\n //====================================================================================================================\n public forkJoin(observables: Observable<any>[]): Observable<any[] | ProblemDTO[]> {\n const tasks: Observable<any>[] = [];\n\n for (let observable of observables) {\n tasks.push(observable.pipe(catchError(e => of(this.handlerError(e)))));\n }\n return forkJoin(tasks);\n }\n\n\n //====================================================================================================================\n // INTERNAL\n //====================================================================================================================\n public handlerError(error: any): ProblemDTO {\n let problem: ProblemDTO | undefined = undefined;\n if (this.isProblemDTO(error)) {\n problem = error as ProblemDTO;\n } else if (this.isHttpError(error)) {\n problem = this.extractProblemFormHttpCall(error as HttpErrorResponse);\n } else {\n problem = this.buildDefaultProblem();\n }\n\n for (let param of (problem.parameters ?? [this.buildDefaultErrorParameter()])) {\n this.showMessage(param, problem);\n }\n\n return problem;\n }\n\n\n public isProblemDTO(obj: any): obj is ProblemDTO {\n return obj && obj.status !== undefined && obj.parameters !== undefined;\n }\n\n public isHttpError(error: any): boolean {\n return !!(error && typeof error === 'object' && 'status' in error);\n }\n\n public extractProblemFormHttpCall(httpError: HttpErrorResponse): ProblemDTO {\n if (this.isProblemDTO(httpError.error)) {\n return httpError.error;\n }\n\n return {\n status : httpError.status,\n reasonPhrase: httpError.statusText,\n detail : httpError.message,\n parameters : [this.buildDefaultErrorParameter()],\n timestamp : new Date() as any\n };\n }\n\n private buildDefaultProblem(): ProblemDTO {\n return {\n status : 500,\n parameters: [this.buildDefaultErrorParameter()],\n timestamp : new Date() as any\n };\n }\n\n private buildDefaultErrorParameter() {\n return {\n errorCode: 'err-undefine',\n errorType: 'technical'\n }\n }\n\n public showMessage(param: ProblemParameterDTO, problem: ProblemDTO) {\n const errorType = param.errorType ?? this.resolveErrorLevel(problem.status);\n\n const errorCodeMessage = this.inuLabelService.getMessage(param.errorCode);\n const errorCodeTitleMessage = this.inuLabelService.getMessage(`${param.errorCode}_title`);\n const genericTitle = this.inuLabelService.getMessage(param.errorType);\n this.inuToastServices.addMessage({\n level : this.resolveLevel(errorType),\n title : errorCodeTitleMessage ?? genericTitle ?? 'Undefined error occurs',\n message: errorCodeMessage ?? 'some error occurs'\n });\n }\n\n private resolveErrorLevel(status?: number) {\n if (!status || status == 0) {\n return 'technical';\n }\n return status < 500 ? 'functional' : 'technical';\n }\n\n private resolveLevel(errorType: string) {\n return 'functional' == errorType.toLowerCase() ? 'warn' : 'error';\n }\n}\n","import {Point, Size, SvgAssetDTO, SvgAssetDTOOptions, SvgAssetElement} from 'inugami-ng/models';\nimport {SVG, SVG_ASSETS, SVG_BUILDER, SVG_MATH, SVG_TRANSFORM} from \"./svg.utils\";\nimport {SvgAsset, SvgAssetState, SvgAssetType} from 'inugami-svg-assets';\n\n\nexport class SvgAssetUtils {\n\n public static createAsset(option: SvgAssetDTOOptions): SvgAssetElement | undefined {\n if (!option.parent) {\n return undefined;\n }\n\n const node = SVG_BUILDER.createGroup(option.parent, {});\n if (!node) {\n return undefined;\n }\n option.node = node;\n return new Asset(option);\n }\n}\n\n\n//======================================================================================================================\n// ASSET\n//======================================================================================================================\nconst DEFAULT = 'default';\n\nconst SELECTED = 'selected';\n\nclass Asset implements SvgAssetElement {\n //--------------------------------------------------------------------------------------------------------------------\n // ATTRIBUTES\n //--------------------------------------------------------------------------------------------------------------------\n assetName: string;\n assetSet: string;\n center: Point;\n drag: boolean = false;\n enableHitBox: boolean;\n isometric: boolean;\n name: string;\n node: SVGElement;\n parent: SVGElement | HTMLElement;\n scale: number;\n size: number;\n state: string;\n previousState: string | undefined = undefined;\n styleClass: string;\n title: string;\n type: string;\n x: number;\n y: number;\n\n onover: (event: MouseEvent, asset: SvgAssetElement) => void = (a) => {\n };\n onclick: (event: PointerEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n onmousedown: (event: MouseEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n onmousemove: (event: MouseEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n onmouseleave: (event: MouseEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondblclick: (event: MouseEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondrag: (event: DragEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondrop: (event: DragEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondragend: (event: DragEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondragstart: (event: DragEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondragleave: (event: DragEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondragover: (event: DragEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondragenter: (event: DragEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n\n //--------------------------------------------------------------------------------------------------------------------\n // CONSTRUCTOR\n //--------------------------------------------------------------------------------------------------------------------\n\n constructor(option: SvgAssetDTOOptions) {\n this.parent = option.parent!;\n this.node = option.node!;\n this.center = option.center ? option.center : {x: 0, y: 0};\n this.scale = option.scale ? option.scale : 1;\n this.isometric = option.isometric == undefined ? false : option.isometric;\n this.assetSet = option.asset.assetSet!;\n this.assetName = option.asset.assetName!;\n this.enableHitBox = option.enableHitBox == undefined ? false : option.enableHitBox!;\n this.styleClass = option.styleClass!;\n this.type = option.asset.type ? option.asset.type : DEFAULT;\n this.state = option.asset.state ? option.asset.state : DEFAULT;\n this.name = option.asset.name!;\n this.title = option.title ? option.title : '';\n this.size = option.asset.size == undefined ? 1 : option.asset.size < 0 ? 1 : option.asset.size;\n this.x = this.toNumber(option.asset.x);\n this.y = this.toNumber(option.asset.y);\n this.updateStyleclass();\n this.processUpdateRender();\n this.updatePosition();\n\n }\n\n\n\n //--------------------------------------------------------------------------------------------------------------------\n // CONSTRUCTOR\n //--------------------------------------------------------------------------------------------------------------------\n update(value: SvgAssetDTO, center: Point, scall: number, isometric: boolean): void {\n const previousAssertSet = `${this.assetSet}`;\n const previousAssertName = `${this.assetName}`;\n const previousType = `${this.type}`;\n const previousState = `${this.state}`;\n this.center = center;\n this.scale = scall;\n this.isometric = isometric;\n\n this.updateValue(value);\n this.updateRender(previousAssertSet, previousAssertName, previousType, previousState);\n this.updateStyleclass();\n this.updatePosition();\n }\n\n private updateRender(previousAssertSet: string, previousAssertName: string, previousType: string, previousState: string) {\n if (previousAssertSet == this.assetSet && previousType == this.type && previousState == this.state) {\n return;\n }\n this.processUpdateRender();\n }\n\n private processUpdateRender() {\n this.node.replaceChildren();\n const type = this.findAssetType();\n if (!type) {\n return;\n }\n\n let state = type.states.find(s => s.name == this.state);\n if (!state) {\n state = type.states.find(s => s.name == DEFAULT);\n }\n if (!state) {\n return;\n }\n const self = this;\n let assetStateContent: SVGElement | null | undefined = undefined;\n\n if (this.enableHitBox) {\n const hitboxGrp = SVG_BUILDER.createGroup(this.node, {styleClass: `hitbox-grp`});\n assetStateContent = SVG_BUILDER.createGroup(hitboxGrp, {styleClass: `content`});\n\n if (this.node && hitboxGrp) {\n const size = SVG_MATH.size(this.node);\n SVG_BUILDER.createRect(hitboxGrp, {height: size.height, width: size.width, styleClass: 'hitbox'});\n }\n } else {\n assetStateContent = this.node;\n }\n\n this.renderContent(assetStateContent, state);\n this.bindEvent(this.node);\n }\n\n\n private renderContent(content: SVGElement | null, assetContent: SvgAssetState) {\n if (!content) {\n return;\n }\n content.innerHTML = assetContent.content;\n this.replaceUse(content);\n }\n\n private replaceUse(node: SVGElement, parent?: SVGElement) {\n if (node.nodeName == 'use') {\n this.renderUseTarget(node, parent)\n node.remove();\n } else {\n for (let child of node.children) {\n this.replaceUse(child as SVGElement, node);\n }\n }\n }\n\n private renderUseTarget(node: SVGElement, parent?: SVGElement): void {\n const href = node.getAttribute('href');\n if (!href || !parent) {\n return;\n }\n this.processRenderUseTarget(href, parent);\n }\n\n\n private processRenderUseTarget(id: string, layer: SVGElement | null) {\n const parts = id.replaceAll('#', '').split(':');\n let asset: SvgAsset | undefined = undefined;\n if (parts.length >= 4) {\n asset = SVG_ASSETS.getAsset(parts[0], parts[1]);\n }\n if (asset) {\n const type = asset.types.find(t => t.name == parts[2]);\n let state: SvgAssetState | undefined = undefined;\n if (type) {\n state = type.states.find(s => s.name == parts[3]);\n }\n if (state) {\n const grp = SVG_BUILDER.createGroup(layer);\n if (grp) {\n grp.setAttribute('id', [parts[0], parts[1], parts[2], parts[3]].join(':'));\n grp.innerHTML = state.content;\n }\n\n }\n }\n }\n\n\n updateStyleclass() {\n const styleclass = [\n 'inu-svg-asset',\n this.assetSet,\n 'type-' + this.type,\n 'type-state' + this.state,\n this.name,\n this.styleClass\n ];\n this.node.setAttribute('class', styleclass.join(' '));\n }\n\n private updatePosition() {\n SVG_TRANSFORM.scale(this.node, this.size * this.scale, this.size * this.scale)\n\n this.x = this.center.x + (this.x * this.scale);\n this.y = this.center.y + (this.y * this.scale);\n if (this.isometric) {\n this.y = this.y / Math.sqrt(3);\n }\n\n SVG_TRANSFORM.translateY(this.node, this.y);\n SVG_TRANSFORM.translateX(this.node, this.x);\n }\n\n\n //--------------------------------------------------------------------------------------------------------------------\n // EVENT\n //--------------------------------------------------------------------------------------------------------------------\n private bindEvent(node: SVGElement) {\n const self = this;\n this.node.onmouseenter = (event) => this.onover(event, self);\n this.node.onclick = (event) => this.onclick(event, self);\n this.node.onmousedown = (event) => {\n this.drag = true;\n this.onSelected();\n this.onmousedown(event, self);\n }\n this.node.onmouseup = (event: MouseEvent) => {\n this.drag = false;\n this.onDeselected();\n }\n this.node.onmousemove = (event) => this.onmousemove(event, self);\n this.node.onmouseleave = (event) => this.onmouseleave(event, self);\n this.node.ondblclick = (event) => this.ondblclick(event, self);\n this.node.ondrag = (event) => {\n this.drag = true;\n this.ondrag(event, self);\n };\n this.node.ondrop = (event) => this.ondrop(event, self);\n this.node.ondragend = (event) => {\n this.drag = false;\n this.ondragend(event, self);\n }\n this.node.ondragstart = (event) => {\n this.drag = true;\n this.ondragstart(event, self);\n };\n this.node.ondragleave = (event) => {\n this.drag = false;\n this.ondragleave(event, self);\n };\n this.node.ondragover = (event) => this.ondragover(event, self);\n this.node.ondragenter = (event) => this.ondragenter(event, self);\n }\n\n updateValue(value: SvgAssetDTO) {\n this.assetSet = value.assetSet;\n this.type = value.type ? value.type : DEFAULT;\n this.state = value.state ? value.state : DEFAULT;\n this.name = value.name;\n this.title = value.title ? value.title : '';\n this.size = value.size < 0 ? 1 : value.size;\n this.x = this.toNumber(value.x);\n this.y = this.toNumber(value.y);\n }\n\n\n private onSelected() {\n this.stateChange(SELECTED);\n\n }\n\n private onDeselected() {\n this.stateRevert();\n }\n\n //--------------------------------------------------------------------------------------------------------------------\n // ACTIONS\n //--------------------------------------------------------------------------------------------------------------------\n remove(): void {\n\n }\n\n addStyleClass(style: string): void {\n SVG_TRANSFORM.addClass(this.node, style);\n }\n\n removeStyleClass(style: string): void {\n SVG_TRANSFORM.removeClass(this.node, style);\n }\n\n moveDrag(position: Point, zoom: number): void {\n this.x = this.x - (position.x / zoom);\n this.y = this.y - (position.y / zoom);\n this.move({x: this.x, y: this.y});\n }\n\n move(position: Point): void {\n SVG_TRANSFORM.translateX(this.node, position.x);\n SVG_TRANSFORM.translateY(this.node, position.y);\n\n }\n\n stateChange(state: string): void {\n const type = this.findAssetType();\n const newState = type?.states.find(s => s.name == state);\n if (newState) {\n this.previousState = this.state;\n this.state = newState.name;\n this.processUpdateRender();\n }\n }\n stateRevert(): void {\n if(this.previousState){\n this.state = this.previousState ? this.previousState : DEFAULT;\n this.processUpdateRender();\n this.previousState = undefined;\n }\n }\n\n\n //--------------------------------------------------------------------------------------------------------------------\n // GETTERS\n //--------------------------------------------------------------------------------------------------------------------\n isDrag(): boolean {\n return this.drag;\n }\n\n getComponentSize(): Size {\n return SVG.MATH.size(this.node);\n }\n\n private toNumber(value: any): number {\n if (!value) {\n return 0;\n }\n try {\n const realValue = Number(value);\n return realValue;\n } catch (e) {\n return 0;\n }\n }\n\n\n private findAssetType(): SvgAssetType | undefined {\n let assetContent = SVG_ASSETS.getAsset(this.assetSet, this.assetName);\n if (!assetContent) {\n return;\n }\n let type = assetContent.types.find(t => t.name == this.type);\n if (!type) {\n type = assetContent.types.find(t => t.name == DEFAULT);\n }\n return type;\n }\n}\n","import {\n CircleOption,\n Dimension, Point,\n Position,\n RectOption,\n Size,\n SvgAnimationCallback,\n SvgAnimationOption,\n SvgAnimationParameters,\n SvgAnimations, SvgAssetDTO, SvgAssetDTOOptions, SvgAssetElement, SvgAssets,\n SvgBuilder, SvgDefsPatternOption, SvgFilterOption,\n SvgMath,\n SvgOptionalOption,\n SvgStyle,\n SvgStyleGenerators,\n SvgTransform,\n TextOption,\n TransformationInfo,\n Vector\n} from \"inugami-ng/models\";\nimport {SvgAsset, SvgAssetSet} from 'inugami-svg-assets';\nimport {SvgAssetUtils} from './svg.asset.utils';\n\n\n\nexport const DEFAULT_FONT_SIZE = 12;\nexport const TWO_PI = 2 * Math.PI;\nexport const TWO_PI_RATIO = (2 * Math.PI) / 360;\nexport const DEGRE_CONVERTOR = 180 / Math.PI;\n\n\nconst isNull = (value: any): boolean => {\n return value == undefined || value == null;\n}\n\nconst isNotNull = (value: any): boolean => {\n return value != undefined && value != null;\n}\n\nconst convertToNumber = (value: any): number | null => {\n return value == undefined || value == null ? null : Number(value);\n}\n\n//#############################################################################\n// ASSETS\n//#############################################################################\nconst ASSETS: SvgAssetSet[] = [];\n\nexport const SVG_ASSETS: SvgAssets = {\n getAssetSets: (): SvgAssetSet[] => {\n return ASSETS;\n },\n\n register: (sets: SvgAssetSet[]) => {\n\n for (let set of sets) {\n const savedSet = ASSETS.find(s => s.name === set.name);\n if (!savedSet) {\n ASSETS.push(set);\n continue;\n }\n\n if (!savedSet.assets) {\n savedSet.assets = set.assets;\n continue;\n }\n for (let asset of set.assets) {\n const savedAsset = savedSet.assets.find(a => a.name === asset.name);\n if (savedAsset) {\n savedAsset.types = asset.types;\n savedAsset.attributes = asset.attributes;\n } else {\n savedSet.assets.push(asset);\n }\n }\n }\n },\n getAsset: (setName: string, assetName: string): SvgAsset | undefined => {\n return ASSETS.find(s => s.name === setName)\n ?.assets\n ?.find(a => a.name === assetName);\n }\n}\n\n//#############################################################################\n// SVG_CONST\n//#############################################################################\nexport const SVG_CONST: any = {\n DATETIME_YEAR: 60000 * 1440 * 365,\n MINUTE: 60000,\n NB_MINUTES_PER_DAY: 1440,\n NANO_TO_MILLIS: 1000000\n};\n\n\n//#############################################################################\n// SVG_MATH\n//#############################################################################\nexport const SVG_MATH: SvgMath = {\n convertToRadian: (angle: number): number => {\n return angle * TWO_PI_RATIO;\n },\n\n convertToDegre: (rad: number): number => {\n return rad * DEGRE_CONVERTOR;\n },\n /**\n * Allow to rotate a point by radian angle\n * @param x : number : X position\n * @param y : number : Y position\n * @param angle : number : angle in degre\n */\n rotate: (x: number, y: number, angle: number): Position => {\n var radian = SVG_MATH.convertToRadian(angle);\n var cos = Math.cos(radian);\n var sin = Math.sin(radian);\n\n return {\n x: (x * cos - y * sin),\n y: (x * sin + y * cos)\n };\n },\n\n /**\n * Allow to rotate a point by radian angle\n * @param x : number : X position\n * @param y : number : Y position\n * @param angle : number : angle in degre\n */\n rotateByRef: (xRef: number, yRef: number, x: number, y: number, angle: number): Position => {\n var zX = x - xRef;\n var zY = y - yRef;\n var rotate = SVG_MATH.rotate(zX, zY, angle);\n return {\n x: rotate.x + xRef,\n y: rotate.y + yRef\n }\n },\n\n size: (node: SVGElement | HTMLElement): Size => {\n const info = node.getBoundingClientRect();\n return {\n bottom: info.bottom,\n width: info.width,\n height: info.height,\n left: info.left,\n right: info.right,\n top: info.top,\n x: info.x,\n y: info.y,\n fontratio: isNotNull(node.getAttribute('fontratio')) ? 1 : convertToNumber(node.getAttribute('fontratio'))\n };\n },\n\n computeDimension: (parent: SVGElement | HTMLElement, widthRatio: number | null, heightRatio: number | null, fontRatio: number | null): Dimension => {\n\n\n let resultHeightRatio = heightRatio;\n let resultWidthRatio = widthRatio;\n let resultFontRatio = fontRatio;\n\n if (isNotNull(parent)) {\n let parentSize = SVG_MATH.size(parent);\n resultHeightRatio = 1;\n resultWidthRatio = 1;\n resultFontRatio = 1;\n let parentHeight = 1;\n let parentWidth = 1;\n let parentFont = 1;\n\n let localHeight = parentSize.height\n let localWidth = parentSize.width;\n let localFont = parentSize.fontratio;\n\n if (localHeight) {\n parentHeight = parentHeight * localHeight;\n }\n if (localWidth) {\n parentWidth = parentWidth * localWidth;\n }\n if (localFont) {\n parentFont = parentFont * localFont;\n }\n\n\n if (heightRatio) {\n resultHeightRatio = parentHeight * heightRatio;\n } else {\n resultHeightRatio = parentHeight;\n }\n\n if (widthRatio) {\n resultWidthRatio = parentWidth * widthRatio;\n } else {\n resultWidthRatio = parentWidth;\n }\n\n if (fontRatio) {\n resultFontRatio = parentFont * fontRatio;\n } else {\n resultFontRatio = parentFont;\n }\n }\n\n return {\n \"height\": resultHeightRatio ? resultHeightRatio : 1,\n \"width\": resultWidthRatio ? resultWidthRatio : 1,\n \"font\": resultFontRatio ? resultFontRatio : 1\n }\n },\n\n nowNano: () => {\n return performance.now() + performance.timeOrigin;\n },\n\n zoom: (value: number, zoom: number) => {\n return value * zoom;\n }\n}\n\n\n//#############################################################################\n// SVG_BUILDER\n//#############################################################################\nexport const SVG_BUILDER: SvgBuilder = {\n\n createAsset(option: SvgAssetDTOOptions): SvgAssetElement | undefined {\n return SvgAssetUtils.createAsset(option);\n },\n\n // ========================================================================\n // createDefs\n // ========================================================================\n createDefs: (parent: SVGElement | HTMLElement | null): SVGElement | null => {\n return SVG_BUILDER.createNode('defs', parent, {});\n },\n createFilter: (parentDefs: SVGElement | HTMLElement | null, id: string, option?: SvgFilterOption): SVGElement | null => {\n const result = SVG_BUILDER.createNode('filter', parentDefs, {});\n if (result) {\n result.setAttribute('id', id);\n\n const currentOption = option ? option : {};\n result.setAttribute('height', `${currentOption.height ? currentOption.height : 10}`);\n result.setAttribute('width', `${currentOption.width ? currentOption.width : 10}`);\n result.setAttribute('y', `${currentOption.y ? currentOption.y : 0}`);\n result.setAttribute('y', `${currentOption.x ? currentOption.x : 0}`);\n\n\n if (currentOption.style) {\n result.setAttribute('style', `${currentOption.style}`);\n }\n }\n return result;\n },\n createDefsPattern: (parent: SVGElement | HTMLElement | null, id: string, option?: SvgDefsPatternOption): SVGElement | null => {\n const result = SVG_BUILDER.createNode('pattern', parent, {});\n const currentOption = option ? option : {};\n\n if (result) {\n result.setAttribute('id', id);\n result.setAttribute('x', `${currentOption.x == undefined ? 0 : currentOption.x}`);\n result.setAttribute('y', `${currentOption.y == undefined ? 0 : currentOption.y}`);\n result.setAttribute('width', `${currentOption.width == undefined ? 10 : currentOption.width}`);\n result.setAttribute('height', `${currentOption.height == undefined ? 10 : currentOption.height}`);\n result.setAttribute('patternUnits', `${currentOption.patternUnits == undefined ? 'userSpaceOnUse' : currentOption.patternUnits}`);\n }\n return result;\n },\n // ========================================================================\n // createGroup\n // ========================================================================\n createGroup: (parent: SVGElement | HTMLElement | null, option?: SvgOptionalOption): SVGElement | null => {\n return SVG_BUILDER.createNode('g', parent, option);\n },\n\n // ========================================================================\n // createText\n // ========================================================================\n createText: (label: string, parent: SVGElement, option?: SvgOptionalOption): SVGElement | null => {\n const result = SVG_BUILDER.createNode('text', parent, option);\n\n if (result) {\n result.innerHTML = label;\n return result;\n } else {\n return null;\n }\n },\n\n\n // ========================================================================\n // createLine\n // ========================================================================\n createLine: (vector: Vector, parent: SVGElement, option?: SvgOptionalOption): SVGElement | null => {\n const result = SVG_BUILDER.createNode('path', parent, option);\n\n if (result) {\n result.setAttribute('d', `M ${vector.start.x},${vector.start.y} ${vector.end.x},${vector.end.y}`);\n return result;\n } else {\n return null;\n }\n },\n // ========================================================================\n // createLine\n // ========================================================================\n createCurve(parent: SVGElement, curve: string, option: SvgOptionalOption | undefined): SVGElement | null {\n const result = SVG_BUILDER.createNode('path', parent, option);\n if (result) {\n result.setAttribute('d', curve);\n }\n return result;\n },\n // ========================================================================\n // createLine\n // ========================================================================\n createRect: (parent: SVGElement, option?: RectOption): SVGElement | null => {\n\n const currentOption = option ? option : {};\n const result = SVG_BUILDER.createNode('rect', parent, currentOption);\n\n if (result == undefined || result == null) {\n return null;\n }\n\n if (currentOption.height) {\n result.setAttribute(\"height\", '' + currentOption.height);\n }\n if (currentOption.width) {\n result.setAttribute(\"width\", '' + currentOption.width);\n }\n if (currentOption.round) {\n result.setAttribute(\"rx\", '' + currentOption.round);\n }\n\n return result;\n },\n\n\n // ========================================================================\n // Circle\n // ========================================================================\n createCircle: (parent: SVGElement, option?: CircleOption): SVGElement | null => {\n\n const currentOption = option ? option : {};\n const result = SVG_BUILDER.createNode('circle', parent, currentOption);\n\n if (result == undefined || result == null) {\n return null;\n }\n\n if (currentOption.height) {\n result.setAttribute(\"height\", '' + currentOption.height);\n }\n if (currentOption.width) {\n result.setAttribute(\"width\", '' + currentOption.width);\n }\n if (currentOption.round) {\n result.setAttribute(\"rx\", '' + currentOption.round);\n }\n\n return result;\n },\n\n ellipse: (parent: SVGElement, option?: CircleOption): SVGElement | null => {\n const currentOption = option ? option : {};\n\n if (parent) {\n let dimention = SVG_MATH.computeDimension(parent,\n currentOption.width ? currentOption.width : 24, currentOption.height ? currentOption.height : 24, 0.10);\n let result = SVG_BUILDER.createNode('cirellipsecle', parent, currentOption);\n\n if (result) {\n result.setAttribute(\"rx\", '' + dimention.width);\n result.setAttribute(\"ry\", '' + dimention.height);\n result.setAttribute(\"cx\", '' + 0);\n result.setAttribute(\"cy\", '' + 0);\n return result;\n }\n\n }\n\n return null;\n },\n\n\n // ========================================================================\n // TEXT\n // ========================================================================\n text: (parent: SVGElement, label: string, option?: TextOption): SVGElement | null => {\n let result = null;\n let layerSize = SVG.MATH.size(parent);\n let fontRatio = layerSize.fontratio ? layerSize.fontratio : 12;\n const currentOption = option ? option : {};\n\n if (isNotNull(parent)) {\n let currentFontSize = isNull(currentOption.fontSize) || fontRatio <= 0 ? 12 : currentOption.fontSize;\n if (fontRatio) {\n currentFontSize = (currentFontSize ? currentFontSize : 12) * fontRatio;\n }\n\n result = SVG_BUILDER.createNode('svg:text', parent, currentOption);\n\n if (result) {\n result.setAttribute(\"x\", '' + 0);\n result.setAttribute(\"y\", '' + 0);\n result.setAttribute(\"style\", `font-size:${currentFontSize}px`);\n\n const htmlNode = result as any;\n htmlNode.text(label);\n }\n }\n\n return result;\n },\n\n // ========================================================================\n // USE\n // ========================================================================\n createUse(id: string, parent: SVGElement | HTMLElement | null, option: SvgOptionalOption | undefined): SVGElement | null {\n if(!parent){\n return null;\n }\n const result = SVG_BUILDER.createNode('use', parent, option);\n if(result){\n result.setAttribute('href', `#${id}`);\n return result;\n }\n return null;\n },\n // ========================================================================\n // createGroup\n // ========================================================================\n createNode: (nodeType: string, parent: SVGElement | HTMLElement | null, option?: SvgOptionalOption): SVGElement | null => {\n if (!parent) {\n return null;\n }\n const currentOption = option == undefined || option == null ? {} : option;\n const result = document.createElementNS(\"http://www.w3.org/2000/svg\", nodeType);\n if (currentOption.styleClass) {\n result.setAttribute(\"class\", currentOption.styleClass);\n }\n\n parent.appendChild(result);\n\n\n return result;\n }\n}\n\n\n//#############################################################################\n// SVG_TRANSFORMATION\n//#############################################################################\nexport const SVG_TRANSFORM: SvgTransform = {\n\n clean: (node: SVGElement) => {\n node.removeAttribute(\"transform\");\n },\n\n // ========================================================================\n // translate\n // ========================================================================\n translateX: (node: SVGElement | null, posX: number): void => {\n if (!node) {\n return;\n }\n\n const position = SVG_TRANSFORM.extractTransformInformation(node);\n position.x = posX;\n SVG_TRANSFORM._genericTransform(node, position);\n },\n\n translateY: (node: SVGElement | null, posY: number): void => {\n if (!node) {\n return;\n }\n\n const position = SVG_TRANSFORM.extractTransformInformation(node);\n position.y = posY;\n SVG_TRANSFORM._genericTransform(node, position);\n },\n\n\n // ========================================================================\n // SCALE\n // ========================================================================\n scale: (node: SVGElement, scaleX: number, scaleY: number) => {\n if (node) {\n var positions = SVG_TRANSFORM.extractTransformInformation(node);\n positions.scaleX = isNull(scaleX) ? 0 : scaleX;\n positions.scaleY = isNull(scaleY) ? 0 : scaleY;\n\n SVG_TRANSFORM._genericTransform(node, positions);\n }\n },\n scaleX: (node: SVGElement, scaleX: number) => {\n if (isNotNull(node)) {\n var positions = SVG_TRANSFORM.extractTransformInformation(node);\n positions.scaleX = isNull(scaleX) ? 0 : scaleX;\n\n SVG_TRANSFORM._genericTransform(node, positions);\n }\n },\n\n scaleY: (node: SVGElement, scaleY: number) => {\n if (isNotNull(node)) {\n var positions = SVG_TRANSFORM.extractTransformInformation(node);\n positions.scaleY = isNull(scaleY) ? 0 : scaleY;\n\n SVG_TRANSFORM._genericTransform(node, positions);\n }\n },\n\n\n // ========================================================================\n // MATRIX\n // ========================================================================\n matrix: (node: SVGElement, scaleX: number, scaleY: number, posX: number, posY: number) => {\n if (node) {\n var data = [isNull(scaleX) ? 0 : scaleX,\n 0,\n 0,\n isNull(scaleY) ? 0 : scaleY,\n isNull(posX) ? 0 : posX,\n isNull(posY) ? 0 : posY];\n node.setAttribute(\"transform\", \"matrix(\" + data.join(',') + \")\");\n }\n },\n\n // ========================================================================\n // extractTransformInformation\n // ========================================================================\n extractTransformInformation: (node: SVGElement | HTMLElement): TransformationInfo => {\n const attrTransfo = node.getAttribute(\"transform\");\n\n let x = null;\n let y = null;\n let scaleX = null;\n let scaleY = null;\n\n if (attrTransfo) {\n\n var regex = new RegExp('(?:([^(]+)[(])([^)]+)(?:[)])');\n var group = regex.exec(attrTransfo);\n\n if (!group) {\n return {\n x: x,\n y: y,\n scaleX: scaleX,\n scaleY: scaleY\n }\n }\n\n switch (group[1]) {\n case \"translate\":\n var data = group[2].split(',');\n x = Number(data[0]);\n y = Number(data[1]);\n break;\n\n case \"scale\":\n var data = group[2].split(',');\n scaleX = Number(data[0]);\n scaleY = Number(data[1]);\n break;\n\n case \"matrix\":\n var data = group[2].split(',');\n scaleX = Number(data[0]);\n scaleY = Number(data[3]);\n x = Number(data[4]);\n y = Number(data[5]);\n break;\n }\n }\n return {\n x: x,\n y: y,\n scaleX: scaleX,\n scaleY: scaleY\n }\n },\n\n\n // ========================================================================\n // _genericTransform\n // ========================================================================\n _genericTransform: (node: SVGElement, transfo: TransformationInfo) => {\n if (SVG_TRANSFORM._noScale(transfo)) {\n node.setAttribute(\"transform\", \"translate(\" + [isNull(transfo.x) ? 0 : transfo.x,\n isNull(transfo.y) ? 0 : transfo.y]\n .join(',') + \")\");\n } else if (SVG_TRANSFORM._noTranslate(transfo)) {\n node.setAttribute(\"transform\", \"scale(\" + [isNull(transfo.scaleX) ? 0 : transfo.scaleX,\n isNull(transfo.scaleY) ? 0 : transfo.scaleY]\n .join(',') + \")\");\n } else {\n SVG_TRANSFORM.matrix(node,\n transfo.scaleX ? transfo.scaleX : 0,\n transfo.scaleY ? transfo.scaleY : 0,\n transfo.x ? transfo.x : 0,\n transfo.y ? transfo.y : 0);\n }\n },\n _noScale: (data: TransformationInfo): boolean => {\n return isNull(data.scaleX) && isNull(data.scaleY);\n },\n _noTranslate: (data: TransformationInfo): boolean => {\n return isNull(data.x) && isNull(data.y);\n },\n\n\n // ========================================================================\n // ALIGN\n // ========================================================================\n center: (compo: SVGElement, svgContainer: HTMLElement, onX: boolean, onY: boolean): number => {\n SVG_TRANSFORM.clean(compo);\n const containerSize = SVG.MATH.size(svgContainer);\n let pos = SVG.MATH.size(compo);\n\n const diffSizeX = containerSize.width / pos.width;\n const diffSizeY = containerSize.height / pos.height;\n const sizeRatio = diffSizeY < diffSizeX ? diffSizeY : diffSizeX;\n\n SVG.TRANSFORM.scale(compo, sizeRatio, sizeRatio);\n pos = SVG.MATH.size(compo);\n pos.x = pos.x - containerSize.x;\n pos.y = pos.y - containerSize.y;\n\n if (onX) {\n const diffSizeX = containerSize.width - pos.width;\n const newPosX = (-pos.x) + (diffSizeX / 2);\n SVG.TRANSFORM.translateX(compo, newPosX);\n }\n\n if (onY) {\n const diffSizeY = containerSize.height - pos.height;\n const newPosY = (-pos.y) + (diffSizeY / 2);\n SVG.TRANSFORM.translateY(compo, newPosY);\n }\n\n return 1 / sizeRatio;\n },\n\n // ========================================================================\n // TOOLS\n // ========================================================================\n toogleClass: (node: SVGElement | HTMLElement, styleclass: string): void => {\n if (!node) {\n return;\n }\n const currentClass = node.getAttribute(\"class\");\n if (currentClass) {\n if (currentClass.includes(styleclass)) {\n node.setAttribute('class', currentClass.replaceAll(styleclass, ''));\n } else {\n node.setAttribute('class', `${currentClass} ${styleclass}`);\n }\n } else {\n node.setAttribute('class', styleclass);\n }\n },\n removeClass: (node: SVGElement | HTMLElement, styleclass: string): void => {\n if (!node) {\n return;\n }\n const currentClass = node.getAttribute(\"class\");\n if (currentClass) {\n if (currentClass.includes(styleclass)) {\n node.setAttribute('class', currentClass.replaceAll(styleclass, ''));\n }\n }\n },\n addClass: (node: SVGElement | HTMLElement, styleclass: string): void => {\n if (!node) {\n return;\n }\n const currentClass = node.getAttribute(\"class\");\n if (currentClass) {\n if (!currentClass.includes(styleclass)) {\n node.setAttribute('class', `${currentClass} ${styleclass}`);\n }\n } else {\n node.setAttribute('class', styleclass);\n }\n },\n hasClass: (node: SVGElement | HTMLElement, styleclass: string): boolean => {\n if (!node) {\n return false;\n }\n const currentClass = node.getAttribute(\"class\");\n return currentClass ? currentClass.includes(styleclass) : false;\n }\n};\n\n//#############################################################################\n// SVG STYLE GENERATOR\n//#############################################################################\nexport const SVG_STYLE_GENERATOR: SvgStyleGenerators = {\n BY_TYPE: (value: number, maxValue: number, minValue: number, type: string): SvgStyle => {\n return {\n style: type\n }\n }\n}\n\n//#############################################################################\n// SVG ANIMATION\n//#############################################################################\nexport const SVG_ANIMATION: SvgAnimations = {\n TYPES: {\n linear: (time: number): number => time,\n parabolic: (time: number): number => -(4 * Math.pow(time, 2)) + (4 * time),\n easeOutCubic: (time: number) => Math.pow(time - 1, 3) + 1,\n easeInCubic: (time: number) => Math.pow(time, 3),\n easeInQuad: (time: number) => time * time,\n easeOutQuad: (time: number) => time * (2 - time),\n },\n animate: (callback: SvgAnimationCallback, option?: SvgAnimationOption): void => {\n\n const currentOption: SvgAnimationOption = option ? option : {};\n const duration = (currentOption.duration ? currentOption.duration : 250);\n const now = new Date().getTime();\n\n const params: SvgAnimationParameters = {\n timer: currentOption.timer ? currentOption.timer : SVG_ANIMATION.TYPES.linear,\n delay: currentOption.delay ? currentOption.delay : 0,\n duration: (now + duration) - now,\n startTime: now,\n ttl: now + duration,\n callback: callback,\n onDone: currentOption.onDone\n }\n\n\n if (params.delay > 0) {\n setTimeout(() => {\n const now = new Date().getTime();\n params.startTime = now;\n params.ttl = now + duration;\n new AnimationHandler(params).run();\n }, currentOption.delay);\n } else {\n new AnimationHandler(params).run();\n }\n }\n}\n\nclass AnimationHandler {\n\n private animeId: number | null = null;\n\n constructor(private parameters: SvgAnimationParameters) {\n }\n\n public run() {\n let duration = this.parameters.duration;\n let initialTimestamp = window.performance.now();\n let timestamp = 0;\n\n const frame = () => {\n timestamp = window.performance.now() - initialTimestamp;\n const progress = timestamp / duration\n if (progress >= 1) {\n this.parameters.callback(this.parameters.timer(1));\n if (this.parameters.onDone) {\n this.parameters.onDone();\n }\n if (this.animeId) {\n cancelAnimationFrame(this.animeId);\n }\n\n this.animeId = null;\n return;\n }\n this.parameters.callback(this.parameters.timer(progress));\n\n this.animeId = requestAnimationFrame(frame);\n }\n\n this.animeId = requestAnimationFrame(frame);\n }\n\n}\n\n//#############################################################################\n// SVG_TRANSFORMATION\n//#############################################################################\nexport const SVG = {\n CONSTANTS: SVG_CONST,\n MATH: SVG_MATH,\n BUILDER: SVG_BUILDER,\n TRANSFORM: SVG_TRANSFORM,\n STYLE: SVG_STYLE_GENERATOR,\n ANIMATION: SVG_ANIMATION\n}\n","export const COLORS_MATLAB: string[] =[\n \"#000983\",\n \"#011488\",\n \"#02208D\",\n \"#022B92\",\n \"#033797\",\n \"#04429C\",\n \"#044EA1\",\n \"#0559A7\",\n \"#0665AC\",\n \"#0670B1\",\n \"#077CB6\",\n \"#0787BB\",\n \"#0893C0\",\n \"#099FC5\",\n \"#09AACA\",\n \"#0AB5CF\",\n \"#0BC1D5\",\n \"#0BCDDA\",\n \"#0CD8DF\",\n \"#0CE4E4\",\n \"#0DF0E9\",\n \"#0EFBEE\",\n \"#13FFEB\",\n \"#1BFFE3\",\n \"#23FFDC\",\n \"#2AFFD4\",\n \"#32FFCC\",\n \"#3AFFC5\",\n \"#41FFBD\",\n \"#49FFB5\",\n \"#51FFAD\",\n \"#59FFA6\",\n \"#60FF9E\",\n \"#68FF96\",\n \"#70FF8F\",\n \"#78FF87\",\n \"#7FFF7F\",\n \"#87FF77\",\n \"#8FFF70\",\n \"#97FF68\",\n \"#9EFF60\",\n \"#A6FF59\",\n \"#AEFF51\",\n \"#B6FF49\",\n \"#BDFF41\",\n \"#C5FF3A\",\n \"#CDFF32\",\n \"#D5FF2A\",\n \"#DCFF23\",\n \"#E4FF1B\",\n \"#ECFF13\",\n \"#F3FF0C\",\n \"#FBFF04\",\n \"#FFFA00\",\n \"#FFF100\",\n \"#FFE800\",\n \"#FFDF00\",\n \"#FFD500\",\n \"#FFCC00\",\n \"#FFC300\",\n \"#FFBA00\",\n \"#FFB100\",\n \"#FFA800\",\n \"#FF9E00\",\n \"#FF9500\",\n \"#FF8C00\",\n \"#FF8300\",\n \"#FF7A00\",\n \"#FF7000\",\n \"#FF6700\",\n \"#FF5E00\",\n \"#FF5500\",\n \"#FF4C00\",\n \"#FF4200\",\n \"#FF3900\",\n \"#FF3000\",\n \"#FF2700\",\n \"#FF1E00\",\n \"#FF1500\",\n \"#FF0C00\",\n \"#FF0200\",\n \"#FA0000\",\n \"#F50000\",\n \"#EF0000\",\n \"#E90000\",\n \"#E30000\",\n \"#DD0000\",\n \"#D70000\",\n \"#D10000\",\n \"#CC0000\",\n \"#C60000\",\n \"#C00000\",\n \"#BA0000\",\n \"#B40000\",\n \"#AE0000\",\n \"#A90000\",\n \"#A30000\",\n \"#9D0000\",\n \"#970000\",\n \"#910000\"\n ];\n\n\nexport const COLORS_BOOTSTRAP: string[] = [\n \"#05285B\",\n \"#073984\",\n \"#094BAC\",\n \"#0B5CD5\",\n \"#0D6EFD\",\n \"#3485FD\",\n \"#5A9CFE\",\n \"#81B4FE\",\n \"#A8CBFE\",\n \"#281845\",\n \"#3A2264\",\n \"#4B2D83\",\n \"#5D37A2\",\n \"#6F42C1\",\n \"#8660CB\",\n \"#9D7ED5\",\n \"#B49DDF\",\n \"#CBBBE9\",\n \"#4D1230\",\n \"#6F1B45\",\n \"#92235A\",\n \"#B42B6F\",\n \"#D63384\",\n \"#DD5498\",\n \"#E374AB\",\n \"#EA95BF\",\n \"#F0B6D3\",\n \"#4F1319\",\n \"#721C24\",\n \"#96242F\",\n \"#B92D3A\",\n \"#DC3545\",\n \"#E25563\",\n \"#E77681\",\n \"#ED969E\",\n \"#F2B6BC\",\n \"#5B2D07\",\n \"#84420A\",\n \"#AC560E\",\n \"#D56A11\",\n \"#FD7E14\",\n \"#FD933A\",\n \"#FEA75F\",\n \"#FEBC85\",\n \"#FED1AA\",\n \"#5C4503\",\n \"#856404\",\n \"#AD8305\",\n \"#D6A206\",\n \"#FFC107\",\n \"#FFCB2F\",\n \"#FFD556\",\n \"#FFDF7E\",\n \"#FFE9A6\",\n \"#083A42\",\n \"#0C5460\",\n \"#106E7D\",\n \"#13889B\",\n \"#17A2B8\",\n \"#3CB1C3\",\n \"#61C0CF\",\n \"#86CFDA\",\n \"#ABDEE5\",\n \"#0E3C19\",\n \"#155724\",\n \"#1B722F\",\n \"#228C3A\",\n \"#28A745\",\n \"#4AB563\",\n \"#6DC381\",\n \"#8FD19E\",\n \"#B2DFBC\"\n]\n\nexport const COLORS_BOOTSTRAP_PRIMARY: string[] = [\n \"#0D6EFD\",\n \"#6F42C1\",\n \"#D63384\",\n \"#B92D3A\",\n \"#FD7E14\",\n \"#FFC107\",\n \"#17A2B8\",\n \"#4AB563\"\n]\n\nexport const COLORS_ANDROID: string[] = [\n \"#bfbfbf\",\n \"#404040\",\n \"#6699ff\",\n \"#3366cc\",\n \"#003399\",\n \"#99cc33\",\n \"#00cc00\",\n \"#669900\",\n \"#ffcc00\",\n \"#ff6600\",\n \"#cc0000\"\n]\nexport const COLORS_GNOME: string[] = [\n \"#C0BFBC\",\n \"#9A9996\",\n \"#77767B\",\n \"#5E5C64\",\n \"#3D3846\",\n \"#241F31\",\n \"#99C1F1\",\n \"#62A0EA\",\n \"#3584E4\",\n \"#1C71D8\",\n \"#1A5FB4\",\n \"#8FF0A4\",\n \"#57E389\",\n \"#33D17A\",\n \"#2EC27E\",\n \"#26A269\",\n \"#F9F06B\",\n \"#F8E45C\",\n \"#F6D32D\",\n \"#F5C211\",\n \"#E5A50A\",\n \"#FFBE6F\",\n \"#FFA348\",\n \"#FF7800\",\n \"#E66100\",\n \"#C64600\",\n \"#F66151\",\n \"#ED333B\",\n \"#E01B24\",\n \"#C01C28\",\n \"#A51D2D\",\n \"#DC8ADD\",\n \"#C061CB\",\n \"#9141AC\",\n \"#813D9C\",\n \"#613583\",\n \"#CDAB8F\",\n \"#B5835A\",\n \"#986A44\",\n \"#865E3C\",\n \"#63452C\"\n]\n\n\nexport const COLORS_TOPO: string[] = [\n \"#0102A6\",\n \"#0104A2\",\n \"#02079F\",\n \"#03099C\",\n \"#040C98\",\n \"#050E95\",\n \"#051092\",\n \"#06138E\",\n \"#07158B\",\n \"#081888\",\n \"#091A84\",\n \"#091D81\",\n \"#0A1F7E\",\n \"#0B227A\",\n \"#0C2477\",\n \"#0C2774\",\n \"#0D2970\",\n \"#0E2C6D\",\n \"#0F2E69\",\n \"#103166\",\n \"#103363\",\n \"#11365F\",\n \"#12385C\",\n \"#133B59\",\n \"#143D55\",\n \"#143F52\",\n \"#15424F\",\n \"#16444B\",\n \"#174748\",\n \"#184945\",\n \"#184C41\",\n \"#194E3E\",\n \"#1A513B\",\n \"#1B5337\",\n \"#1C5634\",\n \"#1C5831\",\n \"#1D5B2D\",\n \"#1E5D2A\",\n \"#1F6027\",\n \"#206223\",\n \"#206520\",\n \"#21671C\",\n \"#226919\",\n \"#236C16\",\n \"#246E12\",\n \"#24710F\",\n \"#25730C\",\n \"#267608\",\n \"#277805\",\n \"#287B02\",\n \"#2C7E02\",\n \"#338206\",\n \"#3B860B\",\n \"#438B0F\",\n \"#4A8F13\",\n \"#529318\",\n \"#5A971C\",\n \"#619B20\",\n \"#699F25\",\n \"#71A329\",\n \"#78A82D\",\n \"#80AC31\",\n \"#88B036\",\n \"#8FB43A\",\n \"#97B83E\",\n \"#9FBC43\",\n \"#A6C047\",\n \"#AEC54B\",\n \"#B6C950\",\n \"#BDCD54\",\n \"#C5D158\",\n \"#CDD55D\",\n \"#D4D961\",\n \"#DCDD65\",\n \"#E3E269\",\n \"#E8E26A\",\n \"#E7DE66\",\n \"#E6D962\",\n \"#E6D55E\",\n \"#E5D05A\",\n \"#E5CC56\",\n \"#E4C752\",\n \"#E3C34E\",\n \"#E3BE4A\",\n \"#E2BA46\",\n \"#E1B642\",\n \"#E1B13F\",\n \"#E0AD3B\",\n \"#DFA837\",\n \"#DFA433\",\n \"#DE9F2F\",\n \"#DE9B2B\",\n \"#DD9627\",\n \"#DC9223\",\n \"#DC8D1F\",\n \"#DB891B\",\n \"#DA8417\",\n \"#DA8013\",\n \"#D97B0F\",\n \"#D8770B\"\n]\n\nexport const COLORS_LEVEL: string[] = [\n \"#BBBCBF\",\n \"#B4B8C0\",\n \"#AEB4C1\",\n \"#A7B0C1\",\n \"#A1ACC2\",\n \"#9AA7C2\",\n \"#93A3C3\",\n \"#8D9FC4\",\n \"#869BC4\",\n \"#8097C5\",\n \"#7993C5\",\n \"#738FC6\",\n \"#6C8AC7\",\n \"#6686C7\",\n \"#5F82C8\",\n \"#597EC8\",\n \"#527AC9\",\n \"#4C76CA\",\n \"#4572CA\",\n \"#3F6DCB\",\n \"#3869CC\",\n \"#3367CA\",\n \"#316BC3\",\n \"#2F6FBB\",\n \"#2D73B3\",\n \"#2B76AB\",\n \"#297AA3\",\n \"#277E9B\",\n \"#258293\",\n \"#23868C\",\n \"#218A84\",\n \"#1F8E7C\",\n \"#1D9274\",\n \"#1B966C\",\n \"#199A64\",\n \"#179E5C\",\n \"#15A255\",\n \"#13A64D\",\n \"#11AA45\",\n \"#0FAD3D\",\n \"#0DB135\",\n \"#0BB52D\",\n \"#09B926\",\n \"#07BD1E\",\n \"#05C116\",\n \"#04C50E\",\n \"#02C906\",\n \"#03CC00\",\n \"#0FCC00\",\n \"#1CCC00\",\n \"#28CC00\",\n \"#35CC00\",\n \"#41CC00\",\n \"#4ECC00\",\n \"#5ACC00\",\n \"#67CC00\",\n \"#73CC00\",\n \"#80CC00\",\n \"#8DCC00\",\n \"#99CC00\",\n \"#A6CC00\",\n \"#B2CC00\",\n \"#BFCC00\",\n \"#CBCC00\",\n \"#D8CC00\",\n \"#E4CC00\",\n \"#F1CC00\",\n \"#FCCB00\",\n \"#FEC700\",\n \"#FCC000\",\n \"#FBBA00\",\n \"#F9B400\",\n \"#F7AE00\",\n \"#F6A700\",\n \"#F4A100\",\n \"#F39B00\",\n \"#F19400\",\n \"#F08E00\",\n \"#EE8800\",\n \"#EC8200\",\n \"#EB7B00\",\n \"#E97500\",\n \"#E86F00\",\n \"#E66900\",\n \"#E56200\",\n \"#E35C00\",\n \"#E15600\",\n \"#E04F00\",\n \"#DE4900\",\n \"#DD4300\",\n \"#DB3D00\",\n \"#DA3600\",\n \"#D83000\",\n \"#D62A00\",\n \"#D52400\",\n \"#D31D00\",\n \"#D21700\",\n \"#D01100\",\n \"#CF0B00\",\n \"#CD0400\"\n]\n\n\nexport const ALL_COLORS : any = {\n COLORS_ANDROID:COLORS_ANDROID,\n COLORS_BOOTSTRAP:COLORS_BOOTSTRAP,\n COLORS_BOOTSTRAP_PRIMARY:COLORS_BOOTSTRAP_PRIMARY,\n COLORS_GNOME:COLORS_GNOME,\n COLORS_LEVEL:COLORS_LEVEL,\n COLORS_MATLAB:COLORS_MATLAB,\n COLORS_TOPO:COLORS_TOPO\n}\n\nexport const COMPUTE_PERCENT = (value: number, min: number, max: number): number => {\n let currentValue = value;\n if (value < min) {\n currentValue = min;\n }\n if (value > max) {\n currentValue = max;\n }\n const range = max - min;\n return range <= 0 ? 0 : Math.min(Math.max(((currentValue - min) / range) * 100, 0), 100);\n}\nexport const GET_COLOR = (percent: number, colors: string[]): string => {\n if (!colors || colors.length === 0) return '#000000';\n const sanitizedPercent = Math.max(0, Math.min(100, percent));\n const index = Math.round((sanitizedPercent / 100) * (colors.length - 1));\n return colors[index];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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AS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT;;AAIG,MAAM,gBAAgB,GAAa;IACxC,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT;;AAGK,MAAM,wBAAwB,GAAa;IAChD,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT;;AAGK,MAAM,cAAc,GAAa;IACtC,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT;;AAEK,MAAM,YAAY,GAAa;IACpC,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT;;AAIK,MAAM,WAAW,GAAa;IACnC,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT;;AAGK,MAAM,YAAY,GAAa;IACpC,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT;;AAIK,MAAM,UAAU,GAAS;AAC9B,IAAA,cAAc,EAAC,cAAc;AAC7B,IAAA,gBAAgB,EAAC,gBAAgB;AACjC,IAAA,wBAAwB,EAAC,wBAAwB;AACjD,IAAA,YAAY,EAAC,YAAY;AACzB,IAAA,YAAY,EAAC,YAAY;AACzB,IAAA,aAAa,EAAC,aAAa;AAC3B,IAAA,WAAW,EAAC;;AAGP,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,KAAY;IACjF,IAAI,YAAY,GAAG,KAAK;AACxB,IAAA,IAAI,KAAK,GAAG,GAAG,EAAE;QACf,YAAY,GAAG,GAAG;IACpB;AACA,IAAA,IAAI,KAAK,GAAG,GAAG,EAAE;QACf,YAAY,GAAG,GAAG;IACpB;AACA,IAAA,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG;AACvB,IAAA,OAAO,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AAC1F;MACa,SAAS,GAAG,CAAC,OAAe,EAAE,MAAgB,KAAY;AACrE,IAAA,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,SAAS;AACpD,IAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,GAAG,GAAG,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxE,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB;;ACjeA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"inugami-ng-services.mjs","sources":["../../../projects/inugami-ng/services/cache.service.tracking.ts","../../../projects/inugami-ng/services/cache.service.ts","../../../projects/inugami-ng/services/label.service.ts","../../../projects/inugami-ng/services/error.service.ts","../../../projects/inugami-ng/services/svg.asset.utils.ts","../../../projects/inugami-ng/services/svg.utils.ts","../../../projects/inugami-ng/services/svg.color.utils.ts","../../../projects/inugami-ng/services/inugami-ng-services.ts"],"sourcesContent":["import {EnvironmentProviders, makeEnvironmentProviders, signal, WritableSignal} from '@angular/core'\nimport {UuidUtils} from 'inugami-ng/utils'\n\nexport interface CacheServiceTrackingOptions {\n env: WritableSignal<string>,\n sessionUid: WritableSignal<string>,\n application: WritableSignal<string>,\n version: WritableSignal<string>\n}\n\nexport function provideCacheTracking(options: CacheServiceTrackingOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide : CacheServiceTracking,\n useValue: new CacheServiceTracking(options)\n }\n ]);\n}\n\n\nexport class CacheServiceTracking {\n env = signal<string>('dev');\n sessionUid = signal<string>(UuidUtils.buildUid());\n application = signal<string>('');\n version = signal<string>('');\n\n\n constructor(options: CacheServiceTrackingOptions) {\n this.env = options.env;\n this.sessionUid = options.sessionUid;\n this.application = options.application;\n this.version = options.version;\n }\n\n}\n","import {computed, inject, Injectable, signal} from \"@angular/core\";\nimport {Observable} from \"rxjs\";\nimport {CacheServiceTracking} from './cache.service.tracking'\nimport {InuStringUtils, ObservableSubscriber, UuidUtils} from 'inugami-ng/utils'\n\n\nexport const TTL_UNLIMITED = -1\nexport const TTL_MIN = 60000;\nexport const TTL_MIN_5 = 5 * 60000;\nexport const TTL_MIN_10 = 10 * 60000;\nexport const TTL_MIN_30 = 30 * 60000;\nexport const TTL_HOUR = 60 * 60000;\nexport const TTL_HALF_DAY = 12 * 60 * 60000;\nexport const TTL_DAY = 24 * 60 * 60000;\n\nconst PENDING_REQUESTS: Map<string, ObservableSubscriber<any>> = new Map();\nconst FALLBACK_CACHE: any = {};\n\ninterface TtlValue {\n key: string,\n value: any,\n ttl: number\n}\n\n\n@Injectable({providedIn: 'root'})\nexport class InuCacheServices {\n\n //==================================================================================================================\n // API\n //==================================================================================================================\n\n private cacheServiceTracking = inject(CacheServiceTracking, {optional: true});\n private localStorage = computed<Storage>(() => window.localStorage);\n private sessionStorage = computed<Storage>(() => window.sessionStorage);\n private tracking = signal<CacheServiceTracking>(this.cacheServiceTracking ?? new CacheServiceTracking(\n {\n sessionUid : signal<string>(UuidUtils.buildUid()),\n env : signal<string>('PRD'),\n application: signal<string>('inugami'),\n version : signal<string>('0.0.0')\n }\n ))\n\n //==================================================================================================================\n // API\n //==================================================================================================================\n public get<T>(key: string): T | undefined {\n const realKey = this.buildKey(key);\n return this.getFromSessionStorage(realKey);\n }\n\n public getTTL<T>(key: string): T | undefined {\n const realKey = this.buildKeyTTL(key);\n return this.getFromLocalStorage(realKey);\n }\n\n public set(key: string, value: any): void {\n const realKey = this.buildKey(key);\n this.setInSessionStorage(realKey, value)\n\n const pending = PENDING_REQUESTS.get(realKey);\n pending?.subscriber()?.next(value);\n PENDING_REQUESTS.delete(realKey);\n }\n\n public setTTL(key: string, value: any, ttl: number): void {\n const realKey = this.buildKeyTTL(key);\n const valueTTL = ttl == TTL_UNLIMITED ? TTL_UNLIMITED : new Date().getTime() + ttl;\n this.setInLocalStorage(realKey, value, valueTTL);\n\n const pending = PENDING_REQUESTS.get(realKey);\n pending?.subscriber()?.next(value);\n PENDING_REQUESTS.delete(realKey);\n }\n\n public getPending(key: string): Observable<any> | undefined {\n const realKey = this.buildKey(key);\n return this.processGetPending(realKey)\n }\n\n public getPendingTTL(key: string): Observable<any> | undefined {\n const realKey = this.buildKeyTTL(key);\n return this.processGetPending(realKey)\n }\n\n public setPending(key: string, obs: Observable<any>): void {\n const realKey = this.buildKey(key);\n this.processSetPending(key, obs)\n }\n\n public setPendingTTL(key: string, obs: Observable<any>): void {\n const realKey = this.buildKey(key);\n this.processSetPending(key, obs)\n }\n\n public clearKey(key: string) {\n this.localStorage().removeItem(this.buildKey(key));\n }\n\n public clearKeyTTL(key: string) {\n this.sessionStorage().removeItem(this.buildKeyTTL(key));\n }\n\n public clear() {\n this.localStorage().clear();\n this.sessionStorage().clear();\n }\n\n //==================================================================================================================\n // INTERNAL\n //==================================================================================================================\n private processGetPending(realKey: string) {\n let result: ObservableSubscriber<any> | undefined = PENDING_REQUESTS.get(realKey);\n return !result ? undefined : result?.observable();\n }\n\n private processSetPending(realKey: string, obs: Observable<any>) {\n const subscriber = new ObservableSubscriber<any>();\n PENDING_REQUESTS.set(realKey, subscriber);\n\n obs.subscribe({\n next: res => subscriber.subscriber()?.next(res)\n });\n }\n\n //====================================================================================================================\n // READ from storage\n //====================================================================================================================\n private getFromSessionStorage<T>(realKey: string): T | undefined {\n let rawData:string|null|undefined = this.sessionStorage().getItem(realKey);\n if(!rawData){\n rawData = FALLBACK_CACHE[realKey];\n }\n return this.extractStoredValue(rawData, realKey);\n }\n\n private getFromLocalStorage<T>(realKey: string): T | undefined {\n let rawData:string|null|undefined = this.localStorage().getItem(realKey);\n if(!rawData){\n rawData = FALLBACK_CACHE[realKey];\n }\n return this.extractStoredValue(rawData, realKey);\n }\n\n\n private extractStoredValue(rawValue: string|undefined | null, realKey: string) {\n if (!rawValue) {\n return undefined;\n }\n let valueWrapper: TtlValue | undefined = undefined;\n try {\n valueWrapper = JSON.parse(rawValue);\n } catch (e) {\n }\n if (!valueWrapper) {\n return undefined;\n }\n\n if (valueWrapper.ttl == TTL_UNLIMITED) {\n return valueWrapper.value;\n }\n\n const now = new Date().getTime();\n if (now > valueWrapper.ttl) {\n this.sessionStorage().removeItem(realKey)\n return undefined;\n } else {\n return valueWrapper.value;\n }\n }\n\n //====================================================================================================================\n // WRITE in storage\n //====================================================================================================================\n private setInSessionStorage(realKey: string, value: any) {\n this.writeInStorage(realKey, value, TTL_UNLIMITED, this.sessionStorage());\n }\n\n private setInLocalStorage(realKey: string, value: any, ttl: number) {\n this.writeInStorage(realKey, value, ttl, this.sessionStorage());\n }\n\n private writeInStorage(realKey: string, value: any, ttl: number, storage: Storage) {\n const wrapper: TtlValue = {\n key : realKey,\n ttl : ttl,\n value: value\n };\n\n const data = JSON.stringify(wrapper);\n try {\n storage.setItem(realKey, data);\n } catch (e) {\n FALLBACK_CACHE[realKey] = data;\n }\n }\n\n private buildKey(key: string) {\n const tracking = this.tracking();\n return InuStringUtils.normalize(`${tracking.env()}_${tracking.application()}_${tracking.version()}_${tracking.sessionUid()}_${key}`)\n }\n\n private buildKeyTTL(key: string) {\n const tracking = this.tracking();\n return InuStringUtils.normalize(`${tracking.env()}_${tracking.application()}_${tracking.version()}_${key}`);\n }\n\n\n}\n","import {Injectable} from '@angular/core'\n\n@Injectable({providedIn: 'root'})\nexport class InuLabelService {\n\n\n //====================================================================================================================\n // ATTRIBUTES\n //====================================================================================================================\n\n\n\n //====================================================================================================================\n // API\n //====================================================================================================================\n\n getMessage(key ?: string, defaultValue?: string): string | undefined {\n return undefined;\n }\n}\n","import {inject, Injectable} from '@angular/core'\nimport {catchError, forkJoin, Observable, of} from 'rxjs'\nimport {InuLabelService} from './label.service'\nimport {ProblemDTO, ProblemParameterDTO} from 'inugami-ng/models'\nimport {HttpErrorResponse} from '@angular/common/http'\nimport {InuToastServices} from 'inugami-ng/components/inu-toast'\n\n@Injectable({providedIn: 'root'})\nexport class InuErrorService {\n\n //====================================================================================================================\n // ATTRIBUTES\n //====================================================================================================================\n inuLabelService = inject(InuLabelService);\n inuToastServices = inject(InuToastServices);\n\n //====================================================================================================================\n // API\n //====================================================================================================================\n public forkJoin(observables: Observable<any>[]): Observable<any[] | ProblemDTO[]> {\n const tasks: Observable<any>[] = [];\n\n for (let observable of observables) {\n tasks.push(observable.pipe(catchError(e => of(this.handlerError(e)))));\n }\n return forkJoin(tasks);\n }\n\n\n //====================================================================================================================\n // INTERNAL\n //====================================================================================================================\n public handlerError(error: any): ProblemDTO {\n let problem: ProblemDTO | undefined = undefined;\n\n if (this.isProblemDTO(error)) {\n problem = error as ProblemDTO;\n } else if (this.isHttpError(error)) {\n problem = this.extractProblemFormHttpCall(error as HttpErrorResponse);\n } else {\n problem = this.buildDefaultProblem();\n }\n\n console.log('handlerError',problem)\n\n if(problem.details){\n if(problem.details.errorCode){\n this.showMessageErrorCode(problem.details.errorCode, problem);\n }\n if(problem.details.fields){\n for(let field of problem.details.fields){\n if(!field.errorCode\n || field.errorCode== problem.details.errorCode){\n continue;\n }\n this.showMessageErrorCode(field.errorCode, problem);\n }\n }\n }\n\n\n for (let param of (problem.parameters ?? [this.buildDefaultErrorParameter()])) {\n this.showMessage(param, problem);\n }\n\n return problem;\n }\n\n\n public isProblemDTO(obj: any): obj is ProblemDTO {\n return obj && obj.status !== undefined && obj.parameters !== undefined;\n }\n\n public isHttpError(error: any): boolean {\n return !!(error && typeof error === 'object' && 'status' in error);\n }\n\n public extractProblemFormHttpCall(httpError: HttpErrorResponse): ProblemDTO {\n if (this.isProblemDTO(httpError.error)) {\n return httpError.error;\n }\n\n return {\n status : httpError.status,\n reasonPhrase: httpError.statusText,\n detail : httpError.message,\n parameters : [this.buildDefaultErrorParameter()],\n timestamp : new Date() as any\n };\n }\n\n private buildDefaultProblem(): ProblemDTO {\n return {\n status : 500,\n parameters: [this.buildDefaultErrorParameter()],\n timestamp : new Date() as any\n };\n }\n\n private buildDefaultErrorParameter() {\n return {\n errorCode: 'err-undefine',\n errorType: 'technical'\n }\n }\n\n public showMessage(param: ProblemParameterDTO, problem: ProblemDTO) {\n const errorType = param.errorType ?? this.resolveErrorLevel(problem.status);\n\n const errorCodeMessage = this.inuLabelService.getMessage(param.errorCode);\n const errorCodeTitleMessage = this.inuLabelService.getMessage(`${param.errorCode}_title`);\n const genericTitle = this.inuLabelService.getMessage(param.errorType);\n this.inuToastServices.addMessage({\n level : this.resolveLevel(errorType),\n title : errorCodeTitleMessage ?? genericTitle ?? 'Undefined error occurs',\n message: errorCodeMessage ?? 'some error occurs'\n });\n }\n\n private resolveErrorLevel(status?: number) {\n if (!status || status == 0) {\n return 'technical';\n }\n return status < 500 ? 'functional' : 'technical';\n }\n\n private resolveLevel(errorType: string) {\n return 'functional' == errorType.toLowerCase() ? 'warn' : 'error';\n }\n\n private showMessageErrorCode(errorCode: string, problem: ProblemDTO) {\n const errorType = this.resolveErrorLevel(problem.status);\n\n const errorCodeMessage = this.inuLabelService.getMessage(errorCode);\n const errorCodeTitleMessage = this.inuLabelService.getMessage(`${errorCode}_title`);\n const genericTitle = this.inuLabelService.getMessage(errorType);\n this.inuToastServices.addMessage({\n level : this.resolveLevel(errorType),\n title : errorCodeTitleMessage ?? genericTitle ?? 'Undefined error occurs',\n message: errorCodeMessage ?? 'some error occurs'\n });\n }\n}\n","import {Point, Size, SvgAssetDTO, SvgAssetDTOOptions, SvgAssetElement} from 'inugami-ng/models';\nimport {SVG, SVG_ASSETS, SVG_BUILDER, SVG_MATH, SVG_TRANSFORM} from \"./svg.utils\";\nimport {SvgAsset, SvgAssetState, SvgAssetType} from 'inugami-svg-assets';\n\n\nexport class SvgAssetUtils {\n\n public static createAsset(option: SvgAssetDTOOptions): SvgAssetElement | undefined {\n if (!option.parent) {\n return undefined;\n }\n\n const node = SVG_BUILDER.createGroup(option.parent, {});\n if (!node) {\n return undefined;\n }\n option.node = node;\n return new Asset(option);\n }\n}\n\n\n//======================================================================================================================\n// ASSET\n//======================================================================================================================\nconst DEFAULT = 'default';\n\nconst SELECTED = 'selected';\n\nclass Asset implements SvgAssetElement {\n //--------------------------------------------------------------------------------------------------------------------\n // ATTRIBUTES\n //--------------------------------------------------------------------------------------------------------------------\n assetName: string;\n assetSet: string;\n center: Point;\n drag: boolean = false;\n enableHitBox: boolean;\n isometric: boolean;\n name: string;\n node: SVGElement;\n parent: SVGElement | HTMLElement;\n scale: number;\n size: number;\n state: string;\n previousState: string | undefined = undefined;\n styleClass: string;\n title: string;\n type: string;\n x: number;\n y: number;\n\n onover: (event: MouseEvent, asset: SvgAssetElement) => void = (a) => {\n };\n onclick: (event: PointerEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n onmousedown: (event: MouseEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n onmousemove: (event: MouseEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n onmouseleave: (event: MouseEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondblclick: (event: MouseEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondrag: (event: DragEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondrop: (event: DragEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondragend: (event: DragEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondragstart: (event: DragEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondragleave: (event: DragEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondragover: (event: DragEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n ondragenter: (event: DragEvent, asset: SvgAssetElement) => void = (e, a) => {\n };\n\n //--------------------------------------------------------------------------------------------------------------------\n // CONSTRUCTOR\n //--------------------------------------------------------------------------------------------------------------------\n\n constructor(option: SvgAssetDTOOptions) {\n this.parent = option.parent!;\n this.node = option.node!;\n this.center = option.center ? option.center : {x: 0, y: 0};\n this.scale = option.scale ? option.scale : 1;\n this.isometric = option.isometric == undefined ? false : option.isometric;\n this.assetSet = option.asset.assetSet!;\n this.assetName = option.asset.assetName!;\n this.enableHitBox = option.enableHitBox == undefined ? false : option.enableHitBox!;\n this.styleClass = option.styleClass!;\n this.type = option.asset.type ? option.asset.type : DEFAULT;\n this.state = option.asset.state ? option.asset.state : DEFAULT;\n this.name = option.asset.name!;\n this.title = option.title ? option.title : '';\n this.size = option.asset.size == undefined ? 1 : option.asset.size < 0 ? 1 : option.asset.size;\n this.x = this.toNumber(option.asset.x);\n this.y = this.toNumber(option.asset.y);\n this.updateStyleclass();\n this.processUpdateRender();\n this.updatePosition();\n\n }\n\n\n\n //--------------------------------------------------------------------------------------------------------------------\n // CONSTRUCTOR\n //--------------------------------------------------------------------------------------------------------------------\n update(value: SvgAssetDTO, center: Point, scall: number, isometric: boolean): void {\n const previousAssertSet = `${this.assetSet}`;\n const previousAssertName = `${this.assetName}`;\n const previousType = `${this.type}`;\n const previousState = `${this.state}`;\n this.center = center;\n this.scale = scall;\n this.isometric = isometric;\n\n this.updateValue(value);\n this.updateRender(previousAssertSet, previousAssertName, previousType, previousState);\n this.updateStyleclass();\n this.updatePosition();\n }\n\n private updateRender(previousAssertSet: string, previousAssertName: string, previousType: string, previousState: string) {\n if (previousAssertSet == this.assetSet && previousType == this.type && previousState == this.state) {\n return;\n }\n this.processUpdateRender();\n }\n\n private processUpdateRender() {\n this.node.replaceChildren();\n const type = this.findAssetType();\n if (!type) {\n return;\n }\n\n let state = type.states.find(s => s.name == this.state);\n if (!state) {\n state = type.states.find(s => s.name == DEFAULT);\n }\n if (!state) {\n return;\n }\n const self = this;\n let assetStateContent: SVGElement | null | undefined = undefined;\n\n if (this.enableHitBox) {\n const hitboxGrp = SVG_BUILDER.createGroup(this.node, {styleClass: `hitbox-grp`});\n assetStateContent = SVG_BUILDER.createGroup(hitboxGrp, {styleClass: `content`});\n\n if (this.node && hitboxGrp) {\n const size = SVG_MATH.size(this.node);\n SVG_BUILDER.createRect(hitboxGrp, {height: size.height, width: size.width, styleClass: 'hitbox'});\n }\n } else {\n assetStateContent = this.node;\n }\n\n this.renderContent(assetStateContent, state);\n this.bindEvent(this.node);\n }\n\n\n private renderContent(content: SVGElement | null, assetContent: SvgAssetState) {\n if (!content) {\n return;\n }\n content.innerHTML = assetContent.content;\n this.replaceUse(content);\n }\n\n private replaceUse(node: SVGElement, parent?: SVGElement) {\n if (node.nodeName == 'use') {\n this.renderUseTarget(node, parent)\n node.remove();\n } else {\n for (let child of node.children) {\n this.replaceUse(child as SVGElement, node);\n }\n }\n }\n\n private renderUseTarget(node: SVGElement, parent?: SVGElement): void {\n const href = node.getAttribute('href');\n if (!href || !parent) {\n return;\n }\n this.processRenderUseTarget(href, parent);\n }\n\n\n private processRenderUseTarget(id: string, layer: SVGElement | null) {\n const parts = id.replaceAll('#', '').split(':');\n let asset: SvgAsset | undefined = undefined;\n if (parts.length >= 4) {\n asset = SVG_ASSETS.getAsset(parts[0], parts[1]);\n }\n if (asset) {\n const type = asset.types.find(t => t.name == parts[2]);\n let state: SvgAssetState | undefined = undefined;\n if (type) {\n state = type.states.find(s => s.name == parts[3]);\n }\n if (state) {\n const grp = SVG_BUILDER.createGroup(layer);\n if (grp) {\n grp.setAttribute('id', [parts[0], parts[1], parts[2], parts[3]].join(':'));\n grp.innerHTML = state.content;\n }\n\n }\n }\n }\n\n\n updateStyleclass() {\n const styleclass = [\n 'inu-svg-asset',\n this.assetSet,\n 'type-' + this.type,\n 'type-state' + this.state,\n this.name,\n this.styleClass\n ];\n this.node.setAttribute('class', styleclass.join(' '));\n }\n\n private updatePosition() {\n SVG_TRANSFORM.scale(this.node, this.size * this.scale, this.size * this.scale)\n\n this.x = this.center.x + (this.x * this.scale);\n this.y = this.center.y + (this.y * this.scale);\n if (this.isometric) {\n this.y = this.y / Math.sqrt(3);\n }\n\n SVG_TRANSFORM.translateY(this.node, this.y);\n SVG_TRANSFORM.translateX(this.node, this.x);\n }\n\n\n //--------------------------------------------------------------------------------------------------------------------\n // EVENT\n //--------------------------------------------------------------------------------------------------------------------\n private bindEvent(node: SVGElement) {\n const self = this;\n this.node.onmouseenter = (event) => this.onover(event, self);\n this.node.onclick = (event) => this.onclick(event, self);\n this.node.onmousedown = (event) => {\n this.drag = true;\n this.onSelected();\n this.onmousedown(event, self);\n }\n this.node.onmouseup = (event: MouseEvent) => {\n this.drag = false;\n this.onDeselected();\n }\n this.node.onmousemove = (event) => this.onmousemove(event, self);\n this.node.onmouseleave = (event) => this.onmouseleave(event, self);\n this.node.ondblclick = (event) => this.ondblclick(event, self);\n this.node.ondrag = (event) => {\n this.drag = true;\n this.ondrag(event, self);\n };\n this.node.ondrop = (event) => this.ondrop(event, self);\n this.node.ondragend = (event) => {\n this.drag = false;\n this.ondragend(event, self);\n }\n this.node.ondragstart = (event) => {\n this.drag = true;\n this.ondragstart(event, self);\n };\n this.node.ondragleave = (event) => {\n this.drag = false;\n this.ondragleave(event, self);\n };\n this.node.ondragover = (event) => this.ondragover(event, self);\n this.node.ondragenter = (event) => this.ondragenter(event, self);\n }\n\n updateValue(value: SvgAssetDTO) {\n this.assetSet = value.assetSet;\n this.type = value.type ? value.type : DEFAULT;\n this.state = value.state ? value.state : DEFAULT;\n this.name = value.name;\n this.title = value.title ? value.title : '';\n this.size = value.size < 0 ? 1 : value.size;\n this.x = this.toNumber(value.x);\n this.y = this.toNumber(value.y);\n }\n\n\n private onSelected() {\n this.stateChange(SELECTED);\n\n }\n\n private onDeselected() {\n this.stateRevert();\n }\n\n //--------------------------------------------------------------------------------------------------------------------\n // ACTIONS\n //--------------------------------------------------------------------------------------------------------------------\n remove(): void {\n\n }\n\n addStyleClass(style: string): void {\n SVG_TRANSFORM.addClass(this.node, style);\n }\n\n removeStyleClass(style: string): void {\n SVG_TRANSFORM.removeClass(this.node, style);\n }\n\n moveDrag(position: Point, zoom: number): void {\n this.x = this.x - (position.x / zoom);\n this.y = this.y - (position.y / zoom);\n this.move({x: this.x, y: this.y});\n }\n\n move(position: Point): void {\n SVG_TRANSFORM.translateX(this.node, position.x);\n SVG_TRANSFORM.translateY(this.node, position.y);\n\n }\n\n stateChange(state: string): void {\n const type = this.findAssetType();\n const newState = type?.states.find(s => s.name == state);\n if (newState) {\n this.previousState = this.state;\n this.state = newState.name;\n this.processUpdateRender();\n }\n }\n stateRevert(): void {\n if(this.previousState){\n this.state = this.previousState ? this.previousState : DEFAULT;\n this.processUpdateRender();\n this.previousState = undefined;\n }\n }\n\n\n //--------------------------------------------------------------------------------------------------------------------\n // GETTERS\n //--------------------------------------------------------------------------------------------------------------------\n isDrag(): boolean {\n return this.drag;\n }\n\n getComponentSize(): Size {\n return SVG.MATH.size(this.node);\n }\n\n private toNumber(value: any): number {\n if (!value) {\n return 0;\n }\n try {\n const realValue = Number(value);\n return realValue;\n } catch (e) {\n return 0;\n }\n }\n\n\n private findAssetType(): SvgAssetType | undefined {\n let assetContent = SVG_ASSETS.getAsset(this.assetSet, this.assetName);\n if (!assetContent) {\n return;\n }\n let type = assetContent.types.find(t => t.name == this.type);\n if (!type) {\n type = assetContent.types.find(t => t.name == DEFAULT);\n }\n return type;\n }\n}\n","import {\n CircleOption,\n Dimension, Point,\n Position,\n RectOption,\n Size,\n SvgAnimationCallback,\n SvgAnimationOption,\n SvgAnimationParameters,\n SvgAnimations, SvgAssetDTO, SvgAssetDTOOptions, SvgAssetElement, SvgAssets,\n SvgBuilder, SvgDefsPatternOption, SvgFilterOption,\n SvgMath,\n SvgOptionalOption,\n SvgStyle,\n SvgStyleGenerators,\n SvgTransform,\n TextOption,\n TransformationInfo,\n Vector\n} from \"inugami-ng/models\";\nimport {SvgAsset, SvgAssetSet} from 'inugami-svg-assets';\nimport {SvgAssetUtils} from './svg.asset.utils';\n\n\n\nexport const DEFAULT_FONT_SIZE = 12;\nexport const TWO_PI = 2 * Math.PI;\nexport const TWO_PI_RATIO = (2 * Math.PI) / 360;\nexport const DEGRE_CONVERTOR = 180 / Math.PI;\n\n\nconst isNull = (value: any): boolean => {\n return value == undefined || value == null;\n}\n\nconst isNotNull = (value: any): boolean => {\n return value != undefined && value != null;\n}\n\nconst convertToNumber = (value: any): number | null => {\n return value == undefined || value == null ? null : Number(value);\n}\n\n//#############################################################################\n// ASSETS\n//#############################################################################\nconst ASSETS: SvgAssetSet[] = [];\n\nexport const SVG_ASSETS: SvgAssets = {\n getAssetSets: (): SvgAssetSet[] => {\n return ASSETS;\n },\n\n register: (sets: SvgAssetSet[]) => {\n\n for (let set of sets) {\n const savedSet = ASSETS.find(s => s.name === set.name);\n if (!savedSet) {\n ASSETS.push(set);\n continue;\n }\n\n if (!savedSet.assets) {\n savedSet.assets = set.assets;\n continue;\n }\n for (let asset of set.assets) {\n const savedAsset = savedSet.assets.find(a => a.name === asset.name);\n if (savedAsset) {\n savedAsset.types = asset.types;\n savedAsset.attributes = asset.attributes;\n } else {\n savedSet.assets.push(asset);\n }\n }\n }\n },\n getAsset: (setName: string, assetName: string): SvgAsset | undefined => {\n return ASSETS.find(s => s.name === setName)\n ?.assets\n ?.find(a => a.name === assetName);\n }\n}\n\n//#############################################################################\n// SVG_CONST\n//#############################################################################\nexport const SVG_CONST: any = {\n DATETIME_YEAR: 60000 * 1440 * 365,\n MINUTE: 60000,\n NB_MINUTES_PER_DAY: 1440,\n NANO_TO_MILLIS: 1000000\n};\n\n\n//#############################################################################\n// SVG_MATH\n//#############################################################################\nexport const SVG_MATH: SvgMath = {\n convertToRadian: (angle: number): number => {\n return angle * TWO_PI_RATIO;\n },\n\n convertToDegre: (rad: number): number => {\n return rad * DEGRE_CONVERTOR;\n },\n /**\n * Allow to rotate a point by radian angle\n * @param x : number : X position\n * @param y : number : Y position\n * @param angle : number : angle in degre\n */\n rotate: (x: number, y: number, angle: number): Position => {\n var radian = SVG_MATH.convertToRadian(angle);\n var cos = Math.cos(radian);\n var sin = Math.sin(radian);\n\n return {\n x: (x * cos - y * sin),\n y: (x * sin + y * cos)\n };\n },\n\n /**\n * Allow to rotate a point by radian angle\n * @param x : number : X position\n * @param y : number : Y position\n * @param angle : number : angle in degre\n */\n rotateByRef: (xRef: number, yRef: number, x: number, y: number, angle: number): Position => {\n var zX = x - xRef;\n var zY = y - yRef;\n var rotate = SVG_MATH.rotate(zX, zY, angle);\n return {\n x: rotate.x + xRef,\n y: rotate.y + yRef\n }\n },\n\n size: (node: SVGElement | HTMLElement): Size => {\n const info = node.getBoundingClientRect();\n return {\n bottom: info.bottom,\n width: info.width,\n height: info.height,\n left: info.left,\n right: info.right,\n top: info.top,\n x: info.x,\n y: info.y,\n fontratio: isNotNull(node.getAttribute('fontratio')) ? 1 : convertToNumber(node.getAttribute('fontratio'))\n };\n },\n\n computeDimension: (parent: SVGElement | HTMLElement, widthRatio: number | null, heightRatio: number | null, fontRatio: number | null): Dimension => {\n\n\n let resultHeightRatio = heightRatio;\n let resultWidthRatio = widthRatio;\n let resultFontRatio = fontRatio;\n\n if (isNotNull(parent)) {\n let parentSize = SVG_MATH.size(parent);\n resultHeightRatio = 1;\n resultWidthRatio = 1;\n resultFontRatio = 1;\n let parentHeight = 1;\n let parentWidth = 1;\n let parentFont = 1;\n\n let localHeight = parentSize.height\n let localWidth = parentSize.width;\n let localFont = parentSize.fontratio;\n\n if (localHeight) {\n parentHeight = parentHeight * localHeight;\n }\n if (localWidth) {\n parentWidth = parentWidth * localWidth;\n }\n if (localFont) {\n parentFont = parentFont * localFont;\n }\n\n\n if (heightRatio) {\n resultHeightRatio = parentHeight * heightRatio;\n } else {\n resultHeightRatio = parentHeight;\n }\n\n if (widthRatio) {\n resultWidthRatio = parentWidth * widthRatio;\n } else {\n resultWidthRatio = parentWidth;\n }\n\n if (fontRatio) {\n resultFontRatio = parentFont * fontRatio;\n } else {\n resultFontRatio = parentFont;\n }\n }\n\n return {\n \"height\": resultHeightRatio ? resultHeightRatio : 1,\n \"width\": resultWidthRatio ? resultWidthRatio : 1,\n \"font\": resultFontRatio ? resultFontRatio : 1\n }\n },\n\n nowNano: () => {\n return performance.now() + performance.timeOrigin;\n },\n\n zoom: (value: number, zoom: number) => {\n return value * zoom;\n }\n}\n\n\n//#############################################################################\n// SVG_BUILDER\n//#############################################################################\nexport const SVG_BUILDER: SvgBuilder = {\n\n createAsset(option: SvgAssetDTOOptions): SvgAssetElement | undefined {\n return SvgAssetUtils.createAsset(option);\n },\n\n // ========================================================================\n // createDefs\n // ========================================================================\n createDefs: (parent: SVGElement | HTMLElement | null): SVGElement | null => {\n return SVG_BUILDER.createNode('defs', parent, {});\n },\n createFilter: (parentDefs: SVGElement | HTMLElement | null, id: string, option?: SvgFilterOption): SVGElement | null => {\n const result = SVG_BUILDER.createNode('filter', parentDefs, {});\n if (result) {\n result.setAttribute('id', id);\n\n const currentOption = option ? option : {};\n result.setAttribute('height', `${currentOption.height ? currentOption.height : 10}`);\n result.setAttribute('width', `${currentOption.width ? currentOption.width : 10}`);\n result.setAttribute('y', `${currentOption.y ? currentOption.y : 0}`);\n result.setAttribute('y', `${currentOption.x ? currentOption.x : 0}`);\n\n\n if (currentOption.style) {\n result.setAttribute('style', `${currentOption.style}`);\n }\n }\n return result;\n },\n createDefsPattern: (parent: SVGElement | HTMLElement | null, id: string, option?: SvgDefsPatternOption): SVGElement | null => {\n const result = SVG_BUILDER.createNode('pattern', parent, {});\n const currentOption = option ? option : {};\n\n if (result) {\n result.setAttribute('id', id);\n result.setAttribute('x', `${currentOption.x == undefined ? 0 : currentOption.x}`);\n result.setAttribute('y', `${currentOption.y == undefined ? 0 : currentOption.y}`);\n result.setAttribute('width', `${currentOption.width == undefined ? 10 : currentOption.width}`);\n result.setAttribute('height', `${currentOption.height == undefined ? 10 : currentOption.height}`);\n result.setAttribute('patternUnits', `${currentOption.patternUnits == undefined ? 'userSpaceOnUse' : currentOption.patternUnits}`);\n }\n return result;\n },\n // ========================================================================\n // createGroup\n // ========================================================================\n createGroup: (parent: SVGElement | HTMLElement | null, option?: SvgOptionalOption): SVGElement | null => {\n return SVG_BUILDER.createNode('g', parent, option);\n },\n\n // ========================================================================\n // createText\n // ========================================================================\n createText: (label: string, parent: SVGElement, option?: SvgOptionalOption): SVGElement | null => {\n const result = SVG_BUILDER.createNode('text', parent, option);\n\n if (result) {\n result.innerHTML = label;\n return result;\n } else {\n return null;\n }\n },\n\n\n // ========================================================================\n // createLine\n // ========================================================================\n createLine: (vector: Vector, parent: SVGElement, option?: SvgOptionalOption): SVGElement | null => {\n const result = SVG_BUILDER.createNode('path', parent, option);\n\n if (result) {\n result.setAttribute('d', `M ${vector.start.x},${vector.start.y} ${vector.end.x},${vector.end.y}`);\n return result;\n } else {\n return null;\n }\n },\n // ========================================================================\n // createLine\n // ========================================================================\n createCurve(parent: SVGElement, curve: string, option: SvgOptionalOption | undefined): SVGElement | null {\n const result = SVG_BUILDER.createNode('path', parent, option);\n if (result) {\n result.setAttribute('d', curve);\n }\n return result;\n },\n // ========================================================================\n // createLine\n // ========================================================================\n createRect: (parent: SVGElement, option?: RectOption): SVGElement | null => {\n\n const currentOption = option ? option : {};\n const result = SVG_BUILDER.createNode('rect', parent, currentOption);\n\n if (result == undefined || result == null) {\n return null;\n }\n\n if (currentOption.height) {\n result.setAttribute(\"height\", '' + currentOption.height);\n }\n if (currentOption.width) {\n result.setAttribute(\"width\", '' + currentOption.width);\n }\n if (currentOption.round) {\n result.setAttribute(\"rx\", '' + currentOption.round);\n }\n\n return result;\n },\n\n\n // ========================================================================\n // Circle\n // ========================================================================\n createCircle: (parent: SVGElement, option?: CircleOption): SVGElement | null => {\n\n const currentOption = option ? option : {};\n const result = SVG_BUILDER.createNode('circle', parent, currentOption);\n\n if (result == undefined || result == null) {\n return null;\n }\n\n if (currentOption.height) {\n result.setAttribute(\"height\", '' + currentOption.height);\n }\n if (currentOption.width) {\n result.setAttribute(\"width\", '' + currentOption.width);\n }\n if (currentOption.round) {\n result.setAttribute(\"rx\", '' + currentOption.round);\n }\n\n return result;\n },\n\n ellipse: (parent: SVGElement, option?: CircleOption): SVGElement | null => {\n const currentOption = option ? option : {};\n\n if (parent) {\n let dimention = SVG_MATH.computeDimension(parent,\n currentOption.width ? currentOption.width : 24, currentOption.height ? currentOption.height : 24, 0.10);\n let result = SVG_BUILDER.createNode('cirellipsecle', parent, currentOption);\n\n if (result) {\n result.setAttribute(\"rx\", '' + dimention.width);\n result.setAttribute(\"ry\", '' + dimention.height);\n result.setAttribute(\"cx\", '' + 0);\n result.setAttribute(\"cy\", '' + 0);\n return result;\n }\n\n }\n\n return null;\n },\n\n\n // ========================================================================\n // TEXT\n // ========================================================================\n text: (parent: SVGElement, label: string, option?: TextOption): SVGElement | null => {\n let result = null;\n let layerSize = SVG.MATH.size(parent);\n let fontRatio = layerSize.fontratio ? layerSize.fontratio : 12;\n const currentOption = option ? option : {};\n\n if (isNotNull(parent)) {\n let currentFontSize = isNull(currentOption.fontSize) || fontRatio <= 0 ? 12 : currentOption.fontSize;\n if (fontRatio) {\n currentFontSize = (currentFontSize ? currentFontSize : 12) * fontRatio;\n }\n\n result = SVG_BUILDER.createNode('svg:text', parent, currentOption);\n\n if (result) {\n result.setAttribute(\"x\", '' + 0);\n result.setAttribute(\"y\", '' + 0);\n result.setAttribute(\"style\", `font-size:${currentFontSize}px`);\n\n const htmlNode = result as any;\n htmlNode.text(label);\n }\n }\n\n return result;\n },\n\n // ========================================================================\n // USE\n // ========================================================================\n createUse(id: string, parent: SVGElement | HTMLElement | null, option: SvgOptionalOption | undefined): SVGElement | null {\n if(!parent){\n return null;\n }\n const result = SVG_BUILDER.createNode('use', parent, option);\n if(result){\n result.setAttribute('href', `#${id}`);\n return result;\n }\n return null;\n },\n // ========================================================================\n // createGroup\n // ========================================================================\n createNode: (nodeType: string, parent: SVGElement | HTMLElement | null, option?: SvgOptionalOption): SVGElement | null => {\n if (!parent) {\n return null;\n }\n const currentOption = option == undefined || option == null ? {} : option;\n const result = document.createElementNS(\"http://www.w3.org/2000/svg\", nodeType);\n if (currentOption.styleClass) {\n result.setAttribute(\"class\", currentOption.styleClass);\n }\n\n parent.appendChild(result);\n\n\n return result;\n }\n}\n\n\n//#############################################################################\n// SVG_TRANSFORMATION\n//#############################################################################\nexport const SVG_TRANSFORM: SvgTransform = {\n\n clean: (node: SVGElement) => {\n node.removeAttribute(\"transform\");\n },\n\n // ========================================================================\n // translate\n // ========================================================================\n translateX: (node: SVGElement | null, posX: number): void => {\n if (!node) {\n return;\n }\n\n const position = SVG_TRANSFORM.extractTransformInformation(node);\n position.x = posX;\n SVG_TRANSFORM._genericTransform(node, position);\n },\n\n translateY: (node: SVGElement | null, posY: number): void => {\n if (!node) {\n return;\n }\n\n const position = SVG_TRANSFORM.extractTransformInformation(node);\n position.y = posY;\n SVG_TRANSFORM._genericTransform(node, position);\n },\n\n\n // ========================================================================\n // SCALE\n // ========================================================================\n scale: (node: SVGElement, scaleX: number, scaleY: number) => {\n if (node) {\n var positions = SVG_TRANSFORM.extractTransformInformation(node);\n positions.scaleX = isNull(scaleX) ? 0 : scaleX;\n positions.scaleY = isNull(scaleY) ? 0 : scaleY;\n\n SVG_TRANSFORM._genericTransform(node, positions);\n }\n },\n scaleX: (node: SVGElement, scaleX: number) => {\n if (isNotNull(node)) {\n var positions = SVG_TRANSFORM.extractTransformInformation(node);\n positions.scaleX = isNull(scaleX) ? 0 : scaleX;\n\n SVG_TRANSFORM._genericTransform(node, positions);\n }\n },\n\n scaleY: (node: SVGElement, scaleY: number) => {\n if (isNotNull(node)) {\n var positions = SVG_TRANSFORM.extractTransformInformation(node);\n positions.scaleY = isNull(scaleY) ? 0 : scaleY;\n\n SVG_TRANSFORM._genericTransform(node, positions);\n }\n },\n\n\n // ========================================================================\n // MATRIX\n // ========================================================================\n matrix: (node: SVGElement, scaleX: number, scaleY: number, posX: number, posY: number) => {\n if (node) {\n var data = [isNull(scaleX) ? 0 : scaleX,\n 0,\n 0,\n isNull(scaleY) ? 0 : scaleY,\n isNull(posX) ? 0 : posX,\n isNull(posY) ? 0 : posY];\n node.setAttribute(\"transform\", \"matrix(\" + data.join(',') + \")\");\n }\n },\n\n // ========================================================================\n // extractTransformInformation\n // ========================================================================\n extractTransformInformation: (node: SVGElement | HTMLElement): TransformationInfo => {\n const attrTransfo = node.getAttribute(\"transform\");\n\n let x = null;\n let y = null;\n let scaleX = null;\n let scaleY = null;\n\n if (attrTransfo) {\n\n var regex = new RegExp('(?:([^(]+)[(])([^)]+)(?:[)])');\n var group = regex.exec(attrTransfo);\n\n if (!group) {\n return {\n x: x,\n y: y,\n scaleX: scaleX,\n scaleY: scaleY\n }\n }\n\n switch (group[1]) {\n case \"translate\":\n var data = group[2].split(',');\n x = Number(data[0]);\n y = Number(data[1]);\n break;\n\n case \"scale\":\n var data = group[2].split(',');\n scaleX = Number(data[0]);\n scaleY = Number(data[1]);\n break;\n\n case \"matrix\":\n var data = group[2].split(',');\n scaleX = Number(data[0]);\n scaleY = Number(data[3]);\n x = Number(data[4]);\n y = Number(data[5]);\n break;\n }\n }\n return {\n x: x,\n y: y,\n scaleX: scaleX,\n scaleY: scaleY\n }\n },\n\n\n // ========================================================================\n // _genericTransform\n // ========================================================================\n _genericTransform: (node: SVGElement, transfo: TransformationInfo) => {\n if (SVG_TRANSFORM._noScale(transfo)) {\n node.setAttribute(\"transform\", \"translate(\" + [isNull(transfo.x) ? 0 : transfo.x,\n isNull(transfo.y) ? 0 : transfo.y]\n .join(',') + \")\");\n } else if (SVG_TRANSFORM._noTranslate(transfo)) {\n node.setAttribute(\"transform\", \"scale(\" + [isNull(transfo.scaleX) ? 0 : transfo.scaleX,\n isNull(transfo.scaleY) ? 0 : transfo.scaleY]\n .join(',') + \")\");\n } else {\n SVG_TRANSFORM.matrix(node,\n transfo.scaleX ? transfo.scaleX : 0,\n transfo.scaleY ? transfo.scaleY : 0,\n transfo.x ? transfo.x : 0,\n transfo.y ? transfo.y : 0);\n }\n },\n _noScale: (data: TransformationInfo): boolean => {\n return isNull(data.scaleX) && isNull(data.scaleY);\n },\n _noTranslate: (data: TransformationInfo): boolean => {\n return isNull(data.x) && isNull(data.y);\n },\n\n\n // ========================================================================\n // ALIGN\n // ========================================================================\n center: (compo: SVGElement, svgContainer: HTMLElement, onX: boolean, onY: boolean): number => {\n SVG_TRANSFORM.clean(compo);\n const containerSize = SVG.MATH.size(svgContainer);\n let pos = SVG.MATH.size(compo);\n\n const diffSizeX = containerSize.width / pos.width;\n const diffSizeY = containerSize.height / pos.height;\n const sizeRatio = diffSizeY < diffSizeX ? diffSizeY : diffSizeX;\n\n SVG.TRANSFORM.scale(compo, sizeRatio, sizeRatio);\n pos = SVG.MATH.size(compo);\n pos.x = pos.x - containerSize.x;\n pos.y = pos.y - containerSize.y;\n\n if (onX) {\n const diffSizeX = containerSize.width - pos.width;\n const newPosX = (-pos.x) + (diffSizeX / 2);\n SVG.TRANSFORM.translateX(compo, newPosX);\n }\n\n if (onY) {\n const diffSizeY = containerSize.height - pos.height;\n const newPosY = (-pos.y) + (diffSizeY / 2);\n SVG.TRANSFORM.translateY(compo, newPosY);\n }\n\n return 1 / sizeRatio;\n },\n\n // ========================================================================\n // TOOLS\n // ========================================================================\n toogleClass: (node: SVGElement | HTMLElement, styleclass: string): void => {\n if (!node) {\n return;\n }\n const currentClass = node.getAttribute(\"class\");\n if (currentClass) {\n if (currentClass.includes(styleclass)) {\n node.setAttribute('class', currentClass.replaceAll(styleclass, ''));\n } else {\n node.setAttribute('class', `${currentClass} ${styleclass}`);\n }\n } else {\n node.setAttribute('class', styleclass);\n }\n },\n removeClass: (node: SVGElement | HTMLElement, styleclass: string): void => {\n if (!node) {\n return;\n }\n const currentClass = node.getAttribute(\"class\");\n if (currentClass) {\n if (currentClass.includes(styleclass)) {\n node.setAttribute('class', currentClass.replaceAll(styleclass, ''));\n }\n }\n },\n addClass: (node: SVGElement | HTMLElement, styleclass: string): void => {\n if (!node) {\n return;\n }\n const currentClass = node.getAttribute(\"class\");\n if (currentClass) {\n if (!currentClass.includes(styleclass)) {\n node.setAttribute('class', `${currentClass} ${styleclass}`);\n }\n } else {\n node.setAttribute('class', styleclass);\n }\n },\n hasClass: (node: SVGElement | HTMLElement, styleclass: string): boolean => {\n if (!node) {\n return false;\n }\n const currentClass = node.getAttribute(\"class\");\n return currentClass ? currentClass.includes(styleclass) : false;\n }\n};\n\n//#############################################################################\n// SVG STYLE GENERATOR\n//#############################################################################\nexport const SVG_STYLE_GENERATOR: SvgStyleGenerators = {\n BY_TYPE: (value: number, maxValue: number, minValue: number, type: string): SvgStyle => {\n return {\n style: type\n }\n }\n}\n\n//#############################################################################\n// SVG ANIMATION\n//#############################################################################\nexport const SVG_ANIMATION: SvgAnimations = {\n TYPES: {\n linear: (time: number): number => time,\n parabolic: (time: number): number => -(4 * Math.pow(time, 2)) + (4 * time),\n easeOutCubic: (time: number) => Math.pow(time - 1, 3) + 1,\n easeInCubic: (time: number) => Math.pow(time, 3),\n easeInQuad: (time: number) => time * time,\n easeOutQuad: (time: number) => time * (2 - time),\n },\n animate: (callback: SvgAnimationCallback, option?: SvgAnimationOption): void => {\n\n const currentOption: SvgAnimationOption = option ? option : {};\n const duration = (currentOption.duration ? currentOption.duration : 250);\n const now = new Date().getTime();\n\n const params: SvgAnimationParameters = {\n timer: currentOption.timer ? currentOption.timer : SVG_ANIMATION.TYPES.linear,\n delay: currentOption.delay ? currentOption.delay : 0,\n duration: (now + duration) - now,\n startTime: now,\n ttl: now + duration,\n callback: callback,\n onDone: currentOption.onDone\n }\n\n\n if (params.delay > 0) {\n setTimeout(() => {\n const now = new Date().getTime();\n params.startTime = now;\n params.ttl = now + duration;\n new AnimationHandler(params).run();\n }, currentOption.delay);\n } else {\n new AnimationHandler(params).run();\n }\n }\n}\n\nclass AnimationHandler {\n\n private animeId: number | null = null;\n\n constructor(private parameters: SvgAnimationParameters) {\n }\n\n public run() {\n let duration = this.parameters.duration;\n let initialTimestamp = window.performance.now();\n let timestamp = 0;\n\n const frame = () => {\n timestamp = window.performance.now() - initialTimestamp;\n const progress = timestamp / duration\n if (progress >= 1) {\n this.parameters.callback(this.parameters.timer(1));\n if (this.parameters.onDone) {\n this.parameters.onDone();\n }\n if (this.animeId) {\n cancelAnimationFrame(this.animeId);\n }\n\n this.animeId = null;\n return;\n }\n this.parameters.callback(this.parameters.timer(progress));\n\n this.animeId = requestAnimationFrame(frame);\n }\n\n this.animeId = requestAnimationFrame(frame);\n }\n\n}\n\n//#############################################################################\n// SVG_TRANSFORMATION\n//#############################################################################\nexport const SVG = {\n CONSTANTS: SVG_CONST,\n MATH: SVG_MATH,\n BUILDER: SVG_BUILDER,\n TRANSFORM: SVG_TRANSFORM,\n STYLE: SVG_STYLE_GENERATOR,\n ANIMATION: SVG_ANIMATION\n}\n","export const COLORS_MATLAB: string[] =[\n \"#000983\",\n \"#011488\",\n \"#02208D\",\n \"#022B92\",\n \"#033797\",\n \"#04429C\",\n \"#044EA1\",\n \"#0559A7\",\n \"#0665AC\",\n \"#0670B1\",\n \"#077CB6\",\n \"#0787BB\",\n \"#0893C0\",\n \"#099FC5\",\n \"#09AACA\",\n \"#0AB5CF\",\n \"#0BC1D5\",\n \"#0BCDDA\",\n \"#0CD8DF\",\n \"#0CE4E4\",\n \"#0DF0E9\",\n \"#0EFBEE\",\n \"#13FFEB\",\n \"#1BFFE3\",\n \"#23FFDC\",\n \"#2AFFD4\",\n \"#32FFCC\",\n \"#3AFFC5\",\n \"#41FFBD\",\n \"#49FFB5\",\n \"#51FFAD\",\n \"#59FFA6\",\n \"#60FF9E\",\n \"#68FF96\",\n \"#70FF8F\",\n \"#78FF87\",\n \"#7FFF7F\",\n \"#87FF77\",\n \"#8FFF70\",\n \"#97FF68\",\n \"#9EFF60\",\n \"#A6FF59\",\n \"#AEFF51\",\n \"#B6FF49\",\n \"#BDFF41\",\n \"#C5FF3A\",\n \"#CDFF32\",\n \"#D5FF2A\",\n \"#DCFF23\",\n \"#E4FF1B\",\n \"#ECFF13\",\n \"#F3FF0C\",\n \"#FBFF04\",\n \"#FFFA00\",\n \"#FFF100\",\n \"#FFE800\",\n \"#FFDF00\",\n \"#FFD500\",\n \"#FFCC00\",\n \"#FFC300\",\n \"#FFBA00\",\n \"#FFB100\",\n \"#FFA800\",\n \"#FF9E00\",\n \"#FF9500\",\n \"#FF8C00\",\n \"#FF8300\",\n \"#FF7A00\",\n \"#FF7000\",\n \"#FF6700\",\n \"#FF5E00\",\n \"#FF5500\",\n \"#FF4C00\",\n \"#FF4200\",\n \"#FF3900\",\n \"#FF3000\",\n \"#FF2700\",\n \"#FF1E00\",\n \"#FF1500\",\n \"#FF0C00\",\n \"#FF0200\",\n \"#FA0000\",\n \"#F50000\",\n \"#EF0000\",\n \"#E90000\",\n \"#E30000\",\n \"#DD0000\",\n \"#D70000\",\n \"#D10000\",\n \"#CC0000\",\n \"#C60000\",\n \"#C00000\",\n \"#BA0000\",\n \"#B40000\",\n \"#AE0000\",\n \"#A90000\",\n \"#A30000\",\n \"#9D0000\",\n \"#970000\",\n \"#910000\"\n ];\n\n\nexport const COLORS_BOOTSTRAP: string[] = [\n \"#05285B\",\n \"#073984\",\n \"#094BAC\",\n \"#0B5CD5\",\n \"#0D6EFD\",\n \"#3485FD\",\n \"#5A9CFE\",\n \"#81B4FE\",\n \"#A8CBFE\",\n \"#281845\",\n \"#3A2264\",\n \"#4B2D83\",\n \"#5D37A2\",\n \"#6F42C1\",\n \"#8660CB\",\n \"#9D7ED5\",\n \"#B49DDF\",\n \"#CBBBE9\",\n \"#4D1230\",\n \"#6F1B45\",\n \"#92235A\",\n \"#B42B6F\",\n \"#D63384\",\n \"#DD5498\",\n \"#E374AB\",\n \"#EA95BF\",\n \"#F0B6D3\",\n \"#4F1319\",\n \"#721C24\",\n \"#96242F\",\n \"#B92D3A\",\n \"#DC3545\",\n \"#E25563\",\n \"#E77681\",\n \"#ED969E\",\n \"#F2B6BC\",\n \"#5B2D07\",\n \"#84420A\",\n \"#AC560E\",\n \"#D56A11\",\n \"#FD7E14\",\n \"#FD933A\",\n \"#FEA75F\",\n \"#FEBC85\",\n \"#FED1AA\",\n \"#5C4503\",\n \"#856404\",\n \"#AD8305\",\n \"#D6A206\",\n \"#FFC107\",\n \"#FFCB2F\",\n \"#FFD556\",\n \"#FFDF7E\",\n \"#FFE9A6\",\n \"#083A42\",\n \"#0C5460\",\n \"#106E7D\",\n \"#13889B\",\n \"#17A2B8\",\n \"#3CB1C3\",\n \"#61C0CF\",\n \"#86CFDA\",\n \"#ABDEE5\",\n \"#0E3C19\",\n \"#155724\",\n \"#1B722F\",\n \"#228C3A\",\n \"#28A745\",\n \"#4AB563\",\n \"#6DC381\",\n \"#8FD19E\",\n \"#B2DFBC\"\n]\n\nexport const COLORS_BOOTSTRAP_PRIMARY: string[] = [\n \"#0D6EFD\",\n \"#6F42C1\",\n \"#D63384\",\n \"#B92D3A\",\n \"#FD7E14\",\n \"#FFC107\",\n \"#17A2B8\",\n \"#4AB563\"\n]\n\nexport const COLORS_ANDROID: string[] = [\n \"#bfbfbf\",\n \"#404040\",\n \"#6699ff\",\n \"#3366cc\",\n \"#003399\",\n \"#99cc33\",\n \"#00cc00\",\n \"#669900\",\n \"#ffcc00\",\n \"#ff6600\",\n \"#cc0000\"\n]\nexport const COLORS_GNOME: string[] = [\n \"#C0BFBC\",\n \"#9A9996\",\n \"#77767B\",\n \"#5E5C64\",\n \"#3D3846\",\n \"#241F31\",\n \"#99C1F1\",\n \"#62A0EA\",\n \"#3584E4\",\n \"#1C71D8\",\n \"#1A5FB4\",\n \"#8FF0A4\",\n \"#57E389\",\n \"#33D17A\",\n \"#2EC27E\",\n \"#26A269\",\n \"#F9F06B\",\n \"#F8E45C\",\n \"#F6D32D\",\n \"#F5C211\",\n \"#E5A50A\",\n \"#FFBE6F\",\n \"#FFA348\",\n \"#FF7800\",\n \"#E66100\",\n \"#C64600\",\n \"#F66151\",\n \"#ED333B\",\n \"#E01B24\",\n \"#C01C28\",\n \"#A51D2D\",\n \"#DC8ADD\",\n \"#C061CB\",\n \"#9141AC\",\n \"#813D9C\",\n \"#613583\",\n \"#CDAB8F\",\n \"#B5835A\",\n \"#986A44\",\n \"#865E3C\",\n \"#63452C\"\n]\n\n\nexport const COLORS_TOPO: string[] = [\n \"#0102A6\",\n \"#0104A2\",\n \"#02079F\",\n \"#03099C\",\n \"#040C98\",\n \"#050E95\",\n \"#051092\",\n \"#06138E\",\n \"#07158B\",\n \"#081888\",\n \"#091A84\",\n \"#091D81\",\n \"#0A1F7E\",\n \"#0B227A\",\n \"#0C2477\",\n \"#0C2774\",\n \"#0D2970\",\n \"#0E2C6D\",\n \"#0F2E69\",\n \"#103166\",\n \"#103363\",\n \"#11365F\",\n \"#12385C\",\n \"#133B59\",\n \"#143D55\",\n \"#143F52\",\n \"#15424F\",\n \"#16444B\",\n \"#174748\",\n \"#184945\",\n \"#184C41\",\n \"#194E3E\",\n \"#1A513B\",\n \"#1B5337\",\n \"#1C5634\",\n \"#1C5831\",\n \"#1D5B2D\",\n \"#1E5D2A\",\n \"#1F6027\",\n \"#206223\",\n \"#206520\",\n \"#21671C\",\n \"#226919\",\n \"#236C16\",\n \"#246E12\",\n \"#24710F\",\n \"#25730C\",\n \"#267608\",\n \"#277805\",\n \"#287B02\",\n \"#2C7E02\",\n \"#338206\",\n \"#3B860B\",\n \"#438B0F\",\n \"#4A8F13\",\n \"#529318\",\n \"#5A971C\",\n \"#619B20\",\n \"#699F25\",\n \"#71A329\",\n \"#78A82D\",\n \"#80AC31\",\n \"#88B036\",\n \"#8FB43A\",\n \"#97B83E\",\n \"#9FBC43\",\n \"#A6C047\",\n \"#AEC54B\",\n \"#B6C950\",\n \"#BDCD54\",\n \"#C5D158\",\n \"#CDD55D\",\n \"#D4D961\",\n \"#DCDD65\",\n \"#E3E269\",\n \"#E8E26A\",\n \"#E7DE66\",\n \"#E6D962\",\n \"#E6D55E\",\n \"#E5D05A\",\n \"#E5CC56\",\n \"#E4C752\",\n \"#E3C34E\",\n \"#E3BE4A\",\n \"#E2BA46\",\n \"#E1B642\",\n \"#E1B13F\",\n \"#E0AD3B\",\n \"#DFA837\",\n \"#DFA433\",\n \"#DE9F2F\",\n \"#DE9B2B\",\n \"#DD9627\",\n \"#DC9223\",\n \"#DC8D1F\",\n \"#DB891B\",\n \"#DA8417\",\n \"#DA8013\",\n \"#D97B0F\",\n \"#D8770B\"\n]\n\nexport const COLORS_LEVEL: string[] = [\n \"#BBBCBF\",\n \"#B4B8C0\",\n \"#AEB4C1\",\n \"#A7B0C1\",\n \"#A1ACC2\",\n \"#9AA7C2\",\n \"#93A3C3\",\n \"#8D9FC4\",\n \"#869BC4\",\n \"#8097C5\",\n \"#7993C5\",\n \"#738FC6\",\n \"#6C8AC7\",\n \"#6686C7\",\n \"#5F82C8\",\n \"#597EC8\",\n \"#527AC9\",\n \"#4C76CA\",\n \"#4572CA\",\n \"#3F6DCB\",\n \"#3869CC\",\n \"#3367CA\",\n \"#316BC3\",\n \"#2F6FBB\",\n \"#2D73B3\",\n \"#2B76AB\",\n \"#297AA3\",\n \"#277E9B\",\n \"#258293\",\n \"#23868C\",\n \"#218A84\",\n \"#1F8E7C\",\n \"#1D9274\",\n \"#1B966C\",\n \"#199A64\",\n \"#179E5C\",\n \"#15A255\",\n \"#13A64D\",\n \"#11AA45\",\n \"#0FAD3D\",\n \"#0DB135\",\n \"#0BB52D\",\n \"#09B926\",\n \"#07BD1E\",\n \"#05C116\",\n \"#04C50E\",\n \"#02C906\",\n \"#03CC00\",\n \"#0FCC00\",\n \"#1CCC00\",\n \"#28CC00\",\n \"#35CC00\",\n \"#41CC00\",\n \"#4ECC00\",\n \"#5ACC00\",\n \"#67CC00\",\n \"#73CC00\",\n \"#80CC00\",\n \"#8DCC00\",\n \"#99CC00\",\n \"#A6CC00\",\n \"#B2CC00\",\n \"#BFCC00\",\n \"#CBCC00\",\n \"#D8CC00\",\n \"#E4CC00\",\n \"#F1CC00\",\n \"#FCCB00\",\n \"#FEC700\",\n \"#FCC000\",\n \"#FBBA00\",\n \"#F9B400\",\n \"#F7AE00\",\n \"#F6A700\",\n \"#F4A100\",\n \"#F39B00\",\n \"#F19400\",\n \"#F08E00\",\n \"#EE8800\",\n \"#EC8200\",\n \"#EB7B00\",\n \"#E97500\",\n \"#E86F00\",\n \"#E66900\",\n \"#E56200\",\n \"#E35C00\",\n \"#E15600\",\n \"#E04F00\",\n \"#DE4900\",\n \"#DD4300\",\n \"#DB3D00\",\n \"#DA3600\",\n \"#D83000\",\n \"#D62A00\",\n \"#D52400\",\n \"#D31D00\",\n \"#D21700\",\n \"#D01100\",\n \"#CF0B00\",\n \"#CD0400\"\n]\n\n\nexport const ALL_COLORS : any = {\n COLORS_ANDROID:COLORS_ANDROID,\n COLORS_BOOTSTRAP:COLORS_BOOTSTRAP,\n COLORS_BOOTSTRAP_PRIMARY:COLORS_BOOTSTRAP_PRIMARY,\n COLORS_GNOME:COLORS_GNOME,\n COLORS_LEVEL:COLORS_LEVEL,\n COLORS_MATLAB:COLORS_MATLAB,\n COLORS_TOPO:COLORS_TOPO\n}\n\nexport const COMPUTE_PERCENT = (value: number, min: number, max: number): number => {\n let currentValue = value;\n if (value < min) {\n currentValue = min;\n }\n if (value > max) {\n currentValue = max;\n }\n const range = max - min;\n return range <= 0 ? 0 : Math.min(Math.max(((currentValue - min) / range) * 100, 0), 100);\n}\nexport const GET_COLOR = (percent: number, colors: string[]): string => {\n if (!colors || colors.length === 0) return '#000000';\n const sanitizedPercent = Math.max(0, Math.min(100, percent));\n const index = Math.round((sanitizedPercent / 100) * (colors.length - 1));\n return colors[index];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAUM,SAAU,oBAAoB,CAAC,OAAoC,EAAA;AACvE,IAAA,OAAO,wBAAwB,CAAC;AACE,QAAA;AACE,YAAA,OAAO,EAAG,oBAAoB;AAC9B,YAAA,QAAQ,EAAE,IAAI,oBAAoB,CAAC,OAAO;AAC3C;AACF,KAAA,CAAC;AACpC;MAGa,oBAAoB,CAAA;AAC/B,IAAA,GAAG,GAAW,MAAM,CAAS,KAAK,+CAAC;IACnC,UAAU,GAAI,MAAM,CAAS,SAAS,CAAC,QAAQ,EAAE,sDAAC;AAClD,IAAA,WAAW,GAAG,MAAM,CAAS,EAAE,uDAAC;AAChC,IAAA,OAAO,GAAO,MAAM,CAAS,EAAE,mDAAC;AAGhC,IAAA,WAAA,CAAY,OAAoC,EAAA;AAC9C,QAAA,IAAI,CAAC,GAAG,GAAW,OAAO,CAAC,GAAG;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAI,OAAO,CAAC,UAAU;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;AACtC,QAAA,IAAI,CAAC,OAAO,GAAO,OAAO,CAAC,OAAO;IACpC;AAED;;AC5BM,MAAM,aAAa,GAAG,CAAC;AACvB,MAAM,OAAO,GAAS;AACtB,MAAM,SAAS,GAAO,CAAC,GAAG;AAC1B,MAAM,UAAU,GAAM,EAAE,GAAG;AAC3B,MAAM,UAAU,GAAM,EAAE,GAAG;AAC3B,MAAM,QAAQ,GAAQ,EAAE,GAAG;MACrB,YAAY,GAAI,EAAE,GAAG,EAAE,GAAG;MAC1B,OAAO,GAAS,EAAE,GAAG,EAAE,GAAG;AAEvC,MAAM,gBAAgB,GAA2C,IAAI,GAAG,EAAE;AAC1E,MAAM,cAAc,GAA6C,EAAE;MAUtD,gBAAgB,CAAA;;;;IAMnB,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;IACrE,YAAY,GAAW,QAAQ,CAAU,MAAM,MAAM,CAAC,YAAY,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IACnE,cAAc,GAAS,QAAQ,CAAU,MAAM,MAAM,CAAC,cAAc,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IACrE,QAAQ,GAAe,MAAM,CAAuB,IAAI,CAAC,oBAAoB,IAAI,IAAI,oBAAoB,CAC/G;AACE,QAAA,UAAU,EAAG,MAAM,CAAS,SAAS,CAAC,QAAQ,EAAE,CAAC;AACjD,QAAA,GAAG,EAAU,MAAM,CAAS,KAAK,CAAC;AAClC,QAAA,WAAW,EAAE,MAAM,CAAS,SAAS,CAAC;AACtC,QAAA,OAAO,EAAM,MAAM,CAAS,OAAO;AACpC,KAAA,CACF,oDAAC;;;;AAKK,IAAA,GAAG,CAAI,GAAW,EAAA;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;IAC5C;AAEO,IAAA,MAAM,CAAI,GAAW,EAAA;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;IAC1C;IAEO,GAAG,CAAC,GAAW,EAAE,KAAU,EAAA;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC;QAExC,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;QAC7C,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC;AAClC,QAAA,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC;IAClC;AAEO,IAAA,MAAM,CAAC,GAAW,EAAE,KAAU,EAAE,GAAW,EAAA;QAChD,MAAM,OAAO,GAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QACtC,MAAM,QAAQ,GAAG,GAAG,IAAI,aAAa,GAAG,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG;QAClF,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;QAEhD,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;QAC7C,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC;AAClC,QAAA,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC;IAClC;AAEO,IAAA,UAAU,CAAC,GAAW,EAAA;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;IACxC;AAEO,IAAA,aAAa,CAAC,GAAW,EAAA;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;IACxC;IAEO,UAAU,CAAC,GAAW,EAAE,GAAoB,EAAA;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC;IAClC;IAEO,aAAa,CAAC,GAAW,EAAE,GAAoB,EAAA;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC;IAClC;AAEO,IAAA,QAAQ,CAAC,GAAW,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpD;AAEO,IAAA,WAAW,CAAC,GAAW,EAAA;AAC5B,QAAA,IAAI,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACzD;IAEO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE;AAC3B,QAAA,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE;IAC/B;;;;AAKQ,IAAA,iBAAiB,CAAC,OAAe,EAAA;QACvC,IAAI,MAAM,GAA0C,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;AACjF,QAAA,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,UAAU,EAAE;IACnD;IAEQ,iBAAiB,CAAC,OAAe,EAAE,GAAoB,EAAA;AAC7D,QAAA,MAAM,UAAU,GAAG,IAAI,oBAAoB,EAAO;AAClD,QAAA,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC;QAEzC,GAAG,CAAC,SAAS,CAAC;AACE,YAAA,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,GAAG;AAC/C,SAAA,CAAC;IAClB;;;;AAKQ,IAAA,qBAAqB,CAAI,OAAe,EAAA;QAC9C,IAAK,OAAO,GAAyB,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;QAC3E,IAAG,CAAC,OAAO,EAAC;AACV,YAAA,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;QACnC;QACA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClD;AAEQ,IAAA,mBAAmB,CAAI,OAAe,EAAA;QAC5C,IAAK,OAAO,GAAyB,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;QACzE,IAAG,CAAC,OAAO,EAAC;AACV,YAAA,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;QACnC;QACA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClD;IAGQ,kBAAkB,CAAC,QAAiC,EAAE,OAAe,EAAA;QAC3E,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,SAAS;QAClB;QACA,IAAI,YAAY,GAAyB,SAAS;AAClD,QAAA,IAAI;AACF,YAAA,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACrC;QAAE,OAAO,CAAC,EAAE;QACZ;QACA,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,IAAI,YAAY,CAAC,GAAG,IAAI,aAAa,EAAE;YACrC,OAAO,YAAY,CAAC,KAAK;QAC3B;QAEA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AAChC,QAAA,IAAI,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE;YAC1B,IAAI,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;AACzC,YAAA,OAAO,SAAS;QAClB;aAAO;YACL,OAAO,YAAY,CAAC,KAAK;QAC3B;IACF;;;;IAKQ,mBAAmB,CAAC,OAAe,EAAE,KAAU,EAAA;AACrD,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;IAC3E;AAEQ,IAAA,iBAAiB,CAAC,OAAe,EAAE,KAAU,EAAE,GAAW,EAAA;AAChE,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;IACjE;AAEQ,IAAA,cAAc,CAAC,OAAe,EAAE,KAAU,EAAE,GAAW,EAAE,OAAgB,EAAA;AAC/E,QAAA,MAAM,OAAO,GAAa;AACxB,YAAA,GAAG,EAAI,OAAO;AACd,YAAA,GAAG,EAAI,GAAG;AACV,YAAA,KAAK,EAAE;SACR;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACpC,QAAA,IAAI;AACF,YAAA,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;QAChC;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI;QAChC;IACF;AAEQ,IAAA,QAAQ,CAAC,GAAW,EAAA;AAC1B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAA,OAAO,cAAc,CAAC,SAAS,CAAC,CAAA,EAAG,QAAQ,CAAC,GAAG,EAAE,CAAA,CAAA,EAAI,QAAQ,CAAC,WAAW,EAAE,CAAA,CAAA,EAAI,QAAQ,CAAC,OAAO,EAAE,CAAA,CAAA,EAAI,QAAQ,CAAC,UAAU,EAAE,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAC;IACtI;AAEQ,IAAA,WAAW,CAAC,GAAW,EAAA;AAC7B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,OAAO,cAAc,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAA,CAAA,EAAI,QAAQ,CAAC,WAAW,EAAE,CAAA,CAAA,EAAI,QAAQ,CAAC,OAAO,EAAE,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAC;IAC7G;uGApLW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADJ,MAAM,EAAA,CAAA;;2FAClB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;MCtBnB,eAAe,CAAA;;;;;;;IAa1B,UAAU,CAAC,GAAa,EAAE,YAAqB,EAAA;AAC7C,QAAA,OAAO,SAAS;IAClB;uGAfW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADH,MAAM,EAAA,CAAA;;2FAClB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;MCMnB,eAAe,CAAA;;;;AAK1B,IAAA,eAAe,GAAI,MAAM,CAAC,eAAe,CAAC;AAC1C,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;;;;AAKpC,IAAA,QAAQ,CAAC,WAA8B,EAAA;QAC5C,MAAM,KAAK,GAAsB,EAAE;AAEnC,QAAA,KAAK,IAAI,UAAU,IAAI,WAAW,EAAE;YAClC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE;AACA,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC;IACxB;;;;AAMO,IAAA,YAAY,CAAC,KAAU,EAAA;QAC5B,IAAI,OAAO,GAA2B,SAAS;AAE/C,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YAC5B,OAAO,GAAG,KAAmB;QAC/B;AAAO,aAAA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;AAClC,YAAA,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAA0B,CAAC;QACvE;aAAO;AACL,YAAA,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE;QACtC;AAEA,QAAA,OAAO,CAAC,GAAG,CAAC,cAAc,EAAC,OAAO,CAAC;AAEnC,QAAA,IAAG,OAAO,CAAC,OAAO,EAAC;AACjB,YAAA,IAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAC;gBAC3B,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;YAC/D;AACA,YAAA,IAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAC;gBACxB,KAAI,IAAI,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAC;oBACvC,IAAG,CAAC,KAAK,CAAC;2BACJ,KAAK,CAAC,SAAS,IAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAC;wBAChD;oBACF;oBACC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC;gBACrD;YACF;QACF;AAGA,QAAA,KAAK,IAAI,KAAK,KAAK,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,GAAG;AAC7E,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;QAClC;AAEA,QAAA,OAAO,OAAO;IAChB;AAGO,IAAA,YAAY,CAAC,GAAQ,EAAA;AAC1B,QAAA,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS;IACxE;AAEO,IAAA,WAAW,CAAC,KAAU,EAAA;AAC3B,QAAA,OAAO,CAAC,EAAE,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK,CAAC;IACpE;AAEO,IAAA,0BAA0B,CAAC,SAA4B,EAAA;QAC5D,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACtC,OAAO,SAAS,CAAC,KAAK;QACxB;QAEA,OAAO;YACL,MAAM,EAAQ,SAAS,CAAC,MAAM;YAC9B,YAAY,EAAE,SAAS,CAAC,UAAU;YAClC,MAAM,EAAQ,SAAS,CAAC,OAAO;AAC/B,YAAA,UAAU,EAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACjD,SAAS,EAAK,IAAI,IAAI;SACvB;IACH;IAEQ,mBAAmB,GAAA;QACzB,OAAO;AACL,YAAA,MAAM,EAAM,GAAG;AACf,YAAA,UAAU,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAC/C,SAAS,EAAG,IAAI,IAAI;SACrB;IACH;IAEQ,0BAA0B,GAAA;QAChC,OAAO;AACL,YAAA,SAAS,EAAE,cAAc;AACzB,YAAA,SAAS,EAAE;SACZ;IACH;IAEO,WAAW,CAAC,KAA0B,EAAE,OAAmB,EAAA;AAChE,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC;AAE3E,QAAA,MAAM,gBAAgB,GAAQ,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;AAC9E,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA,EAAG,KAAK,CAAC,SAAS,CAAA,MAAA,CAAQ,CAAC;AACzF,QAAA,MAAM,YAAY,GAAY,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;AAC9E,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AACE,YAAA,KAAK,EAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AACrC,YAAA,KAAK,EAAI,qBAAqB,IAAI,YAAY,IAAI,wBAAwB;YAC1E,OAAO,EAAE,gBAAgB,IAAI;AAC9B,SAAA,CAAC;IACrC;AAEQ,IAAA,iBAAiB,CAAC,MAAe,EAAA;AACvC,QAAA,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,EAAE;AAC1B,YAAA,OAAO,WAAW;QACpB;QACA,OAAO,MAAM,GAAG,GAAG,GAAG,YAAY,GAAG,WAAW;IAClD;AAEQ,IAAA,YAAY,CAAC,SAAiB,EAAA;AACpC,QAAA,OAAO,YAAY,IAAI,SAAS,CAAC,WAAW,EAAE,GAAG,MAAM,GAAG,OAAO;IACnE;IAEQ,oBAAoB,CAAC,SAAiB,EAAE,OAAmB,EAAA;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC;QAExD,MAAM,gBAAgB,GAAQ,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC;AACxE,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA,EAAG,SAAS,CAAA,MAAA,CAAQ,CAAC;QACnF,MAAM,YAAY,GAAY,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC;AACxE,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AACE,YAAA,KAAK,EAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AACrC,YAAA,KAAK,EAAI,qBAAqB,IAAI,YAAY,IAAI,wBAAwB;YAC1E,OAAO,EAAE,gBAAgB,IAAI;AAC9B,SAAA,CAAC;IACrC;uGArIW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADH,MAAM,EAAA,CAAA;;2FAClB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;MCFnB,aAAa,CAAA;IAEjB,OAAO,WAAW,CAAC,MAA0B,EAAA;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAClB,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,MAAM,CAAC,IAAI,GAAG,IAAI;AAClB,QAAA,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;IAC1B;AACD;AAGD;AACA;AACA;AACA,MAAM,OAAO,GAAG,SAAS;AAEzB,MAAM,QAAQ,GAAG,UAAU;AAE3B,MAAM,KAAK,CAAA;;;;AAIT,IAAA,SAAS;AACT,IAAA,QAAQ;AACR,IAAA,MAAM;IACN,IAAI,GAAY,KAAK;AACrB,IAAA,YAAY;AACZ,IAAA,SAAS;AACT,IAAA,IAAI;AACJ,IAAA,IAAI;AACJ,IAAA,MAAM;AACN,IAAA,KAAK;AACL,IAAA,IAAI;AACJ,IAAA,KAAK;IACL,aAAa,GAAuB,SAAS;AAC7C,IAAA,UAAU;AACV,IAAA,KAAK;AACL,IAAA,IAAI;AACJ,IAAA,CAAC;AACD,IAAA,CAAC;AAED,IAAA,MAAM,GAAwD,CAAC,CAAC,KAAI;AACpE,IAAA,CAAC;AACD,IAAA,OAAO,GAA0D,CAAC,CAAC,EAAE,CAAC,KAAI;AAC1E,IAAA,CAAC;AACD,IAAA,WAAW,GAAwD,CAAC,CAAC,EAAE,CAAC,KAAI;AAC5E,IAAA,CAAC;AACD,IAAA,WAAW,GAAwD,CAAC,CAAC,EAAE,CAAC,KAAI;AAC5E,IAAA,CAAC;AACD,IAAA,YAAY,GAAwD,CAAC,CAAC,EAAE,CAAC,KAAI;AAC7E,IAAA,CAAC;AACD,IAAA,UAAU,GAAwD,CAAC,CAAC,EAAE,CAAC,KAAI;AAC3E,IAAA,CAAC;AACD,IAAA,MAAM,GAAuD,CAAC,CAAC,EAAE,CAAC,KAAI;AACtE,IAAA,CAAC;AACD,IAAA,MAAM,GAAuD,CAAC,CAAC,EAAE,CAAC,KAAI;AACtE,IAAA,CAAC;AACD,IAAA,SAAS,GAAuD,CAAC,CAAC,EAAE,CAAC,KAAI;AACzE,IAAA,CAAC;AACD,IAAA,WAAW,GAAuD,CAAC,CAAC,EAAE,CAAC,KAAI;AAC3E,IAAA,CAAC;AACD,IAAA,WAAW,GAAuD,CAAC,CAAC,EAAE,CAAC,KAAI;AAC3E,IAAA,CAAC;AACD,IAAA,UAAU,GAAuD,CAAC,CAAC,EAAE,CAAC,KAAI;AAC1E,IAAA,CAAC;AACD,IAAA,WAAW,GAAuD,CAAC,CAAC,EAAE,CAAC,KAAI;AAC3E,IAAA,CAAC;;;;AAMD,IAAA,WAAA,CAAY,MAA0B,EAAA;AACpC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAO;AAC5B,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAK;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC;AAC1D,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;AAC5C,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC,SAAS;QACzE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAS;QACtC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAU;AACxC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC,YAAa;AACnF,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAW;QACpC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO;QAC3D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO;QAC9D,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAK;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,EAAE;AAC7C,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI;AAC9F,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,cAAc,EAAE;IAEvB;;;;AAOA,IAAA,MAAM,CAAC,KAAkB,EAAE,MAAa,EAAE,KAAa,EAAE,SAAkB,EAAA;AACzE,QAAA,MAAM,iBAAiB,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,EAAE;AAC5C,QAAA,MAAM,kBAAkB,GAAG,CAAA,EAAG,IAAI,CAAC,SAAS,EAAE;AAC9C,QAAA,MAAM,YAAY,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,EAAE;AACnC,QAAA,MAAM,aAAa,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,EAAE;AACrC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAE1B,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,CAAC;QACrF,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,cAAc,EAAE;IACvB;AAEQ,IAAA,YAAY,CAAC,iBAAyB,EAAE,kBAA0B,EAAE,YAAoB,EAAE,aAAqB,EAAA;AACrH,QAAA,IAAI,iBAAiB,IAAI,IAAI,CAAC,QAAQ,IAAI,YAAY,IAAI,IAAI,CAAC,IAAI,IAAI,aAAa,IAAI,IAAI,CAAC,KAAK,EAAE;YAClG;QACF;QACA,IAAI,CAAC,mBAAmB,EAAE;IAC5B;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC3B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;QACjC,IAAI,CAAC,IAAI,EAAE;YACT;QACF;QAEA,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;QACvD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC;QAClD;QACA,IAAI,CAAC,KAAK,EAAE;YACV;QACF;QACA,MAAM,IAAI,GAAG,IAAI;QACjB,IAAI,iBAAiB,GAAkC,SAAS;AAEhE,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAC,UAAU,EAAE,CAAA,UAAA,CAAY,EAAC,CAAC;AAChF,YAAA,iBAAiB,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,EAAC,UAAU,EAAE,CAAA,OAAA,CAAS,EAAC,CAAC;AAE/E,YAAA,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE;gBAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAC,CAAC;YACnG;QACF;aAAO;AACL,YAAA,iBAAiB,GAAG,IAAI,CAAC,IAAI;QAC/B;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,KAAK,CAAC;AAC5C,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;IAGQ,aAAa,CAAC,OAA0B,EAAE,YAA2B,EAAA;QAC3E,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AACA,QAAA,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC,OAAO;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;IAC1B;IAEQ,UAAU,CAAC,IAAgB,EAAE,MAAmB,EAAA;AACtD,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC;YAClC,IAAI,CAAC,MAAM,EAAE;QACf;aAAO;AACL,YAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC/B,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAmB,EAAE,IAAI,CAAC;YAC5C;QACF;IACF;IAEQ,eAAe,CAAC,IAAgB,EAAE,MAAmB,EAAA;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AACtC,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;YACpB;QACF;AACA,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC;IAC3C;IAGQ,sBAAsB,CAAC,EAAU,EAAE,KAAwB,EAAA;AACjE,QAAA,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/C,IAAI,KAAK,GAAyB,SAAS;AAC3C,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;AACrB,YAAA,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACjD;QACA,IAAI,KAAK,EAAE;YACT,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,KAAK,GAA8B,SAAS;YAChD,IAAI,IAAI,EAAE;gBACR,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YACnD;YACA,IAAI,KAAK,EAAE;gBACT,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC;gBAC1C,IAAI,GAAG,EAAE;AACP,oBAAA,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1E,oBAAA,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO;gBAC/B;YAEF;QACF;IACF;IAGA,gBAAgB,GAAA;AACd,QAAA,MAAM,UAAU,GAAG;YACjB,eAAe;AACf,YAAA,IAAI,CAAC,QAAQ;YACb,OAAO,GAAG,IAAI,CAAC,IAAI;YACnB,YAAY,GAAG,IAAI,CAAC,KAAK;AACzB,YAAA,IAAI,CAAC,IAAI;AACT,YAAA,IAAI,CAAC;SACN;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD;IAEQ,cAAc,GAAA;QACpB,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAE9E,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9C,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChC;QAEA,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3C,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7C;;;;AAMQ,IAAA,SAAS,CAAC,IAAgB,EAAA;QAChC,MAAM,IAAI,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;AAC5D,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,KAAI;AAChC,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YAChB,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;AAC/B,QAAA,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAiB,KAAI;AAC1C,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK;YACjB,IAAI,CAAC,YAAY,EAAE;AACrB,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;AAChE,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC;AAClE,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,KAAI;AAC3B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;AAC1B,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,KAAI;AAC9B,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;AAC7B,QAAA,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,KAAI;AAChC,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;AAC/B,QAAA,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,KAAI;AAChC,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AACjB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;AAC/B,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AAC9D,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;IAClE;AAEA,IAAA,WAAW,CAAC,KAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ;AAC9B,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,OAAO;AAC7C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,OAAO;AAChD,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE;AAC3C,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI;QAC3C,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC;IAGQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;IAE5B;IAEQ,YAAY,GAAA;QAClB,IAAI,CAAC,WAAW,EAAE;IACpB;;;;IAKA,MAAM,GAAA;IAEN;AAEA,IAAA,aAAa,CAAC,KAAa,EAAA;QACzB,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;IAC1C;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC5B,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;IAC7C;IAEA,QAAQ,CAAC,QAAe,EAAE,IAAY,EAAA;AACpC,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC;AACrC,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAC,CAAC;IACnC;AAEA,IAAA,IAAI,CAAC,QAAe,EAAA;QAClB,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/C,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEjD;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,QAAA,MAAM,QAAQ,GAAG,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC;QACxD,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK;AAC/B,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI;YAC1B,IAAI,CAAC,mBAAmB,EAAE;QAC5B;IACF;IACA,WAAW,GAAA;AACT,QAAA,IAAG,IAAI,CAAC,aAAa,EAAC;AACpB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO;YAC9D,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;QAChC;IACF;;;;IAMA,MAAM,GAAA;QACJ,OAAO,IAAI,CAAC,IAAI;IAClB;IAEA,gBAAgB,GAAA;QACd,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC;AAEQ,IAAA,QAAQ,CAAC,KAAU,EAAA;QACzB,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,CAAC;QACV;AACA,QAAA,IAAI;AACF,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AAC/B,YAAA,OAAO,SAAS;QAClB;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC;QACV;IACF;IAGQ,aAAa,GAAA;AACnB,QAAA,IAAI,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;QACrE,IAAI,CAAC,YAAY,EAAE;YACjB;QACF;QACA,IAAI,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;QAC5D,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC;QACxD;AACA,QAAA,OAAO,IAAI;IACb;AACD;;ACzWM,MAAM,iBAAiB,GAAG;MACpB,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;AACxB,MAAM,YAAY,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI;MAC/B,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC;AAG1C,MAAM,MAAM,GAAG,CAAC,KAAU,KAAa;AACrC,IAAA,OAAO,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,IAAI;AAC5C,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,KAAU,KAAa;AACxC,IAAA,OAAO,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,IAAI;AAC5C,CAAC;AAED,MAAM,eAAe,GAAG,CAAC,KAAU,KAAmB;AACpD,IAAA,OAAO,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AACnE,CAAC;AAED;AACA;AACA;AACA,MAAM,MAAM,GAAkB,EAAE;AAEzB,MAAM,UAAU,GAAc;IACnC,YAAY,EAAE,MAAoB;AAChC,QAAA,OAAO,MAAM;IACf,CAAC;AAED,IAAA,QAAQ,EAAE,CAAC,IAAmB,KAAI;AAEhC,QAAA,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AACpB,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC;YACtD,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;gBAChB;YACF;AAEA,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpB,gBAAA,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM;gBAC5B;YACF;AACA,YAAA,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE;gBAC5B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;gBACnE,IAAI,UAAU,EAAE;AACd,oBAAA,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AAC9B,oBAAA,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU;gBAC1C;qBAAO;AACL,oBAAA,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC7B;YACF;QACF;IACF,CAAC;AACD,IAAA,QAAQ,EAAE,CAAC,OAAe,EAAE,SAAiB,KAA0B;AACrE,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;AACxC,cAAE;AACF,cAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;IACrC;;AAGF;AACA;AACA;AACO,MAAM,SAAS,GAAQ;AAC5B,IAAA,aAAa,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG;AACjC,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,kBAAkB,EAAE,IAAI;AACxB,IAAA,cAAc,EAAE;;AAIlB;AACA;AACA;AACO,MAAM,QAAQ,GAAY;AAC/B,IAAA,eAAe,EAAE,CAAC,KAAa,KAAY;QACzC,OAAO,KAAK,GAAG,YAAY;IAC7B,CAAC;AAED,IAAA,cAAc,EAAE,CAAC,GAAW,KAAY;QACtC,OAAO,GAAG,GAAG,eAAe;IAC9B,CAAC;AACD;;;;;AAKG;IACH,MAAM,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,KAAc;QACxD,IAAI,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC;QAC5C,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAE1B,OAAO;YACL,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YACtB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG;SACtB;IACH,CAAC;AAED;;;;;AAKG;AACH,IAAA,WAAW,EAAE,CAAC,IAAY,EAAE,IAAY,EAAE,CAAS,EAAE,CAAS,EAAE,KAAa,KAAc;AACzF,QAAA,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI;AACjB,QAAA,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI;AACjB,QAAA,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC;QAC3C,OAAO;AACL,YAAA,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI;AAClB,YAAA,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG;SACf;IACH,CAAC;AAED,IAAA,IAAI,EAAE,CAAC,IAA8B,KAAU;AAC7C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE;QACzC,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;SAC1G;IACH,CAAC;IAED,gBAAgB,EAAE,CAAC,MAAgC,EAAE,UAAyB,EAAE,WAA0B,EAAE,SAAwB,KAAe;QAGjJ,IAAI,iBAAiB,GAAG,WAAW;QACnC,IAAI,gBAAgB,GAAG,UAAU;QACjC,IAAI,eAAe,GAAG,SAAS;AAE/B,QAAA,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;YACrB,IAAI,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YACtC,iBAAiB,GAAG,CAAC;YACrB,gBAAgB,GAAG,CAAC;YACpB,eAAe,GAAG,CAAC;YACnB,IAAI,YAAY,GAAG,CAAC;YACpB,IAAI,WAAW,GAAG,CAAC;YACnB,IAAI,UAAU,GAAG,CAAC;AAElB,YAAA,IAAI,WAAW,GAAG,UAAU,CAAC,MAAM;AACnC,YAAA,IAAI,UAAU,GAAG,UAAU,CAAC,KAAK;AACjC,YAAA,IAAI,SAAS,GAAG,UAAU,CAAC,SAAS;YAEpC,IAAI,WAAW,EAAE;AACf,gBAAA,YAAY,GAAG,YAAY,GAAG,WAAW;YAC3C;YACA,IAAI,UAAU,EAAE;AACd,gBAAA,WAAW,GAAG,WAAW,GAAG,UAAU;YACxC;YACA,IAAI,SAAS,EAAE;AACb,gBAAA,UAAU,GAAG,UAAU,GAAG,SAAS;YACrC;YAGA,IAAI,WAAW,EAAE;AACf,gBAAA,iBAAiB,GAAG,YAAY,GAAG,WAAW;YAChD;iBAAO;gBACL,iBAAiB,GAAG,YAAY;YAClC;YAEA,IAAI,UAAU,EAAE;AACd,gBAAA,gBAAgB,GAAG,WAAW,GAAG,UAAU;YAC7C;iBAAO;gBACL,gBAAgB,GAAG,WAAW;YAChC;YAEA,IAAI,SAAS,EAAE;AACb,gBAAA,eAAe,GAAG,UAAU,GAAG,SAAS;YAC1C;iBAAO;gBACL,eAAe,GAAG,UAAU;YAC9B;QACF;QAEA,OAAO;YACL,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,CAAC;YACnD,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,CAAC;YAChD,MAAM,EAAE,eAAe,GAAG,eAAe,GAAG;SAC7C;IACH,CAAC;IAED,OAAO,EAAE,MAAK;QACZ,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,UAAU;IACnD,CAAC;AAED,IAAA,IAAI,EAAE,CAAC,KAAa,EAAE,IAAY,KAAI;QACpC,OAAO,KAAK,GAAG,IAAI;IACrB;;AAIF;AACA;AACA;AACO,MAAM,WAAW,GAAe;AAErC,IAAA,WAAW,CAAC,MAA0B,EAAA;AACpC,QAAA,OAAO,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC;IAC1C,CAAC;;;;AAKD,IAAA,UAAU,EAAE,CAAC,MAAuC,KAAuB;QACzE,OAAO,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IACnD,CAAC;IACD,YAAY,EAAE,CAAC,UAA2C,EAAE,EAAU,EAAE,MAAwB,KAAuB;AACrH,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC;QAC/D,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YAE7B,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE;YAC1C,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAA,EAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,EAAE,CAAA,CAAE,CAAC;YACpF,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAA,EAAG,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG,EAAE,CAAA,CAAE,CAAC;YACjF,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA,EAAG,aAAa,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;YACpE,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA,EAAG,aAAa,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;AAGpE,YAAA,IAAI,aAAa,CAAC,KAAK,EAAE;gBACvB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAA,EAAG,aAAa,CAAC,KAAK,CAAA,CAAE,CAAC;YACxD;QACF;AACA,QAAA,OAAO,MAAM;IACf,CAAC;IACD,iBAAiB,EAAE,CAAC,MAAuC,EAAE,EAAU,EAAE,MAA6B,KAAuB;AAC3H,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;QAC5D,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE;QAE1C,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7B,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA,EAAG,aAAa,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAA,CAAE,CAAC;YACjF,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA,EAAG,aAAa,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAA,CAAE,CAAC;YACjF,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAA,EAAG,aAAa,CAAC,KAAK,IAAI,SAAS,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAA,CAAE,CAAC;YAC9F,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAA,EAAG,aAAa,CAAC,MAAM,IAAI,SAAS,GAAG,EAAE,GAAG,aAAa,CAAC,MAAM,CAAA,CAAE,CAAC;YACjG,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,CAAA,EAAG,aAAa,CAAC,YAAY,IAAI,SAAS,GAAG,gBAAgB,GAAG,aAAa,CAAC,YAAY,CAAA,CAAE,CAAC;QACnI;AACA,QAAA,OAAO,MAAM;IACf,CAAC;;;;AAID,IAAA,WAAW,EAAE,CAAC,MAAuC,EAAE,MAA0B,KAAuB;QACtG,OAAO,WAAW,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC;;;;IAKD,UAAU,EAAE,CAAC,KAAa,EAAE,MAAkB,EAAE,MAA0B,KAAuB;AAC/F,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAE7D,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,SAAS,GAAG,KAAK;AACxB,YAAA,OAAO,MAAM;QACf;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF,CAAC;;;;IAMD,UAAU,EAAE,CAAC,MAAc,EAAE,MAAkB,EAAE,MAA0B,KAAuB;AAChG,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAE7D,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA,EAAA,EAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA,CAAE,CAAC;AACjG,YAAA,OAAO,MAAM;QACf;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF,CAAC;;;;AAID,IAAA,WAAW,CAAC,MAAkB,EAAE,KAAa,EAAE,MAAqC,EAAA;AAClF,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC7D,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;QACjC;AACA,QAAA,OAAO,MAAM;IACf,CAAC;;;;AAID,IAAA,UAAU,EAAE,CAAC,MAAkB,EAAE,MAAmB,KAAuB;QAEzE,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE;AAC1C,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC;QAEpE,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,IAAI,IAAI,EAAE;AACzC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,aAAa,CAAC,MAAM,EAAE;YACxB,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC;QAC1D;AACA,QAAA,IAAI,aAAa,CAAC,KAAK,EAAE;YACvB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC;QACxD;AACA,QAAA,IAAI,aAAa,CAAC,KAAK,EAAE;YACvB,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC;QACrD;AAEA,QAAA,OAAO,MAAM;IACf,CAAC;;;;AAMD,IAAA,YAAY,EAAE,CAAC,MAAkB,EAAE,MAAqB,KAAuB;QAE7E,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE;AAC1C,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC;QAEtE,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,IAAI,IAAI,EAAE;AACzC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,aAAa,CAAC,MAAM,EAAE;YACxB,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC;QAC1D;AACA,QAAA,IAAI,aAAa,CAAC,KAAK,EAAE;YACvB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC;QACxD;AACA,QAAA,IAAI,aAAa,CAAC,KAAK,EAAE;YACvB,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC;QACrD;AAEA,QAAA,OAAO,MAAM;IACf,CAAC;AAED,IAAA,OAAO,EAAE,CAAC,MAAkB,EAAE,MAAqB,KAAuB;QACxE,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE;QAE1C,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,SAAS,GAAG,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAC9C,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG,EAAE,EAAE,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC;AACzG,YAAA,IAAI,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,aAAa,CAAC;YAE3E,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;gBAC/C,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC;gBAChD,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;gBACjC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;AACjC,gBAAA,OAAO,MAAM;YACf;QAEF;AAEA,QAAA,OAAO,IAAI;IACb,CAAC;;;;IAMD,IAAI,EAAE,CAAC,MAAkB,EAAE,KAAa,EAAE,MAAmB,KAAuB;QAClF,IAAI,MAAM,GAAG,IAAI;QACjB,IAAI,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACrC,QAAA,IAAI,SAAS,GAAG,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,GAAG,EAAE;QAC9D,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE;AAE1C,QAAA,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;YACrB,IAAI,eAAe,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,QAAQ;YACpG,IAAI,SAAS,EAAE;AACb,gBAAA,eAAe,GAAG,CAAC,eAAe,GAAG,eAAe,GAAG,EAAE,IAAI,SAAS;YACxE;YAEA,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC;YAElE,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;gBAChC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;gBAChC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAA,UAAA,EAAa,eAAe,CAAA,EAAA,CAAI,CAAC;gBAE9D,MAAM,QAAQ,GAAG,MAAa;AAC9B,gBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB;QACF;AAEA,QAAA,OAAO,MAAM;IACf,CAAC;;;;AAKD,IAAA,SAAS,CAAC,EAAU,EAAE,MAAuC,EAAE,MAAqC,EAAA;QAClG,IAAG,CAAC,MAAM,EAAC;AACT,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;QAC5D,IAAG,MAAM,EAAC;YACR,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,CAAC;AACrC,YAAA,OAAO,MAAM;QACf;AACA,QAAA,OAAO,IAAI;IACb,CAAC;;;;IAID,UAAU,EAAE,CAAC,QAAgB,EAAE,MAAuC,EAAE,MAA0B,KAAuB;QACvH,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,aAAa,GAAG,MAAM,IAAI,SAAS,IAAI,MAAM,IAAI,IAAI,GAAG,EAAE,GAAG,MAAM;QACzE,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,QAAQ,CAAC;AAC/E,QAAA,IAAI,aAAa,CAAC,UAAU,EAAE;YAC5B,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC;QACxD;AAEA,QAAA,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;AAG1B,QAAA,OAAO,MAAM;IACf;;AAIF;AACA;AACA;AACO,MAAM,aAAa,GAAiB;AAEzC,IAAA,KAAK,EAAE,CAAC,IAAgB,KAAI;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;IACnC,CAAC;;;;AAKD,IAAA,UAAU,EAAE,CAAC,IAAuB,EAAE,IAAY,KAAU;QAC1D,IAAI,CAAC,IAAI,EAAE;YACT;QACF;QAEA,MAAM,QAAQ,GAAG,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC;AAChE,QAAA,QAAQ,CAAC,CAAC,GAAG,IAAI;AACjB,QAAA,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC;IACjD,CAAC;AAED,IAAA,UAAU,EAAE,CAAC,IAAuB,EAAE,IAAY,KAAU;QAC1D,IAAI,CAAC,IAAI,EAAE;YACT;QACF;QAEA,MAAM,QAAQ,GAAG,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC;AAChE,QAAA,QAAQ,CAAC,CAAC,GAAG,IAAI;AACjB,QAAA,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC;IACjD,CAAC;;;;IAMD,KAAK,EAAE,CAAC,IAAgB,EAAE,MAAc,EAAE,MAAc,KAAI;QAC1D,IAAI,IAAI,EAAE;YACR,IAAI,SAAS,GAAG,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC;AAC/D,YAAA,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;AAC9C,YAAA,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;AAE9C,YAAA,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC;QAClD;IACF,CAAC;AACD,IAAA,MAAM,EAAE,CAAC,IAAgB,EAAE,MAAc,KAAI;AAC3C,QAAA,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,SAAS,GAAG,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC;AAC/D,YAAA,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;AAE9C,YAAA,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC;QAClD;IACF,CAAC;AAED,IAAA,MAAM,EAAE,CAAC,IAAgB,EAAE,MAAc,KAAI;AAC3C,QAAA,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,SAAS,GAAG,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC;AAC/D,YAAA,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;AAE9C,YAAA,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC;QAClD;IACF,CAAC;;;;AAMD,IAAA,MAAM,EAAE,CAAC,IAAgB,EAAE,MAAc,EAAE,MAAc,EAAE,IAAY,EAAE,IAAY,KAAI;QACvF,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;gBACrC,CAAC;gBACD,CAAC;gBACD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;gBAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;AACvB,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAClE;IACF,CAAC;;;;AAKD,IAAA,2BAA2B,EAAE,CAAC,IAA8B,KAAwB;QAClF,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;QAElD,IAAI,CAAC,GAAG,IAAI;QACZ,IAAI,CAAC,GAAG,IAAI;QACZ,IAAI,MAAM,GAAG,IAAI;QACjB,IAAI,MAAM,GAAG,IAAI;QAEjB,IAAI,WAAW,EAAE;AAEf,YAAA,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,8BAA8B,CAAC;YACtD,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;YAEnC,IAAI,CAAC,KAAK,EAAE;gBACV,OAAO;AACL,oBAAA,CAAC,EAAE,CAAC;AACJ,oBAAA,CAAC,EAAE,CAAC;AACJ,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,MAAM,EAAE;iBACT;YACH;AAEA,YAAA,QAAQ,KAAK,CAAC,CAAC,CAAC;AACd,gBAAA,KAAK,WAAW;oBACd,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;oBAC9B,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACnB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACnB;AAEF,gBAAA,KAAK,OAAO;oBACV,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;oBAC9B,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACxB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACxB;AAEF,gBAAA,KAAK,QAAQ;oBACX,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;oBAC9B,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACxB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACxB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACnB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACnB;;QAEN;QACA,OAAO;AACL,YAAA,CAAC,EAAE,CAAC;AACJ,YAAA,CAAC,EAAE,CAAC;AACJ,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE;SACT;IACH,CAAC;;;;AAMD,IAAA,iBAAiB,EAAE,CAAC,IAAgB,EAAE,OAA2B,KAAI;AACnE,QAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YACnC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAC9E,gBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAChC,iBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACrB;AAAO,aAAA,IAAI,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;YAC9C,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM;AACpF,gBAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM;AAC1C,iBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACrB;aAAO;AACL,YAAA,aAAa,CAAC,MAAM,CAAC,IAAI,EACvB,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EACnC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EACnC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,EACzB,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9B;IACF,CAAC;AACD,IAAA,QAAQ,EAAE,CAAC,IAAwB,KAAa;AAC9C,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACnD,CAAC;AACD,IAAA,YAAY,EAAE,CAAC,IAAwB,KAAa;AAClD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;;;;IAMD,MAAM,EAAE,CAAC,KAAiB,EAAE,YAAyB,EAAE,GAAY,EAAE,GAAY,KAAY;AAC3F,QAAA,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1B,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QACjD,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAE9B,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK;QACjD,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM;AACnD,QAAA,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS;QAE/D,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC;QAChD,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;QAC/B,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;QAE/B,IAAI,GAAG,EAAE;YACP,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK;AACjD,YAAA,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC;YAC1C,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;QAC1C;QAEA,IAAI,GAAG,EAAE;YACP,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM;AACnD,YAAA,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC;YAC1C,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;QAC1C;QAEA,OAAO,CAAC,GAAG,SAAS;IACtB,CAAC;;;;AAKD,IAAA,WAAW,EAAE,CAAC,IAA8B,EAAE,UAAkB,KAAU;QACxE,IAAI,CAAC,IAAI,EAAE;YACT;QACF;QACA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC/C,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACrC,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACrE;iBAAO;gBACL,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAA,EAAG,YAAY,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAAC;YAC7D;QACF;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC;QACxC;IACF,CAAC;AACD,IAAA,WAAW,EAAE,CAAC,IAA8B,EAAE,UAAkB,KAAU;QACxE,IAAI,CAAC,IAAI,EAAE;YACT;QACF;QACA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC/C,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACrC,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACrE;QACF;IACF,CAAC;AACD,IAAA,QAAQ,EAAE,CAAC,IAA8B,EAAE,UAAkB,KAAU;QACrE,IAAI,CAAC,IAAI,EAAE;YACT;QACF;QACA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC/C,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBACtC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAA,EAAG,YAAY,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAAC;YAC7D;QACF;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC;QACxC;IACF,CAAC;AACD,IAAA,QAAQ,EAAE,CAAC,IAA8B,EAAE,UAAkB,KAAa;QACxE,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,KAAK;QACd;QACA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AAC/C,QAAA,OAAO,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,KAAK;IACjE;;AAGF;AACA;AACA;AACO,MAAM,mBAAmB,GAAuB;IACrD,OAAO,EAAE,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAgB,EAAE,IAAY,KAAc;QACrF,OAAO;AACL,YAAA,KAAK,EAAE;SACR;IACH;;AAGF;AACA;AACA;AACO,MAAM,aAAa,GAAkB;AAC1C,IAAA,KAAK,EAAE;AACL,QAAA,MAAM,EAAE,CAAC,IAAY,KAAa,IAAI;QACtC,SAAS,EAAE,CAAC,IAAY,KAAa,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC1E,QAAA,YAAY,EAAE,CAAC,IAAY,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;AACzD,QAAA,WAAW,EAAE,CAAC,IAAY,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAChD,UAAU,EAAE,CAAC,IAAY,KAAK,IAAI,GAAG,IAAI;AACzC,QAAA,WAAW,EAAE,CAAC,IAAY,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjD,KAAA;AACD,IAAA,OAAO,EAAE,CAAC,QAA8B,EAAE,MAA2B,KAAU;QAE7E,MAAM,aAAa,GAAuB,MAAM,GAAG,MAAM,GAAG,EAAE;AAC9D,QAAA,MAAM,QAAQ,IAAI,aAAa,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,GAAG,GAAG,CAAC;QACxE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AAEhC,QAAA,MAAM,MAAM,GAA2B;AACrC,YAAA,KAAK,EAAE,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM;AAC7E,YAAA,KAAK,EAAE,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG,CAAC;AACpD,YAAA,QAAQ,EAAE,CAAC,GAAG,GAAG,QAAQ,IAAI,GAAG;AAChC,YAAA,SAAS,EAAE,GAAG;YACd,GAAG,EAAE,GAAG,GAAG,QAAQ;AACnB,YAAA,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,aAAa,CAAC;SACvB;AAGD,QAAA,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE;YACpB,UAAU,CAAC,MAAK;gBACd,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AAChC,gBAAA,MAAM,CAAC,SAAS,GAAG,GAAG;AACtB,gBAAA,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,QAAQ;AAC3B,gBAAA,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;AACpC,YAAA,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC;QACzB;aAAO;AACL,YAAA,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;QACpC;IACF;;AAGF,MAAM,gBAAgB,CAAA;AAIA,IAAA,UAAA;IAFZ,OAAO,GAAkB,IAAI;AAErC,IAAA,WAAA,CAAoB,UAAkC,EAAA;QAAlC,IAAA,CAAA,UAAU,GAAV,UAAU;IAC9B;IAEO,GAAG,GAAA;AACR,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ;QACvC,IAAI,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;QAC/C,IAAI,SAAS,GAAG,CAAC;QAEjB,MAAM,KAAK,GAAG,MAAK;YACjB,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,gBAAgB;AACvD,YAAA,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ;AACrC,YAAA,IAAI,QAAQ,IAAI,CAAC,EAAE;AACjB,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClD,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAC1B,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;gBAC1B;AACA,gBAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,oBAAA,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;gBACpC;AAEA,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;gBACnB;YACF;AACA,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAEzD,YAAA,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAC7C,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC;IAC7C;AAED;AAED;AACA;AACA;AACO,MAAM,GAAG,GAAG;AACjB,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,OAAO,EAAE,WAAW;AACpB,IAAA,SAAS,EAAE,aAAa;AACxB,IAAA,KAAK,EAAE,mBAAmB;AAC1B,IAAA,SAAS,EAAE;;;AC5xBN,MAAM,aAAa,GAAY;IAClC,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT;;AAIG,MAAM,gBAAgB,GAAa;IACxC,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT;;AAGK,MAAM,wBAAwB,GAAa;IAChD,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT;;AAGK,MAAM,cAAc,GAAa;IACtC,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT;;AAEK,MAAM,YAAY,GAAa;IACpC,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT;;AAIK,MAAM,WAAW,GAAa;IACnC,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT;;AAGK,MAAM,YAAY,GAAa;IACpC,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT;;AAIK,MAAM,UAAU,GAAS;AAC9B,IAAA,cAAc,EAAC,cAAc;AAC7B,IAAA,gBAAgB,EAAC,gBAAgB;AACjC,IAAA,wBAAwB,EAAC,wBAAwB;AACjD,IAAA,YAAY,EAAC,YAAY;AACzB,IAAA,YAAY,EAAC,YAAY;AACzB,IAAA,aAAa,EAAC,aAAa;AAC3B,IAAA,WAAW,EAAC;;AAGP,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,KAAY;IACjF,IAAI,YAAY,GAAG,KAAK;AACxB,IAAA,IAAI,KAAK,GAAG,GAAG,EAAE;QACf,YAAY,GAAG,GAAG;IACpB;AACA,IAAA,IAAI,KAAK,GAAG,GAAG,EAAE;QACf,YAAY,GAAG,GAAG;IACpB;AACA,IAAA,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG;AACvB,IAAA,OAAO,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AAC1F;MACa,SAAS,GAAG,CAAC,OAAe,EAAE,MAAgB,KAAY;AACrE,IAAA,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,SAAS;AACpD,IAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,GAAG,GAAG,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxE,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB;;ACjeA;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -8,6 +8,7 @@ declare class InuInputText implements FormValueControl<string | number>, FormVal
|
|
|
8
8
|
readonly label: InputSignal<string>;
|
|
9
9
|
readonly icon: InputSignal<string>;
|
|
10
10
|
readonly name: InputSignal<string>;
|
|
11
|
+
readonly debounce: InputSignal<number>;
|
|
11
12
|
readonly type: InputSignal<string | 'text' | 'number' | 'email' | 'password'>;
|
|
12
13
|
readonly _required: InputSignal<boolean>;
|
|
13
14
|
_formField: FormField<any> | null;
|
|
@@ -25,7 +26,7 @@ declare class InuInputText implements FormValueControl<string | number>, FormVal
|
|
|
25
26
|
protected onFocus(): void;
|
|
26
27
|
protected onFocusOut(): void;
|
|
27
28
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InuInputText, never>;
|
|
28
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InuInputText, "inu-input-text", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "_required": { "alias": "required"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, never, never, true, never>;
|
|
29
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InuInputText, "inu-input-text", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "debounce": { "alias": "debounce"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "_required": { "alias": "required"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, never, never, true, never>;
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
export { InuInputText };
|
|
@@ -77,6 +77,7 @@ declare class InuErrorService {
|
|
|
77
77
|
showMessage(param: ProblemParameterDTO, problem: ProblemDTO): void;
|
|
78
78
|
private resolveErrorLevel;
|
|
79
79
|
private resolveLevel;
|
|
80
|
+
private showMessageErrorCode;
|
|
80
81
|
static ɵfac: i0.ɵɵFactoryDeclaration<InuErrorService, never>;
|
|
81
82
|
static ɵprov: i0.ɵɵInjectableDeclaration<InuErrorService>;
|
|
82
83
|
}
|