@rolatech/angular-inventory 20.2.8-beta.10 → 20.2.8-beta.12

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.
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { input, model, ViewEncapsulation, Component, inject } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { ThumbnailComponent, AngularComponentsModule, ImagePlaceholderComponent, BaseComponent, ToolbarComponent } from '@rolatech/angular-components';
5
- import { I as InventoryContentComponent } from './rolatech-angular-inventory-rolatech-angular-inventory-Bmxj_rgA.mjs';
5
+ import { I as InventoryContentComponent } from './rolatech-angular-inventory-rolatech-angular-inventory-CtEyekor.mjs';
6
6
  import { InventoryService, ProductService } from '@rolatech/angular-services';
7
7
  import _ from 'lodash';
8
8
  import { AngularCommonModule } from '@rolatech/angular-common';
@@ -13,10 +13,10 @@ class InventoryProductItemComponent {
13
13
  this.product = input.required(...(ngDevMode ? [{ debugName: "product" }] : []));
14
14
  this.amount = model(...(ngDevMode ? [undefined, { debugName: "amount" }] : []));
15
15
  }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryProductItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: InventoryProductItemComponent, isStandalone: true, selector: "rolatech-inventory-product-item", inputs: { product: { classPropertyName: "product", publicName: "product", isSignal: true, isRequired: true, transformFunction: null }, amount: { classPropertyName: "amount", publicName: "amount", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { amount: "amountChange" }, ngImport: i0, template: "<div class=\"flex items-center p-2 justify-between\">\n <div class=\"flex\">\n @if (product().media) {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"product().media[0].url + '!w400'\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n } @else {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n <rolatech-image-placeholder></rolatech-image-placeholder>\n </div>\n }\n <div>{{ product().name }}</div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: ImagePlaceholderComponent, selector: "rolatech-image-placeholder", inputs: ["ratio"] }], encapsulation: i0.ViewEncapsulation.None, deferBlockDependencies: [() => [ThumbnailComponent]] }); }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryProductItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: InventoryProductItemComponent, isStandalone: true, selector: "rolatech-inventory-product-item", inputs: { product: { classPropertyName: "product", publicName: "product", isSignal: true, isRequired: true, transformFunction: null }, amount: { classPropertyName: "amount", publicName: "amount", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { amount: "amountChange" }, ngImport: i0, template: "<div class=\"flex items-center p-2 justify-between\">\n <div class=\"flex\">\n @if (product().media) {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"product().media[0].url + '!w400'\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n } @else {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n <rolatech-image-placeholder></rolatech-image-placeholder>\n </div>\n }\n <div>{{ product().name }}</div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: ImagePlaceholderComponent, selector: "rolatech-image-placeholder", inputs: ["ratio"] }], encapsulation: i0.ViewEncapsulation.None, deferBlockDependencies: [() => [ThumbnailComponent]] }); }
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryProductItemComponent, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryProductItemComponent, decorators: [{
20
20
  type: Component,
21
21
  args: [{ selector: 'rolatech-inventory-product-item', imports: [AngularCommonModule, AngularComponentsModule, ThumbnailComponent, ImagePlaceholderComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex items-center p-2 justify-between\">\n <div class=\"flex\">\n @if (product().media) {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"product().media[0].url + '!w400'\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n } @else {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n <rolatech-image-placeholder></rolatech-image-placeholder>\n </div>\n }\n <div>{{ product().name }}</div>\n </div>\n</div>\n" }]
22
22
  }], propDecorators: { product: [{ type: i0.Input, args: [{ isSignal: true, alias: "product", required: true }] }], amount: [{ type: i0.Input, args: [{ isSignal: true, alias: "amount", required: false }] }, { type: i0.Output, args: ["amountChange"] }] } });
@@ -46,13 +46,13 @@ class InventoryProductComponent extends BaseComponent {
46
46
  },
47
47
  });
48
48
  }
49
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryProductComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
50
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: InventoryProductComponent, isStandalone: true, selector: "rolatech-inventory-product", usesInheritance: true, ngImport: i0, template: "<rolatech-inventory-content>\n <rolatech-toolbar title=\"\u5546\u54C1\u5E93\u5B58\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <div class=\"divide-y divide-[--rt-10-percent-layer]\">\n @for (item of products; track $index) {\n <rolatech-inventory-product-item\n class=\"block cursor-pointer hover:bg-[--rt-raised-background]\"\n [product]=\"item\"\n [routerLink]=\"['/products', item.id, 'manage', 'inventory']\"\n ></rolatech-inventory-product-item>\n }\n </div>\n</rolatech-inventory-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: InventoryContentComponent, selector: "rolatech-inventory-content" }, { kind: "component", type: InventoryProductItemComponent, selector: "rolatech-inventory-product-item", inputs: ["product", "amount"], outputs: ["amountChange"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], encapsulation: i0.ViewEncapsulation.None }); }
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryProductComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
50
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: InventoryProductComponent, isStandalone: true, selector: "rolatech-inventory-product", usesInheritance: true, ngImport: i0, template: "<rolatech-inventory-content>\n <rolatech-toolbar title=\"\u5546\u54C1\u5E93\u5B58\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <div class=\"divide-y divide-[--rt-10-percent-layer]\">\n @for (item of products; track $index) {\n <rolatech-inventory-product-item\n class=\"block cursor-pointer hover:bg-[--rt-raised-background]\"\n [product]=\"item\"\n [routerLink]=\"['/products', item.id, 'manage', 'inventory']\"\n ></rolatech-inventory-product-item>\n }\n </div>\n</rolatech-inventory-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: InventoryContentComponent, selector: "rolatech-inventory-content" }, { kind: "component", type: InventoryProductItemComponent, selector: "rolatech-inventory-product-item", inputs: ["product", "amount"], outputs: ["amountChange"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], encapsulation: i0.ViewEncapsulation.None }); }
51
51
  }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryProductComponent, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryProductComponent, decorators: [{
53
53
  type: Component,
54
54
  args: [{ selector: 'rolatech-inventory-product', imports: [CommonModule, ToolbarComponent, InventoryContentComponent, InventoryProductItemComponent, RouterLink], encapsulation: ViewEncapsulation.None, template: "<rolatech-inventory-content>\n <rolatech-toolbar title=\"\u5546\u54C1\u5E93\u5B58\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <div class=\"divide-y divide-[--rt-10-percent-layer]\">\n @for (item of products; track $index) {\n <rolatech-inventory-product-item\n class=\"block cursor-pointer hover:bg-[--rt-raised-background]\"\n [product]=\"item\"\n [routerLink]=\"['/products', item.id, 'manage', 'inventory']\"\n ></rolatech-inventory-product-item>\n }\n </div>\n</rolatech-inventory-content>\n" }]
55
55
  }] });
56
56
 
57
57
  export { InventoryProductComponent };
58
- //# sourceMappingURL=rolatech-angular-inventory-inventory-product.component-r0wDnX91.mjs.map
58
+ //# sourceMappingURL=rolatech-angular-inventory-inventory-product.component-DIvTJfje.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"rolatech-angular-inventory-inventory-product.component-r0wDnX91.mjs","sources":["../../../../packages/angular-inventory/src/lib/components/inventory-product-item/inventory-product-item.component.ts","../../../../packages/angular-inventory/src/lib/components/inventory-product-item/inventory-product-item.component.html","../../../../packages/angular-inventory/src/lib/pages/inventory-product/inventory-product.component.ts","../../../../packages/angular-inventory/src/lib/pages/inventory-product/inventory-product.component.html"],"sourcesContent":["import { Component, input, model, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AngularComponentsModule, ImagePlaceholderComponent, ThumbnailComponent } from '@rolatech/angular-components';\nimport { AngularCommonModule } from '@rolatech/angular-common';\n\nexport interface InventoryProduct {\n name: string;\n media: InventoryProductMedia[];\n}\nexport interface InventoryProductMedia {\n url: string;\n}\n\n@Component({\n selector: 'rolatech-inventory-product-item',\n imports: [AngularCommonModule, AngularComponentsModule, ThumbnailComponent, ImagePlaceholderComponent],\n templateUrl: './inventory-product-item.component.html',\n styleUrl: './inventory-product-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryProductItemComponent {\n product = input.required<InventoryProduct>();\n amount = model<any>();\n}\n","<div class=\"flex items-center p-2 justify-between\">\n <div class=\"flex\">\n @if (product().media) {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"product().media[0].url + '!w400'\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n } @else {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n <rolatech-image-placeholder></rolatech-image-placeholder>\n </div>\n }\n <div>{{ product().name }}</div>\n </div>\n</div>\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { InventoryContentComponent } from '../../components/inventory-content/inventory-content.component';\nimport { InventoryService, ProductService } from '@rolatech/angular-services';\nimport _ from 'lodash';\nimport { InventoryProductItemComponent } from '../../components/inventory-product-item/inventory-product-item.component';\nimport { RouterLink } from '@angular/router';\n@Component({\n selector: 'rolatech-inventory-product',\n imports: [CommonModule, ToolbarComponent, InventoryContentComponent, InventoryProductItemComponent, RouterLink],\n templateUrl: './inventory-product.component.html',\n styleUrl: './inventory-product.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryProductComponent extends BaseComponent implements OnInit {\n inventoryService = inject(InventoryService);\n productService = inject(ProductService);\n products: any = [];\n ngOnInit(): void {\n this.findInventoryItem();\n }\n findInventoryItem() {\n this.inventoryService.findMyInventoryItems({}).subscribe({\n next: (res) => {\n const productIds = _.uniq(_.map(res.data, 'productId'));\n this.findProductsByIds(productIds);\n },\n });\n }\n findProductsByIds(ids: Array<string>) {\n this.productService.findByIds(ids).subscribe({\n next: (res) => {\n this.products = res.data;\n },\n });\n }\n}\n","<rolatech-inventory-content>\n <rolatech-toolbar title=\"商品库存\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <div class=\"divide-y divide-[--rt-10-percent-layer]\">\n @for (item of products; track $index) {\n <rolatech-inventory-product-item\n class=\"block cursor-pointer hover:bg-[--rt-raised-background]\"\n [product]=\"item\"\n [routerLink]=\"['/products', item.id, 'manage', 'inventory']\"\n ></rolatech-inventory-product-item>\n }\n </div>\n</rolatech-inventory-content>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rolatech-angular-inventory-inventory-product.component-DIvTJfje.mjs","sources":["../../../../packages/angular-inventory/src/lib/components/inventory-product-item/inventory-product-item.component.ts","../../../../packages/angular-inventory/src/lib/components/inventory-product-item/inventory-product-item.component.html","../../../../packages/angular-inventory/src/lib/pages/inventory-product/inventory-product.component.ts","../../../../packages/angular-inventory/src/lib/pages/inventory-product/inventory-product.component.html"],"sourcesContent":["import { Component, input, model, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AngularComponentsModule, ImagePlaceholderComponent, ThumbnailComponent } from '@rolatech/angular-components';\nimport { AngularCommonModule } from '@rolatech/angular-common';\n\nexport interface InventoryProduct {\n name: string;\n media: InventoryProductMedia[];\n}\nexport interface InventoryProductMedia {\n url: string;\n}\n\n@Component({\n selector: 'rolatech-inventory-product-item',\n imports: [AngularCommonModule, AngularComponentsModule, ThumbnailComponent, ImagePlaceholderComponent],\n templateUrl: './inventory-product-item.component.html',\n styleUrl: './inventory-product-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryProductItemComponent {\n product = input.required<InventoryProduct>();\n amount = model<any>();\n}\n","<div class=\"flex items-center p-2 justify-between\">\n <div class=\"flex\">\n @if (product().media) {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"product().media[0].url + '!w400'\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n } @else {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n <rolatech-image-placeholder></rolatech-image-placeholder>\n </div>\n }\n <div>{{ product().name }}</div>\n </div>\n</div>\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { InventoryContentComponent } from '../../components/inventory-content/inventory-content.component';\nimport { InventoryService, ProductService } from '@rolatech/angular-services';\nimport _ from 'lodash';\nimport { InventoryProductItemComponent } from '../../components/inventory-product-item/inventory-product-item.component';\nimport { RouterLink } from '@angular/router';\n@Component({\n selector: 'rolatech-inventory-product',\n imports: [CommonModule, ToolbarComponent, InventoryContentComponent, InventoryProductItemComponent, RouterLink],\n templateUrl: './inventory-product.component.html',\n styleUrl: './inventory-product.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryProductComponent extends BaseComponent implements OnInit {\n inventoryService = inject(InventoryService);\n productService = inject(ProductService);\n products: any = [];\n ngOnInit(): void {\n this.findInventoryItem();\n }\n findInventoryItem() {\n this.inventoryService.findMyInventoryItems({}).subscribe({\n next: (res) => {\n const productIds = _.uniq(_.map(res.data, 'productId'));\n this.findProductsByIds(productIds);\n },\n });\n }\n findProductsByIds(ids: Array<string>) {\n this.productService.findByIds(ids).subscribe({\n next: (res) => {\n this.products = res.data;\n },\n });\n }\n}\n","<rolatech-inventory-content>\n <rolatech-toolbar title=\"商品库存\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <div class=\"divide-y divide-[--rt-10-percent-layer]\">\n @for (item of products; track $index) {\n <rolatech-inventory-product-item\n class=\"block cursor-pointer hover:bg-[--rt-raised-background]\"\n [product]=\"item\"\n [routerLink]=\"['/products', item.id, 'manage', 'inventory']\"\n ></rolatech-inventory-product-item>\n }\n </div>\n</rolatech-inventory-content>\n"],"names":[],"mappings":"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"}
@@ -3,13 +3,13 @@ import { ViewEncapsulation, Component } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
 
5
5
  class InventoryComponent {
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: InventoryComponent, isStandalone: true, selector: "rolatech-inventory", ngImport: i0, template: "<p>inventory works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None }); }
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: InventoryComponent, isStandalone: true, selector: "rolatech-inventory", ngImport: i0, template: "<p>inventory works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None }); }
8
8
  }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryComponent, decorators: [{
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryComponent, decorators: [{
10
10
  type: Component,
11
11
  args: [{ selector: 'rolatech-inventory', imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<p>inventory works!</p>\n" }]
12
12
  }] });
13
13
 
14
14
  export { InventoryComponent };
15
- //# sourceMappingURL=rolatech-angular-inventory-inventory.component-YtfiAukX.mjs.map
15
+ //# sourceMappingURL=rolatech-angular-inventory-inventory.component-Dtfndmnk.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"rolatech-angular-inventory-inventory.component-YtfiAukX.mjs","sources":["../../../../packages/angular-inventory/src/lib/pages/inventory/inventory.component.ts","../../../../packages/angular-inventory/src/lib/pages/inventory/inventory.component.html"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-inventory',\n imports: [CommonModule],\n templateUrl: './inventory.component.html',\n styleUrl: './inventory.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryComponent {}\n","<p>inventory works!</p>\n"],"names":[],"mappings":";;;;MAUa,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV/B,2BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIY,YAAY,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,WACrB,CAAC,YAAY,CAAC,EAAA,aAAA,EAGR,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,2BAAA,EAAA;;;;;"}
1
+ {"version":3,"file":"rolatech-angular-inventory-inventory.component-Dtfndmnk.mjs","sources":["../../../../packages/angular-inventory/src/lib/pages/inventory/inventory.component.ts","../../../../packages/angular-inventory/src/lib/pages/inventory/inventory.component.html"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-inventory',\n imports: [CommonModule],\n templateUrl: './inventory.component.html',\n styleUrl: './inventory.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryComponent {}\n","<p>inventory works!</p>\n"],"names":[],"mappings":";;;;MAUa,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV/B,2BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIY,YAAY,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,WACrB,CAAC,YAAY,CAAC,EAAA,aAAA,EAGR,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,2BAAA,EAAA;;;;;"}
@@ -1,34 +1,33 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ViewEncapsulation, Component, inject, Inject, input, output } from '@angular/core';
2
+ import { ViewEncapsulation, Component, inject, input, output } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import * as i1 from '@angular/router';
5
5
  import { RouterModule, RouterLink } from '@angular/router';
6
6
  import { ToolbarComponent, TitleComponent, BaseComponent } from '@rolatech/angular-components';
7
7
  import { InventoryService } from '@rolatech/angular-services';
8
- import * as i6 from '@angular/material/icon';
8
+ import * as i5$1 from '@angular/material/icon';
9
9
  import { MatIcon, MatIconModule } from '@angular/material/icon';
10
10
  import * as i5 from '@angular/material/button';
11
11
  import { MatButtonModule } from '@angular/material/button';
12
- import * as i3$1 from '@angular/cdk/text-field';
12
+ import * as i3 from '@angular/cdk/text-field';
13
13
  import { TextFieldModule } from '@angular/cdk/text-field';
14
14
  import * as i1$2 from '@angular/forms';
15
15
  import { FormsModule } from '@angular/forms';
16
16
  import { MatDividerModule } from '@angular/material/divider';
17
- import * as i2 from '@angular/material/form-field';
17
+ import * as i1$1 from '@angular/material/form-field';
18
18
  import { MatFormFieldModule } from '@angular/material/form-field';
19
- import * as i5$1 from '@angular/material/input';
19
+ import * as i4 from '@angular/material/input';
20
20
  import { MatInputModule } from '@angular/material/input';
21
- import * as i1$1 from '@angular/material/dialog';
22
- import { MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose, MatDialog } from '@angular/material/dialog';
21
+ import { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose, MatDialog } from '@angular/material/dialog';
23
22
  import { MatOptionModule } from '@angular/material/core';
24
- import * as i3 from '@angular/material/select';
23
+ import * as i2 from '@angular/material/select';
25
24
  import { MatSelectModule } from '@angular/material/select';
26
25
 
27
26
  class InventoryLayoutComponent {
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: InventoryLayoutComponent, isStandalone: true, selector: "rolatech-inventory-layout", ngImport: i0, template: "<div class=\"flex flex-col md:flex-row m-auto\">\n <div\n class=\"min-w-[256px] px-3 md:px-0 flex flex-row md:flex-col md:h-full items-center md:items-start h-16 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\" i18n>\u5E93\u5B58\u8BBE\u7F6E</div>\n <a routerLink=\"./locations\" routerLinkActive=\"manage-active\" class=\"p-2\" i18n>\u4ED3\u5E93\u8BBE\u7F6E</a>\n </div>\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\" i18n>\u5546\u54C1\u5E93\u5B58</div>\n <a routerLink=\"./products\" routerLinkActive=\"manage-active\" class=\"p-2\" i18n>\u5546\u54C1</a>\n <!-- <a routerLink=\"./inventory\" routerLinkActive=\"manage-active\" class=\"p-2\">\u5E93\u5B58\u8BBE\u7F6E</a> -->\n </div>\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n</div>\n", styles: [".manage-active{background-color:var(--rt-10-percent-layer, rgba(0, 0, 0, .05));box-shadow:4px 0 var(--rt-base-background-inverse, #000) inset;font-weight:600}@media(max-width:768px){.manage-active{box-shadow:inset 0 -4px 0 0 var(--rt-base-background-inverse, #000)}}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None }); }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: InventoryLayoutComponent, isStandalone: true, selector: "rolatech-inventory-layout", ngImport: i0, template: "<div class=\"flex flex-col md:flex-row m-auto\">\n <div\n class=\"min-w-[256px] px-3 md:px-0 flex flex-row md:flex-col md:h-full items-center md:items-start h-16 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\" i18n>\u5E93\u5B58\u8BBE\u7F6E</div>\n <a routerLink=\"./locations\" routerLinkActive=\"manage-active\" class=\"p-2\" i18n>\u4ED3\u5E93\u8BBE\u7F6E</a>\n </div>\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\" i18n>\u5546\u54C1\u5E93\u5B58</div>\n <a routerLink=\"./products\" routerLinkActive=\"manage-active\" class=\"p-2\" i18n>\u5546\u54C1</a>\n <!-- <a routerLink=\"./inventory\" routerLinkActive=\"manage-active\" class=\"p-2\">\u5E93\u5B58\u8BBE\u7F6E</a> -->\n </div>\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n</div>\n", styles: [".manage-active{background-color:var(--rt-10-percent-layer, rgba(0, 0, 0, .05));box-shadow:4px 0 var(--rt-base-background-inverse, #000) inset;font-weight:600}@media(max-width:768px){.manage-active{box-shadow:inset 0 -4px 0 0 var(--rt-base-background-inverse, #000)}}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None }); }
30
29
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryLayoutComponent, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryLayoutComponent, decorators: [{
32
31
  type: Component,
33
32
  args: [{ selector: 'rolatech-inventory-layout', imports: [CommonModule, RouterModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex flex-col md:flex-row m-auto\">\n <div\n class=\"min-w-[256px] px-3 md:px-0 flex flex-row md:flex-col md:h-full items-center md:items-start h-16 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\" i18n>\u5E93\u5B58\u8BBE\u7F6E</div>\n <a routerLink=\"./locations\" routerLinkActive=\"manage-active\" class=\"p-2\" i18n>\u4ED3\u5E93\u8BBE\u7F6E</a>\n </div>\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\" i18n>\u5546\u54C1\u5E93\u5B58</div>\n <a routerLink=\"./products\" routerLinkActive=\"manage-active\" class=\"p-2\" i18n>\u5546\u54C1</a>\n <!-- <a routerLink=\"./inventory\" routerLinkActive=\"manage-active\" class=\"p-2\">\u5E93\u5B58\u8BBE\u7F6E</a> -->\n </div>\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n</div>\n", styles: [".manage-active{background-color:var(--rt-10-percent-layer, rgba(0, 0, 0, .05));box-shadow:4px 0 var(--rt-base-background-inverse, #000) inset;font-weight:600}@media(max-width:768px){.manage-active{box-shadow:inset 0 -4px 0 0 var(--rt-base-background-inverse, #000)}}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}\n"] }]
34
33
  }] });
@@ -40,7 +39,7 @@ const inventoryRoutes = [
40
39
  children: [
41
40
  {
42
41
  path: '',
43
- loadComponent: () => import('./rolatech-angular-inventory-inventory.component-YtfiAukX.mjs').then((c) => c.InventoryComponent),
42
+ loadComponent: () => import('./rolatech-angular-inventory-inventory.component-Dtfndmnk.mjs').then((c) => c.InventoryComponent),
44
43
  },
45
44
  {
46
45
  path: 'locations',
@@ -56,17 +55,17 @@ const inventoryRoutes = [
56
55
  },
57
56
  {
58
57
  path: 'products',
59
- loadComponent: () => import('./rolatech-angular-inventory-inventory-product.component-r0wDnX91.mjs').then((c) => c.InventoryProductComponent),
58
+ loadComponent: () => import('./rolatech-angular-inventory-inventory-product.component-DIvTJfje.mjs').then((c) => c.InventoryProductComponent),
60
59
  },
61
60
  ],
62
61
  },
63
62
  ];
64
63
 
65
64
  class InventoryContentComponent {
66
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
67
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: InventoryContentComponent, isStandalone: true, selector: "rolatech-inventory-content", ngImport: i0, template: "<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
66
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: InventoryContentComponent, isStandalone: true, selector: "rolatech-inventory-content", ngImport: i0, template: "<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
68
67
  }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryContentComponent, decorators: [{
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryContentComponent, decorators: [{
70
69
  type: Component,
71
70
  args: [{ selector: 'rolatech-inventory-content', imports: [CommonModule], template: "<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n" }]
72
71
  }] });
@@ -89,10 +88,10 @@ class InventoryLocationComponent {
89
88
  addLocation(data) {
90
89
  this.inventoryService.addLocation(data);
91
90
  }
92
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryLocationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: InventoryLocationComponent, isStandalone: true, selector: "rolatech-inventory-location", ngImport: i0, template: "<rolatech-inventory-content>\n <rolatech-toolbar title=\"Inventory location\" class=\"hidden md:block\" divider>\n <div class=\"flex items-center gap-2\">\n <button mat-stroked-button routerLink=\"./add\">\n <mat-icon>add</mat-icon>\n <span i18n>Create inventory</span>\n </button>\n </div>\n </rolatech-toolbar>\n <div class=\"divide-y divide-[--rt-10-percent-layer]\">\n @for (item of locations; track $index) {\n <div [routerLink]=\"item.id\" class=\"flex items-center px-2 h-11 hover:cursor-pointer hover:bg-[--rt-raised-background]\">\n <div class=\"font-bold\">{{ item.name }}</div>\n <div></div>\n </div>\n }\n </div>\n</rolatech-inventory-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: InventoryContentComponent, selector: "rolatech-inventory-content" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
91
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryLocationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
92
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: InventoryLocationComponent, isStandalone: true, selector: "rolatech-inventory-location", ngImport: i0, template: "<rolatech-inventory-content>\n <rolatech-toolbar title=\"Inventory location\" class=\"hidden md:block\" divider>\n <div class=\"flex items-center gap-2\">\n <button mat-stroked-button routerLink=\"./add\">\n <mat-icon>add</mat-icon>\n <span i18n>Create inventory</span>\n </button>\n </div>\n </rolatech-toolbar>\n <div class=\"divide-y divide-[--rt-10-percent-layer]\">\n @for (item of locations; track $index) {\n <div [routerLink]=\"item.id\" class=\"flex items-center px-2 h-11 hover:cursor-pointer hover:bg-[--rt-raised-background]\">\n <div class=\"font-bold\">{{ item.name }}</div>\n <div></div>\n </div>\n }\n </div>\n</rolatech-inventory-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: InventoryContentComponent, selector: "rolatech-inventory-content" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
94
93
  }
95
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryLocationComponent, decorators: [{
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryLocationComponent, decorators: [{
96
95
  type: Component,
97
96
  args: [{ selector: 'rolatech-inventory-location', imports: [CommonModule, ToolbarComponent, InventoryContentComponent, RouterLink, MatButtonModule, MatIcon], template: "<rolatech-inventory-content>\n <rolatech-toolbar title=\"Inventory location\" class=\"hidden md:block\" divider>\n <div class=\"flex items-center gap-2\">\n <button mat-stroked-button routerLink=\"./add\">\n <mat-icon>add</mat-icon>\n <span i18n>Create inventory</span>\n </button>\n </div>\n </rolatech-toolbar>\n <div class=\"divide-y divide-[--rt-10-percent-layer]\">\n @for (item of locations; track $index) {\n <div [routerLink]=\"item.id\" class=\"flex items-center px-2 h-11 hover:cursor-pointer hover:bg-[--rt-raised-background]\">\n <div class=\"font-bold\">{{ item.name }}</div>\n <div></div>\n </div>\n }\n </div>\n</rolatech-inventory-content>\n" }]
98
97
  }] });
@@ -103,9 +102,9 @@ var inventoryLocation_component = /*#__PURE__*/Object.freeze({
103
102
  });
104
103
 
105
104
  class InventoryLocationMapComponent {
106
- constructor(dialogRef, data) {
107
- this.dialogRef = dialogRef;
108
- this.data = data;
105
+ constructor() {
106
+ this.dialogRef = inject((MatDialogRef));
107
+ this.data = inject(MAT_DIALOG_DATA);
109
108
  this.infoWindowList = Array(10);
110
109
  this.cities = ['北京', '上海'];
111
110
  this.region = '北京';
@@ -174,10 +173,10 @@ class InventoryLocationMapComponent {
174
173
  this.dialogRef.close();
175
174
  }
176
175
  selectionChange(event) { }
177
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryLocationMapComponent, deps: [{ token: i1$1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
178
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: InventoryLocationMapComponent, isStandalone: true, selector: "rolatech-inventory-location-map", ngImport: i0, template: "@if (data.title) {\n <h2 mat-dialog-title>{{ data.title }}</h2>\n}\n<div mat-dialog-content>\n <div class=\"h-full\">\n <div class=\"relative h-full\">\n <div id=\"map-container\" class=\"h-full\"></div>\n <div class=\"absolute bg-white z-[9999] top-[30px] left-[30px]\">\n <div class=\"flex gap-3 px-3 pt-3\">\n <mat-form-field appearance=\"fill\" [style.width.px]=\"180\">\n <mat-label i18n>City</mat-label>\n <mat-select #select=\"matSelect\" [(ngModel)]=\"region\" (selectionChange)=\"selectionChange($event)\">\n @for (city of cities; track city) {\n <mat-option [value]=\"city\">\n {{ city }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <input matInput placeholder=\"\u8F93\u5165\u5173\u952E\u5B57\u641C\u7D22\" (input)=\"onSearchChange($event)\" />\n </mat-form-field>\n </div>\n <div class=\"max-h-[320px] overflow-scroll pb-3 bg-white\">\n @for (item of lists; track item; let index = $index) {\n <div (click)=\"setLocation(index)\" class=\"cursor-pointer\">\n <div class=\"p-3 flex items-center gap-2 hover:bg-[--rt-raised-background]\">\n <mat-icon fontIcon=\"location_on\"></mat-icon>\n <div class=\"text-sm font-thin\">{{ item.title }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n <button mat-flat-button [mat-dialog-close]=\"selectedLocation\" cdkFocusInitial i18n>Ok</button>\n</div>\n", styles: ["mat-form-field{width:100%;margin-bottom:-1.25em}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] }); }
176
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryLocationMapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
177
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: InventoryLocationMapComponent, isStandalone: true, selector: "rolatech-inventory-location-map", ngImport: i0, template: "@if (data.title) {\n <h2 mat-dialog-title>{{ data.title }}</h2>\n}\n<div mat-dialog-content>\n <div class=\"h-full\">\n <div class=\"relative h-full\">\n <div id=\"map-container\" class=\"h-full\"></div>\n <div class=\"absolute bg-white z-[9999] top-[30px] left-[30px]\">\n <div class=\"flex gap-3 px-3 pt-3\">\n <mat-form-field appearance=\"fill\" [style.width.px]=\"180\">\n <mat-label i18n>City</mat-label>\n <mat-select #select=\"matSelect\" [(ngModel)]=\"region\" (selectionChange)=\"selectionChange($event)\">\n @for (city of cities; track city) {\n <mat-option [value]=\"city\">\n {{ city }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <input matInput placeholder=\"\u8F93\u5165\u5173\u952E\u5B57\u641C\u7D22\" (input)=\"onSearchChange($event)\" />\n </mat-form-field>\n </div>\n <div class=\"max-h-[320px] overflow-scroll pb-3 bg-white\">\n @for (item of lists; track item; let index = $index) {\n <div (click)=\"setLocation(index)\" class=\"cursor-pointer\">\n <div class=\"p-3 flex items-center gap-2 hover:bg-[--rt-raised-background]\">\n <mat-icon fontIcon=\"location_on\"></mat-icon>\n <div class=\"text-sm font-thin\">{{ item.title }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n <button mat-flat-button [mat-dialog-close]=\"selectedLocation\" cdkFocusInitial i18n>Ok</button>\n</div>\n", styles: ["mat-form-field{width:100%;margin-bottom:-1.25em}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] }); }
179
178
  }
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryLocationMapComponent, decorators: [{
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryLocationMapComponent, decorators: [{
181
180
  type: Component,
182
181
  args: [{ selector: 'rolatech-inventory-location-map', imports: [
183
182
  MatDialogTitle,
@@ -192,10 +191,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
192
191
  MatButtonModule,
193
192
  MatDialogClose,
194
193
  ], template: "@if (data.title) {\n <h2 mat-dialog-title>{{ data.title }}</h2>\n}\n<div mat-dialog-content>\n <div class=\"h-full\">\n <div class=\"relative h-full\">\n <div id=\"map-container\" class=\"h-full\"></div>\n <div class=\"absolute bg-white z-[9999] top-[30px] left-[30px]\">\n <div class=\"flex gap-3 px-3 pt-3\">\n <mat-form-field appearance=\"fill\" [style.width.px]=\"180\">\n <mat-label i18n>City</mat-label>\n <mat-select #select=\"matSelect\" [(ngModel)]=\"region\" (selectionChange)=\"selectionChange($event)\">\n @for (city of cities; track city) {\n <mat-option [value]=\"city\">\n {{ city }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <input matInput placeholder=\"\u8F93\u5165\u5173\u952E\u5B57\u641C\u7D22\" (input)=\"onSearchChange($event)\" />\n </mat-form-field>\n </div>\n <div class=\"max-h-[320px] overflow-scroll pb-3 bg-white\">\n @for (item of lists; track item; let index = $index) {\n <div (click)=\"setLocation(index)\" class=\"cursor-pointer\">\n <div class=\"p-3 flex items-center gap-2 hover:bg-[--rt-raised-background]\">\n <mat-icon fontIcon=\"location_on\"></mat-icon>\n <div class=\"text-sm font-thin\">{{ item.title }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n <button mat-flat-button [mat-dialog-close]=\"selectedLocation\" cdkFocusInitial i18n>Ok</button>\n</div>\n", styles: ["mat-form-field{width:100%;margin-bottom:-1.25em}\n"] }]
195
- }], ctorParameters: () => [{ type: i1$1.MatDialogRef }, { type: undefined, decorators: [{
196
- type: Inject,
197
- args: [MAT_DIALOG_DATA]
198
- }] }] });
194
+ }] });
199
195
 
200
196
  class InventoryLocationItemComponent {
201
197
  constructor() {
@@ -231,10 +227,10 @@ class InventoryLocationItemComponent {
231
227
  onDelete() {
232
228
  this.delete.emit(this.location());
233
229
  }
234
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryLocationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
235
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.0", type: InventoryLocationItemComponent, isStandalone: true, selector: "rolatech-inventory-location-item", inputs: { location: { classPropertyName: "location", publicName: "location", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { save: "save", delete: "delete" }, ngImport: i0, template: "<div class=\"mb-8\">\n <div class=\"flex flex-col\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"location().name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Contact </mat-label>\n <input matInput [(ngModel)]=\"location().contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"location().phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <rolatech-title title=\"Location info\"></rolatech-title>\n <button mat-stroked-button (click)=\"selectLocation()\" i18n>Select location</button>\n </div>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Province </mat-label>\n <input matInput [(ngModel)]=\"location().province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"location().city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n>District </mat-label>\n <input matInput [(ngModel)]=\"location().district\" name=\"district\" required disabled />\n </mat-form-field>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Address </mat-label>\n <input matInput [(ngModel)]=\"location().street\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Details </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location().detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n <div>\n <button mat-button (click)=\"onDelete()\" i18n>Delete</button>\n <button mat-flat-button (click)=\"onSave()\" i18n>Save</button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i3$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: TitleComponent, selector: "rolatech-title", inputs: ["title", "subtitle", "large"] }], encapsulation: i0.ViewEncapsulation.None }); }
230
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryLocationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
231
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.1", type: InventoryLocationItemComponent, isStandalone: true, selector: "rolatech-inventory-location-item", inputs: { location: { classPropertyName: "location", publicName: "location", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { save: "save", delete: "delete" }, ngImport: i0, template: "<div class=\"mb-8\">\n <div class=\"flex flex-col\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"location().name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Contact </mat-label>\n <input matInput [(ngModel)]=\"location().contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"location().phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <rolatech-title title=\"Location info\"></rolatech-title>\n <button mat-stroked-button (click)=\"selectLocation()\" i18n>Select location</button>\n </div>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Province </mat-label>\n <input matInput [(ngModel)]=\"location().province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"location().city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n>District </mat-label>\n <input matInput [(ngModel)]=\"location().district\" name=\"district\" required disabled />\n </mat-form-field>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Address </mat-label>\n <input matInput [(ngModel)]=\"location().street\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Details </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location().detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n <div>\n <button mat-button (click)=\"onDelete()\" i18n>Delete</button>\n <button mat-flat-button (click)=\"onSave()\" i18n>Save</button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i3.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: TitleComponent, selector: "rolatech-title", inputs: ["title", "subtitle", "large"] }], encapsulation: i0.ViewEncapsulation.None }); }
236
232
  }
237
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryLocationItemComponent, decorators: [{
233
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryLocationItemComponent, decorators: [{
238
234
  type: Component,
239
235
  args: [{ selector: 'rolatech-inventory-location-item', imports: [
240
236
  MatFormFieldModule,
@@ -290,10 +286,10 @@ class InventoryLocationDetailComponent extends BaseComponent {
290
286
  },
291
287
  });
292
288
  }
293
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryLocationDetailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
294
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: InventoryLocationDetailComponent, isStandalone: true, selector: "rolatech-inventory-location-detail", usesInheritance: true, ngImport: i0, template: "<rolatech-toolbar title=\"\u4ED3\u5E93\u8BE6\u60C5\" back> </rolatech-toolbar>\n@if (location) {\n <div class=\"px-3\">\n <rolatech-inventory-location-item\n [location]=\"location\"\n (save)=\"onLocationSave($event)\"\n (delete)=\"onLocationDetele($event)\"\n ></rolatech-inventory-location-item>\n </div>\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: InventoryLocationItemComponent, selector: "rolatech-inventory-location-item", inputs: ["location"], outputs: ["save", "delete"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }], encapsulation: i0.ViewEncapsulation.None }); }
289
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryLocationDetailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
290
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: InventoryLocationDetailComponent, isStandalone: true, selector: "rolatech-inventory-location-detail", usesInheritance: true, ngImport: i0, template: "<rolatech-toolbar title=\"\u4ED3\u5E93\u8BE6\u60C5\" back> </rolatech-toolbar>\n@if (location) {\n <div class=\"px-3\">\n <rolatech-inventory-location-item\n [location]=\"location\"\n (save)=\"onLocationSave($event)\"\n (delete)=\"onLocationDetele($event)\"\n ></rolatech-inventory-location-item>\n </div>\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: InventoryLocationItemComponent, selector: "rolatech-inventory-location-item", inputs: ["location"], outputs: ["save", "delete"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }], encapsulation: i0.ViewEncapsulation.None }); }
295
291
  }
296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryLocationDetailComponent, decorators: [{
292
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryLocationDetailComponent, decorators: [{
297
293
  type: Component,
298
294
  args: [{ selector: 'rolatech-inventory-location-detail', imports: [CommonModule, InventoryLocationItemComponent, ToolbarComponent], encapsulation: ViewEncapsulation.None, template: "<rolatech-toolbar title=\"\u4ED3\u5E93\u8BE6\u60C5\" back> </rolatech-toolbar>\n@if (location) {\n <div class=\"px-3\">\n <rolatech-inventory-location-item\n [location]=\"location\"\n (save)=\"onLocationSave($event)\"\n (delete)=\"onLocationDetele($event)\"\n ></rolatech-inventory-location-item>\n </div>\n}\n" }]
299
295
  }] });
@@ -339,10 +335,10 @@ class InventoryLocationAddComponent extends BaseComponent {
339
335
  },
340
336
  });
341
337
  }
342
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryLocationAddComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
343
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: InventoryLocationAddComponent, isStandalone: true, selector: "rolatech-inventory-location-add", usesInheritance: true, ngImport: i0, template: "<rolatech-toolbar title=\"Add location\" back> </rolatech-toolbar>\n<div class=\"px-3 h-full\">\n <div class=\"w-full\">\n <div class=\"w-2/3 flex flex-col\">\n <form #locationForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"location.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Contact </mat-label>\n <input matInput [(ngModel)]=\"location.contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"location.phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <h2 i18n>Location</h2>\n <button mat-stroked-button (click)=\"selectLocation()\">Location select</button>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Province </mat-label>\n <input matInput [(ngModel)]=\"location.province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"location.city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> County </mat-label>\n <input matInput [(ngModel)]=\"location.district\" name=\"county\" required disabled />\n </mat-form-field>\n <!-- <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input\n matInput\n [(ngModel)]=\"location.town\"\n name=\"town\"\n required\n readonly\n />\n </mat-form-field> -->\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Address </mat-label>\n <input matInput [(ngModel)]=\"location.detail\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Detail </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location.detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n </form>\n </div>\n <div class=\"py-3\">\n <button mat-flat-button (click)=\"add()\" i18n>Save</button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i3$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: TextFieldModule }], encapsulation: i0.ViewEncapsulation.None }); }
338
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryLocationAddComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
339
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: InventoryLocationAddComponent, isStandalone: true, selector: "rolatech-inventory-location-add", usesInheritance: true, ngImport: i0, template: "<rolatech-toolbar title=\"Add location\" back> </rolatech-toolbar>\n<div class=\"px-3 h-full\">\n <div class=\"w-full\">\n <div class=\"w-2/3 flex flex-col\">\n <form #locationForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"location.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Contact </mat-label>\n <input matInput [(ngModel)]=\"location.contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"location.phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <h2 i18n>Location</h2>\n <button mat-stroked-button (click)=\"selectLocation()\">Location select</button>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Province </mat-label>\n <input matInput [(ngModel)]=\"location.province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"location.city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> County </mat-label>\n <input matInput [(ngModel)]=\"location.district\" name=\"county\" required disabled />\n </mat-form-field>\n <!-- <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input\n matInput\n [(ngModel)]=\"location.town\"\n name=\"town\"\n required\n readonly\n />\n </mat-form-field> -->\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Address </mat-label>\n <input matInput [(ngModel)]=\"location.detail\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Detail </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location.detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n </form>\n </div>\n <div class=\"py-3\">\n <button mat-flat-button (click)=\"add()\" i18n>Save</button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i3.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: TextFieldModule }], encapsulation: i0.ViewEncapsulation.None }); }
344
340
  }
345
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InventoryLocationAddComponent, decorators: [{
341
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InventoryLocationAddComponent, decorators: [{
346
342
  type: Component,
347
343
  args: [{ selector: 'rolatech-inventory-location-add', imports: [ToolbarComponent, FormsModule, MatFormFieldModule, MatInputModule, MatButtonModule, TextFieldModule], encapsulation: ViewEncapsulation.None, template: "<rolatech-toolbar title=\"Add location\" back> </rolatech-toolbar>\n<div class=\"px-3 h-full\">\n <div class=\"w-full\">\n <div class=\"w-2/3 flex flex-col\">\n <form #locationForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"location.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Contact </mat-label>\n <input matInput [(ngModel)]=\"location.contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"location.phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <h2 i18n>Location</h2>\n <button mat-stroked-button (click)=\"selectLocation()\">Location select</button>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Province </mat-label>\n <input matInput [(ngModel)]=\"location.province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"location.city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> County </mat-label>\n <input matInput [(ngModel)]=\"location.district\" name=\"county\" required disabled />\n </mat-form-field>\n <!-- <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input\n matInput\n [(ngModel)]=\"location.town\"\n name=\"town\"\n required\n readonly\n />\n </mat-form-field> -->\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Address </mat-label>\n <input matInput [(ngModel)]=\"location.detail\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Detail </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location.detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n </form>\n </div>\n <div class=\"py-3\">\n <button mat-flat-button (click)=\"add()\" i18n>Save</button>\n </div>\n </div>\n</div>\n" }]
348
344
  }] });
@@ -357,4 +353,4 @@ var inventoryLocationAdd_component = /*#__PURE__*/Object.freeze({
357
353
  */
358
354
 
359
355
  export { InventoryContentComponent as I, InventoryLocationComponent as a, InventoryLocationDetailComponent as b, InventoryLocationAddComponent as c, inventoryRoutes as i };
360
- //# sourceMappingURL=rolatech-angular-inventory-rolatech-angular-inventory-Bmxj_rgA.mjs.map
356
+ //# sourceMappingURL=rolatech-angular-inventory-rolatech-angular-inventory-CtEyekor.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rolatech-angular-inventory-rolatech-angular-inventory-CtEyekor.mjs","sources":["../../../../packages/angular-inventory/src/lib/components/inventory-layout/inventory-layout.component.ts","../../../../packages/angular-inventory/src/lib/components/inventory-layout/inventory-layout.component.html","../../../../packages/angular-inventory/src/lib/pages/inventory.routes.ts","../../../../packages/angular-inventory/src/lib/components/inventory-content/inventory-content.component.ts","../../../../packages/angular-inventory/src/lib/components/inventory-content/inventory-content.component.html","../../../../packages/angular-inventory/src/lib/pages/inventory-location/inventory-location.component.ts","../../../../packages/angular-inventory/src/lib/pages/inventory-location/inventory-location.component.html","../../../../packages/angular-inventory/src/lib/components/inventory-location-map/inventory-location-map.component.ts","../../../../packages/angular-inventory/src/lib/components/inventory-location-map/inventory-location-map.component.html","../../../../packages/angular-inventory/src/lib/components/inventory-location-item/inventory-location-item.component.ts","../../../../packages/angular-inventory/src/lib/components/inventory-location-item/inventory-location-item.component.html","../../../../packages/angular-inventory/src/lib/pages/inventory-location-detail/inventory-location-detail.component.ts","../../../../packages/angular-inventory/src/lib/pages/inventory-location-detail/inventory-location-detail.component.html","../../../../packages/angular-inventory/src/lib/pages/inventory-location-add/inventory-location-add.component.ts","../../../../packages/angular-inventory/src/lib/pages/inventory-location-add/inventory-location-add.component.html","../../../../packages/angular-inventory/src/rolatech-angular-inventory.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n selector: 'rolatech-inventory-layout',\n imports: [CommonModule, RouterModule],\n templateUrl: './inventory-layout.component.html',\n styleUrl: './inventory-layout.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryLayoutComponent {}\n","<div class=\"flex flex-col md:flex-row m-auto\">\n <div\n class=\"min-w-[256px] px-3 md:px-0 flex flex-row md:flex-col md:h-full items-center md:items-start h-16 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\" i18n>库存设置</div>\n <a routerLink=\"./locations\" routerLinkActive=\"manage-active\" class=\"p-2\" i18n>仓库设置</a>\n </div>\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\" i18n>商品库存</div>\n <a routerLink=\"./products\" routerLinkActive=\"manage-active\" class=\"p-2\" i18n>商品</a>\n <!-- <a routerLink=\"./inventory\" routerLinkActive=\"manage-active\" class=\"p-2\">库存设置</a> -->\n </div>\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n</div>\n","import { Routes } from '@angular/router';\nimport { InventoryLayoutComponent } from '../components/inventory-layout/inventory-layout.component';\n\nexport const inventoryRoutes: Routes = [\n {\n path: '',\n component: InventoryLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () => import('./inventory/inventory.component').then((c) => c.InventoryComponent),\n },\n {\n path: 'locations',\n loadComponent: () =>\n import('./inventory-location/inventory-location.component').then((c) => c.InventoryLocationComponent),\n },\n {\n path: 'locations/add',\n loadComponent: () =>\n import('./inventory-location-add/inventory-location-add.component').then((c) => c.InventoryLocationAddComponent),\n },\n {\n path: 'locations/:id',\n loadComponent: () =>\n import('./inventory-location-detail/inventory-location-detail.component').then(\n (c) => c.InventoryLocationDetailComponent,\n ),\n },\n {\n path: 'products',\n loadComponent: () => import('./inventory-product/inventory-product.component').then((c) => c.InventoryProductComponent),\n },\n ],\n },\n];\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-inventory-content',\n imports: [CommonModule],\n templateUrl: './inventory-content.component.html',\n styleUrl: './inventory-content.component.scss',\n})\nexport class InventoryContentComponent {}\n","<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ToolbarComponent } from '@rolatech/angular-components';\nimport { InventoryContentComponent } from '../../components/inventory-content/inventory-content.component';\nimport { InventoryService } from '@rolatech/angular-services';\nimport { Location } from '../../interfaces/inventory-location';\nimport { RouterLink } from '@angular/router';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rolatech-inventory-location',\n imports: [CommonModule, ToolbarComponent, InventoryContentComponent, RouterLink, MatButtonModule, MatIcon],\n templateUrl: './inventory-location.component.html',\n styleUrl: './inventory-location.component.scss',\n})\nexport class InventoryLocationComponent implements OnInit {\n inventoryService = inject(InventoryService);\n locations: Location[] = [];\n\n ngOnInit(): void {\n this.findLocations();\n }\n findLocations() {\n this.inventoryService.findLocations({}).subscribe({\n next: (res) => {\n this.locations = res.data;\n },\n });\n }\n addLocation(data) {\n this.inventoryService.addLocation(data);\n }\n}\n","<rolatech-inventory-content>\n <rolatech-toolbar title=\"Inventory location\" class=\"hidden md:block\" divider>\n <div class=\"flex items-center gap-2\">\n <button mat-stroked-button routerLink=\"./add\">\n <mat-icon>add</mat-icon>\n <span i18n>Create inventory</span>\n </button>\n </div>\n </rolatech-toolbar>\n <div class=\"divide-y divide-[--rt-10-percent-layer]\">\n @for (item of locations; track $index) {\n <div [routerLink]=\"item.id\" class=\"flex items-center px-2 h-11 hover:cursor-pointer hover:bg-[--rt-raised-background]\">\n <div class=\"font-bold\">{{ item.name }}</div>\n <div></div>\n </div>\n }\n </div>\n</rolatech-inventory-content>\n","import { Component, OnInit, inject } from '@angular/core';\nimport {\n MatDialogRef,\n MAT_DIALOG_DATA,\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatDialogTitle,\n} from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\ndeclare global {\n interface Window {\n qq: any;\n TMap: any;\n }\n}\n\n@Component({\n selector: 'rolatech-inventory-location-map',\n imports: [\n MatDialogTitle,\n MatDialogContent,\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n MatOptionModule,\n MatInputModule,\n MatIconModule,\n MatDialogActions,\n MatButtonModule,\n MatDialogClose,\n ],\n templateUrl: './inventory-location-map.component.html',\n styleUrl: './inventory-location-map.component.scss',\n})\nexport class InventoryLocationMapComponent implements OnInit {\n dialogRef = inject(MatDialogRef<InventoryLocationMapComponent>);\n data = inject(MAT_DIALOG_DATA);\n map: any;\n markers: any;\n lists: any;\n infoWindowList = Array(10);\n selectedLocation: any;\n cities: string[] = ['北京', '上海'];\n region = '北京';\n ngOnInit(): void {\n this.init();\n }\n\n init() {\n const map = new window.TMap.Map(document.getElementById('map-container'), {\n // 地图的中心地理坐标。\n center: new window.TMap.LatLng(40.0402718, 116.2735831),\n resizeEnable: true,\n zoom: 14,\n });\n const markers = new window.TMap.MultiMarker({\n map: map,\n geometries: [],\n });\n this.map = map;\n this.markers = markers;\n }\n onSearchChange(event: any) {\n const value = event.target.value;\n const suggest = new window.TMap.service.Suggestion({\n pageSize: 15, // 返回结果每页条目数\n region: this.region, // 限制城市范围\n regionFix: true, // 搜索无结果时是否固定在当前城市\n });\n if (value) {\n suggest\n .getSuggestions({ keyword: value, location: this.map.getCenter() })\n .then((result: any) => {\n this.lists = result.data;\n })\n .catch((error: any) => {});\n }\n }\n setLocation(index: any) {\n this.infoWindowList.forEach((infoWindow) => {\n infoWindow.close();\n });\n this.infoWindowList.length = 0;\n const item = this.lists[index];\n this.selectedLocation = item;\n this.lists = [];\n this.markers.setGeometries([]);\n this.markers.updateGeometries([\n {\n id: '0', // 点标注数据数组\n position: item.location,\n },\n ]);\n\n const infoWindow = new window.TMap.InfoWindow({\n map: this.map,\n position: item.location,\n content: `<h3>${item.title}</h3><p>地址:${item.address}</p>`,\n offset: { x: 0, y: -50 },\n });\n this.infoWindowList.push(infoWindow);\n this.map.setCenter(item.location);\n this.markers.on('click', (e: any) => {\n this.infoWindowList[Number(e.geometry.id)].open();\n });\n }\n onNoClick(): void {\n this.dialogRef.close();\n }\n selectionChange(event: any) {}\n}\n","@if (data.title) {\n <h2 mat-dialog-title>{{ data.title }}</h2>\n}\n<div mat-dialog-content>\n <div class=\"h-full\">\n <div class=\"relative h-full\">\n <div id=\"map-container\" class=\"h-full\"></div>\n <div class=\"absolute bg-white z-[9999] top-[30px] left-[30px]\">\n <div class=\"flex gap-3 px-3 pt-3\">\n <mat-form-field appearance=\"fill\" [style.width.px]=\"180\">\n <mat-label i18n>City</mat-label>\n <mat-select #select=\"matSelect\" [(ngModel)]=\"region\" (selectionChange)=\"selectionChange($event)\">\n @for (city of cities; track city) {\n <mat-option [value]=\"city\">\n {{ city }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <input matInput placeholder=\"输入关键字搜索\" (input)=\"onSearchChange($event)\" />\n </mat-form-field>\n </div>\n <div class=\"max-h-[320px] overflow-scroll pb-3 bg-white\">\n @for (item of lists; track item; let index = $index) {\n <div (click)=\"setLocation(index)\" class=\"cursor-pointer\">\n <div class=\"p-3 flex items-center gap-2 hover:bg-[--rt-raised-background]\">\n <mat-icon fontIcon=\"location_on\"></mat-icon>\n <div class=\"text-sm font-thin\">{{ item.title }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n <button mat-flat-button [mat-dialog-close]=\"selectedLocation\" cdkFocusInitial i18n>Ok</button>\n</div>\n","import { Component, inject, input, output, ViewEncapsulation } from '@angular/core';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TitleComponent } from '@rolatech/angular-components';\nimport { Location } from '../../interfaces/inventory-location';\nimport { InventoryLocationMapComponent } from '../inventory-location-map/inventory-location-map.component';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Component({\n selector: 'rolatech-inventory-location-item',\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n MatButtonModule,\n TextFieldModule,\n MatDividerModule,\n TitleComponent,\n ],\n templateUrl: './inventory-location-item.component.html',\n styleUrl: './inventory-location-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryLocationItemComponent {\n location = input.required<Location>();\n dialog = inject(MatDialog);\n save = output<Location>();\n delete = output<Location>();\n\n selectLocation() {\n const dialogRef = this.dialog.open(InventoryLocationMapComponent, {\n width: '90%',\n data: {\n title: '选择位置',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n const address = result.address;\n const { lat, lng } = result.location;\n this.location().detail = address;\n this.location().latitude = lat;\n this.location().longitude = lng;\n this.location().province = result.province;\n this.location().city = result.city;\n this.location().district = result.district;\n this.location().detail = result.title;\n }\n });\n }\n onSave() {\n this.save.emit(this.location());\n }\n onDelete() {\n this.delete.emit(this.location());\n }\n}\n","<div class=\"mb-8\">\n <div class=\"flex flex-col\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"location().name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Contact </mat-label>\n <input matInput [(ngModel)]=\"location().contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"location().phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <rolatech-title title=\"Location info\"></rolatech-title>\n <button mat-stroked-button (click)=\"selectLocation()\" i18n>Select location</button>\n </div>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Province </mat-label>\n <input matInput [(ngModel)]=\"location().province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"location().city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n>District </mat-label>\n <input matInput [(ngModel)]=\"location().district\" name=\"district\" required disabled />\n </mat-form-field>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Address </mat-label>\n <input matInput [(ngModel)]=\"location().street\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Details </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location().detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n <div>\n <button mat-button (click)=\"onDelete()\" i18n>Delete</button>\n <button mat-flat-button (click)=\"onSave()\" i18n>Save</button>\n </div>\n </div>\n</div>\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InventoryLocationItemComponent } from '../../components/inventory-location-item/inventory-location-item.component';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { Location } from '../../interfaces/inventory-location';\nimport { InventoryService } from '@rolatech/angular-services';\n\n@Component({\n selector: 'rolatech-inventory-location-detail',\n imports: [CommonModule, InventoryLocationItemComponent, ToolbarComponent],\n templateUrl: './inventory-location-detail.component.html',\n styleUrl: './inventory-location-detail.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryLocationDetailComponent extends BaseComponent implements OnInit {\n inventoryService = inject(InventoryService);\n location!: Location;\n\n ngOnInit(): void {\n this.get();\n }\n get() {\n this.inventoryService.getLocation(this.id).subscribe({\n next: (res) => {\n this.location = res.data;\n },\n });\n }\n onLocationSave(e) {\n this.inventoryService.updateLocation(e.id, e).subscribe({\n next: (res) => {\n this.snackBarService.open('Success');\n },\n });\n }\n onLocationDetele(location: any) {\n const options = {\n title: '确定删除吗',\n message: `这会删除仓库, 确定吗?`,\n cancelText: 'Cancel',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n this.inventoryService.deleteLocation(location.id).subscribe({\n next: (res) => {\n this.snackBarService.open('Delete successfully');\n this.navigation.back();\n },\n });\n }\n },\n });\n }\n}\n","<rolatech-toolbar title=\"仓库详情\" back> </rolatech-toolbar>\n@if (location) {\n <div class=\"px-3\">\n <rolatech-inventory-location-item\n [location]=\"location\"\n (save)=\"onLocationSave($event)\"\n (delete)=\"onLocationDetele($event)\"\n ></rolatech-inventory-location-item>\n </div>\n}\n","import { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ToolbarComponent, BaseComponent } from '@rolatech/angular-components';\nimport { InventoryService } from '@rolatech/angular-services';\nimport { InventoryLocationMapComponent } from '../../components/inventory-location-map/inventory-location-map.component';\n\n@Component({\n selector: 'rolatech-inventory-location-add',\n imports: [ToolbarComponent, FormsModule, MatFormFieldModule, MatInputModule, MatButtonModule, TextFieldModule],\n templateUrl: './inventory-location-add.component.html',\n styleUrl: './inventory-location-add.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryLocationAddComponent extends BaseComponent {\n inventoryService = inject(InventoryService);\n\n location: any = {};\n\n selectLocation() {\n const dialogRef = this.dialog.open(InventoryLocationMapComponent, {\n width: '90%',\n data: {\n title: '选择位置',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n const address = result.address;\n const { lat, lng } = result.location;\n this.location.detail = address;\n this.location.latitude = lat;\n this.location.longitude = lng;\n this.location.province = result.province;\n this.location.city = result.city;\n this.location.district = result.district;\n }\n });\n }\n\n add() {\n const data = {\n ...this.location,\n };\n\n this.inventoryService.addLocation(data).subscribe({\n next: (res) => {\n this.snackBarService.open('Add successfully');\n },\n });\n }\n}\n","<rolatech-toolbar title=\"Add location\" back> </rolatech-toolbar>\n<div class=\"px-3 h-full\">\n <div class=\"w-full\">\n <div class=\"w-2/3 flex flex-col\">\n <form #locationForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"location.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Contact </mat-label>\n <input matInput [(ngModel)]=\"location.contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"location.phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <h2 i18n>Location</h2>\n <button mat-stroked-button (click)=\"selectLocation()\">Location select</button>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Province </mat-label>\n <input matInput [(ngModel)]=\"location.province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"location.city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> County </mat-label>\n <input matInput [(ngModel)]=\"location.district\" name=\"county\" required disabled />\n </mat-form-field>\n <!-- <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input\n matInput\n [(ngModel)]=\"location.town\"\n name=\"town\"\n required\n readonly\n />\n </mat-form-field> -->\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Address </mat-label>\n <input matInput [(ngModel)]=\"location.detail\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Detail </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location.detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n </form>\n </div>\n <div class=\"py-3\">\n <button mat-flat-button (click)=\"add()\" i18n>Save</button>\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3","i6","i2","i4"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;MAWa,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXrC,0hCAkBA,EAAA,MAAA,EAAA,CAAA,2XAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZY,YAAY,8BAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKzB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;+BACE,2BAA2B,EAAA,OAAA,EAC5B,CAAC,YAAY,EAAE,YAAY,CAAC,EAAA,aAAA,EAGtB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,0hCAAA,EAAA,MAAA,EAAA,CAAA,2XAAA,CAAA,EAAA;;;AENhC,MAAM,eAAe,GAAW;AACrC,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,wBAAwB;AACnC,QAAA,QAAQ,EAAE;AACR,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,aAAa,EAAE,MAAM,OAAO,+DAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC;AACjG,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,aAAa,EAAE,MACb,2EAA2D,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,0BAA0B,CAAC;AACxG,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,aAAa,EAAE,MACb,8EAAmE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,CAAC;AACnH,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,aAAa,EAAE,MACb,iFAAyE,CAAC,IAAI,CAC5E,CAAC,CAAC,KAAK,CAAC,CAAC,gCAAgC,CAC1C;AACJ,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,aAAa,EAAE,MAAM,OAAO,uEAAiD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC;AACxH,aAAA;AACF,SAAA;AACF,KAAA;;;MCzBU,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTtC,mHAIA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDCY,YAAY,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;+BACE,4BAA4B,EAAA,OAAA,EAC7B,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,mHAAA,EAAA;;;MEWZ,0BAA0B,CAAA;AANvC,IAAA,WAAA,GAAA;AAOE,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC3C,IAAA,CAAA,SAAS,GAAe,EAAE;AAe3B,IAAA;IAbC,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,EAAE;IACtB;IACA,aAAa,GAAA;QACX,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AAChD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI;YAC3B,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,WAAW,CAAC,IAAI,EAAA;AACd,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;IACzC;8GAhBW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBvC,mtBAkBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDNY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,oXAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAI9F,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,OAAA,EAC9B,CAAC,YAAY,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,mtBAAA,EAAA;;;;;;;;ME8B/F,6BAA6B,CAAA;AAlB1C,IAAA,WAAA,GAAA;AAmBE,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,EAAC,YAA2C,EAAC;AAC/D,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;AAI9B,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAC,EAAE,CAAC;AAE1B,QAAA,IAAA,CAAA,MAAM,GAAa,CAAC,IAAI,EAAE,IAAI,CAAC;QAC/B,IAAA,CAAA,MAAM,GAAG,IAAI;AAmEd,IAAA;IAlEC,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,EAAE;IACb;IAEA,IAAI,GAAA;AACF,QAAA,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;;YAExE,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC;AACvD,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,IAAI,EAAE,EAAE;AACT,SAAA,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1C,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,UAAU,EAAE,EAAE;AACf,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;IACxB;AACA,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;QAChC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACjD,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI;AAChB,SAAA,CAAC;QACF,IAAI,KAAK,EAAE;YACT;AACG,iBAAA,cAAc,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE;AACjE,iBAAA,IAAI,CAAC,CAAC,MAAW,KAAI;AACpB,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI;AAC1B,YAAA,CAAC;iBACA,KAAK,CAAC,CAAC,KAAU,KAAI,EAAE,CAAC,CAAC;QAC9B;IACF;AACA,IAAA,WAAW,CAAC,KAAU,EAAA;QACpB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;YACzC,UAAU,CAAC,KAAK,EAAE;AACpB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5B,YAAA;gBACE,EAAE,EAAE,GAAG;gBACP,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,aAAA;AACF,SAAA,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC5C,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,OAAO,IAAI,CAAC,KAAK,CAAA,WAAA,EAAc,IAAI,CAAC,OAAO,CAAA,IAAA,CAAM;YAC1D,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACzB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAM,KAAI;AAClC,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;AACnD,QAAA,CAAC,CAAC;IACJ;IACA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;IACA,eAAe,CAAC,KAAU,EAAA,EAAG;8GA3ElB,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1C1C,suDAyCA,EAAA,MAAA,EAAA,CAAA,oDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDdI,cAAc,+HACd,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,sLACb,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAKL,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAlBzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAAA,OAAA,EAClC;wBACP,cAAc;wBACd,gBAAgB;wBAChB,kBAAkB;wBAClB,eAAe;wBACf,WAAW;wBACX,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,gBAAgB;wBAChB,eAAe;wBACf,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,suDAAA,EAAA,MAAA,EAAA,CAAA,oDAAA,CAAA,EAAA;;;MEXU,8BAA8B,CAAA;AAf3C,IAAA,WAAA,GAAA;AAgBE,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAY;AACrC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;QAC1B,IAAA,CAAA,IAAI,GAAG,MAAM,EAAY;QACzB,IAAA,CAAA,MAAM,GAAG,MAAM,EAAY;AA6B5B,IAAA;IA3BC,cAAc,GAAA;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;AAChE,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,MAAM;AACd,aAAA;AACF,SAAA,CAAC;QACF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YAC3C,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;gBAC9B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ;AACpC,gBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,OAAO;AAChC,gBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,GAAG,GAAG;AAC9B,gBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,GAAG,GAAG;gBAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;gBAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;gBAClC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;gBAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK;YACvC;AACF,QAAA,CAAC,CAAC;IACJ;IACA,MAAM,GAAA;QACJ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjC;IACA,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACnC;8GAhCW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B3C,uiFA6DA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9CI,kBAAkB,8SAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,gBAAgB,+BAChB,cAAc,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAML,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAf1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,EAAA,OAAA,EACnC;wBACP,kBAAkB;wBAClB,cAAc;wBACd,WAAW;wBACX,eAAe;wBACf,eAAe;wBACf,gBAAgB;wBAChB,cAAc;qBACf,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,uiFAAA,EAAA;;;AEXjC,MAAO,gCAAiC,SAAQ,aAAa,CAAA;AAPnE,IAAA,WAAA,GAAA;;AAQE,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAyC5C,IAAA;IAtCC,QAAQ,GAAA;QACN,IAAI,CAAC,GAAG,EAAE;IACZ;IACA,GAAG,GAAA;QACD,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACnD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI;YAC1B,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,cAAc,CAAC,CAAC,EAAA;AACd,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;YACtC,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,gBAAgB,CAAC,QAAa,EAAA;AAC5B,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,OAAO,EAAE,CAAA,YAAA,CAAc;AACvB,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,WAAW,EAAE,IAAI;SAClB;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC;AACvC,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;gBACZ,IAAI,GAAG,EAAE;oBACP,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AAC1D,wBAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,4BAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAChD,4BAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;wBACxB,CAAC;AACF,qBAAA,CAAC;gBACJ;YACF,CAAC;AACF,SAAA,CAAC;IACJ;8GAzCW,gCAAgC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,qHCd7C,+UAUA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,8BAA8B,gIAAE,gBAAgB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAK7D,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAP5C,SAAS;+BACE,oCAAoC,EAAA,OAAA,EACrC,CAAC,YAAY,EAAE,8BAA8B,EAAE,gBAAgB,CAAC,EAAA,aAAA,EAG1D,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,+UAAA,EAAA;;;;;;;;AEKjC,MAAO,6BAA8B,SAAQ,aAAa,CAAA;AAPhE,IAAA,WAAA,GAAA;;AAQE,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAE3C,IAAA,CAAA,QAAQ,GAAQ,EAAE;AAkCnB,IAAA;IAhCC,cAAc,GAAA;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;AAChE,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,MAAM;AACd,aAAA;AACF,SAAA,CAAC;QACF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YAC3C,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;gBAC9B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ;AACpC,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO;AAC9B,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG;AAC5B,gBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG;gBAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;gBACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;gBAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;YAC1C;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,GAAG,GAAA;AACD,QAAA,MAAM,IAAI,GAAG;YACX,GAAG,IAAI,CAAC,QAAQ;SACjB;QAED,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AAChD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAC/C,CAAC;AACF,SAAA,CAAC;IACJ;8GApCW,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB1C,yhGAyEA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7DY,gBAAgB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,yEAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,mXAAE,eAAe,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKlG,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,WAClC,CAAC,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,CAAC,EAAA,aAAA,EAG/F,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,yhGAAA,EAAA;;;;;;;;AEfvC;;AAEG;;;;"}
@@ -1,2 +1,2 @@
1
- export { c as InventoryLocationAddComponent, a as InventoryLocationComponent, b as InventoryLocationDetailComponent, i as inventoryRoutes } from './rolatech-angular-inventory-rolatech-angular-inventory-Bmxj_rgA.mjs';
1
+ export { c as InventoryLocationAddComponent, a as InventoryLocationComponent, b as InventoryLocationDetailComponent, i as inventoryRoutes } from './rolatech-angular-inventory-rolatech-angular-inventory-CtEyekor.mjs';
2
2
  //# sourceMappingURL=rolatech-angular-inventory.mjs.map
package/package.json CHANGED
@@ -35,5 +35,5 @@
35
35
  },
36
36
  "module": "fesm2022/rolatech-angular-inventory.mjs",
37
37
  "typings": "types/rolatech-angular-inventory.d.ts",
38
- "version": "20.2.8-beta.10"
38
+ "version": "20.2.8-beta.12"
39
39
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"rolatech-angular-inventory-rolatech-angular-inventory-Bmxj_rgA.mjs","sources":["../../../../packages/angular-inventory/src/lib/components/inventory-layout/inventory-layout.component.ts","../../../../packages/angular-inventory/src/lib/components/inventory-layout/inventory-layout.component.html","../../../../packages/angular-inventory/src/lib/pages/inventory.routes.ts","../../../../packages/angular-inventory/src/lib/components/inventory-content/inventory-content.component.ts","../../../../packages/angular-inventory/src/lib/components/inventory-content/inventory-content.component.html","../../../../packages/angular-inventory/src/lib/pages/inventory-location/inventory-location.component.ts","../../../../packages/angular-inventory/src/lib/pages/inventory-location/inventory-location.component.html","../../../../packages/angular-inventory/src/lib/components/inventory-location-map/inventory-location-map.component.ts","../../../../packages/angular-inventory/src/lib/components/inventory-location-map/inventory-location-map.component.html","../../../../packages/angular-inventory/src/lib/components/inventory-location-item/inventory-location-item.component.ts","../../../../packages/angular-inventory/src/lib/components/inventory-location-item/inventory-location-item.component.html","../../../../packages/angular-inventory/src/lib/pages/inventory-location-detail/inventory-location-detail.component.ts","../../../../packages/angular-inventory/src/lib/pages/inventory-location-detail/inventory-location-detail.component.html","../../../../packages/angular-inventory/src/lib/pages/inventory-location-add/inventory-location-add.component.ts","../../../../packages/angular-inventory/src/lib/pages/inventory-location-add/inventory-location-add.component.html","../../../../packages/angular-inventory/src/rolatech-angular-inventory.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n selector: 'rolatech-inventory-layout',\n imports: [CommonModule, RouterModule],\n templateUrl: './inventory-layout.component.html',\n styleUrl: './inventory-layout.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryLayoutComponent {}\n","<div class=\"flex flex-col md:flex-row m-auto\">\n <div\n class=\"min-w-[256px] px-3 md:px-0 flex flex-row md:flex-col md:h-full items-center md:items-start h-16 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\" i18n>库存设置</div>\n <a routerLink=\"./locations\" routerLinkActive=\"manage-active\" class=\"p-2\" i18n>仓库设置</a>\n </div>\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\" i18n>商品库存</div>\n <a routerLink=\"./products\" routerLinkActive=\"manage-active\" class=\"p-2\" i18n>商品</a>\n <!-- <a routerLink=\"./inventory\" routerLinkActive=\"manage-active\" class=\"p-2\">库存设置</a> -->\n </div>\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n</div>\n","import { Routes } from '@angular/router';\nimport { InventoryLayoutComponent } from '../components/inventory-layout/inventory-layout.component';\n\nexport const inventoryRoutes: Routes = [\n {\n path: '',\n component: InventoryLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () => import('./inventory/inventory.component').then((c) => c.InventoryComponent),\n },\n {\n path: 'locations',\n loadComponent: () =>\n import('./inventory-location/inventory-location.component').then((c) => c.InventoryLocationComponent),\n },\n {\n path: 'locations/add',\n loadComponent: () =>\n import('./inventory-location-add/inventory-location-add.component').then((c) => c.InventoryLocationAddComponent),\n },\n {\n path: 'locations/:id',\n loadComponent: () =>\n import('./inventory-location-detail/inventory-location-detail.component').then(\n (c) => c.InventoryLocationDetailComponent,\n ),\n },\n {\n path: 'products',\n loadComponent: () => import('./inventory-product/inventory-product.component').then((c) => c.InventoryProductComponent),\n },\n ],\n },\n];\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-inventory-content',\n imports: [CommonModule],\n templateUrl: './inventory-content.component.html',\n styleUrl: './inventory-content.component.scss',\n})\nexport class InventoryContentComponent {}\n","<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ToolbarComponent } from '@rolatech/angular-components';\nimport { InventoryContentComponent } from '../../components/inventory-content/inventory-content.component';\nimport { InventoryService } from '@rolatech/angular-services';\nimport { Location } from '../../interfaces/inventory-location';\nimport { RouterLink } from '@angular/router';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rolatech-inventory-location',\n imports: [CommonModule, ToolbarComponent, InventoryContentComponent, RouterLink, MatButtonModule, MatIcon],\n templateUrl: './inventory-location.component.html',\n styleUrl: './inventory-location.component.scss',\n})\nexport class InventoryLocationComponent implements OnInit {\n inventoryService = inject(InventoryService);\n locations: Location[] = [];\n\n ngOnInit(): void {\n this.findLocations();\n }\n findLocations() {\n this.inventoryService.findLocations({}).subscribe({\n next: (res) => {\n this.locations = res.data;\n },\n });\n }\n addLocation(data) {\n this.inventoryService.addLocation(data);\n }\n}\n","<rolatech-inventory-content>\n <rolatech-toolbar title=\"Inventory location\" class=\"hidden md:block\" divider>\n <div class=\"flex items-center gap-2\">\n <button mat-stroked-button routerLink=\"./add\">\n <mat-icon>add</mat-icon>\n <span i18n>Create inventory</span>\n </button>\n </div>\n </rolatech-toolbar>\n <div class=\"divide-y divide-[--rt-10-percent-layer]\">\n @for (item of locations; track $index) {\n <div [routerLink]=\"item.id\" class=\"flex items-center px-2 h-11 hover:cursor-pointer hover:bg-[--rt-raised-background]\">\n <div class=\"font-bold\">{{ item.name }}</div>\n <div></div>\n </div>\n }\n </div>\n</rolatech-inventory-content>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport {\n MatDialogRef,\n MAT_DIALOG_DATA,\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatDialogTitle,\n} from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\ndeclare global {\n interface Window {\n qq: any;\n TMap: any;\n }\n}\n\n@Component({\n selector: 'rolatech-inventory-location-map',\n imports: [\n MatDialogTitle,\n MatDialogContent,\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n MatOptionModule,\n MatInputModule,\n MatIconModule,\n MatDialogActions,\n MatButtonModule,\n MatDialogClose,\n ],\n templateUrl: './inventory-location-map.component.html',\n styleUrl: './inventory-location-map.component.scss',\n})\nexport class InventoryLocationMapComponent implements OnInit {\n map: any;\n markers: any;\n lists: any;\n infoWindowList = Array(10);\n selectedLocation: any;\n cities: string[] = ['北京', '上海'];\n region = '北京';\n constructor(\n public dialogRef: MatDialogRef<InventoryLocationMapComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {}\n\n ngOnInit(): void {\n this.init();\n }\n\n init() {\n const map = new window.TMap.Map(document.getElementById('map-container'), {\n // 地图的中心地理坐标。\n center: new window.TMap.LatLng(40.0402718, 116.2735831),\n resizeEnable: true,\n zoom: 14,\n });\n const markers = new window.TMap.MultiMarker({\n map: map,\n geometries: [],\n });\n this.map = map;\n this.markers = markers;\n }\n onSearchChange(event: any) {\n const value = event.target.value;\n const suggest = new window.TMap.service.Suggestion({\n pageSize: 15, // 返回结果每页条目数\n region: this.region, // 限制城市范围\n regionFix: true, // 搜索无结果时是否固定在当前城市\n });\n if (value) {\n suggest\n .getSuggestions({ keyword: value, location: this.map.getCenter() })\n .then((result: any) => {\n this.lists = result.data;\n })\n .catch((error: any) => {});\n }\n }\n setLocation(index: any) {\n this.infoWindowList.forEach((infoWindow) => {\n infoWindow.close();\n });\n this.infoWindowList.length = 0;\n const item = this.lists[index];\n this.selectedLocation = item;\n this.lists = [];\n this.markers.setGeometries([]);\n this.markers.updateGeometries([\n {\n id: '0', // 点标注数据数组\n position: item.location,\n },\n ]);\n\n const infoWindow = new window.TMap.InfoWindow({\n map: this.map,\n position: item.location,\n content: `<h3>${item.title}</h3><p>地址:${item.address}</p>`,\n offset: { x: 0, y: -50 },\n });\n this.infoWindowList.push(infoWindow);\n this.map.setCenter(item.location);\n this.markers.on('click', (e: any) => {\n this.infoWindowList[Number(e.geometry.id)].open();\n });\n }\n onNoClick(): void {\n this.dialogRef.close();\n }\n selectionChange(event: any) {}\n}\n","@if (data.title) {\n <h2 mat-dialog-title>{{ data.title }}</h2>\n}\n<div mat-dialog-content>\n <div class=\"h-full\">\n <div class=\"relative h-full\">\n <div id=\"map-container\" class=\"h-full\"></div>\n <div class=\"absolute bg-white z-[9999] top-[30px] left-[30px]\">\n <div class=\"flex gap-3 px-3 pt-3\">\n <mat-form-field appearance=\"fill\" [style.width.px]=\"180\">\n <mat-label i18n>City</mat-label>\n <mat-select #select=\"matSelect\" [(ngModel)]=\"region\" (selectionChange)=\"selectionChange($event)\">\n @for (city of cities; track city) {\n <mat-option [value]=\"city\">\n {{ city }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <input matInput placeholder=\"输入关键字搜索\" (input)=\"onSearchChange($event)\" />\n </mat-form-field>\n </div>\n <div class=\"max-h-[320px] overflow-scroll pb-3 bg-white\">\n @for (item of lists; track item; let index = $index) {\n <div (click)=\"setLocation(index)\" class=\"cursor-pointer\">\n <div class=\"p-3 flex items-center gap-2 hover:bg-[--rt-raised-background]\">\n <mat-icon fontIcon=\"location_on\"></mat-icon>\n <div class=\"text-sm font-thin\">{{ item.title }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n>Cancel</button>\n <button mat-flat-button [mat-dialog-close]=\"selectedLocation\" cdkFocusInitial i18n>Ok</button>\n</div>\n","import { Component, inject, input, output, ViewEncapsulation } from '@angular/core';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TitleComponent } from '@rolatech/angular-components';\nimport { Location } from '../../interfaces/inventory-location';\nimport { InventoryLocationMapComponent } from '../inventory-location-map/inventory-location-map.component';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Component({\n selector: 'rolatech-inventory-location-item',\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n MatButtonModule,\n TextFieldModule,\n MatDividerModule,\n TitleComponent,\n ],\n templateUrl: './inventory-location-item.component.html',\n styleUrl: './inventory-location-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryLocationItemComponent {\n location = input.required<Location>();\n dialog = inject(MatDialog);\n save = output<Location>();\n delete = output<Location>();\n\n selectLocation() {\n const dialogRef = this.dialog.open(InventoryLocationMapComponent, {\n width: '90%',\n data: {\n title: '选择位置',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n const address = result.address;\n const { lat, lng } = result.location;\n this.location().detail = address;\n this.location().latitude = lat;\n this.location().longitude = lng;\n this.location().province = result.province;\n this.location().city = result.city;\n this.location().district = result.district;\n this.location().detail = result.title;\n }\n });\n }\n onSave() {\n this.save.emit(this.location());\n }\n onDelete() {\n this.delete.emit(this.location());\n }\n}\n","<div class=\"mb-8\">\n <div class=\"flex flex-col\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"location().name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Contact </mat-label>\n <input matInput [(ngModel)]=\"location().contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"location().phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <rolatech-title title=\"Location info\"></rolatech-title>\n <button mat-stroked-button (click)=\"selectLocation()\" i18n>Select location</button>\n </div>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Province </mat-label>\n <input matInput [(ngModel)]=\"location().province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"location().city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n>District </mat-label>\n <input matInput [(ngModel)]=\"location().district\" name=\"district\" required disabled />\n </mat-form-field>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Address </mat-label>\n <input matInput [(ngModel)]=\"location().street\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Details </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location().detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n <div>\n <button mat-button (click)=\"onDelete()\" i18n>Delete</button>\n <button mat-flat-button (click)=\"onSave()\" i18n>Save</button>\n </div>\n </div>\n</div>\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InventoryLocationItemComponent } from '../../components/inventory-location-item/inventory-location-item.component';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { Location } from '../../interfaces/inventory-location';\nimport { InventoryService } from '@rolatech/angular-services';\n\n@Component({\n selector: 'rolatech-inventory-location-detail',\n imports: [CommonModule, InventoryLocationItemComponent, ToolbarComponent],\n templateUrl: './inventory-location-detail.component.html',\n styleUrl: './inventory-location-detail.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryLocationDetailComponent extends BaseComponent implements OnInit {\n inventoryService = inject(InventoryService);\n location!: Location;\n\n ngOnInit(): void {\n this.get();\n }\n get() {\n this.inventoryService.getLocation(this.id).subscribe({\n next: (res) => {\n this.location = res.data;\n },\n });\n }\n onLocationSave(e) {\n this.inventoryService.updateLocation(e.id, e).subscribe({\n next: (res) => {\n this.snackBarService.open('Success');\n },\n });\n }\n onLocationDetele(location: any) {\n const options = {\n title: '确定删除吗',\n message: `这会删除仓库, 确定吗?`,\n cancelText: 'Cancel',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n this.inventoryService.deleteLocation(location.id).subscribe({\n next: (res) => {\n this.snackBarService.open('Delete successfully');\n this.navigation.back();\n },\n });\n }\n },\n });\n }\n}\n","<rolatech-toolbar title=\"仓库详情\" back> </rolatech-toolbar>\n@if (location) {\n <div class=\"px-3\">\n <rolatech-inventory-location-item\n [location]=\"location\"\n (save)=\"onLocationSave($event)\"\n (delete)=\"onLocationDetele($event)\"\n ></rolatech-inventory-location-item>\n </div>\n}\n","import { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ToolbarComponent, BaseComponent } from '@rolatech/angular-components';\nimport { InventoryService } from '@rolatech/angular-services';\nimport { InventoryLocationMapComponent } from '../../components/inventory-location-map/inventory-location-map.component';\n\n@Component({\n selector: 'rolatech-inventory-location-add',\n imports: [ToolbarComponent, FormsModule, MatFormFieldModule, MatInputModule, MatButtonModule, TextFieldModule],\n templateUrl: './inventory-location-add.component.html',\n styleUrl: './inventory-location-add.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryLocationAddComponent extends BaseComponent {\n inventoryService = inject(InventoryService);\n\n location: any = {};\n\n selectLocation() {\n const dialogRef = this.dialog.open(InventoryLocationMapComponent, {\n width: '90%',\n data: {\n title: '选择位置',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n const address = result.address;\n const { lat, lng } = result.location;\n this.location.detail = address;\n this.location.latitude = lat;\n this.location.longitude = lng;\n this.location.province = result.province;\n this.location.city = result.city;\n this.location.district = result.district;\n }\n });\n }\n\n add() {\n const data = {\n ...this.location,\n };\n\n this.inventoryService.addLocation(data).subscribe({\n next: (res) => {\n this.snackBarService.open('Add successfully');\n },\n });\n }\n}\n","<rolatech-toolbar title=\"Add location\" back> </rolatech-toolbar>\n<div class=\"px-3 h-full\">\n <div class=\"w-full\">\n <div class=\"w-2/3 flex flex-col\">\n <form #locationForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"location.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Contact </mat-label>\n <input matInput [(ngModel)]=\"location.contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"location.phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <h2 i18n>Location</h2>\n <button mat-stroked-button (click)=\"selectLocation()\">Location select</button>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Province </mat-label>\n <input matInput [(ngModel)]=\"location.province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"location.city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> County </mat-label>\n <input matInput [(ngModel)]=\"location.district\" name=\"county\" required disabled />\n </mat-form-field>\n <!-- <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input\n matInput\n [(ngModel)]=\"location.town\"\n name=\"town\"\n required\n readonly\n />\n </mat-form-field> -->\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Address </mat-label>\n <input matInput [(ngModel)]=\"location.detail\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Detail </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location.detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n </form>\n </div>\n <div class=\"py-3\">\n <button mat-flat-button (click)=\"add()\" i18n>Save</button>\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4","i5","i7","i2","i3","i1"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;MAWa,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXrC,0hCAkBA,EAAA,MAAA,EAAA,CAAA,2XAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZY,YAAY,8BAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKzB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;+BACE,2BAA2B,EAAA,OAAA,EAC5B,CAAC,YAAY,EAAE,YAAY,CAAC,EAAA,aAAA,EAGtB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,0hCAAA,EAAA,MAAA,EAAA,CAAA,2XAAA,CAAA,EAAA;;;AENhC,MAAM,eAAe,GAAW;AACrC,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,wBAAwB;AACnC,QAAA,QAAQ,EAAE;AACR,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,aAAa,EAAE,MAAM,OAAO,+DAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC;AACjG,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,aAAa,EAAE,MACb,2EAA2D,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,0BAA0B,CAAC;AACxG,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,aAAa,EAAE,MACb,8EAAmE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,CAAC;AACnH,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,aAAa,EAAE,MACb,iFAAyE,CAAC,IAAI,CAC5E,CAAC,CAAC,KAAK,CAAC,CAAC,gCAAgC,CAC1C;AACJ,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,aAAa,EAAE,MAAM,OAAO,uEAAiD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC;AACxH,aAAA;AACF,SAAA;AACF,KAAA;;;MCzBU,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTtC,mHAIA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDCY,YAAY,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;+BACE,4BAA4B,EAAA,OAAA,EAC7B,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,mHAAA,EAAA;;;MEWZ,0BAA0B,CAAA;AANvC,IAAA,WAAA,GAAA;AAOE,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC3C,IAAA,CAAA,SAAS,GAAe,EAAE;AAe3B,IAAA;IAbC,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,EAAE;IACtB;IACA,aAAa,GAAA;QACX,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AAChD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI;YAC3B,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,WAAW,CAAC,IAAI,EAAA;AACd,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;IACzC;8GAhBW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBvC,mtBAkBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDNY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,oXAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAI9F,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,OAAA,EAC9B,CAAC,YAAY,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,mtBAAA,EAAA;;;;;;;;ME8B/F,6BAA6B,CAAA;IAQxC,WAAA,CACS,SAAsD,EAC7B,IAAS,EAAA;QADlC,IAAA,CAAA,SAAS,GAAT,SAAS;QACgB,IAAA,CAAA,IAAI,GAAJ,IAAI;AANtC,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAC,EAAE,CAAC;AAE1B,QAAA,IAAA,CAAA,MAAM,GAAa,CAAC,IAAI,EAAE,IAAI,CAAC;QAC/B,IAAA,CAAA,MAAM,GAAG,IAAI;IAIV;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,EAAE;IACb;IAEA,IAAI,GAAA;AACF,QAAA,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;;YAExE,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC;AACvD,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,IAAI,EAAE,EAAE;AACT,SAAA,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1C,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,UAAU,EAAE,EAAE;AACf,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;IACxB;AACA,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;QAChC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACjD,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI;AAChB,SAAA,CAAC;QACF,IAAI,KAAK,EAAE;YACT;AACG,iBAAA,cAAc,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE;AACjE,iBAAA,IAAI,CAAC,CAAC,MAAW,KAAI;AACpB,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI;AAC1B,YAAA,CAAC;iBACA,KAAK,CAAC,CAAC,KAAU,KAAI,EAAE,CAAC,CAAC;QAC9B;IACF;AACA,IAAA,WAAW,CAAC,KAAU,EAAA;QACpB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;YACzC,UAAU,CAAC,KAAK,EAAE;AACpB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5B,YAAA;gBACE,EAAE,EAAE,GAAG;gBACP,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,aAAA;AACF,SAAA,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC5C,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,OAAO,IAAI,CAAC,KAAK,CAAA,WAAA,EAAc,IAAI,CAAC,OAAO,CAAA,IAAA,CAAM;YAC1D,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACzB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAM,KAAI;AAClC,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;AACnD,QAAA,CAAC,CAAC;IACJ;IACA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;IACA,eAAe,CAAC,KAAU,EAAA,EAAG;AA9ElB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,gDAU9B,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAVd,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1C1C,suDAyCA,EAAA,MAAA,EAAA,CAAA,oDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDdI,cAAc,+HACd,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,oLACb,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAKL,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAlBzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAAA,OAAA,EAClC;wBACP,cAAc;wBACd,gBAAgB;wBAChB,kBAAkB;wBAClB,eAAe;wBACf,WAAW;wBACX,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,gBAAgB;wBAChB,eAAe;wBACf,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,suDAAA,EAAA,MAAA,EAAA,CAAA,oDAAA,CAAA,EAAA;;0BAcE,MAAM;2BAAC,eAAe;;;MEzBd,8BAA8B,CAAA;AAf3C,IAAA,WAAA,GAAA;AAgBE,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAY;AACrC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;QAC1B,IAAA,CAAA,IAAI,GAAG,MAAM,EAAY;QACzB,IAAA,CAAA,MAAM,GAAG,MAAM,EAAY;AA6B5B,IAAA;IA3BC,cAAc,GAAA;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;AAChE,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,MAAM;AACd,aAAA;AACF,SAAA,CAAC;QACF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YAC3C,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;gBAC9B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ;AACpC,gBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,OAAO;AAChC,gBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,GAAG,GAAG;AAC9B,gBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,GAAG,GAAG;gBAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;gBAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;gBAClC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;gBAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK;YACvC;AACF,QAAA,CAAC,CAAC;IACJ;IACA,MAAM,GAAA;QACJ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjC;IACA,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACnC;8GAhCW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B3C,uiFA6DA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9CI,kBAAkB,0SAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,gBAAgB,+BAChB,cAAc,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAML,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAf1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,EAAA,OAAA,EACnC;wBACP,kBAAkB;wBAClB,cAAc;wBACd,WAAW;wBACX,eAAe;wBACf,eAAe;wBACf,gBAAgB;wBAChB,cAAc;qBACf,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,uiFAAA,EAAA;;;AEXjC,MAAO,gCAAiC,SAAQ,aAAa,CAAA;AAPnE,IAAA,WAAA,GAAA;;AAQE,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAyC5C,IAAA;IAtCC,QAAQ,GAAA;QACN,IAAI,CAAC,GAAG,EAAE;IACZ;IACA,GAAG,GAAA;QACD,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACnD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI;YAC1B,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,cAAc,CAAC,CAAC,EAAA;AACd,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;YACtC,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,gBAAgB,CAAC,QAAa,EAAA;AAC5B,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,OAAO,EAAE,CAAA,YAAA,CAAc;AACvB,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,WAAW,EAAE,IAAI;SAClB;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC;AACvC,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;gBACZ,IAAI,GAAG,EAAE;oBACP,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AAC1D,wBAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,4BAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAChD,4BAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;wBACxB,CAAC;AACF,qBAAA,CAAC;gBACJ;YACF,CAAC;AACF,SAAA,CAAC;IACJ;8GAzCW,gCAAgC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,qHCd7C,+UAUA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,8BAA8B,gIAAE,gBAAgB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAK7D,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAP5C,SAAS;+BACE,oCAAoC,EAAA,OAAA,EACrC,CAAC,YAAY,EAAE,8BAA8B,EAAE,gBAAgB,CAAC,EAAA,aAAA,EAG1D,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,+UAAA,EAAA;;;;;;;;AEKjC,MAAO,6BAA8B,SAAQ,aAAa,CAAA;AAPhE,IAAA,WAAA,GAAA;;AAQE,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAE3C,IAAA,CAAA,QAAQ,GAAQ,EAAE;AAkCnB,IAAA;IAhCC,cAAc,GAAA;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;AAChE,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,MAAM;AACd,aAAA;AACF,SAAA,CAAC;QACF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YAC3C,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;gBAC9B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ;AACpC,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO;AAC9B,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG;AAC5B,gBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG;gBAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;gBACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;gBAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;YAC1C;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,GAAG,GAAA;AACD,QAAA,MAAM,IAAI,GAAG;YACX,GAAG,IAAI,CAAC,QAAQ;SACjB;QAED,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AAChD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAC/C,CAAC;AACF,SAAA,CAAC;IACJ;8GApCW,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB1C,yhGAyEA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7DY,gBAAgB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,yEAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,mXAAE,eAAe,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKlG,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,WAClC,CAAC,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,CAAC,EAAA,aAAA,EAG/F,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,yhGAAA,EAAA;;;;;;;;AEfvC;;AAEG;;;;"}